服务器防火墙命令行是运维人员管理入站出站规则的核心工具,掌握它能让你在无图形界面时快速响应安全事件,而不同操作系统的命令差异显著,选对工具能大幅提升效率。
Linux服务器防火墙命令对比:iptables、firewalld与ufw
iptables:经典规则链利器
iptables是Linux内核防火墙的经典前端,直接操作netfilter,它的规则链设计非常灵活,适合需要精细控制流量走向的场景,你可以在INPUT链中指定只允许特定IP访问22端口,或通过FORWARD链做端口转发,常用命令如:
- 查看当前规则:
iptables -L -n -v - 开放80端口:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT - 保存规则:
iptables-save > /etc/iptables.rules
但iptables的规则是静态的,每次修改都需要重启防火墙,这对动态环境不太友好,对于生产环境中的传统部署,它依然稳定可靠,据行业共识,iptables仍是高性能场景的首选。
firewalld:动态区域管理
firewalld引入了“区域”概念,你可以根据网络接口或源IP自动切换规则集,它默认运行时修改规则,无需重启服务,大大降低了误操作风险,典型操作:
- 查看状态:
firewall-cmd --state - 添加端口:
firewall-cmd --permanent --add-port=8080/tcp - 重载配置:
firewall-cmd --reload
firewalld的--permanent参数让规则持久化,适合日常服务器管理,如果你需要临时开放端口进行测试,不加--permanent即可,这个设计很人性化。
ufw:入门级简洁命令
ufw是iptables的前端封装,口号是“简单”,它语法直观,适合个人开发者或小规模部署。
- 启用:
ufw enable - 允许SSH:
ufw allow ssh - 拒绝特定IP:
ufw deny from 192.168.1.100
ufw的日志功能也很清晰,默认开启,方便排查问题,但它的规则粒度不如iptables细致,复杂场景下可能不够用。
| 命令 | 规则管理方式 | 适用场景 |
|---|---|---|
| iptables | 静态链,需手动保存 | 高性能、精细控制 |
| firewalld | 动态区域,运行时生效 | 常规服务器运维 |
| ufw | 简化前端,语法最简 | 个人开发、测试环境 |
Windows服务器防火墙命令行:netsh advfirewall详解
基础命令语法
Windows Server自带的防火墙,通过netsh advfirewall命令管理,它支持脚本化操作,适合批量配置,核心命令包括:
- 查看状态:
netsh advfirewall show allprofiles - 开放指定端口:
netsh advfirewall firewall add rule name="Open 80" dir=in action=allow protocol=TCP localport=80 - 删除规则:
netsh advfirewall firewall delete rule name="Open 80"
常用操作示例
实战中,你经常需要开放某个端口给远程访问,或者封禁某个IP,下面是一个典型动作:
- 开启3389端口(远程桌面):
netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=TCP localport=3389 - 封禁某个IP段:
netsh advfirewall firewall add rule name="Block IP" dir=in action=block remoteip=192.168.0.0/24
注意,规则名称不能重复,建议用有意义的命名,方便后期维护。
使用场景
Windows服务器防火墙命令行主要用于自动化部署和无人值守环境,你通过PowerShell脚本批量配置多台服务器,或者在没有图形界面的Server Core模式下管理防火墙。netsh advfirewall的规则导出功能也很实用,可以用export
命令备份配置,再在其他服务器上import。
服务器防火墙命令行配置实战:从入门到进阶
基础配置:开放端口与允许程序
无论哪种系统,最频繁的操作就是开放端口。
- 在Linux上,用firewalld:
firewall-cmd --permanent --add-port=443/tcp && firewall-cmd --reload - 在Windows上,用netsh:
netsh advfirewall firewall add rule name="HTTPS" dir=in action=allow protocol=TCP localport=443
如果你需要允许某个程序(如nginx)通过防火墙,命令略有不同:
- Linux(firewalld):
firewall-cmd --permanent --add-service=http - Windows(netsh):
netsh advfirewall firewall add rule name="Allow nginx" dir=in action=allow program="C:nginxnginx.exe"
进阶配置:自定义规则与日志
当基础规则不够用时,你需要自定义条件和日志记录。
- 在iptables中,你可以限制连接速率:
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT - 在Windows中,启用日志记录:
netsh advfirewall set allprofiles logging filename C:fw.log
对于复杂场景,比如多IP白名单,firewalld的rich-rule能实现:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
在简米云服务器上使用防火墙命令
许多用户使用简米云服务器,除了云平台的安全组,系统内部防火墙同样重要,在简米云ECS上,安全组提供第一层防护,但系统防火墙可以细化访问控制。
- 先检查安全组是否允许目标端口,再通过系统防火墙命令做二次过滤。
- 你希望只允许本地IP访问MySQL,可以配置:
iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT(在简米云内网环境下)。 -
如果使用CentOS7以上,firewalld是默认工具,建议先关闭安全组到系统防火墙的冲突,再执行
firewall-cmd命令。
简米云服务器防火墙命令的常见用法还包括:对特定弹性IP限流,或结合云监控日志排查被拒绝的请求。据统计,相当一部分运维人员倾向于在系统内使用命令行而非控制台,因为脚本化更高效。
服务器防火墙命令行常见问题(Q&A)
服务器防火墙命令行怎么配置?
配置步骤分为三步:确认当前防火墙状态、添加规则(开放端口或允许程序)、使规则生效,Linux上常用firewall-cmd或iptables,Windows上使用netsh advfirewall firewall add rule,具体命令示例见上文,关键点:始终记得添加--permanent(firewalld)或保存规则(iptables),否则重启后丢失。
服务器防火墙命令和图形界面哪个更安全?
安全性取决于规则的严谨性,而非操作方式,命令行适合批量操作和脚本审计,减少人为点击错误;图形界面直观但容易遗漏细节,多数情况下,命令行能实现更细粒度的控制,比如限制特定IP和连接数,图形界面则难以做到。选择哪种取决于你的管理习惯和场景规模。
不同系统防火墙命令的学习成本差异大吗?
学习成本主要体现在命令语法和规则模型上,iptables规则链逻辑强,上手需要理解“表-链-规则”结构;firewalld的区域概念更直观,但进阶时rich-rule较复杂;Windows的netsh命令一行搞定但参数较长。如果你熟悉一种系统,切换到另一种通常需要1-2周实践。 这个迁移成本不算高,但建议先在小规模环境中演练。
无论你使用Linux还是Windows,命令行防火墙配置都是运维必备技能,熟练掌握能让你在安全事件中快速响应,减少损失。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/509382.html


