1

清理log
sudo truncate -s 0 /opt/roceos/apps/asterisk/log/messages.log

  1. 查看磁盘空间和目录占用

查看各分区使用情况

df -h

查看根目录下各目录的占用(不跨文件系统)

du -xhd1 /

查看 /storage 下各目录占用

du -h --max-depth=1 /storage

查看 Docker 数据目录

du -h --max-depth=1 /storage/docker_data

查看 containerd 数据目录

du -h --max-depth=1 /storage/docker_data/containerd

查看最大的 containerd 快照目录

du -h --max-depth=1 /storage/docker_data/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots | sort -h | tail -n 10

查看 Docker 镜像、容器和卷占用

docker system df -v

  1. 定位 Asterisk 日志文件

查看 Asterisk 相关目录占用

du -h --max-depth=1 /opt/roceos/apps/asterisk

查看 Asterisk 日志目录占用

du -ah /opt/roceos/apps/asterisk/log | sort -h | tail -n 10

查看 messages.log 的大小和修改时间

ls -lh --time-style=long-iso /opt/roceos/apps/asterisk/log/messages.log

查看日志最后 30 行

tail -n 30 /opt/roceos/apps/asterisk/log/messages.log

清空日志文件
刚才实际执行过:
sudo truncate -s 0 /opt/roceos/apps/asterisk/log/messages.log

注意: 这会删除该文件中的全部历史日志内容,但保留文件本身,Asterisk 后续仍可继续写日志。清空前应确认不再需要旧日志作为故障排查证据。
3. 查看 Fail2Ban 状态

查看所有 jail

sudo fail2ban-client status

查看 Asterisk jail 的状态、失败计数和封禁 IP

sudo fail2ban-client status asterisk

查看 Asterisk jail 当前封禁的 IP

sudo fail2ban-client get asterisk banip

查看 Asterisk jail 使用的封禁动作

sudo fail2ban-client get asterisk actions

刚才还尝试过:
sudo fail2ban-client get asterisk port

当前版本返回 Invalid command,因此这条命令不能用于查询端口配置。
4. 查看 Asterisk 实际监听端口
sudo ss -lunp | grep asterisk

刚才的输出确认 Asterisk 正在监听:
0.0.0.0:5060

也就是 UDP 5060。
5. 查看 Fail2Ban 的防火墙规则

查看 Asterisk 封禁链及每个 IP 的规则计数

sudo iptables -L f2b-asterisk -n -v --line-numbers

查看 INPUT 链的规则及匹配计数

sudo iptables -L INPUT -n -v --line-numbers

这两条分别用于确认:

  • f2b-asterisk 中有没有被封禁 IP 的 REJECT 规则。
  • INPUT 链是否将指定端口的流量导入封禁链。
  1. 查看 Fail2Ban 配置

查看相关 jail 配置中的端口、日志路径和封禁动作

sudo grep -RniE '\s*[asterisk]|\s(port|logpath|banaction)\s=' /etc/fail2ban/jail.local /etc/fail2ban/jail.d/

查看 Asterisk jail 的完整配置

sudo cat /etc/fail2ban/jail.d/asterisk.local

原来的关键配置是:
[asterisk]

enabled = true
filter = asterisk

logpath = /opt/roceos/apps/asterisk/log/messages.log

maxretry = 5
findtime = 600
bantime = -1

action = iptables-multiport[name=asterisk, port="6060", protocol=udp]

其中:

  • maxretry = 5:在规定时间内达到失败次数阈值后触发封禁。
  • findtime = 600:统计窗口为 600 秒。
  • bantime = -1:永久封禁,直到手动解封或状态被清理。
  • port="6060":旧配置中的端口错误。
  1. 修正端口并重载配置
    修改配置文件
    sudo sed -i 's/port="6060"/port="5060"/' /etc/fail2ban/jail.d/asterisk.local

重载 Asterisk jail
sudo fail2ban-client reload asterisk

刚才重载返回 OK。
删除遗留的 6060 跳转规则
sudo iptables -D INPUT -p udp -m multiport --dports 6060 -j f2b-asterisk

执行后再次检查:
sudo iptables -L INPUT -n -v --line-numbers

最后一次检查结果显示,INPUT 链只剩下 UDP 5060 的封禁链入口规则。

最终需要记住的几条命令
如果以后又遇到 SIP 扫描或日志暴涨,通常先执行这几条就够了:

  1. 查看磁盘空间
    df -h

  2. 查看日志大小
    ls -lh /opt/roceos/apps/asterisk/log/messages.log

  3. 查看 Fail2Ban 状态
    sudo fail2ban-client status asterisk

  4. 查看封禁规则
    sudo iptables -L f2b-asterisk -n -v --line-numbers

  5. 查看端口入口规则
    sudo iptables -L INPUT -n -v --line-numbers

  6. 查看实际监听端口
    sudo ss -lunp | grep asterisk

当前已确认的修复结果: Fail2Ban 的持久配置已改为 UDP 5060,jail 重载成功,旧的 UDP 6060 INPUT 跳转已删除。最后一次检查显示 INPUT 链只剩 5060 入口规则。
还没有最终确认的是:修改后封禁 IP 是否仍保留,以及清空日志后 messages.log 是否还会异常增长。

posted @ 2026-10-17 16:52  knock~  阅读(5)  评论(0)    收藏  举报