一、基本概述

1
2
3
在Linux中防火墙有iptables和firewallld两种,这两种类型的防火墙实际只是防火墙的控制软件,并不是真正的防火墙。
其中iptables基于策略和规则链对流量进行拦截,有三个地址,允许(ALLEPT)、拒绝(DROP(主机必定村存在)\REJECT(主机可能不存在))、记录(LOG)。
相较于传统防火墙新增Zeno(区域)概念,trustd\home\internal\work

二、iptables使用

1.基本配置方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看防火墙策略
iptables -L

# 恢复默认
iptables -F

# 拒绝所有入方向的流量
iptables -P INPUT DROP

# 放行ping
iptables -I input -p icmp -j ACCEPT

# 放行HTTP服务
iptables -I input -p tcp --dport 80 -j ACCEPT

# 保存更改
service iptables save/iptables-save

2.参数及作用

image-20220819093005249

三、Firewalld使用

1.查看firewall服务及状态

1
2
3
4
5
6
7
8
9
10
11
12
1、查看firewall服务状态

systemctl status firewalld


2、查看firewall的状态

firewall-cmd --state

3.查看linux哪些程序正在使用互联网

firewall-cmd --permanent --list-services ssh dhcpv6-clien

2.开启、关闭、重启、开/关自启firewall.service

1
2
3
4
5
6
7
8
9
10
# 开启
systemctl start firewalld
# 重启
systemctl restart firewalld
# 关闭
systemctl stop firewalld
# 开机自启
systemctl enable firewalld
# 关闭开机自启
systemctl disable firewalld

3.区域的查看、更改和创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 显示支持的区域列表
[root@zcwyou ~]# firewall-cmd --get-zones

# 列出全部区域启用的特性
[root@zcwyou ~]# firewall-cmd --list-all-zones

# 显示XX区域详情
[root@zcwyou ~]# firewall-cmd --zone=XX --list-all

# 查看网卡ens32所属的区域
firewall-cmd --get-zone-of-interface=ens32

# 查看当前活跃区域
[root@zcwyou ~]# firewall-cmd --get-active-zones

# 设置XX接口所属区域
[root@zcwyou ~]# firewall-cmd --get-zone-of-interface=XX

# 查询YY区域中是否包含XX接口
[root@zcwyou ~]# firewall-cmd --zone=YY --query-interface=XX

4.查看/开放/关闭 端口、服务、协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp

# 查看服务是否开放
firewall-cmd --zone=external --query-service=http

# 查看协议是否开放
firewall-cmd --zone=external --query-protocol=icmp

# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080-8085/tcp

# 开放服务
firewall-cmd --permanent --zone=external --add-service=http

# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

查看防火墙的开放的端口
firewall-cmd --permanent --list-ports

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload


# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

5.精细化配置

1
2
3
4
5
6
7
8
# 把80端口映射为ssh服务,做隐藏功能使用
firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=22:toaddr=192.168.60.10

#删除要写全
firewall-cmd --permanent --zone=external --remove-forward-port=port=80:proto=tcp:toport=22:toaddr=192.168.60.10



6.防火墙区域和默认策略

1.防火墙策略
区域 zone 默认规则策略
阻塞区域 block 拒绝流入的流量,除非与流出的流量相关
工作区域 work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
家庭区域 home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、smba-client、dhcpv6-client服务相关,则允许流量
公共区域 public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
隔离区域 DMZ 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
信任区域 trusted 允许所有的数据包
丢弃区域 drop 拒绝流入的流量,除非与流出的流量相关
内部区域 internal 等同于home区域
外部区域 external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
2.参数和作用
参数 作用
–get-default-zone 查询默认的区域名称
–set-default-zone=<区域名称> 设置默认的区域,使其永久生效
–get-zones 显示可用的区域
–get-services 显示预先定义的服务
–get-active-zones 显示当前正在使用的区域与网卡名称
–add-source= 将源自此IP或子网的流量导向指定的区域
–remove-source= 不再将源自此IP或子网的流量导向某个指定区域
–add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称> 将某个网卡与区域进行关联
–list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名> 设置默认区域允许该服务的流量
–add-port=<端口号/协议> 设置默认区域允许该端口的流量
–remove-service=<服务名> 设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
–reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on 开启应急状况模式
–panic-off 关闭应急状况模式

四、访问控制列表

1
2
/etc/hosts.deny hosts.allow
#8版本以上不支持

五、cockpit

1
2
3
4
5
6
cockpit:自动驾驶舱:openeuler自带
# 开启服务
systemctl start cockpit

# 浏览器输入
http://主机IP/9090