一、iptables简介
iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
filter负责过滤数据包,包括的规则链有,input,output和forward;
nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;
mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT,postrouting用来修改源地址用来做SNAT。
iptables主要参数
-A 向规则链中添加一条规则,默认被添加到末尾
-T指定要操作的表,默认是filter
-D从规则链中删除规则,可以指定序号或者匹配的规则来删除
-R进行规则替换
-I插入一条规则,默认被插入到首部
-F清空所选的链,重启后恢复
-N新建用户自定义的规则链
-X删除用户自定义的规则链
-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,
-s指定源地址
-d指定目的地址
-i进入接口
-o流出接口
-j采取的动作,accept,drop,snat,dnat,masquerade
--sport源端口
--dport目的端口,端口必须和协议一起来配合使用
注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写
CentOS iptables 防火墙的配置方法
二、清除原有规则
iptables -F //清除预设表filter中的所有规则链的规则;
iptables -X //清除预设表filter中使用者自定链中的规则;
三、设定预设规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT //因为我是远程SSH登录的服务器,所以要先加这条规划;
iptables -p INPUT DROP
iptables -p OUTPUT ACCEPT
iptables -p FORWARD DROP
四、添加规则
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT //允许所有已经建立的和相关的连接;
iptables -A INPUT -i lo -p all -j ACCEPT //允许loopback;
iptables -A INPUT -p icmp -j ACCEPT //允许ping;
iptables -A INPUT -p tcp --dport 22 -j ACCEPT //增加单个端口的规则;
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT //增加多个连续端口的规则;
iptables -A INPUT -p tcp -m multiport --dport 4000:5000,123 -j ACCEPT //增加多个不连续端口的规则;
/etc/init.d/iptables save
/etc/init.d/iptables restart
编辑/etc/sysconfig/iptables
找到
COMMIT
在这之上增加
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
五、数据包整流
脚本:
#!/bin/sh
for ((i=2; i<255; i++))
do
iptables -I FORWARD -d 192.168.1.$i -j DROP
iptables -I FORWARD -d 192.168.1.$i -m limit --limit 400/sec -j ACCEPT
done
六、关闭SELinux
sestatus -v //查询SELinux是否开启;
vim /etc/sysconfig/selinux
找到
SELINUX=enabled
更改为
SELINUX=disabled
setenforce 0 //临时关闭;