1. 什么是Linux防火墙?
Linux防火墙是一种用于保护服务器的网络安全机制。在Internet上,服务器是一个开放的目标,因此安全非常重要。Linux防火墙可以防止来自互联网上不受欢迎的流量。
Linux防火墙使用规则来允许或拒绝特定类型的流量。这些规则可以设置端口号,IP地址和协议类型,从而获得完全的控制。例如,您可以允许访问Web服务器上的HTTP端口,但拒绝FTP端口。此外,Linux防火墙还可以防止某些特定的攻击,如拒绝服务攻击(DDoS攻击)和未授权登录。
本文将介绍如何设置Linux防火墙,以保护您的服务器免受攻击。
2. Linux防火墙类型
Linux防火墙有两种不同的实现方式:iptables和firewalld。虽然它们都是Linux防火墙,但它们的实现方式有所不同。
2.1 iptables
iptables是Linux系统中最常用的防火墙程序之一。它是一个基于内核的包过滤系统,可以在内部设置规则,以允许或拒绝数据包。iptables使用表,链和规则构建它的防火墙策略。
表:iptables有五种表,它们用于存储规则,以允许或拒绝特定的数据包。这些表包括:filter、nat、mangle、raw和security。大多数情况下,您将使用filter表。
链:iptables链用于将输入数据包传递给特定表中的规则。iptables有三个预定义的链:INPUT、FORWARD和OUTPUT。
规则:规则指定应当做什么。例如,您可以创建一个规则,它允许所有来自公共IP地址的数据包通过,但拒绝来自私有IP地址的数据包。
2.2 firewalld
firewalld是另一种Linux防火墙程序。它是RHEL7及其克隆版本的默认防火墙程序。
与iptables相比,firewalld是一个更为复杂的防火墙。Firewalld使用基于服务的规则来控制入站和出站流量,而不是基于IP地址、端口和协议。另外,firewalld使用了zones的概念。zone指定安全级别,例如“公共”、“专用”、“信任”等。
3. 设置iptables防火墙
3.1 查看iptables状态
在设置iptables防火墙之前,您需要查看iptables状态。您可以使用以下命令检查iptables是否正在运行:
sudo systemctl status iptables.service
如果iptables未运行,您可以使用以下命令启动它:
sudo systemctl start iptables.service
3.2 确定规则
在设置iptables防火墙之前,您需要确定规则。例如,如果您希望允许来自特定IP地址的所有数据包通过,则需要指定一个规则。您需要指定以下内容:
协议:TCP或UDP
源IP地址
源端口
目标IP地址
目标端口
请注意,如果您希望针对所有IP地址和所有端口进行允许,则可以省略源IP地址、源端口、目标IP地址和目标端口。
3.3 添加规则
在确定规则后,您可以使用以下命令添加规则:
sudo iptables -A INPUT -p TCP -s 192.168.1.0/24 --sport 1024:65535 -d 192.168.1.100 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
该命令将添加一条规则,允许来自192.168.1.0/24子网的HTTP流量,并将其定向到本地IP地址 192.168.1.100。 该规则只允许软件版本号为1024到65535的请求,状态必须是NEW或ESTABLISHED。
3.4 查看规则
您可以使用以下命令查看全部规则:
sudo iptables -L -n
此命令将显示当前的iptables规则列表。如果您想查看特定表的规则,比如filter,您可以使用以下命令:
sudo iptables -L -n -t filter
4. 设置firewalld防火墙
4.1 检查firewalld状态
在设置firewalld防火墙之前,请检查防火墙的状态。您可以使用以下命令检查firewalld的状态:
sudo systemctl status firewalld
如果firewalld未启动,您可以使用以下命令启动它:
sudo systemctl start firewalld
4.2 查看firewalld区域
Firewalld区域定义了您网络的安全级别,例如,公共区域用于公共Wi-Fi网络,专用区域用于家庭或办公网络,信任区域用于企业网络。在设置firewalld防火墙之前,请查看您当前的Firewalld区域:
sudo firewall-cmd --get-active-zones
此命令将显示您当前的Firewalld区域。
4.3 添加规则
在确定规则后,您可以使用以下命令添加规则:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
该命令将添加一条规则,以允许来自公共区域的TCP流量,并将其定向到本地TCP端口80。在此示例中,我们将此规则添加到公共区域。如果要将规则添加到其他区域,请替换“public”为其他区域名称。
4.4 重新加载firewalld规则
添加规则后,您需要重新加载防火墙规则:
sudo firewall-cmd --reload
此命令将重新加载防火墙规则以使其生效。
4.5 查看规则
您可以使用以下命令查看允许的端口号:
sudo firewall-cmd --list-all
此命令将显示您的防火墙规则列表。
总结
Linux服务器上设置防火墙对于保护您的业务至关重要。在本文中,我们介绍了如何使用iptables和firewalld设置Linux防火墙。通过使您的服务器更安全,您可以保护自己和您的用户免受不必要的风险。