Loading... <div class="tip inlineBlock share simple"> 最近博客总时不时的打不开,或者是打开巨慢。打开宝塔面板,发现能登录,但是登录非常缓慢,最后挤进来后,看到流量可视化图,上行一直流量一直居高不下。服务器带宽是2兆的,上行200kb,说明直接将整个服务器带宽占满,导致服务器无法访问 </div> ![请输入图片描述](https://images2.imgbox.com/06/bb/5AcXkEbY_o.png) ### 排查 Linux下使用iftop工具结合iptables服务来解决带宽资源被恶意请求满的问题,主要通过2个步骤来实现 1. 使用iftop 工具查出来是哪些个IP地址在请求主机的带宽资源,找出耗带宽的元凶 2. 找出耗带宽的IP地址或者段,分析是out方向还是in方向,使用iptables规则来进行控制 首先安装 iftop 工具 ```shell yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel ``` 接着输入 `iftop -n` 运行,运行后会出现以下界面 ![请输入图片描述](https://images2.imgbox.com/08/25/0fE8d8KX_o.png) * 左侧表示自己的服务器的内网ip * 中间的<= =>这两个左右箭头,表示的是流量的方向 * 右侧表示请求或发送的ip * 最右侧表示流量信息 从上面图中可以看到,排行第一的流量消耗最大,并且是右箭头。反映出本地内网ip正朝着62.210.177.44这个ip疯狂发送数据,导致服务器带宽占满,无法访问,知道这个ip后,就可以利用 iptables 屏蔽这个ip 禁止某个IP访问服务器 iptables -I INPUT -s 地址 -j DROP 禁止服务器访问此IP iptables -A OUTPUT -d 地址 -j DROP 上面图中主要流量是从out方向出去的,那就直接在OUT方向设置策略 iptables -A OUTPUT -d 62.210.177.44 -j DROP 屏蔽掉后,在看流量统计已经恢复到了正常状态 ![请输入图片描述](https://images2.imgbox.com/56/36/9Dh47Lde_o.png) ### 相关参数说明 iptables相关参数: 禁止此IP访问服务器: ```bash iptables -I INPUT -s 1.2.3.4 -j DROP iptables -A INPUT -s 1.2.3.4 -j DROP ``` 禁止服务器访问此IP: ```bash iptables -A OUTPUT -d 1.2.3.4 -j DROP ``` 如果要封某个网段: ```bash iptables -I INPUT -s 1.2.3.0/24 -j DROP ``` 清空屏蔽IP: ```bash iptables -t filter -D INPUT -s 1.2.3.4 -j DROP iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP ``` 一键清空所有规则: ```bash iptables -F ``` 查看: ```bash iptables -L INPUT iptables -L ``` 处理IP碎片数量,防止攻击,允许每秒100: ```bash iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT ``` 设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包: ```bash iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT ``` 最后修改:2023 年 05 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