黑白名单批量配置服务器访问权限管控:从零开始的安全加固指南

黑白名单批量配置服务器访问权限管控:从零开始的安全加固指南

作为服务器运维博主,我经常收到读者提问:“怎么让特定IP能登录服务器,其他IP全都拒绝?
”“想批量封一批恶意IP,但一个个手动添加太累了。
”今天这篇教程就围绕黑白名单批量配置服务器访问权限管控展开,我会把概念、准备、操作和排错一次讲清楚,保证零基础也能照着做。

一、先搞清楚黑白名单是什么

白名单:只有名单内的IP(或IP段)允许访问服务器指定端口(比如22、443),其他IP一律拒绝。
黑名单:所有IP都可以正常访问,但名单内的IP被拒绝。

实际场景中,白名单常用于管理后台、SSH登录(只允许公司出口IP访问),黑名单用于拦截已经发现爬虫或攻击源。
本文我会分别演示如何用iptablesfail2ban批量操作,并补充宝塔面板的可视化配置。

二、准备工作:确认系统和工具

执行任何操作前,先登录服务器检查几项基础信息:

  1. 系统版本:运行 cat /etc/os-release 查看,CentOS 7/8、Ubuntu 20.04/22.04 都适用本教程。
  2. 是否已安装iptables:执行 which iptables,如果没显示路径则运行 yum install iptables-services(CentOS)或 apt install iptables(Ubuntu)。
  3. 备份原有规则(非常重要):执行 iptables-save > /root/iptables_backup_$(date +%Y%m%d).bak
  4. 当前开放端口:执行 ss -tlnpnetstat -tlnp 记下SSH(22)、Web(80/443)等端口号,避免误封。

三、批量配置黑白名单的核心操作

场景一:白名单控制SSH登录

假设公司出口IP为 203.0.113.1203.0.113.2,只允许这两个IP通过SSH连接服务器。

# 1. 清空现有INPUT链规则(谨慎操作,先备份!)
iptables -F INPUT
# 2. 设置默认策略为DROP(拒绝所有入站)
iptables -P INPUT DROP
# 3. 放行本地回环(本机通信必需)
iptables -A INPUT -i lo -j ACCEPT
# 4. 允许已建立的连接继续通信
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 5. 批量添加白名单IP(一行一个)
iptables -A INPUT -s 203.0.113.1/32 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 203.0.113.2/32 -p tcp --dport 22 -j ACCEPT
# 6. 如果还有其他服务(如Web),也要放行对应端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
注意:执行 iptables -P INPUT DROP 后,如果忘记放行自己的IP,当前SSH连接可能被立即断开。强烈建议先在一个screen/tmux会话中操作,并保留一个root SSH窗口作为救急通道。如果误操作,可以用服务器面板的VNC/IPMI重启或清空规则。

一次性批量添加多个IP:可以将IP写入一个文本文件white_ips.txt,每行一个IP,然后用脚本循环执行:

while read ip; do
    iptables -A INPUT -s "$ip" -p tcp --dport 22 -j ACCEPT
done < white_ips.txt

持久化规则:CentOS执行 service iptables save(或 iptables-save > /etc/sysconfig/iptables);
Ubuntu安装iptables-persistent并用 netfilter-persistent save

场景二:黑名单批量封禁IP

假设你从日志里提取了一批恶意IP(bad_ips.txt),想直接封掉所有端口访问:

while read ip; do
    iptables -A INPUT -s "$ip" -j DROP
done < bad_ips.txt

如果只想封禁特定服务(比如SSH),加上 -p tcp --dport 22

场景三:使用fail2ban自动管理黑名单

