一、介绍
防火墙是用于隔离互联网和本地,用于安全访问
二、linux防火墙原理
linux里面,防火墙框架为Netfilter,iptables是用户层的工具,用户通过iptables规则放到Netfilter去生效,Netfilter定义了五个hook函数;五个钩子函数对应了五个规则链:PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING
三、功能
iptables/natfilter相关的内核模块
1、Filter(过滤功能)可配置在INPUT链、OUTPUT链、FORWARD链
2、NAT(地址转换功能)可配置在PREROUTING链、POSTROUTING链、OUTPUT链
3、Mangle(修改报文首部)可配置在五个链上
4、Raw(原始格式)可配置在PREROUTING链和OUTPUT链
5、security 需要和selinux结合使用,内置规则比较复杂,通常都会被关闭
配置了多个功能的规则的顺序表:
协议栈实现
Netfilter实现
iptablses5条链各自切分到五张不同的表中。也就是说每张表中可以按需要单独为某些链配置规则。
四、命令
iptables
service iptables start|stop|restart|status
service iptables save //定义的所有内容,在重启时都会失效。调用save命令可以把规则保存到文件/etc/sysconfig/iptables中。
iptables-save //保存规则
iptables-restore //加载规则。开机的时候,会自动加载/etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables2 //加载自定义的规则文件
//iptables服务配置文件: /etc/sysconfig/iptables-config
//iptables规则文件: /etc/sysconfig/iptables
iptables [-t TABLE] COMMAND [CHAIN] [CRETIRIA]… [-j ACTION]
省缺表名为filter。命令中用到的序号(RULENUM)都基于1。
COMMAND 命令选项
-A|--append CHAIN //链尾添加新规则
-D|--delete CHAIN [RULENUM] //删除链中规则,按需序号或内容确定要删除的规则
-I|--insert CHAIN [RULENUM] //在链中插入一条新的规则,默认插在开头
-R|--replace CHAIN RULENUM //替换、修改一条规则,按序号或内容确定
-L|--list [CHAIN [RULENUM]] //列出指定链或所有链中指定规则或所有规则
-S|--list-urles [CHAIN [RULENUM]] //显示链中规则
-F|--flush [CHAIN] //清空指定链或所有链中规则
-Z|--zero [CHAIN [RULENUM]] //重置指定链或所有链的计数器(匹配的数据包数和流量字节数)
-N|--new-chain CHAIN //新建自定义规则链
-X|--delete-cahin [CHAIN] //删除指定表中用户自定义的规则链
-E|--rename-chain OLDCHAIN NEWCHAIN //重命名链,移动任何引用
-P|-policy CHAIN TARGET //设置链的默认策略,数据包未匹配任意一条规则就按此策略处理
CRETIRIA 条件匹配
-p|--proto PROTO //按协议匹配,如tcp、udp、icmp,all表示所有协议。 (/etc/protocols中的协议名)
-s|--source ADDRESS[/mask]... //按数据包的源地址匹配,可使用IP地址、网络地址、主机名、域名
-d|--destination ADDRESS[/mask]... //按目标地址匹配,可使用IP地址、网络地址、主机名、域名
-i|--in-interface INPUTNAME[ +] //按入站接口(网卡)名匹配,+用于通配。如 eth0, eth+ 。一般用在INPUT和PREROUTING链
-o|--out-interface OUTPUTNAME[+] //按出站接口(网卡)名匹配,+用于通配。如 eth0, eth+ 。一般用在OUTPUT和POSTROUTING链
可使用 ! 可以否定一个子句,如-p !tcp
扩展匹配
-m|–match MATCHTYPE EXTENSIONMATCH… //扩展匹配,可能加载extension
如: -p tcp -m tcp --dport 80
man
-m tcp //-p tcp的扩展
--sport [!]N[:M] //源端口, 服务名、端口、端口范围。
--dport [!]N[:M] //目标端口,服务名、端口、端口范围
--tcp-flags CHECKFLAGS FLAGSOFTRUE //TCP标志位:SYN(同步),ACK(应答),RST(重置),FIN(结束),URG(紧急),PSH(强迫推送)。多个标志位逗号分隔。
//CHECKFLAGS为要检查的标志位,FLAGSOFTRUE为必须为1的标志位(其余的应该为0)
--syn //第一次握手。 等效于 --tcpflags syn,ack,fin,rst syn 四个标志中只有syn为1
-m udp //-p udp的扩展
--sport N[-M]
--dport N[-M]
-m icmp //隐含条件为-p icmp
--icmp-type N //8:echo-request 0:echo-reply
iptables来查询
其他命令教程文档
https://wiki.archlinux.org/title/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://ipset.netfilter.org/iptables.man.html
参考文档
https://www.cnblogs.com/hftian/p/8280841.html
https://www.cnblogs.com/liun1994/p/6566670.html