centos服务器访问控制需分层设防:防火墙(firewalld rich-rule)、ssh(sshd_config限ip/用户/密钥)、apache(require指令+认证)、selinux(enforcing模式+上下文修复)及用户权限(sudoers/acl)缺一不可。

CentOS 服务器访问控制不是只靠一个开关,而是分层设防:从网络入口(防火墙)、服务入口(SSH/Apache)、进程级约束(SELinux)到用户行为限制(sudo/ACL),每层都得配到位。
防火墙用 firewalld 控制流量入口
firewalld 是 CentOS 7+ 默认防火墙,用 rich-rule 可精准放行或拦截:
- 只允许指定 IP 段访问 SSH:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" accept' - 拒绝某个恶意 IP 访问所有服务:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.123.45.67" reject' - 开放 HTTP/HTTPS 同时限制仅对内网提供管理接口:
先开服务:sudo firewall-cmd --permanent --add-service=http --add-service=https;再用 rich-rule 单独放行内网访问后台路径(如 /admin)需配合 Apache 配置,防火墙本身不识别 URL - 配置完务必重载:
sudo firewall-cmd --reload,否则不生效
SSH 服务本身要收紧登录权限
/etc/ssh/sshd_config 是核心,改完必须重启 sshd:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
- 禁止 root 远程登录:
PermitRootLogin no - 只允许可信用户登录:
AllowUsers alice bob(多个用户名空格分隔) - 按 IP 段分组控制:
在文件末尾添加:Match Address 10.0.5.0/24<br> AllowUsers devops<br>Match Address 172.16.0.0/16<br> AllowUsers admin<br>Match all<br> DenyUsers *
- 启用密钥登录、禁用密码登录(更安全):
PubkeyAuthentication yes+PasswordAuthentication no
Web 服务(Apache)按需限制访问范围
Apache 的访问控制优先用 Require 指令(2.4+ 版本),比旧式 .htaccess 更可靠:
- 限制某目录仅限办公网访问:
<directory><br> Require ip 192.168.20.0/24<br></directory>
- 拒绝特定 IP 访问整个站点:
<location><br> Require all granted<br> Require not ip 119.123.45.88<br></location>
- 结合用户认证增强保护:
AuthType Basic<br>AuthName "Admin Area"<br>AuthUserFile /etc/httpd/.htpasswd<br>Require valid-user
(需用 htpasswd 创建账号) - 修改后执行:
sudo systemctl reload httpd
SELinux 和用户权限补上最后一道防线
即使前面都配对了,SELinux 或权限不当仍会导致服务起不来或 403 错误:
- 确认 SELinux 处于 enforcing 模式:
sestatus,若为 disabled 需编辑/etc/selinux/config改为SELINUX=enforcing并重启 - 网站目录上下文不对?运行:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/custom(/.*)?",再sudo restorecon -Rv /var/www/custom - 限制用户能执行的命令:用
visudo编辑 sudoers,例如:deploy ALL=(/usr/bin/systemctl) /usr/bin/systemctl restart nginx - 对敏感文件加 ACL 细粒度授权:
sudo setfacl -m u:backup:r /etc/myapp/config.yaml










