一,四表五链
防火墙按照我们指定的规则来办事。而链就相当于是障碍,表是在链上的规则。
当匹配链上的规则正确时,才可以进入。就像我们打游戏一样,链就是关卡,表是关卡上的怪,只有打败怪,才能进入下一关。
五链:prerouting,input,output,forward,postrouting。
当有报文时,在prerouting上查看是否访问的本主机,如果是就经过input进入主机,不是将会通过forward转发出去或者直接丢掉。
当有出去的报文时,确定可以出去,经output和postrouting流出,访问其他主机。
四表:raw,mangle,nat,filter
raw:关闭nat表上启用的连接追踪机制(可以理解为追踪,追踪一般要从开始追踪,因此raw在进入和出去时会有,prerouting,output)
mangle:解析报文(每个链都需要解析报文,因此每个链上都有)
nat:网络地址转换(每一次传输时都要确定是否传输的地址正确,因此除了转换以外,其他都要,prerouting,input,output,postrouting)
filter:负责过滤功能(过滤,可以理解为是否安全,安全让通过,因此在input,output,forward)
注:后面括号里的内容不一定正确,只是增加理解和记忆。
报文需要把经过链上的所有表匹配完以后才能通过,而表也有优先级,raw>mangle>nat>filter,先匹配优先级高的,后匹配低的。相当于关卡中也有小怪和boss,先打小怪,后打boss。
二,iptables命令
前面已经说了四表和五链,iptables就是给四表和五链提供规则和处理动作的。
iptables命令常用选项:
-t:指定表
-I:指定链
-D:删除匹配的规则
-F:删除指定链或者所有链的规则
-s:匹配源地址
-d:匹配目标地址
--sport:匹配源端口
--dport:匹配目标端口
-p tcp:指定协议为tcp
-j:后面跟处理动作
处理动作:
ACCEPT:允许通过
DROP:拒接通过,并直接丢弃(直接丢弃,不告诉你拒绝了)
REJECT:拒绝通过,并发送一个响应包(意思是告诉你我拒绝了)
-L:显示所有规则
-v:列出详细信息
-n:显示ip地址,以数字显示
查看规则:
没有任何规则,此时添加一条规则:由192.168.159.129访问过来的数据给DROP掉。
添加完后查看,在input链上有一条规则,原本可以ping通这台主机,但是添加规则以后无法ping通。
再添加一条规则,允许通过,此时可以ping通,因为只会匹配最前面的规则。
白名单与黑名单机制:
白名单:只有在白名单里的人才允许访问,否则不能访问。
黑名单:在黑名单上的无法访问,其他人都可以访问。
一般使用白名单机制,只让应该访问的人进行访问。
总结:一般做项目时会关闭防火墙,所有很少使用防火墙,像上面写的规则,需要写入文件才可以保留下来,不然重启电脑会清空规则。