上次做了一次iptable策略,没时间做下记录,这才几天时间就忘完了。公司马上又要上项目了,现抽时间将iptales的详细配置记录下来,供以后项目部署时参考。
环境:
os:redhat5.864bit
webserver:tomcat7
先熟悉一下基础知识:

表和链关系:

表(table)是链(chains)的容器,链是规则(rules)的容器

默认的4个规则表

raw表:对数据包进行状态跟踪

mangle表:为数据包设置标记,流量控制类似于qos

nat表:修改数据包中得源,目标ip地址和端口

filter表:数据包过滤如果没有指定表的类型,默认指定filter表

-t参数用于指定表类型如:

  1. [root@client~]#iptables-tfilter-L-n

  2. ....查看fileter表

  3. [root@client~]#iptables-tnat-L-n

  4. ...查看nat表

[root@client ~]# iptables -t filter -L -n
....查看fileter表        
[root@client ~]# iptables -t nat -L -n      
... 查看nat表

在不指定-t参数的情况下查看的是filter表

链都是大写

INPUT:进入的数据包与本机有关的数据包,用于防护本机
OUTPU:出去的数据包与本机有关的数据包,用于防护本机
FORWARD:转发数据包与本机无关数据包,用于防护一个网络
POSTROUTING:路由选择后处理数据包
PREROUTING:路由选择前处理数据包

每一个链中默认都有一条缺省的策略

  1. [root@client~]#iptables-L-n

  2. ChainINPUT(<spanstyle="color:rgb(255,0,0);">policyACCEPT</span>)默认为接受策略

  3. targetprotoptsourcedestination

[root@client ~]# iptables -L -n
Chain INPUT (policyACCEPT)默认为接受策略
target     prot opt source               destination  
规则表之间的优先顺序流程
raw、mangle、nat、filter
规则链之间的优先顺序流程
入站数据:PREROUTING、INPUT
出站数据:OUTPUT、POSTROUTING
转发数据:PREROUTING、FOURWARD、POSTROUTING
数据包的动作
写动作的时候都是大写
ACCEPT允许数据包通过
DROP丢弃数据包,就好像该数据包没有被接受一样(直接丢弃)常用
LOG把数据信息记录到syslog
REJECT丢弃数据包,同时发送适当的响应报文(丢弃后并返回一个信息说为什么丢弃)

RETURN在调用链中继续处理数据包

iptables[-t表名]管理选项[链名][条件匹配][-j动作]
如果不指定表名,默认是filter表
如果不指定表里的链,默认是所有链
iptables-A在链尾创建一条规则
-D删除一条规则
-I在指定位置(不指定则在链首)插入一条规则
-F清空所有规则
-P设置指定链的默认策略
-p指定协议
-s源
-d目标
-R替换指定位置或内容的规则
-N创建一条自定义规则链
-X删除一条自定义规则链


端口匹配
--sport源端口
--dprot目标端口
-i定义指定某网卡的进入如-iech0多个网卡选择0网卡
-o定义指定某网卡的出口

TCP标记匹配
使用--tcp-flags如SYN(序列号),ACK(确认号),RST,
ICMP类型匹配
使用—icmp-type如echo-request,echo-reply
显式条件匹配
-m

MAC地址匹配
-mmac–mac-source00:00:00:00:00:00

多端口匹配
-mmultiport–dport20,21,25

多IP地址匹配
-miprange--src-range192.168.1.20-192.168.1.30

数据包状态匹配
-mstate

NEW新发起的链接
ESTABLISHED服务器正常响应的数据包established:成立

RELATED与已有连接相关性的数据包(如FTP上传/下载建立的数据连接,这个连接与之前的FTP控制连接存在相关性)related:相关