文章目录
防火墙简介
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障。
防火墙是一种保护计算机网络安全的技术性措施,它通过在网络边界上建立相应的网络通信监控系统来隔离内部和外部网络,以阻挡来自外部的网络入侵
防火墙技术,最初是针对 Internet 网络不安全因素所采取的一种保护措施。顾名思义,防火墙就是用来阻挡外部不安全因素影响的内部网络屏障,其目的就是防止外部网络用户未经授权的访问。它是一种计算机硬件和软件的结合,使Internet与Internet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问政策、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件(其中硬件防火墙用的很少只有国防部等地才用,因为它价格昂贵)。该计算机流入流出的所有网络通信均要经过此防火墙。
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
iptables安装
rhel8中默认安装了firewall,需要我们手动安装切换到iptables
编写2个脚本,分别完成firewalld到iptables的切换和iptables到firewalld的转换
iptables 的使用
/etc/sysconfig/iptables iptables 策略记录文件
临时更改
iptables -F 实际上修改了配置文件
永久保存策略
iptales-save > /etc/sysconfig/iptables
service iptables save
火墙默认策略
三张表五条链:
三张表:
防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。
我们现在用的比较多的表有3个:
表 | 意义 |
---|---|
filter | 过滤规则表,根据域定义的规则过滤符合条件的数据包,确认是否放行该数据包。 |
nat | 地址转换规则表 网络地址转换(修改数据包中的源、目标IP地址或端口。) |
mangel | 修改数据标记规则表 拆解报文,做出修改,封装报文,主要为数据包设置标记 |
五条链:
链:数据从进入到流出的五个环节,相当于源端到目的端的五道门
五条链也被称为五个钩子函数:
链名: | 位置 |
---|---|
prerouting | 报文进入本机的路由前的位置 |
INPUT | 到达本机内部的报文的位置 |
FORWARD | 由本纪转发的报文的位置 |
OUTPUT | 由本机内部发出的报文的位置 |
POSTROUTING | 斑纹路由后流出本机的位置 |
这是NetFilter规定的五个数据链,任何一个数据包,只要经过本机,必经过这五个链中的其中某一条链。
表与规则之间的关系:一个表中放的是一条条规则
规则与链之间的关系:一条规则只能作用在某个链上
表和链的对应关系:
表名 | 链 |
---|---|
filter | INPUT,FORWARD,OUTPUT |
nat | PREROUTING(SNAT),POATROUTING(DNAT),OUTPUT |
mangle | PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING |
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 | 更改默认规则 |
常用命令
访问被拒绝
一直没有回答
数据包状态
状态 | 功能 |
---|---|
RELATED | 建立过连接的 |
ESTABLISHED | 正在连接的 |
NEW | 新的 |
一条条的编写火墙规则过于繁琐并且读火墙策略过于浪费时间,使用数据包状态来编写火墙策略能大大节省时间
拒绝掉所有其他访问
apache可以访问
却无法ping通
也可以通过ssh连接
nat表中的dnat snat
实验环境: 192.168.16.100 172.25.254.100 双网卡主机
192.168.16.101 主机A 172.25.254.101 主机B
保证网络联通
设定主机B网关为双网卡主机172.25.254.100
SNAT:在路由之后做的源地址转换
- 1 开启双网卡主机内核路由功能
- 2 在双网卡主机中添加火墙策略
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.16.100
把源地址转换的动作是在路由之后做的,在双网卡主机是数据从ens224网卡进入,从ens160网卡出去的数据做源地址转换,把源地址172.25.254.101转换为192.168.16.100。
测试
在主机A中显示双网卡主机连接
DNAT:在路由之前做的目的地地址转换
在双网卡主机中添加火墙策略:
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.101
把目的地地址转换的动作是在路由之前做的,使192.168.16.101通过连接192.168.16.100而真实连接的是172.25.254.101。
firewalld
基本信息
图形管理工具
rhel7:firewall-config
rhel8:cockpit
/etc/firewalld ##火墙配置目录
/lib/firewalld ##火墙模块目录
关于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-client samba-client dhcp-client |
external | ipv4网络地址伪装转发 | sshd |
firewalld的管理命令
命令 | 含义 |
---|---|
firewall-cmd --state | 查看火墙状态 |
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 --get-services | 查看所有可以设定的服务 |
firewall-cmd --permanent --remove-service=cockpit | 移除服务 |
firewall-cmd --reload | 重新加载配置 |
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block | 指定数据来源访问指定域 |
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block | 删除自定域中的数据来源 |
firewall-cmd --permanent --remove-interface=ens224 --zone=public | 删除指定域的网络接口 |
firewall-cmd --permanent --add-interface=ens224 --zone=block | 添加指定域的网络接口 |
firewall-cmd --permanent --change-interface=ens224 --zone=public | 更改网络接口到指定域 |
firewalld的高级规则
firewalld中的NAT
实验环境:
实验环境: 192.168.16.100 172.25.254.100 双网卡主机
192.168.16.101 主机A 172.25.254.101 主机B