iptables规则初始化和防御syn

确定firewalld防火墙是否开启和关闭在开启iptables

1.关闭firewalld命令

查看防火墙是否启动:   firewall-cmd --state

关闭防火墙systemctl stop firewalld.service

设置防火墙开机启动systemctl enable firewalld

禁止防火墙开机启动systemctl disable firewalld

锁定systemctl mask firewalld
解锁systemctl unmask firewalld

2.查看iptables

查看iptables是否安装:rpm -qa | grep iptables

查看iptables是否运行systemctl status iptables

查看iptables防火墙状态chkconfig --list iptables

安装iptablesyum install -y iptables

安装iptables-servicesyum install iptables-services

systemctl restart iptables

启用:service iptables start

iptables服务启动:service iptables save

#提示Redirecting to /biji/systemctl start iptables.service    翻译:重定向到 /biji/systemctl start iptables.service

服务开机启动systemctl enable iptables.service

服务重启systemctl restart iptables.service

查看开启chkconfig --list iptables

iptables服务启动service iptables save

查看相关规则:iptables -L

查看已经启动的服务列表:systemctl list-unit-files|grep enabled

#编辑防火墙文件 (建议都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables

#重启防火墙使配置文件生效
systemctl restart iptables.service

#设置iptables防火墙为开机启动项
systemctl enable iptables.service

 

 

 

iptables目录

/etc/sysconfig

iptables初始化规则

在windows利用Notepad++   工具粘贴下列文本

注意:编码转换 使用ANSI 另存为iptables.sh

保存类型为Unix script file

文件传送至centos目录/etc/sysconfig 里面

在执行命令:

#进入目录:cd /etc/sysconfig

#给上传的文件换行由windows设置为centos的换行符:  

sed -i 's/\r$//' syn.sh

#赋予权限命令

chmod a+x syn.sh

#运行脚本(两个都可以):

./syn.sh
source syn.sh

#保存防火墙命令service iptables save
#重启防火墙命令:service iptables restart
#查看防火墙规则iptables -nL

#停止防火墙命令:service iptables stop

 

配置好的设置直接在文本里面存好在上传,执行上面的转换和赋予权限

#!/bin/bash
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
iptables -F
iptables -X
iptables -X
iptables -Z


iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#开启全部端口白名单
iptables -A INPUT -s 119.29.32.126 -p all -j ACCEPT

#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#开启3306白名单
#iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

#开启cf的http白名单
iptables -I INPUT -s 103.21.244.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 103.22.200.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 103.31.4.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 104.16.0.0/13 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 104.24.0.0/14 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 108.162.192.0/18 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 131.0.72.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 141.101.64.0/18 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 162.158.0.0/15 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 172.64.0.0/13 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 173.245.48.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 188.114.96.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 190.93.240.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 197.234.240.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 198.41.128.0/17 -p tcp --dport 80 -j ACCEPT



#保证传入的tcp链接是SYN数据包,如果不是就丢弃
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
#关闭ICMP (你通常不需要这个协议)
iptables -t mangle -A PREROUTING -p icmp -j DROP

#阻止无效数据包
iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
#阻止不是 SYN 的新数据包但我们发现它捕获了一些其他规则没有捕获的数据包
#iptables -t mangle -A PREROUTING -p tcp --syn -m conntrack --ctstate NEW -j DROP
#阻止不常见的 MSS 值根据前两个规则,只有 SYN 数据包可以是新数据包)。这有助于阻止愚蠢的 SYN 洪水
#iptables 3-t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss --mss 536:65535 -j DROP

#防止nmap探测
iptables -t filter -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT


# 防止端口扫描
iptables -N port-scanning 
iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
iptables -A port-scanning -j DROP


#阻止带有虚假 TCP 标志的数据包,阻止使用虚假 TCP 标志的数据包,即。合法数据包不会使用的 TCP 标志
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP

#阻止来自私有子网的数据包(欺骗)
iptables -t mangle -A PREROUTING -s 224.0.0.0/3 -j DROP
iptables -t mangle -A PREROUTING -s 169.254.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 172.16.0.0/12 -j DROP
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 -j DROP
iptables -t mangle -A PREROUTING -s 192.168.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 10.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 0.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 240.0.0.0/5 -j DROP
iptables -t mangle -A PREROUTING -s 127.0.0.0/8 -i lo -j DROP

#限制 RST 数据包
iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT 
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP


service iptables save
service iptables restart
iptables  -nL
echo ok

 

 

 

初始化的设置

#!/bin/bash
#清除命令并初始化
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
iptables -F
iptables -X
iptables -X
iptables -Z

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

#保证传入的tcp链接是SYN数据包,如果不是就丢弃
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
#关闭ICMP (你通常不需要这个协议)
iptables -t mangle -A PREROUTING -p icmp -j DROP

#阻止无效数据包
iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
#阻止不是 SYN 的新数据包但我们发现它捕获了一些其他规则没有捕获的数据包
#iptables -t mangle -A PREROUTING -p tcp --syn -m conntrack --ctstate NEW -j DROP
#阻止不常见的 MSS 值根据前两个规则,只有 SYN 数据包可以是新数据包)。这有助于阻止愚蠢的 SYN 洪水
#iptables 3-t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss --mss 536:65535 -j DROP

#防止nmap探测
iptables -t filter -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT

# 防止端口扫描
iptables -N port-scanning 
iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
iptables -A port-scanning -j DROP

#阻止带有虚假 TCP 标志的数据包,阻止使用虚假 TCP 标志的数据包,即。合法数据包不会使用的 TCP 标志
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP

#阻止来自私有子网的数据包(欺骗)
iptables -t mangle -A PREROUTING -s 224.0.0.0/3 -j DROP
iptables -t mangle -A PREROUTING -s 169.254.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 172.16.0.0/12 -j DROP
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 -j DROP
iptables -t mangle -A PREROUTING -s 192.168.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 10.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 0.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 240.0.0.0/5 -j DROP
iptables -t mangle -A PREROUTING -s 127.0.0.0/8 -i lo -j DROP

#限制 RST 数据包
iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT 
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP

service iptables save
service iptables restart
iptables  -nL
echo ok

 

 

版权声明:
作者:wanghaha
链接:http://www.aiii.vip/2111.html
来源:我的生活分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>