iptables与firewalld的管理

Linux中的火墙策略化

  • 一、火墙介绍
  • 二、火墙管理工具切换
    • 1、firewalld ---> iptables
    • 2、iptables ---> firewalld
  • 三、iptables的使用及火墙默认策略
    • 1、火墙策略的永久保存
    • 2、火墙默认策略
    • 3、iptables的命令
    • 4、数据包状态
    • 5、NAT表中的SNAT和DNAT
  • 四、firewalld的使用
    • 1、firewalld的开启
    • 2、firewald的域
    • 3、firewalld的设定原理及数据存储
    • 4、firewalld的管理命令
    • 5、firewalld的高级规则
    • 6、firewalld中的NAT

一、火墙介绍

在Linux中火墙策略是基于netfilter实现的。
1、netfilter:内核上有个安全插件netfilter(访问控制列表),这个列表里有许多详细的规则,当对这个规则允许或拒绝时,可以控制其他主机是否能访问,极大的提高了安全性。
2、iptables:管理netfilter的工具,通过iptables往netfilter表格里面写网络安全策略。
3、iptables | firewalld:对iptables进行管理,用iptables或firewalld手段来写网络安全策略。

二、火墙管理工具切换

在rhel8中默认使用的是firewalld

1、firewalld —> iptables

dnf install iptables-services -y
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service
systemctl enable --now iptables.service

iptables与firewalld的管理_第1张图片

2、iptables —> firewalld

systemctl stop iptables.service
systemctl disable iptables.service
systemctl mask iptables.service
systemctl unmask firewalld.service
systemctl enable --now firewalld.service

iptables与firewalld的管理_第2张图片

三、iptables的使用及火墙默认策略

1、火墙策略的永久保存

iptables策略记录文件:/etc/sysconfig/iptables

  • 永久保存策略:
iptables-save > /etc/sysconfig/iptables
service iptables save

在这里插入图片描述

2、火墙默认策略

默认策略中的5条链

input 输入(目的地址为本机)
output 输出(原地址为本地,向外发送)
forward 实现转发
postrouting 路由之后(发送到网卡之前)
prerouting 数据包进入路由之前

默认策略的3张表

filter 经过本机内核的数据
(input、output、forward)
过滤,防火墙,过滤数据包
nat 不经过内核的数据
(postrouting、prerouting、input、output)
用于网络地址转换(IP、端口)
mangle filternat表不够用时
(input、output、forward、postrouting、prerouting)
拆解报文,作出修改,封装报文

以下图片取自https://blog.csdn.net/weixin_46833747/article/details/108230122,感谢大佬的文章!
iptables与firewalld的管理_第3张图片
iptables与firewalld的管理_第4张图片
iptables与firewalld的管理_第5张图片
iptables与firewalld的管理_第6张图片

3、iptables的命令

-F 清空iptables
(如不保存,服务重启后,策略会恢复)
-t 指定表名称
(默认查看filter表)
-n 不做解析
-L 查看
-A 添加策略
-p 协议
--dport 目的地端口
--sport 来源端口
-s 来源
-j 动作
ACCEPT:允许
DROP:丢弃
REJECT:拒绝
SNAT:源地址转换
DNAT:目的地地址转换
-N 新建链
-E 更改链名称
-X 删除链
-D 删除规则
-I 插入规则
-R 更改规则
-P 更改默认规则

(1)清空iptables表

iptables -F
iptables -nL

iptables与firewalld的管理_第7张图片(2)查看指定表

iptables -t nat -nL

iptables与firewalld的管理_第8张图片(3)允许指定ip访问

iptables -t filter -A INPUT -s 172.25.250.250 -j ACCEPT
iptables -nL

iptables与firewalld的管理_第9张图片(4)-I INPUT 2:插入指定次序规则(INPUT 默认第一行)

iptables -t filter -A INPUT -s 172.25.250.240 -j ACCEPT
iptables -t filter -I INPUT 2 -s 172.25.250.230 -j ACCEPT
iptables -nL

iptables与firewalld的管理_第10张图片(5)指定tcp协议和dport

