1. 系统基础安全强化
sudo apt update && sudo apt upgrade -y(Ubuntu/Debian)或sudo yum update -y(CentOS/RHEL),修复操作系统及LAMP组件的已知漏洞,这是安全防护的基础。/etc/ssh/sshd_config),设置PermitRootLogin no,禁止root账户通过SSH直接登录;创建普通用户并通过usermod -aG sudo username赋予sudo权限,日常操作使用普通用户登录后再切换至root。ufw(Ubuntu)或firewalld(CentOS)限制访问,仅开放必要端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口)。例如,Ubuntu下执行sudo ufw allow 22/tcp && sudo ufw allow 443/tcp && sudo ufw enable,CentOS下执行sudo firewall-cmd --permanent --add-service=ssh --add-service=https && sudo firewall-cmd --reload。2. SSH安全加固
ssh-keygen -t rsa -b 4096),将公钥(id_rsa.pub)复制到服务器的~/.ssh/authorized_keys文件中;修改SSH配置文件(/etc/ssh/sshd_config),设置PasswordAuthentication no,禁用密码登录,仅允许密钥认证,防止暴力破解。/etc/ssh/sshd_config中的Port参数(如改为2222),减少自动化扫描工具的探测概率;修改后重启SSH服务(sudo systemctl restart sshd)。3. Apache Web服务器安全配置
/etc/apache2/apache2.conf或/etc/httpd/httpd.conf)中不必要的模块(如mod_php、mod_autoindex),减少攻击面;仅启用必需模块(如rewrite、headers)。/var/www/html/mysite),避免与系统文件混放;设置目录所有者为普通用户(如www-data),组为www-data,权限为750(目录)和640(文件),防止未授权访问。ServerTokens Prod(隐藏服务器版本信息)、ServerSignature Off(关闭错误页面的服务器信息),避免泄露系统细节给攻击者。4. MySQL数据库安全配置
sudo mysql_secure_installation脚本,设置root账户强密码(包含大小写字母、数字、特殊字符,长度≥10位);删除匿名用户(DELETE FROM mysql.user WHERE User='';)和远程root登录(DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');),降低数据库被非法访问的风险。CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'strongpassword';),仅授予必要权限(如GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'webuser'@'localhost';),避免使用root账户连接数据库。my.cnf文件([mysqld]部分)添加ssl-ca=/path/to/ca.pem、ssl-cert=/path/to/server-cert.pem、ssl-key=/path/to/server-key.pem,强制数据库连接使用SSL加密,防止数据传输被窃取。5. PHP安全设置
php.ini文件,禁用危险函数(如eval、exec、system、passthru),设置disable_functions = eval,exec,system,passthru;关闭错误信息泄露(display_errors = Off),开启日志记录(log_errors = On),将错误日志存储在非Web可访问目录(如/var/log/php_errors.log),防止敏感信息(如数据库密码)暴露给攻击者。open_basedir参数(如open_basedir = /var/www/html/:/tmp/),限制PHP脚本只能访问指定目录,防止脚本遍历系统文件;禁用不必要的PHP模块(如php_curl.dll、php_gd.dll),减少潜在攻击入口。6. 访问控制与身份验证
7. 监控、审计与备份
fail2ban监控系统日志(如/var/log/auth.log、/var/log/apache2/error.log),自动封禁多次尝试登录失败的IP地址(如sudo fail2ban-client set sshd banip 192.168.1.100);使用auditd记录系统调用和文件访问,及时发现异常行为(如未经授权的文件修改)。rsync、duplicity或Bacula等工具定期备份系统配置文件(/etc/)、网站文件(/var/www/html/)和数据库(mysqldump -u root -p mydb > mydb_backup.sql),将备份存储在异地(如云存储)或离线介质(如移动硬盘),确保数据丢失或损坏时能快速恢复。