1. 先决准备与信息收集
操作系统假设为Ubuntu/Debian系列。先备份快照并记录公网管理IP、控制台账号和云安全组。执行:sudo apt update && sudo apt -y upgrade。确认时钟同步:sudo apt install -y chrony && sudo systemctl enable --now chrony。确保可以通过控制台恢复,避免误操作造成无法登录。
2. 基础账户与权限管理
创建管理账号并禁止root远程登录:sudo adduser adminuser && sudo usermod -aG sudo adminuser;配置sudo免交互密码视场景而定。编辑 /etc/ssh/sshd_config:将 PermitRootLogin no、PasswordAuthentication no(若使用密钥)、AllowUsers adminuser;修改完重启ssh:sudo systemctl restart sshd。
3. SSH强化(密钥、端口、Fail2Ban)
生成密钥并上传公钥:ssh-keygen -t ed25519;将公钥放入~/.ssh/authorized_keys并设置权限chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys。更改SSH端口例如2200(在sshd_config里Port 2200),并在防火墙开通。安装Fail2Ban:sudo apt install -y fail2ban,创建 /etc/fail2ban/jail.local 示例:
[sshd]
enabled = true
port = 2200
maxretry = 5
bantime = 3600
启用并重启:sudo systemctl enable --now fail2ban。
4. 网络防火墙与云安全组
使用云控制台限制SSH、管理端口只允许指定IP或VPN访问。服务器端使用UFW或nftables:
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2200/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
如需管理面板(如RDP、数据库),只放内网或跳板机访问。
5. 关闭与卸载不必要服务
列出监听端口:sudo ss -tulnp。关闭不需要的服务,例如ftp、telnet、cups:sudo systemctl disable --now service_name。移除不必要软件包以减少攻击面:sudo apt purge package_name && sudo apt autoremove。
6. 文件完整性与审计(AIDE / auditd)
安装AIDE并初始化:
sudo apt install -y aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
定期校验:在cron加一条每天执行 /usr/bin/aide --check 并将结果邮件或推送到日志系统。启用auditd:sudo apt install -y auditd audispd-plugins,编辑 /etc/audit/audit.rules 增加关键目录监控规则。
7. 部署网络入侵检测 Suricata(NIDS)
安装与基础配置:
sudo apt install -y suricata
sudo suricata-update
编辑 /etc/suricata/suricata.yaml 指定监听接口(cloud VM通常用镜像或在边界部署)。启用并启动:sudo systemctl enable --now suricata。规则管理使用suricata-update并订阅Emerging Threats规则。将日志输出到ELK/Filebeat以便集中分析。
8. 部署主机入侵检测 Wazuh(HIDS)或 OSSEC
推荐使用Wazuh(有管理界面):
- 在管理端安装Wazuh manager或使用Wazuh云服务(参照官方安装脚本)。
- 在被监控服务器安装agent(示例):
curl -s https://packages.wazuh.com/4.x/install.sh | sudo bash
sudo /var/ossec/bin/agent-auth -m
- 配置 agent.conf、规则和告警阈值。确保 agent 与 manager 间使用TLS并在防火墙中放通管理端口。
9. 日志收集与SIEM(Filebeat + ELK/Graylog)
安装Filebeat转发syslog、auth.log、suricata/eve.json:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt install -y filebeat
编辑 filebeat.yml 指定paths,输出到Logstash/Elasticsearch。在ELK中配置Dashboard与告警(Watcher或Alerting)。
10. 监控告警与响应流程
建立SOP:定义告警级别(信息/警告/严重),自动化响应(如封IP、禁用账号)、人工确认流程。集成邮件、Slack、PagerDuty。示例自动化:当Fail2Ban触发特重大IP时调用云API封IP或在安全组临时加阻断规则。
11. 定期维护与渗透测试
每月检查补丁、每季度运行Lynis安全审计:sudo apt install -y lynis && sudo lynis audit system。每半年执行内外部渗透测试(授权)。保持规则库(Suricata/Wazuh)及时更新。
12. 备份与恢复策略
关键配置文件(/etc/ssh, /etc/fail2ban, /etc/suricata, /var/ossec)使用git或安全对象存储(加密)备份,并测试恢复流程。对数据库、应用数据做快照与异地备份。
13. 问:部署Suricata需要在每台云主机上安装吗?
可以两种方式:在边界(网络出口/子网网关)部署Suricata作集中NIDS,或在重要主机旁部署做主机附近的流量监控。云环境常用边界部署或使用镜像端口/流日志集成,避免在每台VM上部署引起性能问题。
14. 答:如何选择HIDS与NIDS配合策略?
NIDS(Suricata)适合检测网络层/协议/签名攻击,HIDS(Wazuh/OSSEC/AIDE)监控主机文件完整性、进程与日志。推荐两者结合:NIDS发现外部扫描/爆破,HIDS发现已登陆后的本地异常,两者日志汇聚到SIEM实现关联告警。
15. 问:如何在新加坡节点降低管理端口被扫描风险?
最有效的方法是限制管理端口只允许管理端公网IP或通过VPN/Bastion跳板访问;启用云提供商的安全组白名单;使用私有网络/VPN连接管理流量;并启用多因子认证与登录审计。
来源:云服务器新加坡服务器安全加固及入侵检测部署建议