RHCE——火墙之iptables和firewalld部署

1.火墙介绍

1.1 netfilter

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些 信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。

1.2 iptables

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的,是用来填写netfilter的工具
可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作’target’(目标),也可以跳向同一个表内的用户定义的链。
netfilter/iptables 的最大优点是它可以配置有状态的防火墙。

1.3 iptables|firewalld(火墙管理的两种工具)

iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。
相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念,即不同的防火墙策略集合,用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。


2.火墙管理工具切换

火墙的管理方式只能有一种
注意:在rhel8中默认使用的是firewalld
在这里插入图片描述

2.1 firewalld----->iptables的切换

dnf install iptables-services -y安装iptables
systemctl stop firewalld关闭firewall
systemct disable firewalld开机不启动firewall
systemctl mask firewalld冻结firewall使不被其他程序打开
systemctl enable --now iptables启动iptables并设定开机启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.2 iptales -------> fiewalld的切换

systemctl disable --now iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
在这里插入图片描述


3. iptables 的使用

3.1 iptables 策略记录文件

/etc/sysconfig/iptablesiptables 策略记录文件

在这里插入图片描述
在这里插入图片描述

3.2 永久保存策略

(以下两种方式任选其一即可)
(1)iptales-save > /etc/sysconfig/iptables 读取火墙策略信息并导入iptables策略记录文件
(2)service iptables save 保存策略信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.火墙默认策略

4.1 默认策略中的5条链

input输入
output输出
forward转发
postrouting路由之后
prerouting路由之前

4.2 默认的3张表

filter经过本机内核的数据(input、output 、forward)
nat不经过内核的数据(postrouting、prerouting、input、output)
mangle当filter和nat表不够用时使用(input 、output 、forward 、postrouting、 prerouting)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.3 iptables命令

iptables的命令用途
t指定表名称
-n不做解析(显示主机IP)
-L查看
-A添加策略
-D删除策略
-p协议
- -dport目的地端口
-s来源
-j动作
-j   ACCEPT允许
-j    DROP丢弃(无回应)
-j    REJECT拒绝(有回应)
-j   SNAT源地址转换
-j   DNAT目的地地址转换
-N新建链
-E更改链名称
-X删除链
-D删除规则
-I插入规则
-R更改规则
-P更改默认规

1.查看表信息:在这里插入图片描述在这里插入图片描述


2.关于策略读取规则:
注意:火墙中的策略读取是 从上到下的读取方式,当所读取到的策略和当前的资源达到的匹配的程度,就执行当前的策略,不会读取后续的策略了。
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.只允许指定IP访问SSH(指定服务)
在这里插入图片描述
在这里插入图片描述


4.-R更改策略
在这里插入图片描述


5.-P更改默认策略
注意:默认策略是ACCEPT,如果想要更改可以使用-P,但注意**-P后面不能指定为REJECT**,只能跟ACCEPT或者DROP
在这里插入图片描述
在这里插入图片描述


6.对链的控制
-N 新建链

在这里插入图片描述
-E 更改链名称
在这里插入图片描述
在这里插入图片描述


4.4 数据包状态

1.数据包的状态转变 : 为了解决掉在传输数据包时由于火墙读取策略导致的延迟问题,转换数据包的状态可以使已经检测过的数据包再次传输时直接通过火墙策略而不必等候火墙策略的读取。

2.数据包的三种状态:

状态含义
RELATED建立过连接的
ESTABLISHED正在连接的
NEW新的

3.在添加火墙策略时写入数据包的状态:
(1)设定建立过连接和正在建立连接的数据包的火墙策略为允许:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

(2)设定本机的回环接口允许新的数据包:
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT

(3)对于新的指定服务的数据包添加火墙策略设定为允许:
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

(4)添加火墙策略,设定除指定IP的所有主机都可以进行的服务:
iptables -A INPUT -m state --state NEW ! -s 192.168.0.200 -p tcp --dport 22 -j ACCEPT

(!代表非)
(5)对于剩余其他新的数据包添加火墙策略设定为拒绝:
iptables -A INPUT -m state --state NEW -j REJECT

(5)永久保存火墙策略
service iptables save

在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述


4.5 NAT表中的SNAT和DNAT

