在 Debian上安装和配置 Firewalld
<h1>在 Debian上安装和配置 Firewalld</h1><p>来源 https://cn.linux-console.net/?p=21503</p>
<p> </p>
<p>在本教程中,我们将了解如何在 Debian 10/Debian 11 上安装和配置 Firewalld。 Firewalld 是 Linux 防火墙管理工具,支持 IPv4、IPv6、以太网桥和 ipset 防火墙设置。</p>
<p>Firewalld 充当 Linux 内核的 netfilter 框架的前端。它是 RHEL 7+ 系列 Linux 发行版的默认防火墙管理软件,但也可以在 Debian 系列 Linux 发行版上使用。</p>
<h2>在 Debian 上安装 Firewalld</h2>
<p>Firewalld 软件包可在官方 Debian apt 存储库中找到。安装就像 root 用户或具有 sudo 权限的用户在终端中触发以下命令一样快。</p>
<pre><code class="hljs language-sql">sudo apt <span class="hljs-keyword">update
sudo apt <span class="hljs-operator">-y install firewalld</span></span></code></pre>
<p>这将在 Debian 11/10 上安装 firewalld 并将该服务设置为在引导时启动。拉取包详细信息:</p>
<pre><code class="hljs language-powershell"><span class="hljs-variable">$ apt policy firewalld
firewalld:
Installed: <span class="hljs-number">0.9.<span class="hljs-number">3<span class="hljs-literal">-2
Candidate: <span class="hljs-number">0.9.<span class="hljs-number">3<span class="hljs-literal">-2
Version table:
*** <span class="hljs-number">0.9.<span class="hljs-number">3<span class="hljs-literal">-2 <span class="hljs-number">500
<span class="hljs-number">500 http://deb.debian.org/debian bullseye/main amd64 Packages
<span class="hljs-number">100 /var/lib/dpkg/status</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>确认服务处于运行状态。</p>
<pre><code class="hljs language-sql">$ sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--state
<span class="hljs-keyword">running
debian<span class="hljs-variable">@debian<span class="hljs-operator">-bullseye<span class="hljs-number">-01:<span class="hljs-operator">~$ systemctl status firewalld
● firewalld.service <span class="hljs-operator">- firewalld <span class="hljs-operator">- <span class="hljs-keyword">dynamic firewall daemon
Loaded: loaded (<span class="hljs-operator">/lib<span class="hljs-operator">/systemd<span class="hljs-operator">/<span class="hljs-keyword">system<span class="hljs-operator">/firewalld.service; enabled; vendor preset: enabled)
Active: active (<span class="hljs-keyword">running) since Thu <span class="hljs-number">2021<span class="hljs-number">-08<span class="hljs-number">-19 <span class="hljs-number">19:<span class="hljs-number">18:<span class="hljs-number">49 UTC; <span class="hljs-number">39s ago
Docs: man:firewalld(<span class="hljs-number">1)
Main PID: <span class="hljs-number">3317 (firewalld)
Tasks: <span class="hljs-number">2 (limit: <span class="hljs-number">2340)
Memory: <span class="hljs-number">29.3M
CPU: <span class="hljs-number">868ms
CGroup: <span class="hljs-operator">/system.slice<span class="hljs-operator">/firewalld.service
└─<span class="hljs-number">3317 <span class="hljs-operator">/usr<span class="hljs-operator">/bin<span class="hljs-operator">/python3 <span class="hljs-operator">/usr<span class="hljs-operator">/sbin<span class="hljs-operator">/firewalld <span class="hljs-comment">--nofork --nopid
Aug <span class="hljs-number">19 <span class="hljs-number">19:<span class="hljs-number">18:<span class="hljs-number">48 debian<span class="hljs-operator">-bullseye<span class="hljs-number">-01 systemd[<span class="hljs-number">1]: Starting firewalld <span class="hljs-operator">- <span class="hljs-keyword">dynamic firewall daemon...
Aug <span class="hljs-number">19 <span class="hljs-number">19:<span class="hljs-number">18:<span class="hljs-number">49 debian<span class="hljs-operator">-bullseye<span class="hljs-number">-01 systemd[<span class="hljs-number">1]: Started firewalld <span class="hljs-operator">- <span class="hljs-keyword">dynamic firewall daemon.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>如果您启用了 ufw,请将其禁用以使 firewalld 成为您的默认防火墙</p>
<pre>sudo ufw disable</pre>
<h2>在 Debian上使用 Firewalld</h2>
<p>现在已经安装了该软件包并启动了firewalld服务,让我们看一些使用示例,了解如何使用它来保护您的服务器/工作站。</p>
<h3>1 – 列出配置的所有防火墙规则</h3>
<p>要列出当前规则,请使用以下命令:</p>
<pre><code class="hljs language-sql">$ sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--list-all
public (active)
target: <span class="hljs-keyword">default
icmp<span class="hljs-operator">-block<span class="hljs-operator">-inversion: <span class="hljs-keyword">no
interfaces: ens33
sources:
services: dhcpv6<span class="hljs-operator">-client ssh
ports:
protocols:
masquerade: <span class="hljs-keyword">no
forward<span class="hljs-operator">-ports:
source<span class="hljs-operator">-ports:
icmp<span class="hljs-operator">-blocks:
rich rules: </span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>当您启动firewalld服务时,默认情况下允许<code>ssh</code>和<code>dhcpv6-client</code>服务。</p>
<h3>2 – 列出可以启用/禁用的服务</h3>
<p>要获取可以启用或禁用的服务的完整列表,请使用以下命令。</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --get-services</span></code></pre>
<h3>3 – 启用服务/服务列表</h3>
<p>要允许防火墙上的服务,命令语法为:</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --add-service="servicename" --permanent</span></code></pre>
<p>下面的示例将启用 http 服务。</p>
<pre><code class="hljs language-powershell"><span class="hljs-variable">$ sudo firewall<span class="hljs-literal">-cmd <span class="hljs-literal">--add-service=<span class="hljs-string">"http" <span class="hljs-literal">--permanent
success
<span class="hljs-variable">$ sudo firewall<span class="hljs-literal">-cmd <span class="hljs-literal">--reload</span></span></span></span></span></span></span></span></code></pre>
<p>对于服务列表,请用逗号分隔它们。</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --add-service={http,https,smtp,imap} --permanent --zone=public
sudo firewall-<span class="hljs-built_in">cmd --reload</span></span></code></pre>
<h3>4 – 启用 TCP 端口</h3>
<p>启用 TCP 端口的语法是:</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --add-port=port/tcp --permanent
sudo firewall-<span class="hljs-built_in">cmd --reload</span></span></code></pre>
<p>以下是如何启用端口 8080 和 8443。</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --zone=public --add-port=<span class="hljs-number">8080/tcp --permanent
sudo firewall-<span class="hljs-built_in">cmd --zone=public --add-port={<span class="hljs-number">8080,<span class="hljs-number">8443}/tcp --permanent
sudo firewall-<span class="hljs-built_in">cmd --reload</span></span></span></span></span></span></code></pre>
<p>对于 UDP 端口,将 /tcp 替换为 /udp。</p>
<h3>5 – 创建一个新区域</h3>
<p>要创建新的防火墙区域,请使用以下命令:</p>
<pre><code class="hljs language-powershell"><span class="hljs-variable">$ sudo firewall<span class="hljs-literal">-cmd <span class="hljs-literal">--new-zone=zonename <span class="hljs-literal">--permanent
<span class="hljs-comment">#E.g
<span class="hljs-variable">$ sudo firewall<span class="hljs-literal">-cmd <span class="hljs-literal">--new-zone=private <span class="hljs-literal">--permanent
<span class="hljs-variable">$ sudo firewall<span class="hljs-literal">-cmd <span class="hljs-literal">--reload</span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3>6 – 启用特定区域上的服务/端口</h3>
<p>要启用特定区域中的服务/端口,语法为:</p>
<pre><code class="hljs language-xml">sudo firewall-cmd --zone=<span class="hljs-tag"><<span class="hljs-name">zone> --add-port=<span class="hljs-tag"><<span class="hljs-name">port>/tcp --permanent
sudo firewall-cmd --zone=<span class="hljs-tag"><<span class="hljs-name">zone> --add-port=<span class="hljs-tag"><<span class="hljs-name">port>/udp --permanent
sudo firewall-cmd --zone=<span class="hljs-tag"><<span class="hljs-name">zone> --add-service=<span class="hljs-tag"><<span class="hljs-name">service> --permanent
sudo firewall-cmd --zone=<span class="hljs-tag"><<span class="hljs-name">zone> --add-service={service1,service2,service3} --permanent</span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3>7 – 将接口添加到区域</h3>
<p>对于具有多个接口的系统,您可以将一个接口添加到一个区域。例如,<em>后端</em>网络服务器到<em>私有</em>区域,<em>前端</em>应用程序到公共区域。</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --get-zone-of-interface=eth1 --permanent
sudo firewall-<span class="hljs-built_in">cmd --zone=<zone> --add-interface=eth1 --permanent</span></span></code></pre>
<h3>8 – 允许从特定子网/IP 访问端口</h3>
<p>对服务或端口的访问可以限制为来自特定 IP 地址或子网。使用丰富的规则。</p>
<pre><code class="hljs language-sql">$ sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--add-rich-rule 'rule family="ipv4" service name="ssh" \
source address<span class="hljs-operator">="192.168.0.12/32" accept<span class="hljs-string">' --permanent
$ sudo firewall-cmd --add-rich-rule 'rule family<span class="hljs-operator">="ipv4" service name<span class="hljs-operator">="ssh" \
source address<span class="hljs-operator">="10.1.1.0/24" accept<span class="hljs-string">' --permanent</span></span></span></span></span></span></span></span></code></pre>
<h2>9 – 列出丰富的规则</h2>
<p>使用以下命令列出丰富的规则:</p>
<pre><code class="hljs language-dos">sudo firewall-<span class="hljs-built_in">cmd --list-rich-rules</span></code></pre>
<h3>10 – 配置端口转发</h3>
<p>请参阅下面的示例。</p>
<pre><code class="hljs language-sql"># Enable masquerading
sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--add-masquerade --permanent
# Port forward <span class="hljs-keyword">to a different port <span class="hljs-keyword">within same server ( <span class="hljs-number">22 <span class="hljs-operator">> <span class="hljs-number">2022)
sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--add-forward-port=port=22:proto=tcp:toport=2022 --permanent
# Port forward <span class="hljs-keyword">to same port <span class="hljs-keyword">on a different server (<span class="hljs-keyword">local:<span class="hljs-number">22 <span class="hljs-operator">> <span class="hljs-number">192.168<span class="hljs-number">.2<span class="hljs-number">.10:<span class="hljs-number">22)
sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--add-forward-port=port=22:proto=tcp:toaddr=192.168.2.10 --permanent
# Port forward <span class="hljs-keyword">to different port <span class="hljs-keyword">on a different server (<span class="hljs-keyword">local:<span class="hljs-number">7071 <span class="hljs-operator">> <span class="hljs-number">10.50<span class="hljs-number">.142<span class="hljs-number">.37:<span class="hljs-number">9071)
sudo firewall<span class="hljs-operator">-cmd <span class="hljs-comment">--add-forward-port=port=7071:proto=tcp:toport=9071:toaddr=10.50.142.37 --permanent</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3>11 – 删除端口或服务</h3>
<p>要从防火墙中删除端口或服务,请将用于启用服务的每个命令中的 <code>--add</code> 替换为 <code>–-remove</code>。</p>
<p>享受在 Debian 10 /Debian 11 Linux 上使用 Firewalld 的乐趣。如需进一步阅读,请查看 Firewalld 文档</p>
<ul>
<li>最佳 LPIC-1 和 LPIC-2 认证学习书籍</li>
<li>适合初学者和专家的最佳 Linux 书籍</li>
</ul>
<p> </p>
<p>========== End</p>
<div id="simple-translate" class="simple-translate-system-theme"> </div><br><br>
来源:https://www.cnblogs.com/lsgxeva/p/18005362
頁:
[1]