iptables -t filter -I INPUT -s 172.25.250.120 -p tcp --dport 80 -j ACCEPT
iptables -nL

iptables与firewalld的管理_第11张图片(6)删除规则

iptables -t filter -D INPUT 3
iptables -nL

iptables与firewalld的管理_第12张图片(7)新建链

iptables -N skkk
iptables -nL

iptables与firewalld的管理_第13张图片(8)删除链

iptables -X skkk

iptables与firewalld的管理_第14张图片

以上操作均没有保存在永久策略文件中,要保存须service iptables save或者service iptables save

4、数据包状态

RELATED 建立过连接的
ESTABLISHED 正在连接的
NEW 新的

火墙的策略是从上到下依次匹配,当匹配到适合自己的状态时,便不会向下匹配,通过对策略数据包状态的编写来优化火墙。
-m:扩展匹配,可加载扩展
(1)添加一个规则,设定火墙允许已建立和正在建立连接的数据包通过;
(2)添加一个规则,状态为新的数据包,访问回环接口的允许访问(lo :允许回环接口);
(3)添加一个规则,状态为新的数据包,使用 tcp协议,访问22端口 ,允许访问;
(4)添加一个规则,状态为新的数据包,拒绝所有主机接入。

iptables -F
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
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端口[ssh服务]进入此主机
iptables -A INPUT -m state --state NEW -j REJECT  ##拒绝所有主机接入
iptables -nL

iptables与firewalld的管理_第15张图片

5、NAT表中的SNAT和DNAT

  • 实验环境:
真机 ip 172.25.250.250
westosa主机双网卡 ens3:172.25.250.136
ens9:172.25.36.1
westosb主机 ens3:172.25.36.2
  • 开启内核路由功能,使双网卡处于不同网段的ip可以互相通信
    sysctl -a:显示系统所有参数
sysctl -a | grep ip_forward
vim /etc/sysctl.conf
 
net.ipv4.ip_forward = 1  ##开启内核路由功能

sysctl -p  ##使修改生效

iptables与firewalld的管理_第16张图片
(1)SNAT(源地址转换)
172.25.36网段无法直接ping172.25.250网段,须将westosb的网关设定为172.25.36.1,再做SNAT。

-o = --out-interface name
iptables -F  ##清空iptables表,防止之前设定对实验的影响
iptables -t nat -A POSTROUTING -o ens3 -j SNAT --to-source 172.25.250.136  ##路由之后
iptables -t nat -nL

iptables与firewalld的管理_第17张图片172.25.36网段可以ping通172.25.250网段
iptables与firewalld的管理_第18张图片
也可以通过ssh连接,实现源地址伪装,w -i:显示登录来源
iptables与firewalld的管理_第19张图片
(2)DNAT(目的地地址转化)
真机无法访问westosb主机,可以通过访问双网卡的westosa主机,让westosa主机将需求转发给westosb主机,须做DNAT。

-i = --in-interface name
iptables -t nat -A PREROUTING -i ens3 -j DNAT --to-dest 172.25.36.2
iptables -t nat -nL

iptables与firewalld的管理_第20张图片用真机连接westosa主机,连接到的是westosb主机
iptables与firewalld的管理_第21张图片

四、firewalld的使用

1、firewalld的开启

systemctl stop iptables.service
systemctl disable iptables.service
systemctl mask iptables.service
systemctl unmask firewalld.service
systemctl enable --now firewalld.service

2、firewald的域

trusted 接受所有的网络连接
home 用于家庭网络,允许接受ssh、mdns、ipp-client、samba-client、dhcp-client
work 工作网络 ssh、ipp-client、dhcp-client
public 公共网络 ssh、dhcp-client
dmz 军级网络 ssh
block 拒绝所有
drop 丢弃,所有数据全部丢弃无任何回复
internal 内部网络ssh、mdns、ipp-client、samba-client、dhcp-client
external ipv4网络地址伪装转发 sshd

实验:

dnf install httpd -y
systemctl enable --now httpd
echo skk.linux.com > /var/www/html/index.html
curl http://172.25.250.136

(1)当默认域设定为trusted

firewall-cmd --set-default-zone=trusted
firewall-cmd --list-all

