
核心要点(TL;DR)
- 系统初始化时立即更新补丁并创建普通用户,禁用root远程登录。
- SSH加固需修改默认端口、禁用密码认证,仅允许密钥登录。
- 使用iptables或firewalld配置最小化开放端口,默认拒绝所有入站。
- 部署AIDE或rkhunter进行文件完整性监控与Rootkit检测。
刚拿到一台新服务器,你是否担心它暴露在公网中随时可能被入侵?面对复杂的攻击手法,零基础如何快速构建有效的主机安全防护?本文将手把手带你完成从系统初始化到入侵检测的完整步骤,提供具体命令和检查清单,让你在30分钟内显著提升服务器安全基线。
一、系统初始化:打好安全地基
新系统上线第一步不是部署应用,而是完成安全初始化。以下操作需在服务器首次登录后立即执行。
1. 更新系统与软件包
# CentOS/RHEL
sudo yum update -y
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y更新可修复已知漏洞,是成本最低的安全投资。
2. 创建普通用户并配置sudo
sudo useradd -m -s /bin/bash deploy
sudo passwd deploy
sudo usermod -aG wheel deploy # CentOS
sudo usermod -aG sudo deploy # Ubuntu永远不要直接使用root进行日常操作,降低误操作与提权风险。
3. 设置强密码策略
编辑/etc/security/pwquality.conf,设置minlen=12、dcredit=-1、ucredit=-1等,强制密码复杂度。
4. 关闭不必要的服务与端口
使用systemctl list-unit-files --type=service查看运行服务,禁用如telnet、ftp、rpcbind等非必要服务:
sudo systemctl disable telnet.socket
sudo systemctl stop telnet.socket二、SSH加固:堵住最常见的入侵入口
SSH是服务器管理的主要通道,也是暴力破解的重灾区。按以下步骤加固:
1. 修改默认端口
编辑/etc/ssh/sshd_config,将Port 22改为非标准端口,如Port 2222,减少自动化扫描。
2. 禁用root直接登录
设置PermitRootLogin no,强制使用普通用户登录后再sudo提权。
3. 启用密钥认证并禁用密码登录
# 客户端生成密钥对
ssh-keygen -t ed25519
ssh-copy-id -p 2222 deploy@server_ip
# 服务端配置
PubkeyAuthentication yes
PasswordAuthentication no密钥认证几乎无法被暴力破解,是SSH安全的黄金标准。
4. 限制登录用户与来源IP
添加AllowUsers deploy,仅允许特定用户登录。如需更严格,可结合Match Address限制来源IP段。
5. 测试与重启
sudo sshd -t # 测试配置
sudo systemctl restart sshd注意:重启前保持一个活动SSH会话,防止配置错误导致无法连接。
三、防火墙配置:最小化开放端口
默认拒绝所有入站流量,仅放行必要服务。以firewalld为例:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all对于Ubuntu,使用ufw:
sudo ufw default deny incoming
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable定期审查规则,删除不再使用的端口放行。若需更精细控制,可使用iptables直接编写规则链。
四、入侵检测:部署监控与扫描工具
即使加固了入口,仍需检测潜在入侵。推荐以下工具组合:
1. 文件完整性监控:AIDE
sudo yum install aide -y # CentOS
sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo aide --checkAIDE会对比文件哈希,发现异常修改立即告警。
2. Rootkit扫描:rkhunter
sudo yum install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check --sk定期运行可检测已知Rootkit和后门。
3. 防暴力破解:fail2ban
sudo yum install fail2ban -y
sudo systemctl enable --now fail2banfail2ban监控日志,自动封禁多次登录失败的IP。
4. 日志监控与告警
使用journalctl -f实时查看日志,或配置rsyslog远程日志服务器。关键日志文件:/var/log/secure(认证)、/var/log/messages(系统)。可结合logwatch每日生成报告。
五、安全防护检查清单
| 项目 | 检查命令 | 预期结果 |
|---|---|---|
| 系统更新 | yum check-update | 无可用更新 |
| SSH端口 | ss -tlnp | grep sshd | 非22端口 |
| 防火墙规则 | firewall-cmd --list-all | 仅开放必要服务 |
| Root登录 | grep PermitRootLogin /etc/ssh/sshd_config | no |
| 密码认证 | grep PasswordAuthentication /etc/ssh/sshd_config | no |
| 异常进程 | ps aux --sort=-%cpu | head | 无未知进程 |
| 监听端口 | netstat -tunlp | 无多余端口 |
建议每周执行一次清单检查,确保安全配置未被篡改。
六、持续防护与行动建议
安全不是一次性的任务,而是持续的过程。建议:
- 定期更新系统和软件,订阅安全公告。
- 使用AegisX等主机安全防护平台,可自动化基线检查、入侵检测与实时告警,减少手动运维成本。
- 建立备份与恢复演练机制,确保数据可快速还原。
- 最小权限原则:每个服务使用独立低权限用户运行。
现在就开始行动,按照本文步骤逐项配置,你的服务器将具备抵御常见攻击的能力。记住,安全的第一步永远是“假设自己会被攻击”。
常见问题(FAQ)
零基础如何快速检查Linux服务器是否被入侵?
首先检查异常进程和网络连接:运行`top`、`ps aux`和`netstat -tunlp`查看可疑进程与端口。其次检查登录日志`last`和`lastb`,寻找陌生IP。然后使用`rkhunter --check`扫描Rootkit。最后检查计划任务`crontab -l`和`/etc/cron.*`目录是否有恶意脚本。若发现异常,立即隔离主机并备份数据。
SSH安全加固必须做哪些配置?
必须修改默认端口(如Port 2222),禁用root直接登录(PermitRootLogin no),并启用密钥认证(PubkeyAuthentication yes),同时禁用密码认证(PasswordAuthentication no)。建议限制登录用户(AllowUsers)和来源IP(Match Address)。修改后使用`sshd -t`测试配置,重启服务前保留一个活动会话以防锁定。
如何配置防火墙只开放必要端口?
使用firewalld(CentOS)或ufw(Ubuntu)。以firewalld为例:`firewall-cmd --permanent --add-service=ssh`,`firewall-cmd --permanent --add-service=http`,然后`firewall-cmd --reload`。默认拒绝所有入站,仅放行所需服务。检查规则:`firewall-cmd --list-all`。对于iptables,可设置默认策略DROP,然后逐条添加ACCEPT规则。
入侵检测有哪些免费工具推荐?
推荐AIDE(文件完整性检查)、rkhunter和chkrootkit(Rootkit检测)、fail2ban(防暴力破解)、OSSEC(主机入侵检测系统)。AIDE通过对比文件哈希发现篡改,rkhunter扫描系统二进制文件。fail2ban监控日志并自动封禁恶意IP。这些工具可组合使用,构建多层检测体系。
系统初始化后如何建立安全基线?
首先更新所有软件包:`yum update`或`apt update && apt upgrade`。然后创建普通用户并加入sudo组,禁用root远程登录。设置强密码策略(修改/etc/login.defs和/etc/security/pwquality.conf)。关闭不必要的服务(如telnet、ftp),使用`systemctl list-unit-files`检查。最后配置日志审计(auditd)和定期备份。