1. 系统与软件更新
定期更新系统和所有软件包(包括Linux内核、Apache、MySQL/MariaDB、PHP),及时修补已知安全漏洞。可通过sudo apt update && sudo apt upgrade -y手动更新,或安装unattended-upgrades工具启用自动安全更新,确保系统始终处于最新安全状态。
2. 用户与权限管理
/etc/ssh/sshd_config文件,设置PermitRootLogin no,避免root账户被暴力破解;adduser创建普通用户,再通过usermod -aG sudo 用户名赋予sudo权限,日常操作通过普通用户完成,必要时用sudo提权;/etc/pam.d/common-password)设置密码复杂度(如要求包含大小写字母、数字和特殊字符),并定期更换密码。3. 防火墙配置
使用ufw(Uncomplicated Firewall)简化防火墙管理,仅开放必要端口:
sudo ufw enable # 启用防火墙
sudo ufw allow 22/tcp # 允许SSH(默认端口22)
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
sudo ufw delete allow 21/tcp # 若无需FTP,删除多余规则
sudo ufw enable # 启用规则
通过限制端口访问,减少未授权连接的入口。
4. Apache Web服务器安全加固
a2dismod命令禁用不使用的模块(如php7.4-cgi、status),减少攻击面;.htaccess文件:启用AllowOverride All(在/etc/apache2/sites-available/000-default.conf中设置),通过.htaccess限制目录访问(如Deny from all禁止未授权IP访问敏感目录)、防止目录遍历攻击;Options -Indexes,避免网站目录结构泄露。5. MySQL/MariaDB数据库安全加固
mysql_secure_installation脚本:修改root密码、删除匿名用户、禁止root远程登录、删除测试数据库;SELECT、INSERT),避免使用root账户进行日常数据库操作;ufw)仅允许特定IP地址访问MySQL端口(默认3306),或在MySQL中设置GRANT语句限制访问来源。6. PHP安全配置
/etc/php/版本号/fpm/php.ini(或apache2/php.ini),设置disable_functions = exec,passthru,shell_exec,system,禁止PHP执行系统命令,防止代码注入;php.ini中设置upload_max_filesize = 2M(限制上传文件大小)、post_max_size = 8M(限制POST数据大小),并确保上传目录(如/var/www/html/uploads)不可执行(chmod -R 755 上传目录);display_errors = Off,避免将敏感信息(如数据库结构、路径)暴露给用户,改为记录错误日志(log_errors = On)。7. SSL/TLS加密
使用Let’s Encrypt免费获取SSL证书,为网站启用HTTPS,加密数据传输(如用户登录信息、支付数据)。通过certbot工具一键安装:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com # 替换为你的域名
证书到期前会自动提醒续订,确保证书长期有效。
8. 入侵防护与监控
/etc/fail2ban/jail.local设置最大尝试次数(如maxretry = 3)和封禁时间(如bantime = 3600秒),自动封禁恶意IP;/var/log/apache2/error.log)、MySQL(/var/log/mysql/error.log)和系统日志(/var/log/syslog),分析异常活动(如大量失败登录、未授权访问);9. 备份策略
定期备份网站文件(/var/www/html)和数据库(如mysqldump -u 用户名 -p 数据库名 > backup.sql),采用全量备份+增量备份组合,将备份存储至异地(如云存储、外部硬盘),确保数据丢失后可快速恢复。
10. 其他安全措施
systemctl disable 服务名),减少潜在攻击点;/etc/apparmor.d/);