linux防火墙(iptables, firewalld)

一、介绍
防火墙是用于隔离互联网和本地,用于安全访问

二、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

https://www.zsythink.net/archives/1199

猜你喜欢

转载自blog.csdn.net/u010835747/article/details/121204564