实验环境:
双网卡主机1的IP:192.168.0.60和172.25.254.60主机1相当于路由器(开启内核路由功能)
单网卡主机2的IP:172.25.254.70 主机2相当于内网主机
第三方主机3的IP:192.168.0.200 主机3相当于外网主机
1. SNAT:在路由之后做的源地址转换
实验目的:可以让单网卡主机连接到不同网段的主机 ,使172(内网)--------->192(外网)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在双网卡主机中添加火墙策略:
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.1.104

把源地址转换的动作是在路由之后做的,在双网卡主机是数据从ens224网卡进入,从ens160网卡出去的数据做源地址转换,把源地址172.25.254.70转换为192.168.0.60。
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述


2. DNAT:在路由之前做的目的地地址转换
在双网卡主机中添加火墙策略:
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30

把目的地地址转换的动作是在路由之前做的,使主机3通过连接192.168.0.60而真实连接的是172.25.254.70。
在这里插入图片描述
在这里插入图片描述


5. firewalld

在企业7之后添加了firewalld的管理方式
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


5.1关于firewalld的域

域名工作内容工作范围(允许的服务)
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-clien、 samba-client、dhcp-client
externalipv4网络地址伪装转发sshd

5.2 关于firewalld的设定原理及数据存储

/etc/firewalld火墙配置目录
/lib/firewalld火墙模块目录

1. 火墙主配置文件更改默认域
(1)可以使用命令firewall-cmd --set-default-zone=在火墙中更改默认域;
(2)也可以在火墙主配置文件 /etc/firewalld/firewalld.conf中添加数据在这里插入图片描述
在这里插入图片描述在这里插入图片描述


2.在火墙中添加服务
添加服务到火墙策略中
(1)可以使用命令firewall-cmd --permanent --add-service=firewall-cmd --reload在火墙中添加服务;
注意:不加- -permanent表示临时添加,- -permanent表示永久添加服务到火墙策略中,重启火墙后,服务还继续存在。
(2)也可以在配置目录中的子目录文件 /etc/firewalld/zones/public.xml中添加服务数据,并重启火墙
在这里插入图片描述在这里插入图片描述


3.在火墙中添加不被允许的服务(需要编辑模块目录中的认证文件)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


5.3 firewalld的管理命令

firewall-cmd --state 查看火墙状态
在这里插入图片描述
firewall-cmd --get-services 查看所有可以设定的服务
在这里插入图片描述
firewall-cmd --permanent --add-service=cockpit 添加服务
firewall-cmd --reload

在这里插入图片描述
firewall-cmd --permanent --remove-service=cockpit 移除服务
firewall-cmd --reload

在这里插入图片描述

firewall-cmd --get-zones 查看所有的域
在这里插入图片描述
firewall-cmd --get-active-zones 查看当前火墙中生效的域
在这里插入图片描述
firewall-cmd --get-default-zone 查看默认域
在这里插入图片描述
firewall-cmd --list-all 查看默认域中的火墙策略
在这里插入图片描述
firewall-cmd --list-all --zone=work 查看指定域的火墙策略
在这里插入图片描述
firewall-cmd --set-default-zone=trusted 设定默认域
在这里插入图片描述
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block 指定数据来源访问指定域
firewall-cmd --reload

在这里插入图片描述
在这里插入图片描述

firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block 删除自定域中的数据来源
firewall-cmd --reload

在这里插入图片描述
在这里插入图片描述
firewall-cmd --permanent --remove-interface=ens224 --zone=public 删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block 添加指定域的网络接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

firewall-cmd --permanent --change-interface=ens224 --zone=public 更改网络接口到指定域
在这里插入图片描述


5.4 firewalld的高级规则

firewall-cmd --direct --get-all-rules查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 192.168.0.0/24 -p tcp -dport 22 -j ACCEPT 设定高级规则
实验环境: RedhatLinux7系统中,IP:192.168.0.200
为了让效果更加真实,在火墙服务允许列表中移除ssh服务
在这里插入图片描述
在这里插入图片描述
设定192.168.0.200主机可以通过22端口来访问主机rhel8
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述


5.5firewalld中的NAT

1. SNAT:做地址伪装
实验环境:
1.双网卡主机,在双网卡主机中开启内核路由功能 (充当路由器),并打开masquerade 地址伪装功能
双网卡主机IP:192.168.0.60和172.25.254.0.60
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
主机2的IP:172.25.254.70(内网),设定网关为双网卡IP172.25.254.0.60
主机3的IP:192.168.0.200(外网)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述


2. DNAT:做地址伪装
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.70
firewall-cmd --reload
在这里插入图片描述测试:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值