如何在Linux系统中设置防火墙?
防火墙是每个现代计算机系统不可或缺的组成部分,它保护网络并防止非法访问。本文将深入探讨Linux防火墙领域,学习如何配置防火墙。
在我们深入探讨在Linux中建立防火墙的技术细节之前,让我们先澄清一下什么是防火墙以及为什么它如此重要!
防火墙是一种网络安全设备,它根据预定义的安全规则监控和限制网络流量。防火墙的主要功能是在允许授权访问的同时阻止对计算机系统或网络的未授权访问。它像门卫一样,控制谁以及什么可以进入和离开网络。
在Linux中配置防火墙主要有两个选择:iptables和firewalld。
iptables是一个用于管理Linux内核防火墙的命令行程序。多年来,它一直是Linux服务器的默认防火墙,并且至今仍在广泛使用。
firewalld是管理Linux防火墙的一种更现代的方法。它是一个动态守护进程,提供了一个D-Bus接口用于管理防火墙规则,许多Linux发行版都使用它作为默认防火墙。
现在让我们深入了解使用iptables和firewalld在Linux中设置防火墙所需的步骤。
使用iptables创建防火墙
要开始设置iptables防火墙,首先确保它已安装在您的系统上。虽然大多数Linux发行版中都包含iptables,但最好还是仔细检查一下。
打开终端并输入以下命令以查看iptables是否已安装在您的系统上:sudo iptables -L
如果您的机器上尚未安装iptables,请使用以下命令安装它:sudo apt-get install iptables
验证iptables已安装在您的系统上后,您可以开始设置防火墙。
iptables配置的第一步是为传入和传出流量建立默认策略。默认策略决定了对与防火墙中任何规则都不匹配的数据包执行的操作。
要将默认策略设置为丢弃所有传入和传出流量,请运行以下命令:
sudo iptables -P INPUT DROP sudo iptables -P OUTPUT DROP
设置默认策略后,您可以开始添加规则以允许或阻止特定类型的流量。向iptables添加规则的基本语法如下:
sudo iptables -A [CHAIN] -p [PROTOCOL] --dport [PORT] -j [ACTION]
让我们分解规则的组成部分:
链(CHAIN) - 指定将添加规则的防火墙链。iptables中的三个默认链是INPUT、OUTPUT和FORWARD。
协议(PROTOCOL) - 指定流量的协议。常用协议包括TCP、UDP和ICMP。
端口(PORT) - 指定流量的端口号。
动作(ACTION) - 指定对与规则匹配的流量应执行的操作。常用操作包括ACCEPT、DROP和REJECT。
例如,以下命令将接受INPUT链上的传入SSH流量(端口22):
sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT
同样,以下命令将允许OUTPUT链上的HTTP流量(端口80):
sudo iptables -A OUTPUT -p tcp —dport 80 -j ACCEPT
使用firewalld创建防火墙
在Linux中设置防火墙的另一个选项是使用firewalld。firewalld是一个现代的动态守护进程,一些Linux发行版(如CentOS、Fedora和Red Hat Enterprise Linux)使用它作为默认的防火墙管理工具。
使用firewalld配置防火墙的第一步是查看它是否已安装在您的系统上。
大多数最新的Linux发行版都预装了firewalld,但是您可以通过在终端中输入以下命令来验证它的存在:
sudo firewall-cmd —state
如果您的机器上尚未安装firewalld,请使用以下命令安装它:sudo yum install firewalld
确认firewalld已安装在您的系统上后,您可以开始配置防火墙。
配置firewalld的第一步是检查默认区域。默认区域是一组预定义的规则,用于管理系统上允许的流量。要检查默认区域,请运行以下命令:
sudo firewall-cmd --get-default-zone
默认情况下,默认区域设置为“public”。您可以通过运行以下命令更改默认区域:
sudo firewall-cmd --set-default-zone=zone
其中“zone”是您想设置为默认区域的名称。
下一步是向防火墙添加规则以允许或阻止特定类型的流量。Firewalld使用称为“服务”的概念将相关的端口和协议组合在一起。一些常用的服务包括“http”、“https”、“ssh”和“smtp”。
例如,要允许传入HTTP流量,可以使用以下命令:
sudo firewall-cmd --add-service=http --permanent
“--permanent”选项使规则永久生效,因此它会在重启后保留。如果您不使用“--permanent”选项,则该规则将在系统重启时被删除。
您还可以使用“--add-port”选项允许特定端口。例如,以下命令允许端口22上的传入SSH流量:
sudo firewall-cmd --add-port=22/tcp --permanent
添加必要的规则后,请务必重新加载防火墙以使更改生效:
sudo firewall-cmd --reload