Unit8—Linux中的火墙策略优化
Posted S4061222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unit8—Linux中的火墙策略优化相关的知识,希望对你有一定的参考价值。
实验环境
第一台:双网卡主机:ens3(254网段)和ens9(4网段), 安装iptables
第二台:单网卡主机:ens3(4网段))
一、火墙介绍
netfilter 是火墙的策略文件,当策略中开启某个服务时,才允许访问; iptables 是管理火墙策略的软件;
iptables 和 firewalld 是 iptables 的上层软件,通过这两个软件来管理火墙策略软件。
二、火墙管理工具切换
三、iptables 的使用
1.火墙策略保存
火墙策略的永久保存在 /etc/sysconfig/iptables 文件
## iptables 策略记录文件
永久保存策略的两种方式:
iptales-save > /etc/sysconfig/iptables
service iptables save
2.火墙默认策略
默认策略中的5条链
input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之前
默认的3张表
filter 经过本机内核的数据(input output forward)
nat 不经过内核的数据(postrouting,prerouting,input,output)
mangle 当filter和nat表不够用时使用(input output forward postrouting,)
3. iptables命令
参数 描述
-F 清空iptables
-t 指定表名称
-n 不做解析
-L 查看
-A 添加策略
-p 协议
--dport 目的地端口
-s 来源
-j 动作:
-j ACCEPT 允许
-j DROP 丢弃
-j REJECT 拒绝
-j SNAT 源地址转换
-j DNAT 目的地地址转换
-N 新建链
-E 更改链名称
-X 删除链
-D 删除规则
-I 插入规则
-R 更改规则
-P 更改默认规则
关闭firewall服务,开启iptables服务
iptables -t filter -L
#指定查看filter表
iptables -t filter -nL
#指定查看filter表,不做解析
iptables -F 表示对其策略进行刷刷新,刷新之后会将策略中的内容清空,但是并没有清空配置文件中的内容;此时重启服务,策略便会恢复
iptables -t filter -F
#指定filter表清空
iptables -t filter -nL
#指定查看filter表,不做解析,不指定默认查看filter表的策略
添加策略
添加只能一个接一个添加
iptables -A INPUT -j ACCEPT
#默认的 filter 表中的 input 中添加策略,访问时都接受;
iptables -D INPUT 1
#删除默认 filter 表 INPUT 中的第一条规则
iptables -A INPUT -j REJECT
#默认的 filter 表中的 input 中添加策略,访问时都拒绝;
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#默认的 filter 表中的 input 中添加策略,当访问 22 端口时都接受
iptables -I INPUT 1 -p tcp --dport 22 -j REJECT
#默认的 filter 表中的 input 中插入策略,当访问 22 端口时都拒绝
iptables -R INPUT 1 -s 172.25.4.0/24 -p tcp --dport 22 -j ACCEPT
#更改策略:来源于 172.25.4.0/24 的访问 22 端口的信息都接受
iptables -P INPUT DROP
#更改默认规则为DROP
iptables -N westos
#添加一个名称为 westos 的链接
iptables -E westos WESTOS
#将已有的链接名称 westos 更改为 WESTOS
iptables -X WESTOS
#删除WESTOS链,不能删除默认链
4.数据包状态
字符 | 含义 |
---|---|
RELATED | 建立过连接的 |
ESTABLISHED | 正在连接的 |
NEW | 新的 |
火墙的策略是从上到下依次匹配,当匹配到适合自己的状态时,便不会向下匹配。通过对策略数据包状态的编写来优化火墙。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#添加一个规则,状态为 ESTABLISHED 和 RELATED 的允许访问;
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
#添加一个规则,状态为新的访问回环接口的允许访问;
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
#添加一个规则,状态为新的数据,端口为 22 的协议为 tcp,允许其访问;
iptables -A INPUT -m state --state NEW -j REJECT
#添加一个规则,状态为新的访问都会被拒绝
5.nat表中的dnat snat
SNAT:路由后(postrouting)
1)在客户机端(b内网主机):
设定网关为172.25.4.104, 主机 ip 为 172.25.254.2042)在双网卡主机中 (a) :
iptables -t nat -A POSTROUTING -o enp1s0 -j SNAT --to-source 172.25.254.104
##172.25.4.204和172.25.4.104可以通信,从172.25.4.104口把数据接受出来, 在172.25.254.104口作数据转换
##在 nat 表的 POSTROUTING 中添加策略,从 a主机的ens3 网卡出去的所有数据,执行 SNAT 动作,将数据包装成来源于 172.25.254.104 的(把地址都转换为172.25.254.104)
systemctl -a |grep ip_forward #内核路由功能检测
编写/etc/sysctl.conf #开启内核路由功能
sysctl -p #设定生效
测试:
DNAT:路由前(prerouting)
172.25.254.70------172.25.4.204
##a主机的ens3网卡进来的数据转到172.25.4.204上
测试:
以上是关于Unit8—Linux中的火墙策略优化的主要内容,如果未能解决你的问题,请参考以下文章
Linux中netfilter火墙访问控制策略优化详解(上)—iptables
Linux中netfilter火墙访问控制策略优化详解(下)—firewalld