防火墙端口配置是网络安全管理中的重要环节,通过合理配置端口可以实现网络访问控制、防范恶意攻击等目的,不同操作系统和防火墙软件的端口配置命令有所不同,以下将以常见的Linux系统(iptables、firewalld)和Windows系统(防火墙高级安全)为例,详细介绍防火墙端口配置的相关命令和操作步骤。

Linux系统防火墙端口配置命令
基于iptables的端口配置
iptables是Linux系统中传统的防火墙工具,通过规则链来控制数据包的流动,以下是常用的iptables端口配置命令:
(1)查看当前规则
sudo iptables -L -n -v
参数说明:-L列出规则,-n以数字形式显示IP和端口,-v显示详细信息。
(2)允许特定端口访问
允许TCP协议的80端口(HTTP服务)和443端口(HTTPS服务):

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
参数说明:-A INPUT表示添加到INPUT链(入站规则),-p tcp指定协议为TCP,--dport指定目标端口,-j ACCEPT表示允许通过。
(3)拒绝特定端口访问
拒绝TCP协议的22端口(SSH服务)的访问:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
-j DROP表示丢弃数据包。
(4)删除规则
通过规则序号删除:

sudo iptables -L INPUT --line-numbers # 查看INPUT链的规则序号 sudo iptables -D INPUT 3 # 删除序号为3的规则 ```删除: ```bash sudo iptables -D INPUT -p tcp --dport 22 -j DROP
(5)保存规则
不同Linux发行版的保存命令不同:
- CentOS/RHEL:
sudo service iptables save - Ubuntu/Debian:
sudo iptables-save > /etc/iptables/rules.v4
基于firewalld的端口配置
firewalld是CentOS 7及以上版本、Ubuntu等系统默认的防火墙管理工具,支持区域(Zone)和动态规则更新。
(1)启动并启用firewalld
sudo systemctl start firewalld sudo systemctl enable firewalld
(2)查看当前区域和规则
sudo firewall-cmd --get-active-zones # 查看活跃区域 sudo firewall-cmd --list-all # 查看默认区域的规则
(3)添加端口到区域
将TCP 80端口添加到public区域:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload # 重新加载防火墙使规则生效
参数说明:--permanent表示永久生效(不添加此参数为临时生效),--add-port指定端口和协议。
(4)删除端口规则
sudo firewall-cmd --permanent --remove-port=80/tcp sudo firewall-cmd --reload
(5)查看已添加的端口
sudo firewall-cmd --list-ports
Windows系统防火墙端口配置命令
Windows系统通过“高级安全Windows防火墙”进行端口配置,可通过图形界面或命令行(netsh)实现,以下重点介绍命令行方式:
(1)打开命令提示符(管理员权限)
以管理员身份运行CMD或PowerShell。
(2)查看当前防火墙规则
netsh advfirewall firewall show rule name=all
(3)添加入站规则允许端口访问
允许TCP 3389端口(远程桌面)的入站访问:
netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP localport=3389
参数说明:name为规则名称,dir=in表示入站规则,action=allow允许通过,protocol=TCP指定协议,localport指定本地端口。
(4)添加出站规则允许端口访问
允许TCP 53端口(DNS)的出站访问:
netsh advfirewall firewall add rule name="Allow DNS Out" dir=out action=allow protocol=TCP localport=53
(5)删除规则
通过规则名称删除:
netsh advfirewall firewall delete rule name="Allow RDP"
(6)启用或禁用防火墙
netsh advfirewall set allprofiles state on # 启用所有配置文件 netsh advfirewall set allprofiles state off # 禁用所有配置文件
防火墙端口配置注意事项
- 最小权限原则:仅开放业务必需的端口,避免开放高危端口(如135、139、445等)。
- 协议限制:根据服务需求明确协议类型(TCP/UDP/ICMP),例如DNS服务同时使用TCP和UDP 53端口。
- 规则顺序:防火墙规则按顺序匹配,建议将拒绝规则置于允许规则之后。
- 日志记录:开启防火墙日志,记录被拦截的访问尝试,便于安全审计。
- 测试验证:配置完成后,通过外部工具(如
telnet、nmap)测试端口是否可达,避免配置错误导致服务中断。
常见端口服务对照表
| 端口号 | 协议 | 常见服务 | 安全说明 |
|---|---|---|---|
| 22 | TCP | SSH | 建议修改默认端口并限制IP访问 |
| 25 | TCP | SMTP | 邮件发送服务,需防范中继攻击 |
| 53 | TCP/UDP | DNS | 域名解析服务,避免开放公网访问 |
| 80 | TCP | HTTP | 网页服务,建议升级至HTTPS |
| 110 | TCP | POP3 | 邮件接收服务,明文传输不安全 |
| 143 | TCP | IMAP | 邮件接收服务,替代POP3 |
| 443 | TCP | HTTPS | 加密网页服务 |
| 3389 | TCP | RDP | 远程桌面,需强密码和IP限制 |
| 3306 | TCP | MySQL | 数据库服务,禁止公网访问 |
| 5432 | TCP | PostgreSQL | 数据库服务,禁止公网访问 |
相关问答FAQs
Q1: 如何开放临时端口规则,重启后自动失效?
A: 在Linux firewalld中使用--permanent参数可永久生效,若省略该参数则规则为临时规则,重启防火墙或系统后失效。
sudo firewall-cmd --add-port=80/tcp # 临时开放80端口
在iptables中,临时规则不执行保存操作即可,重启后规则会恢复到上次保存的状态。
Q2: 防火墙端口配置后,如何测试端口是否开放成功?
A: 可使用以下工具测试:
- Linux/macOS:
telnet IP 端口或nc -zv IP 端口(需安装netcat工具)。 - Windows:
telnet IP 端口(需启用Telnet客户端)。 - 跨平台工具:
nmap -p 端口 IP(可详细扫描端口状态)。
若测试成功,说明规则配置正确;若失败,需检查防火墙规则、服务是否启动及网络连通性。
