如何在Ubuntu上强化Apache配置
如何在Ubuntu上强化Apache配置
1. 基础安全配置
隐藏敏感信息
修改Apache主配置文件(/etc/apache2/apache2.conf
),添加或修改以下指令,隐藏服务器版本、操作系统等敏感信息,降低被针对性攻击的风险:
ServerTokens Prod # 仅显示“Apache”而非详细版本
ServerSignature Off # 关闭错误页面中的服务器信息
禁用目录列表
防止未配置索引文件的目录被直接浏览,避免泄露网站文件结构。在配置文件或虚拟主机文件中添加:
<
Directory /var/www/html>
Options -Indexes # 禁用目录列表
<
/Directory>
禁用不必要的模块
通过apache2ctl -M
查看已启用的模块,禁用不需要的模块(如php7.x_module
、status_module
等),减少攻击面:
sudo a2dismod php7.x_module status_module # 替换为实际模块名
sudo systemctl restart apache2
2. 强化访问控制
配置防火墙
使用ufw
(Uncomplicated Firewall)限制访问,仅允许HTTP(80端口)、HTTPS(443端口)流量:
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
限制敏感目录访问
对/admin
、/config
等敏感目录设置认证,仅允许授权用户访问:
<
Directory /var/www/html/admin>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
<
/Directory>
# 创建密码文件(首次添加用户需用-c参数)
sudo htpasswd -c /etc/apache2/.htpasswd username
IP白名单/黑名单
通过Require ip
指令限制特定IP段的访问,例如仅允许公司IP访问后台:
<
Directory /var/www/html/admin>
Require ip 192.168.1.0/24 # 允许的IP段
Require not ip 10.0.0.1 # 禁止的IP
<
/Directory>
3. 加密通信(SSL/TLS)
安装SSL模块与证书
启用mod_ssl
模块并安装Let’s Encrypt免费证书(替换yourdomain.com
为实际域名):
sudo apt install libapache2-mod-ssl certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
证书会自动配置到Apache虚拟主机中,无需手动修改配置文件。
配置安全HTTP头
通过mod_headers
模块添加安全头,防范XSS、点击劫持等攻击:
<
IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff" # 防止MIME类型嗅探
Header always set X-Frame-Options "SAMEORIGIN" # 防止点击劫持
Header always set X-XSS-Protection "1;
mode=block" # 启用XSS防护
Header always set Referrer-Policy "no-referrer-when-downgrade" # 控制Referer信息
<
/IfModule>
sudo a2enconf security # 启用安全配置
sudo systemctl restart apache2
4. 安装安全模块
mod_security(Web应用防火墙)
mod_security是一个实时请求过滤引擎,可防范SQL注入、跨站脚本(XSS)等攻击。安装并配置:
sudo apt install libapache2-mod-security2
sudo a2enmod security2
# 启用OWASP CRS(通用规则集,增强防护)
sudo a2enconf crs-setup
sudo systemctl restart apache2
mod_evasive(防DDoS/暴力破解)
mod_evasive可检测并阻止高频恶意请求,例如DDoS或暴力破解登录:
sudo apt install libapache2-mod-evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
# 修改以下参数(根据服务器性能调整)
<
IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2 # 1秒内同一页面超过2次请求视为攻击
DOSSiteCount 50 # 1秒内同一站点超过50次请求视为攻击
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10 # 攻击IP将被封锁10秒
<
/IfModule>
sudo systemctl restart apache2
5. 性能与稳定性优化
调整MPM模块参数
根据服务器硬件资源(内存、CPU)调整event
模块(推荐用于生产环境)的参数,避免资源耗尽:
<
IfModule mpm_event_module>
StartServers 2 # 启动时的进程数
MinSpareThreads 25 # 最小空闲线程数
MaxSpareThreads 75 # 最大空闲线程数
ThreadLimit 64 # 单个进程的最大线程数
ThreadsPerChild 25 # 每个子进程创建的线程数
MaxRequestWorkers 150 # 最大并发请求数(根据内存调整,每进程约消耗10MB内存)
MaxConnectionsPerChild 1000 # 每个子进程处理的最大请求数(防止内存泄漏)
<
/IfModule>
启用压缩与缓存
通过mod_deflate
压缩静态资源(HTML、CSS、JS),减少传输体积;通过mod_cache
缓存内容,提升响应速度:
# 启用压缩
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
# 启用缓存
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
CacheEnable disk /
CacheRoot "/var/cache/apache2"
6. 日志与监控
配置详细日志
确保Apache日志记录足够的信息,便于排查问题和检测攻击:
ErrorLog ${
APACHE_LOG_DIR}
/error.log # 错误日志路径
CustomLog ${
APACHE_LOG_DIR}
/access.log combined # 访问日志格式(combined包含IP、URL、状态码等)
LogLevel warn # 日志级别(warn及以上级别记录关键信息)
定期审计与监控
使用logwatch
工具定期分析日志,监控异常请求;通过top
、htop
等工具监控服务器资源使用情况:
sudo apt install logwatch
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
# 每天发送日志报告到邮箱(修改MailTo)
sudo logwatch --output mail --mailto your@email.com --detail high
7. 定期维护
更新系统与软件包
定期更新Ubuntu系统和Apache相关软件包,修补已知安全漏洞:
sudo apt update &
&
sudo apt upgrade -y
备份配置与数据
定期备份Apache配置文件和网站数据,防止数据丢失:
sudo tar -czvf /backup/apache_backup_$(date +%Y%m%d).tar.gz /etc/apache2 /var/www/html
通过以上步骤,可显著提升Ubuntu上Apache服务器的安全性、性能和稳定性。需根据实际业务需求调整配置参数(如MaxRequestWorkers
、DOSBlockingPeriod
等),并定期复查配置的有效性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上强化Apache配置
本文地址: https://pptw.com/jishu/717175.html