iptables与firewalld的管理_第22张图片此时其他主机都可以访问
iptables与firewalld的管理_第23张图片(2)当默认域设定为public

firewall-cmd --set-default-zone=public
firewall-cmd --list-all

iptables与firewalld的管理_第24张图片此时,其他主机不可以访问,但可以通过ssh连接
iptables与firewalld的管理_第25张图片(3)当默认域设定为block

firewall-cmd --set-default-zone=block
firewall-cmd --list-all

iptables与firewalld的管理_第26张图片此时其他主机不能做任何操作
iptables与firewalld的管理_第27张图片

3、firewalld的设定原理及数据存储

(1) 火墙当前域的设定状态文件/etc/firewalld/firewalld.conf
firewalld服务将域的工作方式设定完成在/usr/lib/firewalld当中有已经封装好的域的配置文件
(2)火墙的应用模块在/usr/lib/firewalld/services
iptables与firewalld的管理_第28张图片

4、firewalld的管理命令

firewall-cmd --state  ##查看火墙状态
firewall-cmd --list-all  ##查看默认域中的火墙策略
firewall-cmd --get-active-zones  ##查看当前火墙中生效的域
firewall-cmd --get-default-zone  ##查看默认域
firewall-cmd --set-default-zone=trusted  ##设定默认域
firewall-cmd --list-all --zone=dmz  ##查看指定域的火墙策略

iptables与firewalld的管理_第29张图片
iptables与firewalld的管理_第30张图片--permanent :表示永久设定,如果不加 --permanent 则即改即生效,但是 reload 之后就失效了;如果加了 --permanent ,则需要 reload (重新加载火墙策略)才能生效

firewall-cmd --get-services  ##查看所有可以设定的服务
firewall-cmd --permanent --add-service=westos  ##添加服务
firewall-cmd --reload  ##重新加载服务
firewall-cmd --permanent --remove--service=westos  ##移除服务

iptables与firewalld的管理_第31张图片
iptables与firewalld的管理_第32张图片

firewall-cmd --permanent --add-source 172.25.36.0/24 --zone=trusted  ##指定数据来源访问指定域
firewall-cmd --permanent --remove-source 172.25.36.0/24 --zone=trusted  ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens3 --zone=public #删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens3 --zone=block #添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens3 --zone=public #更改网络接口到指定域

设定默认域为block,设定36网段的主机在访问westosa时为trusted
iptables与firewalld的管理_第33张图片westosb主机为172.25.36网段,所以可以访问,真机则不可以
iptables与firewalld的管理_第34张图片
修改ens3到public
iptables与firewalld的管理_第35张图片更改后真机不可以访问,但可以通过ssh连接
在这里插入图片描述

5、firewalld的高级规则

firewall-cmd --direct --get-all-rules  ##查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.250.250 -p tcp --dport 80 -j REJECT  ##添加规则
firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 1 ! -s 172.25.250.250 -p tcp --dport 80 -j REJECT  ##删除规则

先将之前实验的规则进行修改,将域改为trusted,允许所有访问
在这里插入图片描述设定高级规则,除了172.25.250.250主机,其他主机都拒绝访问
iptables与firewalld的管理_第36张图片
真机可以访问,其他主机不能访问
在这里插入图片描述

6、firewalld中的NAT

  • 实验环境和上面iptables的SNAT和DNAT实验环境一致

(1)SNAT,双网卡主机开启地址伪装

firewall-cmd --permanent --add-masquerade  ##开启地址伪装
firewall-cmd --reload

此时172.25.36网段主机就可以ping通172.25.250网段主机
iptables与firewalld的管理_第37张图片(2)DNAT,在地址伪装基础上,做目的地址转换

firewall-cmd --permanent --add-masquerade  ##开启地址伪装
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.36.2  ##做目的地址转换
firewall-cmd --reload

iptables与firewalld的管理_第38张图片用真机连接westosa主机,连接到的是westosb主机
iptables与firewalld的管理_第39张图片

你可能感兴趣的:(Linux系统管理及网络服务,运维,linux,iptables,firewalld)