centos一般本身就带有iptables防火墙,一hyper-v架构centos系统的VPS由于采用网上广为流传的IPTABLES设置方法,导致无法修改ssh的22端口,如果你修改ssh端口无效,那么也可以参考本文。之前的一些centos iptables教程设置有问题,不正确的设置也许可以起到作用,但是却会增加系统的负载,不能最优的iptables配置方法,然后被各网站抄来抄去,最终就会给linux新人带来一些困扰。强烈建议采用本文的配置方法重新配置centos的iptables。
一:centos iptables的正确设置方法和禁止PING
1.清除已有iptables规则
iptables -F iptables -X iptables -Z
2.iptables的配置,这里张小三资源网采用centos官方给出的默认的防火墙规则,我们只需要添加或删除不用的端口就可以了,这样才能最大化的兼容各种环境,降低防火墙不兼容造成的负载等问题。
首先运行命令:vi /etc/sysconfig/iptables添加如下内容。
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
#准许本机localhost访问
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
#是否禁止ping,禁止的话可以在下面这句的开头加#号。
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
#允许已建立的或相关连的通行
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#开放s.s.h的22端口(开放其它端口可以按照下面规则自己添加)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#开放80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#开放ftp的21端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#除放开的端口外禁止其它端口
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
3.最后保存一下
service iptables save
#防止iptables机器重启失效,重启iptables自动生效,运行如下命令 chkconfig --level 345 iptables on service iptables restart
二:iptables应用
1.查看已添加的iptables规则:
iptables -L
2.删除已添加的iptables规则:
将所有iptables规则按照1.2.3....进行排序,执行: iptables -L -n --line-numbers 如果要删除INPUT里序号为5的规则,执行: iptables -D INPUT 5
3.利用iptables屏蔽指定的IP:
#屏蔽单个IP的命令是 iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP