当前位置:网站首页 >  教程

Linux网络权限管理:iptables与firewalld实操

时间:2026年06月07日 03:09:17 来源:易频IT社区

一、环境确认与基础工具安装

在进行网络权限配置之前,必须先确认当前操作系统的发行版以及防火墙服务的运行状态。不同的Linux发行版默认使用的防火墙管理工具不同,CentOS 7及以上版本默认使用firewalld,而Ubuntu及Debian系统通常使用ufwiptables

执行以下命令查看系统版本信息:

cat /etc/os-release

接着,检查系统中是否已安装防火墙管理工具。如果是CentOS系统,执行:

rpm -qa | grep firewalld

如果未安装,请使用yum进行安装:

yum install firewalld -y

对于Ubuntu系统,检查并安装ufw

sudo apt update
sudo apt install ufw -y

无论使用哪种工具,操作前务必确认当前的SSH连接端口(默认为22)已经在允许列表中,否则配置错误可能导致连接断开且无法远程管理服务器。

二、CentOS/RHEL系统:Firewalld配置实战

firewalld基于区域(Zone)的概念来管理流量,默认区域通常是public。以下操作均在Root权限下执行。

1. 启动与开机自启

首先启动firewalld服务并设置为开机自启:

systemctl start firewalld
systemctl enable firewalld

检查服务状态,确保显示为active (running)

systemctl status firewalld

2. 开放指定端口

假设我们需要开放Web服务常用的80端口(HTTP)和443端口(HTTPS)。使用--permanent参数表示规则永久生效,重启后依然有效,执行后需要使用--reload重载配置。

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

验证端口是否添加成功:

firewall-cmd --list-ports

3. 移除端口权限

如果某个服务不再需要对外提供服务,应及时移除端口权限。例如移除3306端口(MySQL):

firewall-cmd --permanent --remove-port=3306/tcp
firewall-cmd --reload

4. IP白名单配置(富规则)

生产环境中,通常只允许特定的管理IP访问SSH端口(22),拒绝其他所有IP连接。这需要使用“富规则”(Rich Rule)来实现。

移除public区域对22端口的默认放行(如果之前存在):

firewall-cmd --permanent --zone=public --remove-service=ssh

添加只允许特定IP(例如192.168.1.100)访问22端口的规则:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

如果是一个网段,例如192.168.1.0/24,则修改source address:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

最后重载配置使规则生效:

firewall-cmd --reload

查看当前生效的富规则:

firewall-cmd --list-rich-rules

5. 封禁特定IP

如果检测到恶意IP攻击,可以直接封禁该IP的所有入站流量:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.50" reject'
firewall-cmd --reload

三、Ubuntu/Debian系统:UFW配置实战

UFW(Uncomplicated Firewall)是Ubuntu默认的防火墙管理工具,旨在简化iptables的配置。

1. 启用UFW

在启用之前,确保先允许SSH连接,防止被锁在门外:

sudo ufw allow ssh
sudo ufw allow 22/tcp

然后启用UFW:

sudo ufw enable

系统会提示将会中断现有的SSH连接,输入y并回车确认。查看UFW状态:

Linux网络权限管理:iptables与firewalld实操

sudo ufw status verbose

2. 开放常用端口

开放HTTP和HTTPS端口:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

3. 限制访问IP

UFW允许在规则中指定源IP。例如,只允许192.168.1.100访问3306端口:

sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp

拒绝特定IP访问所有端口:

sudo ufw deny from 10.0.0.50

4. 删除规则

首先查看带编号的规则列表:

sudo ufw status numbered

输出结果中会显示序号,例如[ 1] 22/tcp。若要删除第1条规则,执行:

sudo ufw delete 1

四、通用底层方案:Iptables命令详解

无论是firewalld还是ufw,底层最终都是通过iptables(或nftables)规则生效。在某些精简系统或需要极高定制化的场景下,直接操作iptables是必要的。

1. 查看现有规则

使用-L列出规则,-n以数字形式显示IP和端口,-v显示详细信息(包数量、字节数),--line-numbers显示行号:

iptables -L -n -v --line-numbers

2. 清空规则(慎用)

在配置新环境前,通常会清空默认规则。注意:这可能会导致网络中断,建议在控制台操作。

iptables -F
iptables -X
iptables -Z

3. 配置默认策略

设置默认的入站策略为DROP(拒绝),出站和转发为ACCEPT(允许):

iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

4. 允许回环接口和已建立连接

必须允许本地回环(Lo)通信,否则许多本地服务会失效。同时,允许已经建立的连接(即服务器对外发出的请求的回包)通过:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

5. 开放指定端口

开放80和443端口:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

6. 保存Iptables规则

直接使用iptables命令添加的规则在重启后会失效。不同系统保存方式不同。

对于CentOS 7,使用service保存:

service iptables save

对于Ubuntu/Debian,需要安装iptables-persistent

sudo apt install iptables-persistent
sudo netfilter-persistent save

五、网络权限验证与排查

配置完成后,必须进行验证以确保规则按预期工作。

1. 检查端口监听状态

使用ssnetstat命令检查服务是否正在监听配置的端口:

ss -tulnp | grep :80

如果该命令没有返回结果,说明服务未启动,此时检查防火墙规则是无效的。

2. 本地端口连通性测试

在服务器内部使用curl测试本地Web服务是否正常:

curl -I http://127.0.0.1

3. 远程端口连通性测试

在另一台机器上,使用telnetnc(netcat)测试目标端口是否可达。

使用telnet测试80端口:

telnet <服务器IP> 80

如果连接失败(显示Connection refused或Connection timed out),而服务确实在运行,则通常是防火墙规则配置错误或云服务器安全组未放行。

4. 日志排查

如果连接被拒绝,可以查看系统日志定位原因。对于firewalld,可以查看内核日志:

dmesg | grep -i 'firewall'

或者查看/var/log/messages(CentOS)或/var/log/syslog(Ubuntu)中关于拒绝连接的记录。在iptables中,可以添加日志规则来记录被丢弃的包:

iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: "

通过以上步骤,可以完成从安装、配置到验证的Linux网络权限管理全流程,确保服务器在提供必要服务的同时,最大程度地阻断非授权访问。

标签 网络权限

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图