Endlessh系统调用过滤终极指南:使用AppArmor限制程序权限的完整教程

Endlessh系统调用过滤终极指南:使用AppArmor限制程序权限的完整教程

【免费下载链接】endlessh SSH tarpit that slowly sends an endless banner 【免费下载链接】endlessh 项目地址: https://gitcode.com/gh_mirrors/en/endlessh

Endlessh是一个巧妙的SSH tarpit工具,它通过缓慢发送无尽的SSH横幅来困住恶意SSH客户端,保护你的真实SSH服务器免受攻击。在这篇完整的AppArmor配置指南中,我将向你展示如何使用Linux的安全模块来限制Endlessh的系统调用权限,增强系统的整体安全性。🔒

什么是Endlessh SSH tarpit?

Endlessh是一个轻量级的C程序,专门设计用来捕获和拖延SSH攻击者。它监听一个端口(默认为2222),当有客户端连接时,它会非常缓慢地发送随机的SSH横幅内容,让攻击者客户端一直等待响应,从而消耗他们的时间和资源。

Endlessh的核心功能特点:

  • 单线程设计 - 使用poll()系统调用同时处理多个客户端
  • 无加密依赖 - 在加密交换之前工作,不需要任何加密库
  • 配置灵活 - 支持配置文件和各种命令行参数
  • 轻量高效 - 占用资源极少,适合长期运行

为什么需要AppArmor系统调用过滤?

尽管Endlessh本身设计简单安全,但在生产环境中,任何网络服务都应该运行在最小的必要权限下。AppArmor作为Linux的安全模块,能够:

  • 限制文件系统访问 - 只允许访问必要的文件和目录
  • 控制网络操作 - 限制网络接口和端口的访问
  • 管理系统调用 - 只允许执行必要的系统调用
  • 防止权限提升 - 即使程序被利用,攻击者也无法获得额外权限

完整的AppArmor配置文件创建步骤

步骤1:安装必要的工具

首先确保你的系统已安装AppArmor工具:

sudo apt-get install apparmor-utils  # Ubuntu/Debian

步骤2:创建Endlessh的AppArmor配置文件

/etc/apparmor.d/目录下创建usr.bin.endlessh文件:

#include <tunables/global>

/usr/local/bin/endlessh {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  
  # 允许必要的网络操作
  network inet stream,
  network inet6 stream,
  
  # 允许绑定到指定端口
  capability net_bind_service,
  
  # 允许读取配置文件
  /etc/endlessh/config r,
  
  # 允许写入日志文件
  /var/log/endlessh.log w,
  /var/log/endlessh.err w,
  
  # 允许必要的系统调用
  deny @{PROC}/[0-9]*/attr/ rw,
  deny @{PROC}/[0-9]*/oom_adj rw,
  
  # 允许使用syslog
  /dev/log w,
}

步骤3:配置Endlessh的启动参数

编辑Endlessh的systemd服务文件util/endlessh.service,添加安全配置:

[Service]
ExecStart=/usr/local/bin/endlessh -v -f /etc/endlessh/config
AppArmorProfile=usr.bin.endlessh

步骤4:激活和测试AppArmor配置

# 加载AppArmor配置文件
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.endlessh

# 检查配置状态
sudo aa-status | grep endlessh

# 重启Endlessh服务
sudo systemctl restart endlessh

高级系统调用过滤技巧

1. 限制文件创建位置

在AppArmor配置中添加文件路径限制:

# 只允许在特定目录创建文件
deny /tmp/** w,
deny /var/tmp/** w,

2. 控制进程间通信

# 限制进程间通信
deny ipc,
deny capability ipc_owner,

3. 网络访问精细化控制

# 只允许监听指定端口
network inet tcp bind port=2222,

实用配置示例和最佳实践

生产环境推荐配置

util/endlessh.service基础上,结合AppArmor提供完整的服务配置方案。关键配置文件包括:

监控和日志分析

启用详细日志记录来监控AppArmor的执行情况:

# 查看AppArmor拒绝日志
sudo journalctl -u apparmor -f

# 检查Endlessh运行状态
sudo systemctl status endlessh

常见问题解决方案

问题1:AppArmor阻止Endlessh启动

解决方案:检查AppArmor日志,调整配置文件中的权限设置,确保允许必要的文件访问和网络操作。

问题2:性能影响评估

解决方案:AppArmor对性能的影响微乎其微,但建议在启用前进行负载测试。

总结

通过使用AppArmor对Endlessh进行系统调用过滤,你可以显著提升系统的安全性,同时保持Endlessh的正常功能。这种深度防御策略是保护SSH服务的有效方法,特别适合在公网环境中部署。🚀

记住,安全是一个持续的过程。定期审查和更新你的AppArmor配置,确保它始终符合当前的安全需求。现在就开始实施这些最佳实践,让你的SSH防护更加坚固!

【免费下载链接】endlessh SSH tarpit that slowly sends an endless banner 【免费下载链接】endlessh 项目地址: https://gitcode.com/gh_mirrors/en/endlessh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值