一、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        //临时关闭;