> [TOC] # 1、配置iptables ```shell # 1.需要先安装---一般不需要安装centos7自带的 yum install iptables-services # 配置自启动 systemctl start iptables.service && systemctl enable iptables.service # 2.查看规则 iptables -L INPUT iptables -L OUTPUT iptables -L # 3.(此命令将保存规则,下次开机自动执行) iptables-save ``` # 2、封禁操作 ```shell # 1.添加屏蔽IP # 禁止此IP访问服务器 iptables -I INPUT -s 1.2.3.4 -j DROP # 或 iptables -A INPUT -s 1.2.3.4 -j DROP # 2.禁止服务器访问此IP iptables -A OUTPUT -d 1.2.3.4 -j DROP # 3.如果要封某个网段: iptables -I INPUT -s 1.2.3.0/24 -j DROP ``` # 3、解封操作 ```shell # 1.清空屏蔽IP----一个是出流量一个是入流量 iptables -t filter -D INPUT -s 1.2.3.4 -j DROP iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP # 2.一键清空所有规则 iptables -F ``` # 4、大流量冲击 ```shell # 1.处理IP碎片数量,防止攻击,允许每秒100个 iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT # 2.设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包 iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT ``` # 5、脚本 ```sh #! 使用firewalld #! /bin/bash PATH=$PATH:/usr/sbin cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt for i in `cat /usr/local/bin/black.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt 5 ];then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny fi fi done ``` ```sh #! 使用iptables #! /bin/bash PATH=$PATH:/usr/sbin cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt for i in `cat /usr/local/bin/black.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt 5 ];then iptables -t filter -D INPUT -s ${IP} -j DROP iptables -I INPUT -s ${IP} -j DROP iptables-save fi done ``` ```shell crontab -e */5 * * * * sh /usr/local/bin/secure_ssh.sh ```