服务器白名单是一种重要的安全机制,通过限制仅允许特定的IP地址、设备或用户访问服务器,有效防范未授权访问和恶意攻击,要正确配置服务器白名单,需结合实际需求和技术环境,遵循规范的操作流程,确保安全性与可用性的平衡,以下从准备工作、配置步骤、注意事项等方面详细说明服务器白名单的配置方法。

配置前的准备工作
在实施白名单策略前,需明确服务器的应用场景、访问需求及现有架构,避免因配置不当导致服务中断。
-
梳理合法访问来源
统计所有需要访问服务器的IP地址、设备标识或用户账号,包括内部办公网络、运维终端、业务接口调用方等,可通过日志分析工具(如ELK Stack、AWStats)统计历史访问记录,确保无遗漏的合法来源。 -
评估服务器环境
明确服务器的操作系统(如Linux、Windows)、运行的服务(如Web服务、数据库、SSH)及防火墙类型(如iptables、Firewalld、云厂商安全组),不同环境下的白名单配置方式存在差异。 -
制定回滚方案
白名单配置可能因误操作导致合法用户无法访问,需提前备份当前防火墙规则或配置文件,并准备临时放通策略,以便快速恢复服务。
服务器白名单的具体配置步骤
根据服务器环境的不同,白名单可通过系统防火墙、云平台安全组或应用层配置实现,以下以常见场景为例说明。

基于Linux系统防火墙配置
以CentOS 7系统的Firewalld为例,通过rich规则或直接规则限制访问源:
- 添加单个IP白名单(允许192.168.1.100访问SSH服务):
firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' firewallcmd reload
- 添加IP段白名单(允许10.0.0.0/24网段访问HTTP服务):
firewallcmd permanent addrichrule='rule family="ipv4" source address="10.0.0.0/24" service name="http" accept' firewallcmd reload
- 拒绝非白名单IP访问(需设置默认拒绝策略):
firewallcmd setdefaultzone=drop firewallcmd reload
基于Windows服务器配置
Windows防火墙可通过“高级安全防火墙”配置IPSec策略或入站规则:
- 创建入站规则:
- 打开“高级安全Windows Defender防火墙”,选择“入站规则”→“新建规则”。
- 选择“自定义”→“所有程序”,协议选择“TCP”,本地端口根据服务填写(如SSH为22,HTTP为80)。
- 在“作用域”中,将“远程IP地址”设置为“下列IP地址”,并添加白名单IP或IP段。
- 操作选择“允许连接”,命名规则后完成配置。
云服务器安全组配置
以阿里云、腾讯云等平台为例,安全组是虚拟防火墙,可通过控制台界面配置:
- 添加入站规则:
- 登录云平台管理控制台,进入“安全组”页面。
- 选择目标安全组,点击“配置规则”→“添加入站规则”。
- 协议类型选择“全部”或指定协议(如TCP),端口范围填写服务端口(如22),授权对象填写白名单IP或IP段,授权策略选择“允许”。
- 保存规则,等待规则生效(通常即时生效)。
应用层白名单配置
部分服务(如Nginx、MySQL)支持自身白名单功能,可作为系统防火墙的补充:
- Nginx配置IP白名单:
在nginx.conf的server或location块中添加:allow 192.168.1.100; allow 10.0.0.0/24; deny all;
修改后执行
nginx s reload重载配置。
- MySQL配置用户主机白名单:
登录MySQL后,通过GRANT语句限制用户访问主机:GRANT ALL PRIVILEGES ON 'database'.* TO 'user'@'192.168.1.100' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
配置白名单的注意事项
- 最小权限原则
仅开放必要的服务端口(如SSH默认22端口,建议修改为非默认端口),避免允许所有协议通过。 - 定期更新维护
当员工离职、IP变更或新增业务时,需及时更新白名单列表,避免长期使用过期的规则。 - 测试与验证
配置前先在测试环境验证,确认白名单生效后再部署到生产环境;配置后通过非白名单IP测试访问是否被拦截。 - 日志监控
启用防火墙和应用日志,记录被拦截的访问尝试,便于分析潜在攻击行为并及时调整策略。
相关问答FAQs
问题1:配置白名单后,合法用户仍无法访问服务器,可能的原因是什么?
解答:可能原因包括:
- 防火墙规则未正确加载(如Linux中未执行
firewallcmd reload); - 白名单IP填写错误(如漏写掩码位、误用CIDR格式);
- 目标端口未开放或服务未启动(如SSH服务未运行);
- 云服务器安全组与本地防火墙规则冲突,需检查多层网络配置。
问题2:是否需要为所有服务器配置白名单?是否有例外情况?
解答:并非所有服务器都必须配置白名单,对于需要公开访问的服务(如Web服务器),可结合黑名单或WAF(Web应用防火墙)防护;但对于内部核心服务器(如数据库服务器、运维管理服务器),强烈建议启用白名单,仅允许特定IP访问,例外情况包括:
- 临时测试服务器:可设置临时放通规则,测试结束后立即关闭;
- 动态IP环境:若用户IP频繁变更,可结合VPN或身份认证(如SSH密钥)替代IP白名单。