fail2ban 可以根据登录失败日志动态封禁IP,支持白名单免封。
配合批量导入IP,高效管控。

  1. 安装yum install fail2banapt install fail2ban
  2. 配置文件 /etc/fail2ban/jail.local(复制原文件修改):
   [sshd]
   enabled = true
   port = 22
   filter = sshd
   logpath = /var/log/auth.log
   maxretry = 5
   bantime = 3600
   ignoreip = 127.0.0.1/8 203.0.113.1/32 203.0.113.2/32   # 白名单IP,多个用空格分隔
  1. 重启生效systemctl restart fail2ban
  2. 查看封禁列表fail2ban-client status sshd
  3. 批量导入已有黑名单:将IP写入/etc/fail2ban/action.d/iptables.conf相关位置不方便直接导入,建议直接用iptables添加并配合fail2ban使用。

场景四:宝塔面板可视化配置

如果你用的是宝塔面板,操作更直观:

  1. 进入宝塔后台 → 安全防火墙
  2. 在“IP规则”标签页,点击“添加规则”。
  3. 选择“白名单”或“黑名单”,输入IP或IP段(如 203.0.113.0/24),端口选择“所有端口”或指定端口。
  4. 批量添加:宝塔支持一次添加多个IP,每个IP用换行分隔。
  5. 点击“确定”即可生效。
注意:宝塔的防火墙规则重启后可能重置,建议在“系统” → “定时任务”添加一个“重启后执行”的脚本来重新加载规则。

四、避坑指南(新手必看)

  1. 不要先DROP所有流量再放行:正确顺序是先放行本地回环、已有连接和SSH,最后再设置默认DROP。否则自己会被踢出。
  2. 规则顺序影响结果iptables 按顺序匹配,一旦匹配就停止。所以白名单放行规则要放在默认拒绝规则之前。
  3. 白名单要包含本地IP127.0.0.1 以及内网IP(如 192.168.1.0/24),否则本地服务(如MySQL)可能无法连接。
  4. fail2ban ignoreip 要填真实白名单:错误格式(如缺少子网掩码)会导致白名单不生效。
  5. 宝塔面板开启云锁或其他WAF时:IP黑白名单可能冲突,建议统一在一个地方管理。

五、效果验证与常见问题

验证方法

  • 用白名单之外的IP尝试SSH登录,应该连接超时或被拒绝。
  • 用白名单内的IP尝试登录,应能正常连接。
  • 查看iptables规则:iptables -L INPUT -n -v,计数pkts列可以看该规则被命中次数。
  • fail2ban验证:fail2ban-client status sshd 可以查看当前被封IP。

常见问题

Q:我把自己封了怎么办?
A:如果还有根控制台(VNC/IPMI)可登录,执行 iptables -F INPUT && iptables -P INPUT ACCEPT 清空规则。如果没有物理控制台,联系服务器商家重启并进入救援模式。

Q:批量导入失败,iptables报错“Bad argument”
A:检查IP文件是否有多余空格、空行(最后一行不要空行),IPv4地址格式必须正确。

Q:重启后规则丢失?
A:未持久化。CentOS执行 service iptables save,Ubuntu用 iptables-save > /etc/iptables/rules.v4 并启用iptables-persistent。

Q:fail2ban不拦截IP?
A:检查 logpath 是否指向正确的日志文件(如CentOS是 /var/log/secure),并确认 maxretrybantime 值合理。

Q:宝塔面板的IP规则和iptables规则冲突?
A:宝塔会在系统iptables中插入规则,两者会叠加。建议统一在宝塔或纯iptables中管理,避免重复。

总结

通过本文,你已经学会了用iptables手动、用fail2ban自动、以及用宝塔面板可视化的方式,完成黑白名单批量配置服务器访问权限管控。
记住:白名单用于严格管控核心服务,黑名单用于事后拦截。
操作前务必备份,突发情况用VNC救急。
如果遇到本文未覆盖的问题,可以留言或查看站内其他安全相关教程。

分享到:
上一篇
数据库连接池耗尽参数优化外贸站点
下一篇
静态资源合并压缩Nginx配置节省带宽
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意