首页 > 其他 > 详细

iptables详解加实战

时间:2014-07-01 09:41:57      阅读:364      评论:0      收藏:0      [点我收藏+]

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。分为四个表和五个链,其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。


4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。

filter:一般的过滤功能,如不-t指定表,则默认filter

nat:用于nat功能(端口映射,地址映射等)

mangle:用于对特定数据包的修改

raw:优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能


5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARDING:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发

POSTROUTIONG:发送到网卡接口之前


用表格表示下他们之间关系

四个表/五个链PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING
rew



mangle
nat

filter

用图来表示他们的过滤匹配流程

bubuko.com,布布扣


常用参数:

链中规则:

   -A 添加一条规则

   -I 根据给出的规则序号向所选链中插入一条或更多规则

   -R 从选中的链中取代一条规则

   -D 删除一条规则


链:

   -N 新建一条自定义链

   -X 删除一条自定义链

   -E 重命名一条自定义链

   -F 清空指定链,如果不指定链,则清空表中的所有链

   -P 设定链的默认策略

   -Z 把所有链的包及字节的计数器清空


查看:

   -L 查看

   -v 详细查看

   -vv 更详细查看

   -x  显示包和字节计数器的精确值,代替用K,M,G表示的约数。 这个选项仅能用于 ‘-L -v‘命令

   -n  数字输出。IP地址和端口会以数字的形式打印

   --line-numbers 在每个列表前加上行号


服务脚本:/etc/rc.d/init.d/iptables

脚本配置文件:/etc/sysconfig/iptables-config

service iptables {status|start|stop|restart|save}

规则的保存位置/etc/sysconfig/iptables


匹配条件:

通用匹配

 -s 源地址匹配

 -d 目标地址匹配

(源地址和目标地址可以是ip地址,也可以是网络地址,网络地址需加上掩码,如:192.168.1.0/24 。如需取反则加上!,如:! 192.168.1.11,即除192.168.1.11以外的ip)

 -p 协议匹配,通常有三种协议{icmp|tcp|udp}

 -i IN_INTERFACE 流入接口,注意:通常接的链有 PREROUTING、INPUT、FORWARD

 -o OUT_INTERFACE 流出接口,注意:通常接的链有 FORWARD、OUTPUT、POSTROUTING


扩展匹配

  隐式扩展

   -p tcp

        --dport PORT

        --sport PORT 

(这里可以指定端口片,如:{22:67}指定22端口到67端口,{22: }指定22端口以上,{ :22}指定22端口以下,也可以使用!取反{! 22:67})

        --tcp-flage SYN,ACK,RST,FIN SYN 检查tcp标志位,SYN为1,其他三个为0(tcp标识位有6个,分别是SYN、ACK、URG、PSH、RST、FIN----建立连接、确认、紧急、强迫、复位、结束)

   -p udp

        --sport PORT

        --dport PORT

(这里同上tcp)

    -p icmp

        --icmp-type typename

(typename有‘8‘请求、‘0‘应答等类型,例如配置一个不让某网段ping本机:iptables -t filter -A INPUT -s 192.168.0.0/24 -p icmp --icmp-type 8 -j DROP )


  显示扩展

(netfilter 扩展模块引入的扩展,用于扩展匹配条件,通常需要额外专用选项来定义)

     -m state:用于实现连接的状态检测模块

        --state NEW(新建连接),ESTABLISHED(确认连接),RELATED(关联连接),INVALID(无效连接)

     -m multiport :多端口

        --source-port :源端口组

        --destination-ports :目标端口组

        --ports

例如:将同是tcp协议的22、80端口合并一条规则

[root@david ~ ]#iptables -L INPUT -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            172.31.12.4         tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            172.31.12.4         tcp dpt:80 
[root@david ~ ]#iptables -F INPUT
[root@david ~ ]#iptables -I INPUT 1 -d 172.31.12.4 -p tcp -m multiport --destination-ports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT

























本文出自 “时不待我!” 博客,请务必保留此出处http://zengweidao.blog.51cto.com/8342699/1432696

iptables详解加实战,布布扣,bubuko.com

iptables详解加实战

原文:http://zengweidao.blog.51cto.com/8342699/1432696

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!