在Linux系统内核空间中,有面向网络的防火墙实现。这个防火墙是由软件实现的,是逻辑上的防火墙。用户可以设置某些的“安全设定”,配置到这个网络防火墙的“安全框架”中。这个“安全框架”就是netfilter。
netfilter是处于内核态的,netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:
1. 网络地址转换(Network Address Translate)
2. 数据包内容修改
3. 以及数据包过滤的防火墙功能。
刚刚我们提到用户可以在netfilter中自定义“安全设定”,就需要一个中间代理把用户态的“安全设定”配置到内核态中的“安全框架(netfilter)”,这个代理就是iptables。
iptables可以提供给我们用户一些选项来自定义netfilter的功能。这次我们讨论使用iptables进行TCP数据报过滤。
在命令行输入sudo iptables -L
查看防火墙管理的三个“链”:
Chain INPUT表示进入路由器的数据报、Chain FORWARD表示经过路由器的数据报、Chain OUTPUT表示从路由器从路由器出去的数据报。这里三者默认都是ACCEPT(接收)。
target代表如何处理捕获的数据报,共有3种可定义的方法:ACCEPT(接收)、REJECT(拒绝)、DROP(丢弃)。prot代表协议;