Hostinger VPS 公开服务安全设置指南
为了保护 Hostinger VPS 上公开可访问的服务,你需要将数据库和缓存绑定到 localhost、隐藏 Web 服务器版本信息、禁用弱 SSL/TLS 协议和加密套件、替换弱凭据、限制邮件中继,并启用防火墙。MySQL、PostgreSQL、Redis 和 Web 服务器可能被配置为接受来自任意 IP 地址的连接,这会带来安全风险。
数据库漏洞
MySQL
问题: MySQL 正在接受来自所有 IP 地址(0.0.0.0)的连接
解决方案:
-
打开 MySQL 配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf -
更新绑定地址:
bind-address = 127.0.0.1 -
重启服务:
sudo systemctl restart mysql
PostgreSQL
问题: PostgreSQL 正在监听所有网络接口
解决方案:
-
编辑 PostgreSQL 配置:
sudo nano /etc/postgresql/*/main/postgresql.conf -
更新监听地址:
listen_addresses = 'localhost' -
重启服务:
sudo systemctl restart postgresql
MongoDB
问题: MongoDB 可被公开访问
解决方案:
-
编辑 MongoDB 配置:
sudo nano /etc/mongod.conf -
更新网络绑定:
net:bindIp: 127.0.0.1 -
重启服务:
sudo systemctl restart mongod
Redis
问题: Redis 绑定到了所有接口
解决方案:
-
打开 Redis 配置:
sudo nano /etc/redis/redis.conf -
更新绑定地址:
bind 127.0.0.1 -
确保已启用保护模式:
protected-mode yes -
重启服务:
sudo systemctl restart redis
搜索与缓存服务
Elasticsearch
问题: Elasticsearch 正在接受外部连接
解决方案:
-
编辑 Elasticsearch 配置:
sudo nano /etc/elasticsearch/elasticsearch.yml -
设置网络主机:
network.host: 127.0.0.1 -
重启服务:
sudo systemctl restart elasticsearch
Memcached
问题: Memcached 正在监听所有接口
解决方案:
-
编辑 Memcached 配置:
sudo nano /etc/memcached.conf -
更新监听地址:
-l 127.0.0.1 -
重启服务:
sudo systemctl restart memcached
Web 服务器漏洞
HTTP 服务器信息泄露
问题: Web 服务器暴露了版本信息和敏感细节
Apache
-
编辑安全配置:
sudo nano /etc/apache2/conf-available/security.conf -
添加或更新:
ServerTokens ProdServerSignature Off -
禁用目录列表:
<Directory /var/www/>Options -Indexes</Directory> -
重启 Apache:
sudo systemctl restart apache2
Nginx
-
编辑 Nginx 配置:
sudo nano /etc/nginx/nginx.conf -
在 http 块内添加:
server_tokens off; -
重启 Nginx:
sudo systemctl restart nginx
SSL/TLS 漏洞
POODLE 漏洞(SSLv3)
问题: 服务器允许使用存在漏洞的 SSLv3 协议
Apache
-
编辑 SSL 配置:
sudo nano /etc/apache2/mods-available/ssl.conf -
更新 SSL 协议:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -
重启 Apache:
sudo systemctl restart apache2
Nginx
-
编辑站点配置:
sudo nano /etc/nginx/sites-available/default -
在 server 块中添加或更新:
ssl_protocols TLSv1.2 TLSv1.3; -
重启 Nginx:
sudo systemctl restart nginx
FREAK 漏洞(弱加密套件)
问题: 服务器允许弱出口级(export-grade)加密套件
Apache
-
编辑 SSL 配置:
sudo nano /etc/apache2/mods-available/ssl.conf -
更新加密套件:
SSLCipherSuite HIGH:!aNULL:!MD5:!EXP:!LOW:!MEDIUM -
重启 Apache:
sudo systemctl restart apache2
Nginx
-
编辑站点配置:
sudo nano /etc/nginx/sites-available/default -
添加或更新:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';ssl_prefer_server_ciphers on; -
重启 Nginx:
sudo systemctl restart nginx
身份验证与机密信息
不当机密 / 弱凭据
问题: 检测到默认凭据、弱密码或泄露的机密信息
数据库凭据
更改 MySQL 用户密码:
mysql -u root -pALTER USER 'username'@'localhost' IDENTIFIED BY 'NewStrongPassword123!';FLUSH PRIVILEGES;环境文件
-
查找暴露的 .env 文件:
sudo find /var/www -name ".env" -type f -
设置安全权限:
sudo chmod 600 /var/www/your-site/.env
最佳实践
- 使用至少 12 个字符的密码
- 包含大写字母、小写字母、数字和符号
- 定期轮换 API 密钥
- 使用密码管理器
邮件服务器安全
SMTP 开放中继 / 身份验证问题
问题: 邮件服务器可能被配置为开放中继,或缺乏适当的身份验证
Postfix
-
编辑配置:
sudo nano /etc/postfix/main.cf -
添加或更新:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destinationsmtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destinationsmtpd_tls_security_level = maysmtpd_tls_auth_only = yes -
重启 Postfix:
sudo systemctl restart postfix
Exim
-
编辑配置:
sudo nano /etc/exim4/update-exim4.conf.conf -
更新中继网络:
dc_relay_nets='127.0.0.1' -
应用更改:
sudo update-exim4.confsudo systemctl restart exim4
防火墙配置
额外的安全层
允许 SSH 并启用防火墙:
sudo ufw allow sshsudo ufw enable仅允许来自可信 IP 的远程访问:
sudo ufw allow from <YOUR_IP> to any port 3306验证
测试 SSL/TLS 配置
访问:https://www.ssllabs.com/ssltest/
检查开放端口
sudo netstat -tuln检查正在运行的服务
sudo systemctl list-units --type=service --state=running有关清理已被攻击者访问过的 VPS 的其他详细信息,请参阅 Hostinger VPS 被入侵后该怎么办?。
你的公开可访问服务现在已被限制为仅接受你允许的连接,并且可以通过上述检查确认当前正在运行的端口和服务。