必须禁用root远程登录:设PermitRootLogin no,强制普通用户+sudo提权;停用密码认证(PasswordAuthentication no),改用带passphrase的ED25519密钥;改默认端口至22222并同步放行防火墙;启用Protocol 2;限制AllowUsers白名单;删除冗余账户,新建opsadmin并按最小权限授sudo;对/etc/passwd等关键文件加chattr +i不可变属性。

Linux 服务器的安全性限制不是靠“一刀切”关闭功能实现的,而是通过分层、精准、可审计的配置来收窄攻击面。核心思路是:让每个组件只做它该做的事,不多给一分权限,不暴露一丁点冗余接口。
SSH 登录必须收紧
远程访问是绝大多数入侵的第一入口,SSH 配置是首要防线:
- 禁用 root 直接登录:
PermitRootLogin no,强制使用普通用户 +sudo或su -切换 - 停用密码认证,改用 SSH 密钥(
PasswordAuthentication no),密钥需设置强 passphrase - 把默认端口 22 改为 10000 以上(如
Port 22222),并同步在防火墙和云平台安全组中放行新端口 - 启用协议强制版本 2:
Protocol 2,彻底屏蔽存在设计缺陷的 SSHv1 - 限制登录用户范围(可选):
AllowUsers deploy admin,拒绝名单外所有账户连接
用户与权限必须最小化
系统账户是权限的起点,冗余账户等于敞开的后门:
- 删除默认无用账户:
userdel sync shutdown halt uucp operator games gopher - 清理无用用户组:
groupdel adm lp games dip - 新建运维账号(如
opsadmin),设强密码(12位+大小写+数字+符号),并仅授予必要sudo权限 - 用
visudo编辑/etc/sudoers,按最小权限原则精确授权,例如:opsadmin ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u sshd - 对关键系统文件加不可变属性:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow,防止被篡改(需修改时先chattr -i)
服务与网络必须精简
每个运行的服务都是潜在攻击点,每条开放的端口都是入口:
- 列出所有开机自启服务:
systemctl list-unit-files --type=service --state=enabled,关停无用项(如avahi-daemon、cups、rpcbind) - 检查当前监听端口:
ss -tuln或netstat -tuln,确认只有业务必需端口(如 22222、80、443)处于 LISTEN 状态 - 启用并配置防火墙(推荐
ufw或firewalld),策略设为“默认拒绝”,仅显式放行所需端口和服务 - 禁用 ICMP 响应(防探测):
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all(持久化需写入/etc/sysctl.conf)
系统基线必须持续加固
安全不是一次配置,而是持续校准的过程:
- 定期更新系统:
apt update && apt upgrade -y(Debian/Ubuntu)或yum update -y(RHEL/CentOS) - 启用强密码策略:编辑
/etc/login.defs,设PASS_MIN_LEN 12、PASS_MAX_DAYS 90、PASS_WARN_AGE 7 - 安装基础防护工具:
fail2ban(防爆破)、rkhunter(查 rootkit)、clamav(查恶意文件) - 开启日志审计:确保
rsyslog正常运行,关键操作(如sudo、用户登录)日志完整,并考虑异地归档 - 最小化安装原则:新系统部署时选用 minimal 安装镜像,避免默认带入
httpd、mysql等非必需组件


















