iptables是linux下的过滤防火墙,用来设置、维护和检查Linux内核的IP包过滤规则的。
检查是否安装了iptables,以及iptables的运行状态,使用第三个重启命令重启下iptables,如果依然无法运行就从新安装吧。
rpm -aq|grep iptables
service iptables status
service iptables restart
状态如果为停止或异常,则不会显示已经设置的规则列表。
iptables安装
如果没有安装iptables,使用下边命令安装,一般linux默认都安装了iptables。
yum install iptables
yum install iptables-services
iptables配置
使用Putty登录ssh,用以下命令来配置iptables,查询默认配置的命令有哪些。
iptables -L -n
清除所有规则和计数器
iptables -F(这个命令清除后可能会断开SSH,所以要先执行/sbin/iptables -P INPUT ACCEPT)
iptables -X
iptables -Z
开放端口,比如ssh22,ftp21,http80,https443,stmp25,POP3110,DNS53,mysql3306
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
禁止指定的端口,例如禁止21端口
iptables -A INPUT -p tcp --dport 21 -j DROP
关于IP段的表示,要学习使用,比如家庭IP为106.114.165.65,那么家庭IP段就是104.114.0.0/16
从104.0.0.1到104.255.255.254,表示为104.0.0.0/8
从104.45.0.1到104.45.255.254,表示为104.45.0.0/16
从104.45.6.1到104.45.6.254,表示为104.45.6.0/24
只允许某个IP、此IP所在的ip段访问http80端口
iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP
iptables -I INPUT -s 106.114.165.65 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 106.114.0.0/16 -p tcp --dport 80 -j ACCEPT
禁止某个IP、此IP所在的ip段访问所有端口
iptables -I INPUT -s 106.114.165.65 -j DROP
iptables -I INPUT -s 106.114.0.0/8 -j DROP
禁止某个IP、此IP所在的ip段访问80端口
iptables -I INPUT -p tcp –dport 80 -s 106.114.165.65 -j DROP
iptables -I INPUT -p tcp –dport 80 -s 106.114.0.0/8 -j DROP
禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
允许本机访问本机
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables防御攻击
只允许某个IP端访问SSH22端口,不建议用这个命令,一旦改变IP,主机就无法登录了,所以还是建议修改端口或使用秘钥登录ssh,避免被黑客扫描。
iptables -A INPUT -p tcp --dport 22 -s 106.114.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables 防止SYN攻击
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJEC
防止每个IP最多20个初始连接,超过的丢弃
iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 20 -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables防御DDOS攻击
iptables -A INPUT -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables防止CC攻击,允许单个IP的最大连接数为 30
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
删除已添加的iptables规则
查询已经添加的iptables规则
iptables -L -n -v
将所有iptables规则排号
iptables -L -n --line-numbers
删除某个序号规则,比如7
iptables -D INPUT 7
iptables生效
设置完成后,先保存,再重启iptables,保存的设置就生效了。
service iptables save
service iptables restart
CentOS安装在/etc/sysconfig/iptables,你也可以使用winscp在线编辑,打开iptables文件,你会看到一排的命令列表,只需要添加或删除你要配置的命令即可,命令前去掉iptables,下边是对民网的iptables。
# Generated by iptables-save v1.4.7 on Sun Jan 7 12:17:56 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:40]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 39000:40000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sun Jan 7 12:17:56 2018
PS:
一大片的iptables命令,不一定全用上,一般iptables只用于端口的访问和禁止,还有端口流量转发命令,不过很少有人使用,一台主机就够用了,iptables主要是端口的禁止和访问比较给力,如果说防御ddos和cc攻击,算是白给的,根本防不住各种模式的数据包,还得靠金盾防火墙。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