文章目录
firewald与iptables区别
- iptables 主要是基于接口,来设置规则,从而判断网络的安全性。firewalld 是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全,与硬件防火墙的设置相类似。
- iptables 防火墙类型为静态防火墙。firewalld 防火墙类型为动态防火墙。
- 使用 iptables 每一个单独更改意味着清除所有旧有的规则从 /etc/sysconfig/iptables 里读取所有新的规则。使用 firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此 firewalld 可以在运行时间内,改变设置而不丢失现行连接
- iptables 在 /etc/sysconfig/iptables 中储存配置。firewalld 将配置储存在 /etc/firewalld/ (优先加载) 和 /usr/lib/ firewalld/ ( 默认的配置文件) 中的各种 XML 文件里。
firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表
firewalld九个区域
- trusted(信任区域):允许所有的数据包。
- public(公共区域):拒绝流入的流量,除非与流出的流量相关;而如果是与ssh或dhcpv6-client服务相关 流量,则允许通过
- external(外部区域):拒绝流入的流量,除非与流出的流量相关;而如果与ssh服务相关流量,则运行通过
- home(家庭区域):拒绝流入的流量,除非与流出的流量相关;如果是与ssh、mdns、amba-client或dhcpv6-client服务相关 流量,则允许通过
- internal(内部区域):默认值时与homel区域相同。
- work(工作区域):拒绝流入的流量,除非与流出的流量相关;而如果是与 ssh、dhcpv6-client服务相关 流量,则允许通过
- dmz(隔离区域也称为非军事区域):允许与ssh 预定义服务匹配的传入流量,其余均拒绝。
- block(限制区域):拒绝所有传入流量。
- drop(丢弃区域):丢弃所有传入流量,并且不产生包含ICMP的错误响应。
firewalld配置方法
使用 firewall-cmd 命令行工具
使用 firewall-config 图形工具
编写 /etc/firewalld/ 中的配置文件
firewalld参数和命令
| 参数 | 作用 |
|---|---|
| –get-default-zone | 查询默认区域 |
| –set-default-zone=区域名称 | 设置默认区域,使其永久生效 |
| –get-zones | 显示可用区域 |
| –get-active-zones | 显示当前区域与网卡的名称 |
| –add-source=ip | 将源自此的ip或子网的流量导向指定的区域 |
| –remove-source=ip | 不再将源自此的ip或子网的流量导向指定的区域 |
| –add-interface=网卡 名称 | 将源自此的网卡的流量导向指定的区域 |
| –change-interface=网卡名称 | 将某个网卡与区域进行关联 |
| –list-all | 显示当前区域的网卡配置参数、资源、端口及服务信息 |
| –list-all-zones | 显示所有区域的网卡配置参数、资源、端口及服务信息 |
| –add-service=服务名称 | 设置默认区域允许该服务的流量 |
| –add-port=端口/协议 | 设置默认区域允许该端口的流量 |
| –remove-service=服务名称 | 不再设置默认区域允许该服务的流量 |
| –remove-port=端口/协议 | 不再设置默认区域允许该端口的流量 |
| –reload | 让永久生效的配置规则 立即生效,并覆盖当前的配置规则 |
| –panic-on | 开启应急模式 |
| –panic-off | 关闭应急模式 |
| –query-masquerade | 检查是否允许伪装IP |
| –add-masquerade | 允许防火墙伪装IP |
| –remove-masquerade | 禁止防火墙伪装IP |
firewalld两种模式
运行时模式 Runtime
- 配置后立即生效,重启后失效
永久生效模式 permanent
- 当前不生效,重启后生效
firewalld使用
- 查看当前使用的区域
firewall-cmd --get-default-zone

- 查看指定网卡所在的区域
firewall-cmd --get-zone-of-interface=ens33

- 修改当前网卡所在的区域,并永久生效
firewall-cmd --permanent --zone=external --change-interface=ens33

重启服务器,查看网卡所在区域
firewall-cmd --get-zone-of-interface=ens33

- 显示当前区域的网卡配置参数、资源、端口及服务信息
firewall-cmd --list-all
当前处于public区域

现在防火墙处于开启的状态

只能允许ssh,dhcpv6-client服务的流量通过
假如说开启了80端口,要想访问是访问不了的
- 给public区域添加http服务
firewall-cmd --zone=public --add-service=http

这个时候开启http80端口是可以访问的,但是上面的配置在重启后配置 会失效
要想 永久生效必须加上--permanent参数
firewall-cmd --permanent --zone=public --add-service=http
- public区域移除http服务
当前立即生效,如果想永久生效需要加--permanent参数
firewall-cmd --zone=public --remove-service=http
- 在配置规则比较多情况下,让永久生效的配置立即生效,可以使用
--reload立即生效
firewall-cmd --reload
- 添加80端口规则
firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload


- 修改
ssh服务默认端口
修改ssh默认端口之前需要禁用selinux
vim /etc/selinux/config

vim /etc/ssh/sshd_config

重启sshd服务
systemctl restart sshd.service
ssh服务默认是22端口,要想连接,需要设置防火墙规则运行2222端口通过
设置规则
firewall-cmd --zone=public --permanent --add-port=2222/tcp
firewall-cmd --reload

连接2222端口

- 端口转发
vim /etc/ssh/sshd_config
修改ssh连接端口为8888

systemctl restart sshd.service
设置规则
firewall-cmd --permanent --zone=public --add-forward-port=port=2222:proto=tcp:toport=8888:toaddr=127.0.0.1
--add-forward-port端口转发port从哪个端口来proto哪个协议toport到目的地的哪个端口toaddr到目的地的哪个地址
firewall-cmd --reload

添加好端口转发规则后,是连不上的,从2222端口转发到8888端口,我们只开放了2222端口,并没有开放8888端口,需要再加一条规则
firewall-cmd --permanent --zone=public --add-port=8888/tcp
firewall-cmd --reload

发现还是连接不上,最后发现不能 用127.0.0.1这个地址
firewall-cmd --permanent --zone=public --add-forward-port=port=2222:proto=tcp:toport=8888:toaddr=192.168.80.131
firewall-cmd --reload

再次连接就成功了

- 移除端口转发
firewall-cmd --permanent --zone=public --remove-forward-port=port=2222:proto=tcp:toport=8888:toaddr=127.0.0.1
firewall-cmd --reload

实验
给Centos添加 一块网卡,划分到LAN区段

手动配置 静态IP
然后ip a,查看新添加的网卡名称为ens36
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
修改如下:

重启网卡
systemctl restart network.service
查看IP

然后再开启一台win7,,网卡划分到同一LAN区段
手动配置IP地址

启动80端口


查看两台是否互通


这个时候Centos就能够访问Win7的网站了
curl 10.1.1.2

首先要让Win11能够访问到Centos的8080端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
端口转发,让8080端口,能访问到10.1.1.2 的80端口
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.1.1.2
立即生效防火墙配置
firewall-cmd --reload
允许防火墙伪装IP
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload











