首页
/ 解决Endlessh服务启动失败及日志输出问题

解决Endlessh服务启动失败及日志输出问题

2025-05-28 12:51:59作者:蔡怀权

问题背景

Endlessh是一款SSH tarpit工具,通过缓慢响应SSH连接请求来延缓攻击者的入侵尝试。在Debian 12系统上通过apt安装Endlessh后,用户可能会遇到服务启动失败和日志输出配置问题。

常见错误现象

  1. 服务启动失败,systemctl显示"status=1/FAILURE"
  2. 日志文件未按预期输出
  3. 绑定低端口(1024以下)时出现权限问题

解决方案

1. 解决服务启动失败

首先检查服务配置文件/lib/systemd/system/endlessh.service,确保ExecStart行格式正确:

ExecStart=/usr/bin/endlessh -f /path/to/config

避免在ExecStart中使用shell重定向符号(>或>>),这会导致"too many arguments"错误。

2. 正确配置日志输出

使用systemd的StandardOutput和StandardError指令来配置日志输出:

StandardOutput=file:/path/to/endlessh.log
StandardError=file:/path/to/endlessh.err

注意必须包含"file:"前缀,否则日志不会写入指定文件。

3. 解决低端口绑定权限问题

对于绑定22等低端口(1024以下)的情况:

  1. 执行命令设置capability:
/sbin/setcap 'cap_net_bind_service=+ep' /usr/bin/endlessh
  1. 修改服务文件:
AmbientCapabilities=CAP_NET_BIND_SERVICE
#PrivateUsers=true  # 需要注释掉这行

4. 完整服务文件示例

[Unit]
Description=Endlessh SSH Tarpit
Documentation=man:endlessh(1)
Requires=network-online.target

[Service]
Type=simple
Restart=always
RestartSec=30sec
ExecStart=/usr/bin/endlessh -f /path/to/config
StandardOutput=file:/path/to/endlessh.log
StandardError=file:/path/to/endlessh.err
KillSignal=SIGTERM
StartLimitInterval=5min
StartLimitBurst=4
PrivateTmp=true
PrivateDevices=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target

调试技巧

  1. 检查服务状态:
systemctl status endlessh
  1. 查看详细日志:
journalctl -u endlessh.service -b
  1. 重载服务配置:
systemctl daemon-reload

总结

通过正确配置systemd服务文件和解决低端口绑定权限问题,可以确保Endlessh服务正常运行。关键点包括:避免在ExecStart中使用shell重定向、正确配置日志输出路径、处理低端口绑定权限。这些步骤同样适用于其他需要绑定低端口的网络服务配置。

登录后查看全文
热门项目推荐
相关项目推荐