黑白名单配置服务器访问权限管控:黑白名单配置详解
前言
黑白名单是服务器访问权限管控的常用手段,白名单只允许指定IP或地址段访问,黑名单则禁止某些IP访问。
无论你是想限制后台登录来源、保护SSH端口,还是屏蔽恶意爬虫,掌握黑白名单配置都能直接提升服务器安全性。
本文面向零基础用户,分别讲解宝塔面板和Linux命令行两种方式,确保你读完就能落地执行。
准备条件
- 一台已装好操作系统的云服务器(本文以CentOS 7/Ubuntu 20.04为例,其他发行版命令类似)。
- 如果使用宝塔面板,需提前安装宝塔面板(免费版即可)并登录后台。
- 如果使用命令行,准备好SSH客户端(如PuTTY、Terminal)和root或sudo权限。
- 明确你需要管控的服务端口(例如22、80、443)和IP范围。
宝塔面板配置黑白名单(推荐新手)
宝塔面板提供了可视化防火墙功能,配置黑白名单非常直观。
1. 进入防火墙界面
登录宝塔面板后台,点击左侧菜单“安全”->“防火墙”,进入防火墙管理页面。
这里会显示当前服务器的放行端口和规则列表。
2. 添加IP白名单
- 点击“IP规则”选项卡,再点击“添加IP规则”。
- 规则类型选择“白名单”。
- IP地址填写你要放行的IP(例如你办公网的公网IP 1.2.3.4),如果需要允许整个段,填入
1.2.3.0/24。 - 备注可写“办公IP白名单”方便管理。
- 点击“添加”,该IP即刻放行所有端口(如果之前有黑名单冲突,则白名单优先)。
3. 添加IP黑名单
同样在“IP规则”页面,点击“添加IP规则”。
- 规则类型选择“黑名单”。
- IP地址填写要屏蔽的IP(例如已知恶意IP 5.6.7.8)。
- 添加后该IP无法访问服务器的任何端口(包括SSH和网站)。
注意:宝塔面板的黑白名单规则优先级:白名单 > 黑名单。如果某个IP同时存在白名单和黑名单规则,白名单生效。
4. 针对端口的黑白名单(更精细)
如果你只想对特定端口做限制(例如只允许某些IP访问SSH的22端口),可以使用“端口规则”。
- 在防火墙页面点击“添加端口规则”。
- 端口填22,协议选TCP,来源IP填写你允许的IP或IP段,动作选“允许”。
- 然后添加一条拒绝规则,来源IP填
0.0.0.0/0,动作选“禁止”,这条规则放在允许规则之后。 - 宝塔面板会自动按顺序匹配,匹配到允许则放行,否则匹配到禁止则拒绝。
命令行方式配置(使用iptables)
如果你没有宝塔面板,或者想更底层地控制防火墙,可以用iptables。
以下命令以CentOS 7为例,Ubuntu需先安装iptables-persistent并注意ufw冲突。
1. 查看当前规则
iptables -L -n --line-numbers
如果没有规则,默认是ACCEPT所有流量。
2. 配置白名单(仅允许指定IP访问SSH)
# 允许指定IP(例如1.2.3.4)访问22端口
iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
# 拒绝其他所有IP访问22端口
iptables -A INPUT -p tcp --dport 22 -j DROP
注意顺序:先添加允许规则,再添加拒绝规则,否则拒绝规则会先匹配导致白名单失效。
3. 配置黑名单(屏蔽某个IP的所有访问)
iptables -A INPUT -s 5.6.7.8 -j DROP
这条命令会丢弃来自5.6.7.8的所有数据包。
4. 保存规则(持久化)
iptables规则默认重启后失效,需要保存。
- CentOS 7:
service iptables save或iptables-save > /etc/sysconfig/iptables。 - Ubuntu:安装
iptables-persistent后使用netfilter-persistent save。
提示:如果你用的是CentOS 8或更高版本,系统默认使用firewalld,建议用firewall-cmd代替iptables,或先停用firewalld再启用iptables服务。
避坑指南
- 千万别把自己封在外面
配置SSH白名单前,先确认你当前的IP是否在允许范围内。
如果不小心封了自己的IP,可以通过云服务商控制台的VNC进入系统,或提前添加备用IP白名单。
- 宝塔面板中黑白规则不要互相矛盾
同一个IP同时出现在白名单和黑名单时,白名单生效,但容易混淆。
建议只使用一种方式,或者明确统一。
- 命令行规则顺序很重要
iptables按顺序匹配,一旦匹配则不再往下执行。
所以允许规则必须放在拒绝规则前面。
- 修改后务必验证
配置完成先不要关闭当前SSH连接,另开一个窗口测试能否正常登录,或使用curl从外部测试端口是否可达。
- firewalld用户别搞混
如果你使用firewalld,不要同时操作iptables,两者可能冲突。
建议固定在一种防火墙管理工具上。
效果验证
宝塔面板验证
- 在防火墙页面查看IP规则列表,确认添加的规则状态为“已生效”。
- 使用被禁止的IP访问服务器网站或SSH,应提示连接超时或被拒绝。
- 使用被允许的IP访问,应正常建立连接。
命令行验证
# 查看iptables规则确认存在
iptables -L -n --line-numbers
# 从其他机器测试端口连通性(例如用telnet或nc)
telnet 你的服务器IP 22
# 如果被屏蔽应显示无法连接
也可以临时添加一条日志规则来观察匹配情况:
iptables -I INPUT -s 5.6.7.8 -j LOG --log-prefix "BLACKLIST-DROP: "
查看/var/log/messages或dmesg确认有日志输出。
结语
黑白名单配置是服务器访问权限管控的基础操作,无论你用宝塔面板还是命令行,理解原理并掌握验证方法就能避免踩坑。
建议先在测试环境演练,再应用到生产服务器。
如果你遇到配置后无法访问的情况,先检查规则顺序和IP地址是否写错,必要时通过VNC恢复初始设置。
如果你对更复杂的场景(如动态黑名单、fail2ban联动)感兴趣,可以继续查看本站相关教程。