Linux下PHP+Apache的26个必知的安全设置

1. 设置 Apache 用户

Apache 运行时以一个用户身份来执行,为了增加安全性,我们应该更改此默认用户。首先,我们需要查看 Apache 当前使用的用户和组。

ps aux | grep apache

找到结果中的用户和组信息,然后进行更改。

sudo vi /etc/httpd/conf/httpd.conf

UserGroup 改为新的用户名和组名。

User your_new_user

Group your_new_group

2. 隐藏 Apache 版本信息

Apache 默认会将版本信息显示在响应头中,为了增加安全性,我们应该隐藏该信息。

sudo vi /etc/httpd/conf/httpd.conf

找到以下行:

ServerTokens OS

将其改为:

ServerTokens Prod

然后找到以下行:

ServerSignature On

将其改为:

ServerSignature Off

3. 禁用不必要的 Apache 模块

Apache 会默认加载一些不必要的模块,我们应该禁用掉这些模块。首先查看当前加载的模块:

sudo apachectl -M

然后编辑 Apache 配置文件:

sudo vi /etc/httpd/conf/httpd.conf

注释掉不需要的模块,并保存文件。

4. 配置防火墙

为了增加服务器的安全性,我们可以使用防火墙来限制对 Apache 的访问。如果你使用的是 iptables:

sudo iptables -A INPUT -p tcp --dport 80 -j DROP

如果你使用的是 firewalld:

sudo firewall-cmd --permanent --remove-service=http

记得重启防火墙以使更改生效。不要忘记允许自己的 IP 地址访问 Apache。

5. 启用 SSL/TLS

为了实现安全的数据传输,我们应该启用 SSL/TLS。首先安装 OpenSSL:

sudo apt-get install openssl

然后为 Apache 生成自签名证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

接下来,编辑 Apache 的 SSL 配置文件:

sudo vi /etc/httpd/conf.d/ssl.conf

取消注释以下行:

SSLEngine on

SSLCertificateFile /etc/httpd/ssl/apache.crt

SSLCertificateKeyFile /etc/httpd/ssl/apache.key

保存文件并重启 Apache 服务。

总结

通过设置 Apache 用户,隐藏版本信息,禁用不必要的模块,配置防火墙和启用 SSL/TLS,我们可以增强 Linux 下 PHP+Apache 的安全性。同时,我们还可以采用其他一些安全设置,例如限制文件上传大小、使用安全的数据库连接方式等,以进一步提高服务器的安全性。

后端开发标签