服务器安全是个老生常谈的话题,但真正把防护做到位的团队并不多。尤其在Ubuntu上跑Apache,默认配置虽然开箱即用,却往往给攻击者留了不少“后门”。以下这些措施,是经过实战验证的必备操作,建议收藏逐条落实。

更新系统和软件包
这听起来像句废话,但很多入侵事件恰恰是因为系统没打补丁。养成定期更新的习惯,比装任何安全模块都管用:
sudo apt update && sudo apt upgrade隐藏敏感信息
默认配置下,Apache会在响应头里暴露版本号、操作系统信息,等于告诉攻击者该用什么漏洞。修正方法很简单,修改配置文件:
ServerTokens Prod
ServerSignature Off改完重启服务即可,对方再也查不到你的具体版本。
禁用不必要的模块
装得越多,风险面越大。先看看当前启用了哪些模块:ls /etc/apache2/mods-enabled/。对于不需要的,直接禁用:
sudo a2dismod module_name比如autoindex、status这类容易泄露信息的模块,能关就关。
配置防火墙
UFW是Ubuntu上最友好的防火墙工具。只开放必要的端口:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable注意SSH端口建议改成非标准端口(后面会讲),这里只是示例。
限制访问权限
对Web根目录的访问控制,需要细粒度设置。以下配置推荐放在虚拟主机或全局配置中:
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
其中Options Indexes最好去掉,否则目录下没有默认首页时,会直接列出文件列表。
启用SSL/TLS
数据明文传输等于裸奔,尤其涉及登录、支付时。启用SSL模块:
sudo a2enmod ssl然后配置证书(Let's Encrypt免费证书是最佳选择),强制HTTPS跳转。
定期备份
安全防护再严密,也怕万一。备份是最后一道防线:
sudo tar -czvf /backup/apache_backup_$(date +%Y%m%d).tar.gz /var/www/html/建议配合定时任务,每天自动备份并异地存储。
监控和日志记录
攻击往往有迹可循。开启Apache的访问日志和错误日志,并用tail实时监控:
sudo tail -f /var/log/apache2/error.log更高级的做法是部署入侵检测系统(如Fail2ban),对频繁失败的IP自动封禁。
使用安全模块
mod_security是Apache上最成熟的Web应用防火墙,能拦截SQL注入、XSS等常见攻击:
sudo apt-get install libapache2-mod-security2安装后还需要配置规则集(OWASP CRS),默认规则过于严格,需要根据业务微调。
强化SSH安全性
Apache本身的安全很重要,但SSH往往是攻击者的第一条入口。建议修改以下配置:
sudo nano /etc/ssh/sshd_config
# 修改以下行
Port 2222
PermitRootLogin no
PasswordAuthentication no禁用root直接登录、只允许密钥认证、更换默认端口,这三条能挡住99%的暴力破解。
启用SELinux或AppArmor
最后一道纵深防线:使用强制访问控制限制进程权限。Ubuntu默认自带AppArmor,安装工具并为Apache启用强制模式:
sudo apt-get install apparmor apparmor-utils
sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2这样即使Apache被攻破,攻击者也难以越权访问系统其他文件。
以上措施组合起来,能有效提升Ubuntu Apache服务器的安全水平。当然,安全是持续对抗的过程,定期审视配置、关注漏洞公告,才能立于不败之地。
