当前位置:首页 > 服务器技术 > 正文

Linux网络ACL配置详解(从零开始掌握iptables防火墙规则)

在当今的网络环境中,网络安全策略至关重要。Linux系统自带的强大工具——iptables,是实现Linux网络ACL(访问控制列表)的核心手段。本文将手把手教你如何配置基本的网络ACL规则,即使你是完全的小白,也能轻松上手。

什么是网络ACL?

ACL(Access Control List,访问控制列表)是一种用于控制网络流量进出的规则集合。通过设置允许或拒绝特定IP、端口或协议的数据包,可以有效提升服务器的安全性。

Linux网络ACL配置详解(从零开始掌握iptables防火墙规则) Linux网络ACL  iptables配置 网络安全策略 防火墙规则 第1张

准备工作:确认iptables已安装

大多数Linux发行版默认已安装iptables。你可以通过以下命令检查:

# 检查iptables版本sudo iptables --version# 如果未安装(以Ubuntu为例)sudo apt updatesudo apt install iptables  

基础概念:iptables的三张表与五条链

理解iptables的关键在于掌握其结构:

  • filter表:最常用,用于过滤数据包(默认表)。
  • nat表:用于网络地址转换(如端口转发)。
  • mangle表:用于修改数据包(较少用)。

filter表中,有三条主要的“链”(Chain):

  • INPUT:处理进入本机的数据包。
  • OUTPUT:处理本机发出的数据包。
  • FORWARD:处理经过本机转发的数据包(如路由器)。

实战:配置基本的防火墙规则

下面我们将配置一个简单的安全策略:只允许SSH(22端口)和HTTP(80端口)访问,拒绝其他所有入站连接。

步骤1:清空现有规则(谨慎操作!)

# 清空所有规则sudo iptables -F# 删除用户自定义链sudo iptables -X  

步骤2:设置默认策略

先拒绝所有流量,再逐个放行需要的服务:

# 默认拒绝所有INPUT和FORWARD流量sudo iptables -P INPUT DROPsudo iptables -P FORWARD DROP# 允许本机回环通信(非常重要!)sudo iptables -A INPUT -i lo -j ACCEPT# 允许已建立的连接返回数据sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  

步骤3:放行特定服务

# 允许SSH(端口22)sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许HTTP(端口80)sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT# 可选:允许HTTPS(端口443)sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  

步骤4:查看当前规则

sudo iptables -L -n -v  

保存规则(防止重启丢失)

不同Linux发行版保存方式不同:

  • Ubuntu/Debian:安装iptables-persistent
  • CentOS/RHEL:使用service iptables save

以Ubuntu为例:

sudo apt install iptables-persistent# 安装过程中会提示是否保存当前规则,选择“是”  

小贴士:避免把自己锁在外面

在远程操作服务器时,务必先测试规则是否生效,并保留一个备用连接。建议先设置一个临时规则,在5分钟后自动清空,以防配置错误导致断连:

# 设置5分钟后清空所有规则(在screen或tmux中运行更安全)echo "iptables -F" | at now + 5 minutes  

结语

通过本文,你已经掌握了使用iptables配置基本防火墙规则的方法。合理运用Linux网络ACL,能显著提升你的服务器安全性。记住,安全是一个持续的过程,定期审查和更新你的网络安全策略至关重要。

现在,你已经具备了实施基础iptables配置的能力。动手试试吧!