Linux 防火墙概念
Netfilter:是用来实现Linux内核中防火墙的Linux内核空间程序代码段,要么被直接编译进内核空间中,要么被包含在模块中。
iptables:是用来管理Netfilter防火墙的客户程序。
数据包的流向:
(1)(流入数据)PREFORWARDING——>FORWARDING(转发)——>POSTFORWARDING(流出数据包)
(2)PREFORWARDING——>INPUT——>本机OUTPUT——>POSTFORWARDING
iptables的三个表:
(1)filter,是默认的表,包含正真的防火墙过滤规则。内建的规则链包括:INPUT、OUTPUT、FORWARD
(2)nat,包含源和目的地址以及端口转换使用的规则,内建的规则链包含:PREROUTING、OUTPUT、POSTROUTING
(3)mangle,包含用于设置特殊的数据包路由标志的规则。这些规则随后被filter表中的规则检查。
内建的规则链包含:PREROUTING、INPUT、FORWARD、POSTROUTING、OUTPUT
链介绍:
(1)INPUT链:当一个数据包经内核中的路由计算确定为本地的Linux系统后,它会通过INPUT链的检查
(2)OUTPUT:保留给系统自身的数据包
(3)FORWARD:经过Linux系统路由的数据包(即当iptables防火墙用于链接两个网络是,两个网络间的数据包必须流经该防火墙)
(4)PREROUTING:用于修改目标地址(DNAT)
(5)POSTROUTING:用于修改源地址(SNAT)
iptables详细语法:
iptables [-t 表名] <-A|I|D|R>链名[规则编号] [-i|o网卡名称] [-p 协议类型] [-s 源IP地址|源子网] [--port 源端口号] [-d 目标IP地址|目标子网] [--port 目标端口号] <-j 动作>
(1)默认策略:
iptables [-t 表名] <-P> <链名> <动作>
[-t 表名]:默认是filter
<-P> :定义默认策略
<链名>:确定默认策略用于哪个链——INPUT、OUTPUT、FOREARD、PREROUTING、POSTROUTING
<动作>:处理数据包的动作——ACCEPT(接收)、DROP(丢弃)、REJECT(拦截,并发回封包通知对方)、SNAT、DNAT、LOG、REDIRECT
(2)查看:
iptables [-t 表名] -L [链名]
(3)增加、插入、删除、替换iptables规则
-A:增加
-I:插入,原本该位置上的规则会往后顺序移动,若没有制定规则编号,则在第一条前面插入
-D:删除
-R:替换某条规则,