当主机回应很慢时,除了可能是因为系统的负荷过大,或者系统设定错误外,另一个可能性是遭受 DDOS 攻击。
对于小规模 DDOS 攻击, 使用 Linux 内建的工具侦测来源 IP 及阻挡可以达到一定的效果, 以下会示范用 netstat 及其他 Linux 内建指令,检测系统是否遭受 DDOS 攻击。
用 netstat 列出所有连线, 可以用以下指令:
netstat -an
1
netstat-an
以上指令列出相当多的连线, 我们先用 grep 过滤出我们想要的资讯, 然后用 sort 将 ip 排序, 例如我想查看 port 80 的连线, 并将 ip 排序:
netstat -an | grep :80 | sort
1
netstat-an|grep:80|sort
配合 awk, cut, sort, uniq 指令, 可以印出每个 ip 的连线数量, 并用连线数量排序, 以下会针对 ESTABLISHED 连线检查:
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
1
netstat-ntu|grepESTAB|awk'{print $5}'|cut-d:-f1|sort|uniq-c|sort-nr
针对 port 80 的连线, 将每个 ip 的连线数量印出并进行排序:
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1
netstat-ntu|grep:80|awk'{print $5}'|cut-d:-f1|sort|uniq-c|sort-n
另一个有用的侦测方法, 是过滤出 SYN_REC 连线, 一般上 SYN_REC 的连线数量很低, 如果过高可能遭受攻击, 以下指令可以列出当前 SYN_REC 连线数量:
netstat -np | grep SYN_REC | wc -l
1
netstat-np|grepSYN_REC|wc-l
当发现 SYN_REC 连线数量高时, 可以改用 “sort” 将 ip 排序, 而不是列出连线数:
netstat -np | grep SYN_REC | sort -u
1
netstat-np|grepSYN_REC|sort-u
如果连线数量很大, 可以这样将每个 ip 只印出一次:
netstat -np | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
1
netstat-np|grepSYN_REC|awk'{print $5}'|awk-F:'{print $1}'
透过以上方法找到来源 ip 后, 例如 ip 是 x.x.x.x, 可以用 route 或 iptables 阻挡攻击:
route:
route delete x.x.x.x
1
routedeletex.x.x.x
iptables:
iptables -A INPUT -s x.x.x.x -j DROP
1
iptables-AINPUT-sx.x.x.x-jDROP
你可能感兴趣的内容: