上次做了一次iptable策略,没时间做下记录,这才几天时间就忘完了。公司马上又要上项目了,现抽时间将iptales的详细配置记录下来,供以后项目部署时参考。
环境:
os:redhat5.864bit
webserver:tomcat7
先熟悉一下基础知识:
表和链关系:
表(table)是链(chains)的容器,链是规则(rules)的容器
默认的4个规则表
raw表:对数据包进行状态跟踪
mangle表:为数据包设置标记,流量控制类似于qosnat表:修改数据包中得源,目标ip地址和端口
filter表:数据包过滤如果没有指定表的类型,默认指定filter表
-t参数用于指定表类型如:
[root@client~]#iptables-tfilter-L-n
....查看fileter表
[root@client~]#iptables-tnat-L-n
...查看nat表
[root@client ~]# iptables -t filter -L -n
....查看fileter表
[root@client ~]# iptables -t nat -L -n
... 查看nat表
在不指定-t参数的情况下查看的是filter表
链都是大写
INPUT:进入的数据包与本机有关的数据包,用于防护本机OUTPU:出去的数据包与本机有关的数据包,用于防护本机
FORWARD:转发数据包与本机无关数据包,用于防护一个网络
POSTROUTING:路由选择后处理数据包
PREROUTING:路由选择前处理数据包
每一个链中默认都有一条缺省的策略
[root@client~]#iptables-L-n
ChainINPUT(<spanstyle="color:rgb(255,0,0);">policyACCEPT</span>)默认为接受策略
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:相关
转载于:https://blog.51cto.com/daspr/1309492