我的问题是,我收到一份报告称我的 IP 被用于 DOS 攻击。问题是我不知道哪台计算机被感染,而且攻击不再活跃。
我的路由器(运行 fedora)是否有简单的 Linux 工具可以计算每个本地 IP 的数据包速率,如果超过我选择的常数,它将启动我的 shell 脚本?
注意,我还对从本地主机生成的数据包感兴趣(以防服务器本身被黑客入侵)。
答案1
因此我想出了一个使用 iptables 的解决方案:
# create new chain for every local ip we wanna monitor
iptables -N ip10
# forward traffic from monitored IP to it's chain "ip10"
iptables -A FORWARD -i myLan -s 192.168.2.10 -o myWan -j ip10
# trafic from other IP's we trusted we just accept
iptables -A FORWARD -i myLan -o myWan -j ACCEPT
# here we have even better thing than I asked for
# we can ban the DOS attack before it gets out
# in following line we set maximum 100 packet per second
iptables -A ip10 -m limit --limit 100/s --limit-burst 300 -j ACCEPT
# here we can directly log if above limit is breached
# log will be in /var/log/message and it will contains IP src+dst, src mac and other info
# note limit 3 msg per minute is important to not have too big log file
iptables -A ip10 -m limit --limit 3/m --limit-burst 10 -j LOG --log-prefix 'mylog:' --log-level 4
# finally packets over limit will be discarded
iptables -A ip10 -j DROP
然后可以通过调用以下命令查看从一个 IP 发送的数据包及其大小:
iptables -L ip10 -vxn
如果感兴趣的话,你需要用某个脚本来做这件事,然后将其重新计算为每秒的数据包数
注意,要监控服务器本身,您需要对链采取类似的方法
iptables -A OUTPUT
在 Fedora 18 上测试过。我试图攻击我的另一台电脑,但数据包真的被阻止了:)
答案2
这是典型的情况网络流它会为您提供按地址、协议和端口细分的流量历史数据,您可以评估这些数据并以精美的图表形式查看。