创建专用Web用户:
sudo useradd -r -s /sbin/nologin webuser
-r
创建系统用户-s /sbin/nologin
禁止直接登录创建Web管理组:
sudo groupadd webadmins
sudo usermod -aG webadmins webuser
Web根目录权限设置:
sudo chown -R webuser:webadmins /var/www/html
sudo chmod -R 750 /var/www/html
sudo find /var/www/html -type d -exec chmod 2750 {} \;
2750
设置SGID位,保持组继承敏感文件保护:
sudo chmod 640 /var/www/html/config.php
sudo chattr +i /var/www/html/config.php # 防止修改(谨慎使用)
检查SELinux状态:
sestatus
getenforce
设置Web目录上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -Rv /var/www/html
sudo setsebool -P httpd_read_user_content 1
sudo setsebool -P httpd_enable_homedirs 1
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="http" accept'
sudo firewall-cmd --reload
目录限制:
<Directory /var/www/html/private>
Require ip 192.168.1.0/24
Require valid-user
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/httpd/conf/.htpasswd
</Directory>
禁用目录列表:
Options -Indexes
nginx
location /admin {
allow 192.168.1.0/24;
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
# 设置日志权限
sudo chmod 640 /var/log/httpd/*
sudo chown root:webadmins /var/log/httpd/*
# 编辑/etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
定期审计权限:
sudo find /var/www/html -type f -perm /o=w -ls
sudo audit2allow -a # 查看SELinux拒绝记录
更新策略:
sudo yum update -y
sudo setroubleshoot # SELinux问题诊断
通过以上策略,您可以构建一个安全可靠的CentOS Web服务器环境,有效控制访问权限并防范潜在安全威胁。