防火墙介绍
- 防火墙是位于内外网之间的一组软硬件部件的组合,
主要目的是保护内外网的数据流通的安全
,当外网访问内网的时候发送的数据包必须经过内网的防火墙检验是否符合规则。 - 能够指定火墙策略的两个工具包
iptables和firewalld
- Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的
包过滤防火墙或称作网络层防火墙
(iptables) - Firewalld:只用于管理Linux防火墙的命令程序,属于
“用户态”
(User Space。又称为用户空间)的防火墙管理体系。支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
iptables和firewalld的关系
参考链接:
https://blog.csdn.net/m0_47219942/article/details/107698753
四表五链
- 常说防火墙三表五链,其实应该说四表五链比较合适,不过raw表应用较少,因此也常用
“三表五链”
来描述防火墙
四表
表名称 | 功能 | 内核模块 |
---|---|---|
filter表 | 负责过滤功能,防火墙 | iptables_filter |
nat(Network Address Translation)表 | 用于网络地址转换(IP、端口) | iptables_net |
mangle表 | 拆解报文,作出修改,封装报文 | iptables_mangle |
raw表 | 关闭nat表上启用的连接追踪机制,确定是否对该数据包进行状态跟踪 | iptable_raw |
优先级:
- 当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则(如果有)如下图所示
五链
名称 | 功能 |
---|---|
PREROUTING | 数据包进入路由之前 |
INPUT | 目的地址为本机 |
OUTPUT | 原地址为本机,向外发送 |
FORWARD | 实现转发 |
POSTROUTING | 发送到网卡之前 |
图示:
对应关系
- filter表,包含三个规则链:INPUT,FORWARD,OUTPUT。
- nat表,包含三个规则链:PREROUTING,POSTROUTING,OUTPUT。
- mangle表,包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。
- raw表,包含两条规则链:OUTPUT、PREROUTING。
注:在iptables的四个规则表中,mangle表和raw的表应用相对较少
在处理各种数据包时,5种默认规则链的应用时间点
- INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。
- OUTPUT链:当防火墙本机向外发送数据包(出战)时,应用次链中的规则。
- FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用次链中的规则。
- PREROUTING链:在对数据包作路由选择之前,应用次链中的规则。
- POSTROUTING链:在对数据包作路由选择之后,应用次链中的规则。
注:INPUT、OUTPUT链更多的应用在“主机防火墙”
中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”
中,特别是防火墙服务器作为网关使用时的情况。
iptables 命令的管理控制选项
选项名 | 功能及特点 |
---|---|
-A | 在指定链的末尾添加(–append)一条新的规则 |
-D | 删除(–delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则 |
-I | 在指定链中插入(–insert)一条新的规则,若未指定插入位置,则默认在链的开头插入 |
-R | 修改、替换(–replace)指定链中的某一条规则,按规则序号或内容确定要替换的规则 |
-L | 列出(–list)指定链中的所有的规则进行查看,若未指定链名,则列出表中所有链的内容 |
-F | 清空(–flush)指定链中的所有规则,若未指定链名,则清空表中所有链的内容 |
-N | 新建(–new-chain)一条用户自己定义的规则链 |
-X | 删除指定表中用户自定义的规则链(–delete-chain) |
-P | 设置指定链的默认策略(–policy) |
-n | 使用数字形式(–numeric)显示输出结果,若显示主机的IP地址而不是主机名 |
-v | 查看规则列表时显示详细(–verbose)的信息 |
-V | 查看iptables命令工具的版本(–Version)信息 |
-h | 查看命令帮助信息(–help) |
–line-number | 查看规则列表时,同时显示规则在链中的顺序号 |
举例如下:
增
- 追加:
iptables -A INPUT/OUTPUT(链名) -p (协议) tcp/udp 可以指定网卡(用-i 和-o 参数),可以指定源地址/目标地址(-d -s ) --dport (指定端口号) -j ACCEPT - 插入:
iptables -I(默认第一)可以指定序号
实例:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- 追加:
删
表名默认是fitler可以省略
,但是链名一定要加(如:INPUT )- iptables -t 表名(可以省略不计) -D链序号 (第几条策略,从上往下 )
改
iptables -R INPUT/OUTPUT 7(一定要跟对应链的序号) -p tcp --dport 80 -j ACCEPT查
- service iptables status
- iptables -t 接想要查询的表名(有四个) -L
- iptables -L -v -n
- iptables -vnL (有参数顺序的要求)
注: drop是丢弃;reject是拒绝