文章目录
- firewald与iptables区别
- firewalld九个区域
- firewalld配置方法
- firewalld参数和命令
- firewalld两种模式
- firewalld使用
- 实验
firewalld不要与iptables混用
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/tcpfirewall-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.131firewall-cmd --reload
再次连接就成功了
- 移除端口转发
firewall-cmd --permanent --zone=public --remove-forward-port=port=2222:proto=tcp:toport=8888:toaddr=127.0.0.1firewall-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