如何在Debian 10(Buster)上安装和配置防火墙
时间:2020-02-23 14:32:41 来源:igfitidea点击:
在本教程中,我们将研究如何在Debian 10(Buster)上安装和配置防火墙。
Firewalld是Linux防火墙管理工具,支持IPv4,IPv6,以太网网桥和IMSet防火墙设置。
Firewalld充当Linux内核的NetFilter框架前端。
它是Linux发行版Rhel 7+系列的默认防火墙管理软件,但可用于Linux Distrs的Debian系列。
在Debian 10上安装防火墙(Buster)
官方Debian 10 APT存储库中提供了防火墙包。
安装在终端用户或者使用sudo权限的root用户或者用户中的命令时快速触发。
sudo apt update sudo apt -y install firewalld
这将在Debian 10上安装防火墙,并将服务设置为在启动时启动。
拉包细节:
$apt policy firewalld firewalld: Installed: 0.6.3-5 Candidate: 0.6.3-5 Version table: *** 0.6.3-5 500 500 http://deb.debian.org/debian buster/main amd64 Packages 100 /var/lib/dpkg/status
确认服务处于运行状态。
$sudo firewall-cmd --state running $systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/lib/systemd/system/firewalld.service; enabled; vendor preset Active: active (running) since Sun 2019-07-07 06:35:14 EDT; 1min 33s ago Docs: man:firewalld(1) Main PID: 7955 (firewalld) Tasks: 2 (limit: 2319) Memory: 24.5M CGroup: /system.slice/firewalld.service └─7955 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid
如果启用了UFW,请禁用它以使防火墙默认防火墙
sudo ufw disable
在Debian 10上使用防火墙(Buster)
既然程序包已安装并启动防火服务已启动,让我们看几个关于如何使用它来保护服务器/工作站的例子。
1 - 列出已配置的所有防火墙规则
要列出当前规则,请使用命令:
$sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
ssh
和 dhcpv6-client
启动防火墙服务时默认允许服务。
2 - 可以启用/禁用目录服务
要获得可启用或者禁用服务的完整列表,请使用以下命令。
sudo firewall-cmd --get-services
3 - 启用服务/服务列表
要允许防火墙上的服务,命令语法如下:
$sudo firewall-cmd --add-service="servicename" --permanent
下面的示例将启用HTTP服务。
$sudo firewall-cmd --add-service="http" --permanent success $sudo firewall-cmd --reload
有关服务列表,请使用逗号分隔。
$sudo firewall-cmd --add-service={http,https,smtp,imap} --permanent --zone=public $sudo firewall-cmd --reload
4 - 启用TCP端口
对于启用TCP端口的语法如下:
$sudo firewall-cmd --add-port=port/tcp --permanent $sudo firewall-cmd --reload
以下是如何启用端口8080和8443.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --zone=public --add-port={8080,8443}/tcp --permanent sudo firewall-cmd --reload
对于UDP端口,用/UDP替换/TCP。
5 - 创建一个新区域
要创建新的防火墙区域,请使用命令:
$sudo firewall-cmd --new-zone=zonename --permanent E.g $sudo firewall-cmd --new-zone=private --permanent $sudo firewall-cmd --reload
6 - 在特定区域启用服务/端口
要在特定区域中启用服务/端口,语法是:
sudo firewall-cmd --zone=<zone> --add-port=<port>/tcp --permanent sudo firewall-cmd --zone=<zone> --add-port=<port>/udp --permanent sudo firewall-cmd --zone=<zone> --add-service=<service> --permanent sudo firewall-cmd --zone=<zone> --add-service={service1,service2,service3} --permanent
7 - 将接口添加到区域
对于具有多个接口的系统,我们可以将接口添加到区域。
e.g后端Web服务器到私有区域,并将应用程序侧向公开区域。
sudo firewall-cmd --get-zone-of-interface=eth1 --permanent sudo firewall-cmd --zone=<zone> --add-interface=eth1 --permanent
8 - 允许访问特定子网/IP的端口
到服务或者端口的访问可以被限制为特定IP地址或者子网。
利用丰富的规则。
$sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" \ source address="192.168.0.12/32" accept' --permanent $sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" \ source address="10.1.1.0/24" accept' --permanent
9 - 列出丰富的规则
sudo firewall-cmd --list-rich-rules
10 - 配置端口转发
请参见下面的示例。
# Enable masquerading $sudo firewall-cmd --add-masquerade --permanent # Port forward to a different port within same server ( 22 > 2022) $sudo firewall-cmd --add-forward-port=port=22:proto=tcp:toport=2022 --permanent # Port forward to same port on a different server (local:22 > 192.168.2.10:22) $sudo firewall-cmd --add-forward-port=port=22:proto=tcp:toaddr=192.168.2.10 --permanent # Port forward to different port on a different server (local:7071 > 10.50.142.37:9071) $sudo firewall-cmd --add-forward-port=port=7071:proto=tcp:toport=9071:toaddr=10.50.142.37 --permanent
11 - 删除端口或者服务
从防火墙删除端口或者服务,替换 --add
和 –-remove
在启用服务的每个命令中。