在Ubuntu上设置LAMP(Linux, Apache, MySQL, PHP)环境时,确保系统的安全性至关重要。以下是一个详细的安全设置指南,帮助你加固LAMP环境。
首先,确保你的系统和所有软件包都是最新的。使用以下命令更新系统:
sudo apt update && sudo apt upgrade -y
sudo apt install apache2
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl restart apache2
sudo apt install mysql-server
安全配置MySQL:
运行安全脚本来设置MySQL的root密码和其他安全选项:
sudo mysql_secure_installation
允许远程访问(可选):
编辑MySQL的配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address
配置项,将其从 127.0.0.1
更改为 0.0.0.0
,然后保存文件并退出。
重启MySQL服务以使更改生效:
sudo systemctl restart mysql
创建远程用户(可选):
登录MySQL并创建一个允许远程访问的用户:
sudo mysql -u root -p
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
sudo apt install php libapache2-mod-php php-mysql
配置PHP:
编辑PHP的配置文件 /etc/php/7.x/apache2/php.ini
(具体版本号请根据实际情况替换),进行以下配置:
禁用危险函数:
disable_functions = eval, exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source
限制文件上传:
upload_max_filesize = 2M
post_max_size = 8M
启用安全模式(虽然自PHP 5.3起已移除,但可以作为参考):
safe_mode = On
记录错误信息:
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_WARNING
error_log = /var/log/php_errors.log
配置Apache以使用 php.ini
文件:
确保Apache使用你编辑的 php.ini
文件。这通常在Apache的配置文件中已经默认设置,但你可以通过以下命令确认:
apache2ctl -M | grep php7_module
使用UFW(Uncomplicated Firewall)来限制对系统的访问:
sudo apt install ufw
sudo ufw allow 'Apache Full'
sudo ufw enable
修改SSH配置文件以禁用root登录,只允许密钥认证:
sudo nano /etc/ssh/sshd_config
添加或修改以下行:
PermitRootLogin no
PasswordAuthentication no
重启SSH服务:
sudo systemctl restart sshd
通过修改 /etc/login.defs
和 /etc/pam.d/system-auth
文件,设置密码的最小使用天数、复杂度要求等:
password required pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=10
在防火墙中禁用不必要的端口和服务,减少潜在的攻击面。
使用工具如 rsync
或 duplicity
定期备份重要数据。
使用工具如 logwatch
或 fail2ban
监控系统日志,及时发现异常行为。
如果需要更高级别的安全加固,可以启用SELinux或AppArmor来限制应用程序的权限。
sudo apt install apparmor apparmor-utils
sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2
通过上述步骤,你可以显著提高Ubuntu LAMP环境的安全性。请记住,安全性是一个持续的过程,需要不断地监控和更新。