跳转到内容
无痕工具库 无痕工具库

Hostinger VPS 公开服务安全设置指南

为了保护 Hostinger VPS 上公开可访问的服务,你需要将数据库和缓存绑定到 localhost、隐藏 Web 服务器版本信息、禁用弱 SSL/TLS 协议和加密套件、替换弱凭据、限制邮件中继,并启用防火墙。MySQL、PostgreSQL、Redis 和 Web 服务器可能被配置为接受来自任意 IP 地址的连接,这会带来安全风险。

数据库漏洞

MySQL

问题: MySQL 正在接受来自所有 IP 地址(0.0.0.0)的连接

解决方案:

  1. 打开 MySQL 配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 更新绑定地址:

    bind-address = 127.0.0.1
  3. 重启服务:

    sudo systemctl restart mysql

PostgreSQL

问题: PostgreSQL 正在监听所有网络接口

解决方案:

  1. 编辑 PostgreSQL 配置:

    sudo nano /etc/postgresql/*/main/postgresql.conf
  2. 更新监听地址:

    listen_addresses = 'localhost'
  3. 重启服务:

    sudo systemctl restart postgresql

MongoDB

问题: MongoDB 可被公开访问

解决方案:

  1. 编辑 MongoDB 配置:

    sudo nano /etc/mongod.conf
  2. 更新网络绑定:

    net:
    bindIp: 127.0.0.1
  3. 重启服务:

    sudo systemctl restart mongod

Redis

问题: Redis 绑定到了所有接口

解决方案:

  1. 打开 Redis 配置:

    sudo nano /etc/redis/redis.conf
  2. 更新绑定地址:

    bind 127.0.0.1
  3. 确保已启用保护模式:

    protected-mode yes
  4. 重启服务:

    sudo systemctl restart redis

搜索与缓存服务

Elasticsearch

问题: Elasticsearch 正在接受外部连接

解决方案:

  1. 编辑 Elasticsearch 配置:

    sudo nano /etc/elasticsearch/elasticsearch.yml
  2. 设置网络主机:

    network.host: 127.0.0.1
  3. 重启服务:

    sudo systemctl restart elasticsearch

Memcached

问题: Memcached 正在监听所有接口

解决方案:

  1. 编辑 Memcached 配置:

    sudo nano /etc/memcached.conf
  2. 更新监听地址:

    -l 127.0.0.1
  3. 重启服务:

    sudo systemctl restart memcached

Web 服务器漏洞

HTTP 服务器信息泄露

问题: Web 服务器暴露了版本信息和敏感细节

Apache

  1. 编辑安全配置:

    sudo nano /etc/apache2/conf-available/security.conf
  2. 添加或更新:

    ServerTokens Prod
    ServerSignature Off
  3. 禁用目录列表:

    <Directory /var/www/>
    Options -Indexes
    </Directory>
  4. 重启 Apache:

    sudo systemctl restart apache2

Nginx

  1. 编辑 Nginx 配置:

    sudo nano /etc/nginx/nginx.conf
  2. 在 http 块内添加:

    server_tokens off;
  3. 重启 Nginx:

    sudo systemctl restart nginx

SSL/TLS 漏洞

POODLE 漏洞(SSLv3)

问题: 服务器允许使用存在漏洞的 SSLv3 协议

Apache

  1. 编辑 SSL 配置:

    sudo nano /etc/apache2/mods-available/ssl.conf
  2. 更新 SSL 协议:

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  3. 重启 Apache:

    sudo systemctl restart apache2

Nginx

  1. 编辑站点配置:

    sudo nano /etc/nginx/sites-available/default
  2. 在 server 块中添加或更新:

    ssl_protocols TLSv1.2 TLSv1.3;
  3. 重启 Nginx:

    sudo systemctl restart nginx

FREAK 漏洞(弱加密套件)

问题: 服务器允许弱出口级(export-grade)加密套件

Apache

  1. 编辑 SSL 配置:

    sudo nano /etc/apache2/mods-available/ssl.conf
  2. 更新加密套件:

    SSLCipherSuite HIGH:!aNULL:!MD5:!EXP:!LOW:!MEDIUM
  3. 重启 Apache:

    sudo systemctl restart apache2

Nginx

  1. 编辑站点配置:

    sudo nano /etc/nginx/sites-available/default
  2. 添加或更新:

    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;
  3. 重启 Nginx:

    sudo systemctl restart nginx

身份验证与机密信息

不当机密 / 弱凭据

问题: 检测到默认凭据、弱密码或泄露的机密信息

数据库凭据

更改 MySQL 用户密码:

mysql -u root -p
ALTER USER 'username'@'localhost' IDENTIFIED BY 'NewStrongPassword123!';
FLUSH PRIVILEGES;

环境文件

  1. 查找暴露的 .env 文件:

    sudo find /var/www -name ".env" -type f
  2. 设置安全权限:

    sudo chmod 600 /var/www/your-site/.env

最佳实践

  • 使用至少 12 个字符的密码
  • 包含大写字母、小写字母、数字和符号
  • 定期轮换 API 密钥
  • 使用密码管理器

邮件服务器安全

SMTP 开放中继 / 身份验证问题

问题: 邮件服务器可能被配置为开放中继,或缺乏适当的身份验证

Postfix

  1. 编辑配置:

    sudo nano /etc/postfix/main.cf
  2. 添加或更新:

    smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    smtpd_tls_security_level = may
    smtpd_tls_auth_only = yes
  3. 重启 Postfix:

    sudo systemctl restart postfix

Exim

  1. 编辑配置:

    sudo nano /etc/exim4/update-exim4.conf.conf
  2. 更新中继网络:

    dc_relay_nets='127.0.0.1'
  3. 应用更改:

    sudo update-exim4.conf
    sudo systemctl restart exim4

防火墙配置

额外的安全层

允许 SSH 并启用防火墙:

sudo ufw allow ssh
sudo 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 被入侵后该怎么办?。

你的公开可访问服务现在已被限制为仅接受你允许的连接,并且可以通过上述检查确认当前正在运行的端口和服务。