Linux的铜墙铁壁iptables


原理

Netfilter是Linux中的一个子项目,它的主要功能是进行数据包过滤、连接跟踪、地址转换等,而iptables则是netfilter提供的对用户数据包进行过滤、修改等操作的一种命令行工具,当数据包通过网卡进入进入内核时,它得先经过iptables的五条链,这些链都有相应的处理数据包的规则,而我们正是通过在这些链上设置规则来控制管理数据包,从而达到防火墙的功能。每当数据包到达一个链时,iptables就会从链中的所有规则逐一开始校验该数据包是否符合规则中限定的条件。若满足,系统就会根据每个规则定义的方法来处理该数据包;若不满足,iptables则继续检查下一条规则,如果该数据包不符合链中的任意规则,iptables则会该链的默认策略去处理该数据包。

四个表

iptables的结构是由tables组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables的规则时,通过要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。

tables的类型分别有:

五条链

链,也称为钩子函数,它是一系列规则的一个组合,当数据包经过这些狗子函数时,她必须完全匹配每一个钩子函数中的所有规则,方能进入下一个钩子函数。

钩子函数的类型分别有:

语法规则

语法:iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

1)常用的命令选项:

  -t:指定要操纵的表(四个表);    -A:向规则链中添加条目;    -D:从规则链中删除条目;    -i:向规则链中插入条目;    -R:替换规则链中的条目;    -L:显示规则链中已有的条目;    -F:清楚规则链中已有的条目;    -Z:清空规则链中的数据包计算器和字节计数器;    -N:创建新的用户自定义规则链;    -P:定义规则链中的默认目标;    -h:显示帮助信息;    -p:指定要匹配的数据包协议类型;    -s:指定要匹配的数据包源  

2)常用的处理动作:

  ACCEPT:允许数据包通过    DROP:直接丢弃数据包,不给任何回应信息    REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应的信息。    LOG:在/var/log/messages文件中记录日志然后将数据包传递给下一条规则    REDIRECT:  端口映射。    SNAT :源地址转换,修改包来源IP为某IP或IP范围,做内网和公网之间的转换。    DNAT::目标地址转换。 修改数据包目的地IP为某 Ip 或 IP 范围。  

3)常用的条件匹配:

  1、状态匹配:-m state --state 连接状态    NEW:与任何连接无关的    ESTABLISHED:响应请求或已建立连接的    RELATED:与已有连接有相关性的,如FTP数据连接    2、MAC地址匹配:-m mac --mac-source MAC地址    eg:iptables -A INPUT -m mac --mac-source f0:1b:12:12:22:4f -j DROP    3、IP范围匹配:-m iprange --src-range  IP范围    eg:iptables -A FORWARD -p tcp -m iprange --src-range 192.168.0.1-192.168.0.10 -j ACCEPT    4、多端口匹配:-m multiport --sports 源端口列表  和  -m multiport --sports 目的端口列表    eg:iptables -A INPUT -p tcp -m multiport --dport 11,29,116,121 -j ACCEPT  

4)常用的一些iptables策略:

  1、拒绝转发来自192.168.2.33主机的数据    iptables -A FORWARD -s 192.168.2.33 -j REJECT    2、允许转发来自192.168.2.1/99网段的数据    iptables -A FORWARD -s 192.168.2.1/99 -j ACCEPT    3、允许本机开放从TCP端口20-1024提供的应用服务。    iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT    iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT    4、只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。    iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT    iptables -A INPUT -p tcp --dport 22 -j DROP    5、 允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。    iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT    iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT    6、屏蔽ip 110.1.1.1的访问    iptables -I INPUT -s 110.1.1.1 -j DROP    7、屏蔽从123.0.0.1到123.255.255.254iptables -I INPUT -s 123.0.0.0/8 -j DROP    8、屏蔽从从123.45.0.1到123.45.255.254iptables -I INPUT -s 124.45.0.0/16 -j DROP    9、屏蔽从从123.45.6.1到123.45.6.254iptables -I INPUT -s 123.45.6.0/24 -j DROP    10、允许所有本机向外的访问iptables -A OUTPUT -j ACCEPT    11、允许访问22端口iptables -A INPUT -p tcp --dport 22 -j ACCEPT  

5)常用的iptables命令:

  1、查看当前 IPTABLES 规则    service iptables status    2、 将所有iptables以序号标记显示    iptables -L -n --line-numbers    3、 比如要删除INPUT里序号为22的规则    iptables -D INPUT 22  

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » Linux的铜墙铁壁iptables