服务器白名单的设置位置取决于您使用的操作系统、服务器软件或云服务平台,不同环境下的白名单配置方式差异较大,以下将分场景详细介绍常见的服务器白名单设置方法,帮助您快速定位并完成配置。

操作系统层面的白名单设置
Linux系统防火墙(iptables/firewalld)
对于基于Linux的服务器,操作系统自带的防火墙工具是控制访问权限的第一道防线。
-
iptables(适用于CentOS 7及以下版本):
白名单可通过iptables的s(源IP)和j ACCEPT规则实现,仅允许IP为168.1.100和168.1.101的设备访问SSH端口(22):iptables A INPUT p tcp dport 22 s 192.168.1.100 j ACCEPT iptables A INPUT p tcp dport 22 s 192.168.1.101 j ACCEPT iptables A INPUT p tcp dport 22 j DROP # 拒绝其他IP
规则需保存至
/etc/sysconfig/iptables或使用service iptables save持久化。 -
firewalld(适用于CentOS 7+/RHEL/Fedora):
通过rich rules或direct规则实现白名单,添加允许的IP到SSH服务:firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' firewallcmd reload
或使用
addsource直接允许IP访问所有开放端口,需结合zone参数指定区域(如public)。
Windows系统防火墙
Windows Server可通过高级安全防火墙配置白名单:
- 打开“高级安全Windows Defender防火墙”,点击“入站规则”。
- 右键选择“新建规则”,选择“自定义”→“所有程序”。
- 在“协议和端口”中指定协议(如TCP)和端口(如3389 for RDP)。
- 在“作用域”中,将“远程IP地址”设置为“下列IP地址”,并添加允许的IP段(如
168.1.0/24)。 - 规则操作选择“允许连接”,命名后启用。
服务器软件层面的白名单设置
Web服务器(Apache/Nginx)
-
Apache:
通过.htaccess或虚拟主机配置文件结合mod_authz_host模块实现,仅允许特定IP访问目录:<Directory /var/www/private> Require ip 192.168.1.100 192.168.1.101 Require all denied </Directory>
修改后需重启Apache服务(
systemctl restart httpd)。
-
Nginx:
使用allow和deny指令,限制访问/admin路径:location /admin { allow 192.168.1.100; allow 192.168.1.101; deny all; }配置完成后执行
nginx s reload生效。
数据库服务器(MySQL/PostgreSQL)
-
MySQL:
在mysql.user表中直接限制主机权限,仅允许168.1.%网段的用户admin登录:UPDATE mysql.user SET Host='192.168.1.%' WHERE User='admin'; FLUSH PRIVILEGES;
或创建新用户时指定主机:
CREATE USER 'readonly'@'192.168.1.100' IDENTIFIED BY 'password';。 -
PostgreSQL:
修改pg_hba.conf文件,添加白名单规则。host all all 192.168.1.100/32 md5 host all all 192.168.1.101/32 md5
重启PostgreSQL服务(
systemctl restart postgresql)后生效。
SSH服务
-
Linux SSH:编辑
/etc/hosts.allow和/etc/hosts.deny(需安装tcp_wrappers)。# /etc/hosts.allow sshd: 192.168.1.100, 192.168.1.101 # /etc/hosts.deny sshd: ALL
-
Windows SSH:通过Windows防火墙规则或第三方工具(如OpenSSH的
sshd_config中的AllowUsers指令)实现。
云服务平台的白名单设置
阿里云ECS
在ECS控制台的“安全组”中配置:
- 创建安全组,添加入站规则。
- 在“授权对象”中输入允许的IP地址或安全组ID。
- 选择协议和端口(如TCP/22),优先级设置为“1”(最高优先级)。
AWS EC2
通过“安全组(Security Group)”实现:
- 进入EC2控制台,选择目标安全组。
- 添加入站规则,源(Source)设置为“自定义IP”,输入允许的IP段(如
168.1.0/24)。 - 确认规则后自动保存。
腾讯云CVM
在“安全组”配置中:
- 创建安全组规则,选择“授权IP”模式。
- 输入允许的IP地址,指定端口和协议。
- 支持批量导入IP列表(如通过CSV文件)。
注意事项
- 测试优先:配置前确保当前IP在白名单中,避免因误操作导致无法访问。
- 最小权限原则:仅开放必要的端口和IP,减少安全风险。
- 日志监控:定期检查防火墙或服务日志,识别未授权访问尝试。
- 动态IP处理:若客户端IP可能变化,可使用IP段或域名解析(如
*.example.com)。
相关问答FAQs
Q1: 白名单和黑名单有什么区别?如何选择?
A: 白名单(允许列表)仅明确授权的IP/用户可访问,安全性更高但配置严格;黑名单(拒绝列表)阻止特定IP,其他默认允许,适合已知威胁场景,建议对核心服务(如数据库、管理后台)使用白名单,对公共接口(如网站)使用黑名单+防火墙组合策略。
Q2: 修改白名单后无法立即生效怎么办?
A: 首先检查配置语法是否正确(如Nginx的nginx t、MySQL的mysql u root e "SELECT * FROM mysql.user"),确认服务已重启(如systemctl restart firewalld),云平台需等待15分钟规则同步,若仍无效,可能是缓存问题(如清除浏览器缓存或重启服务器实例)。
