CentOS下iptables设置
安装iptables
$ sudo yum install iptables
清除现有规则
$ sudo iptables -F 清除预设表filter中的所有规则链的规则 $ sudo iptables -X 清除预设表filter中使用者自定链中的规则
保存规则修改
$ sudo service iptables save
查看规则
$ sudo iptables -L -n --line-number -n 只显示IP地址和端口号,不将ip解析为域名 -x 在 v 的基础上,禁止自动单位换算(K、M) -v 显示详细信息,包括每条规则的匹配包数量和匹配字节数 --line-number 显示行号
设定预设规则
#允许本地回环接口(即运行本机访问本机) 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 -A OUTPUT -j ACCEPT # 允许访问22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许FTP服务的21和20端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT #如果有其他端口的话,规则也类似,稍微修改上述语句就行 #禁止其他未允许的规则访问 iptables -A INPUT -j REJECT (注意:如果22端口未加入允许规则,SSH链接会直接断开。) iptables -A FORWARD -j REJECT
添加规则
1.开启ssh所需的22端口: $ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 2.开启80端口: $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 3.开启25 110 21 53端口等同上 4.允许icmp包通过,允许ping 服务器 $ sudo iptables -A OUTPUT -p icmp -j ACCEPT $ sudo iptables -A INPUT -p icmp -j ACCEPT 5.允许lookback $ sudo iptables -A INPUT -i lo -p all -j ACCEPT $ sudo iptables -A OUTPUT -o lo -p all -j ACCEPT 6.减少不安全端口 $ sudo iptables -A OUTPUT -p tcp --sport 31337 -j DROP $ sudo iptables -A OUTPUT -p tcp --dport 31337 -j DROP 7.对相应IP进行规则限制 只允许指定IP进行ssh连接: $ sudo iptables -A INPUT -s IP地址 -p tcp --dport 22 -j ACCEPT 注意要删除/etc/sysconfig/iptables里的这条记录 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 屏蔽IP: 屏蔽单个IP的命令是 $ sudo iptables -I INPUT -s 123.45.6.7 -j DROP 封整个段即从123.0.0.1到123.255.255.254的命令 $ sudo iptables -I INPUT -s 123.0.0.0/8 -j DROP 封IP段即从123.45.0.1到123.45.255.254的命令 $ sudo iptables -I INPUT -s 124.45.0.0/16 -j DROP 封IP段即从123.45.6.1到123.45.6.254的命令是 $ sudo iptables -I INPUT -s 123.45.6.0/24 -j DROP 8.FORWARD规则有时间再进行总结.
删除规则
$ sudo iptables -D INPUT(OUTPUT/FORWARD) 行号
开机自启动
$ sudo chkconfig --level 345 iptables on