配置服务器防火墙IP规则的核心在于明确方向、协议端口和IP地址范围,然后通过操作系统命令或云平台工具执行操作。
理解服务器防火墙IP配置的基本概念
在动手前,先厘清几个关键点,防火墙的IP规则通常分为入站和出站,入站控制外部对服务器的访问,出站控制服务器对外发起连接,你配置IP时,必须结合协议和端口,例如只允许特定IP访问SSH(22端口)或HTTP(80端口),不指定端口,IP规则就变成全通或全禁,这在多数场景下并不安全。
入站规则与出站规则的差异
- 入站规则:决定哪些IP可以主动连接你的服务器,常见场景:允许公司办公IP访问数据库端口,或拦截恶意IP的扫描。
- 出站规则:限制服务器主动访问外部IP,禁止服务器连接已知的恶意C2地址,或只允许特定IP段访问外部API。
协议和端口必须与IP一起指定
单独一个IP地址没有意义,防火墙需要知道流量类型,比如你配置“允许192.168.1.10访问”,但没指定协议,那么防火墙默认会匹配所有协议,这可能造成安全漏洞,实际配置时,你通常需要同时写明IP、协议(TCP/UDP)、端口号,以及动作(允许/拒绝),行业共识认为,这种组合配置能让规则更精细,减少误放行或误拦截。
Linux服务器防火墙配置ip命令详解
Linux系统主流防火墙是iptables和firewalld,两者底层核心相同但命令风格不同,下面以常见场景为例,给出可直接运行的命令。
使用iptables配置IP白名单
假设你希望只允许192.168.1.100访问服务器的22端口,其余IP全部拒绝。
# 允许单个IP访问SSH
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# 设置默认策略为DROP(拒绝所有入站,需配合上面的规则)
iptables -P INPUT DROP
注意顺序:允许规则必须放在拒绝规则之前,否则会被默认丢弃策略拦截,如果你需要允许整个IP段,用CIDR格式:
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
保存规则:不同发行版命令不同,Debian/Ubuntu用iptables-save > /etc/iptables/rules.v4,CentOS 6用service iptables save。
使用firewalld配置IP规则
CentOS 7及以上、RHEL、Fedora默认使用firewalld,操作更直观,但需注意运行时与永久状态的区别。
- 允许特定IP访问SSH:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' firewall-cmd --reload - 拒绝某个IP段访问所有端口:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop' firewall-cmd --reload--permanent参数表示永久生效,--reload使规则加载,不加--permanent只在当前会话生效,重启后丢失。
配置IP黑名单
黑名单思路与白名单相反,先允许所有,再拒绝特定IP,以iptables为例:
# 先设置默认策略为ACCEPT
iptables -P INPUT ACCEPT
# 拒绝特定IP
iptables -A INPUT -s 192.168.1.200 -j DROP
使用firewalld时,将accept改为drop即可,黑名单适合封禁已知攻击IP,但整体有风险:如果攻击IP变化,你需要不断更新规则。
Windows服务器防火墙放行ip的具体操作
Windows防火墙提供图形界面和命令行两种方式,推荐使用高级安全Windows防火墙进行精细控制。
通过图形界面配置IP规则
路径:控制面板 > 系统和安全 > Windows防火墙 > 高级设置 > 入站规则。
- 右键点击“入站规则”,选择“新建规则”。
- 规则类型选择“自定义”,然后点击“下一步”。
- 在“程序”页面选择“所有程序”,或指定特定程序(如SQL Server)。
- 在“协议和端口”页面选择协议类型和端口号(如TCP 1433)。
- 在“作用域”页面,在“远程IP地址”处添加允许的IP地址,如192.168.1.0/24,或单个IP,这是关键步骤,对应防火墙IP配置。
- 选择“允许连接”,然后命名规则并完成。
出站规则同理,但方向相反,如果你需要配置IP黑名单,在作用域中添加拒绝的IP,并在操作中选择“阻止连接”。
通过命令行配置IP规则
使用netsh advfirewall命令更高效,适合批量操作。
- 允许特定IP访问80端口:
netsh advfirewall firewall add rule name="Allow IP" dir=in protocol=tcp localport=80 remoteip=192.168.1.0/24 action=allow - 拒绝某个IP访问所有端口:
netsh advfirewall firewall add rule name="Block IP" dir=in remoteip=10.0.0.5 action=block注意:
dir=in表示入站,dir=out表示出站。remoteip指定源IP(入站)或目标IP(出站),规则名(name)不能重复,否则会覆盖。
云服务器防火墙配置ip(安全组)
在简米云、酷番云、华为云等平台,防火墙通常以“安全组”形式存在,位于虚拟机外部,优先级高于实例内部防火墙,配置时直接在控制台操作,无需SSH登录。
简米云安全组配置IP
登录简米云ECS控制台,找到目标实例,点击“安全组配置”。
- 添加安全组规则,选择“入方向”或“出方向”。
- 授权策略:允许或拒绝。
- 协议类型:根据服务选择TCP、UDP、ICMP等。
- 端口范围:如22/22表示SSH,80/80表示HTTP。
- 授权对象:即IP地址或CIDR块,例如0.0.0.0/0表示所有IP,192.168.1.0/24表示特定网段,单个IP用32位掩码,如192.168.1.100/32。
- 优先级:数字越小越优先,一般默认即可。
建议:将常用管理IP加入白名单,其他IP全部拒绝,避免暴露在公网。
酷番云安全组配置IP
酷番云操作类似,在云服务器控制台关联安全组,点击“编辑规则”。
- 添加规则时,同样需要填写“来源”(入站)或“目标”(出站),格式为IP或CIDR。
- 酷番云支持“端口段”和“协议”组合,例如放行HTTP/HTTPS,来源设为0.0.0.0/0,但数据库端口仅允许公司IP。
- 注意:每个安全组最多可添加数十条规则,超出后需扩展,但多数场景足够。
如果你在酷番云使用轻量应用服务器,防火墙规则在“防火墙”选项卡中配置,方法与安全组相同。
常见场景与注意事项
允许特定IP访问SSH服务
这是最常用的场景,假设你公司公网IP为203.0.113.5,你希望只允许这个IP SSH登录。
- Linux(firewalld):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="22" protocol="tcp" accept' - 简米云安全组:入方向规则,协议TCP,端口22,授权对象203.0.113.5/32,动作允许。
- 执行后,其余IP的SSH连接将被拒绝,注意先不要断开当前会话,确认新规则生效,否则你可能锁死自己。
禁止某个IP段访问网站
假设你发现某个IP段(如103.0.0.0/8)频繁攻击你的Web服务器,需要封禁。
- Windows防火墙:入站规则,阻止连接,协议TCP,端口80/443,远程IP地址103.0.0.0/8。
- iptables:
iptables -A INPUT -s 103.0.0.0/8 -p tcp --dport 80 -j DROP,同理443端口。 - 安全组方式:添加一条拒绝规则,授权对象为103.0.0.0/8,优先级设低一些(如100),但注意安全组规则是白名单逻辑,如果已有允许全0.0.0.0/0的规则,拒绝规则可能不生效,你需要调整安全组策略为“拒绝所有,仅允许部分”,或者在应用层拦截。
配置失误导致无法连接怎么办
这是新手常遇问题:配置防火墙后远程连接断开,意味着你把自己也挡在了外面。
- 解决方案:如果服务器在机房,可以请求远程管理卡(IPMI)登录后清除规则,如果服务器在云上,可以在云控制台使用VNC连接,或通过“安全组”的紧急恢复功能(如简米云提供“安全组规则重置”),有时也可以通过“管理终端”进入系统,直接停止防火墙服务:
systemctl stop firewalld或service iptables stop,建议在配置前先创建一个允许当前IP的规则,并保留一个SSH会话备用。
配置服务器防火墙IP规则是安全运维的基础操作,核心在于理解方向、协议和IP的作用域,并按照实际场景选择linux命令、Windows防火墙或云安全组,无论哪种方式,测试规则时务必保留备用通道,避免因误操作导致服务器失联。
服务器防火墙配置ip常见问题
服务器防火墙配置ip后不生效怎么办?
首先检查规则顺序:拒绝规则应放在允许规则之前?取决于防火墙机制,iptables匹配第一条规则,所以要把最具体的规则放前面,安全组通常是白名单逻辑,如果已有允许所有IP的规则,新增拒绝规则可能无效,你需要将默认动作改为拒绝,其次检查协议和端口是否匹配,如果只写了IP没写端口,规则可能不匹配,最后确认防火墙服务是否在运行,以及是否已重新加载规则(firewalld需reload,iptables规则需保存到文件并重启服务)。
如何批量导入IP规则?
Linux中可以用脚本生成iptables-save格式的规则文件,然后通过iptables-restore < 规则文件导入,Windows中可以用netsh advfirewall命令循环读取IP列表,写成批处理文件,云安全组大多支持批量导入,例如简米云的安全组规则可以复制到其他安全组,或通过API、Terraform批量管理,对于大量IP,建议使用IP集(ipset)或地址组功能,提高匹配效率。
配置IP白名单和黑名单的优先级是怎样的?
在多数防火墙中,白名单优先于黑名单,如果一条规则明确允许某个IP,随后又有一条拒绝该IP的规则,防火墙会执行允许,这是因为防火墙通常使用“最先匹配”原则,且白名单配置往往更具体,在安全组中,简米云和酷番云的安全组规则优先级取决于“优先级”数字,数字越小越优先,但同一网段下,如果存在允许和拒绝规则,允许规则会生效,行业共识认为,白名单是最佳实践,黑名单只能作为辅助手段。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/533914.html


