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
),將備份存儲在異地(如云存儲)或離線介質(如移動硬盤),確保數據丟失或損壞時能快速恢復。