iptables.md 2.1 KB

[TOC]

1、配置iptables

# 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、封禁操作

# 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、解封操作

# 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、大流量冲击

# 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、脚本

#! 使用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
#! 使用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
crontab -e
 */5 * * * *  sh /usr/local/bin/secure_ssh.sh