网络命令工具之iptables

倾然丶 夕夏残阳落幕 提交于 2019-12-05 23:50:38

一、iptables是什么?

iptables是Linux系统内置的防火墙命令,其实它更像是一个代理,通过它用户可以将其安全设定放置到内核的安全框架里,这个框架就是netfilter,顾名思义,可以理解为网络过滤器,即对从网络上发来的数据包、ip进行检测,确定是接受、拒绝、丢弃还是转发,进而对数据包做出一系列的处理操作。

二、iptables/netfiler工作原理?

在学习网络的时候,我们知道主机之间的通信实际是将封装了目的ip、源ip、端口、各类协议(tcp、udp等)的ip数据包以帧的形式在实际的物理链路上传输到达目的网络的每一个主机,然后由主机检查目的地址是不是自己,如果是则接收处理;不是则丢弃,那么这个检查交付过程又是怎么实现的呢?

这就涉及到netfiler的工作原理,那么netfiler到底是如何工作的呢?

iptables是按照规则来办事的——“如果数据包符合某种规则,就按照规则所指定的行为处理”。由这套规则构建出了链和表两个概念,在linux内核中有四表五链

 

链:在防火墙的实现中,就是通过将报文与这些制定的规则相匹配进而来对报文采取相应的处理,所以简单的说,将一系列的规则链接起来就抽象形成了链。

 

input链:当收到防火墙本地地址的数据包时,应用此链的规则

output链:当向外发送数据包时,应用此链规则

forward链:转发数据包时,应用此链

prerouting链:“路由前”链,处理刚到达本机的数据包,在对数据包做路由选择之前应用此链,如转换数据包中目的ip地址(DNAT)

postrouting链:“路由后”链,在对数据包做路由选择之后应用此链

 

 

而表又是什么?对于不同链上肯定会存在功能一致的规则,由此提出了表。

表是相同功能的规则的集合,linux内核为我们提供了四种表,所有的规则都属于这四类表,也即是链中的规则是这四张表中规则的不同组合中,先看一下有哪几类四种表:

filter表:负责过滤功能

net表:实现网络地址转换

mangle表:拆解报文,修改,重新封装

raw表:关闭nat表上启用的连接追踪机制

防火墙就是在内核空间根据这一系列表中的规则来实现数据包的处理和转发。

 

三、iptables基本命令

iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
  • table、chain:指明iptabls要操作的表名、链名,未指明时默认使用filiter表
  • command :插入I、增加A、删除D、查看等
  • CRETIRIA: 匹配条件,指明要操作的数据包的特征
  • Action:控制类型,指的是数据包的处理方式,accept、reject、drop

1、查看当前iptables规则

service iptables status  

2、查看某表中的规则

iptables  --line-number  -t  表名  -nL

3、删除规则

iptables  -D  INPUT  编号

4、添加新入站规则

iptables  -A  INPUT  -s  ip地址  -p  协议  --dport  端口  -j  处理方式

5、替换规则

iptables  -R  INPUT  编号  -s  ip地址  -p  协议  --dport  端口  -j  处理方式

  

四、iptables实例

禁止192.168.1.0子网里所有的客户机上网。

iptables -I FORWARD -s 192.168.1.0/24 -j DROP

不允许192.168.100.0/24网络对80端口访问

iptables -A INPUT -s 192.168.100.0/24 -d 172.16.55.7 -p tcp --dport 80 -j DROP

丢弃错误的Tcp包

iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

禁止与192.168.10.1的所有连接

iptables -t nat -A PREROUTING -d 192.168.10.1 -j DROP

设置icmp包过滤,允许每秒1个包,限制触发条件是10个包

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT 

ps:使用iptables命令操作的规则仅对当前会话有效,规则存在于内存中,如果重启就会丢失规则

总结

netfilter/iptables IP 信息包过滤系统是一种功能强大的工具, 可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中, 而这些表集成在 Linux 内核中。 在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。用户可以通过在用户空间构建出自己的规则,根据需求编写相应的规则来实现达到系统安全的目的。



 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!