Linux 服务器基本安全配置方案
核心思想:纵深防御
安全不是单一措施能保证的,而是需要层层设防,一个层面的被攻破不应导致整个系统的崩溃,本方案将从以下几大方面进行配置:

- 账号与访问控制
- 系统与服务加固
- 网络安全
- 日志与监控
- 定期维护与更新
第一部分:账号与访问控制 (最基础,最重要)
这是安全的第一道防线,目标是确保只有授权用户才能以最小权限访问服务器。
1 使用普通用户进行日常操作
-
做法:永远不要直接使用
root账号进行日常登录和操作。 -
步骤:
-
创建一个普通用户,并赋予
sudo权限。
(图片来源网络,侵删)# 创建新用户 ( admin) adduser admin # 赋予 sudo 权限 (方法一,推荐) # 编辑 /etc/sudoers 文件,使用 visudo 命令可以防止语法错误 visudo # 在文件末尾添加: admin ALL=(ALL:ALL) ALL
-
之后,使用
ssh admin@your_server_ip登录,需要执行特权命令时,使用sudo command。
-
2 禁用或重命名 root 登录
-
做法:直接禁止
root通过 SSH 登录,大大增加暴力破解的难度。 -
步骤:
-
编辑 SSH 配置文件
/etc/ssh/sshd_config。
(图片来源网络,侵删)sudo vi /etc/ssh/sshd_config
-
找到并修改以下两行:
# PermitRootLogin yes # 改为 PermitRootLogin no # 也可以考虑重命名 root 用户 (不推荐,可能带来兼容性问题) # usermod -l newrootname root -
保存文件并重启 SSH 服务。
sudo systemctl restart sshd
-
3 使用 SSH 密钥对进行登录
-
做法:彻底禁用密码登录,只允许通过 SSH 密钥对进行认证,这是目前最安全的远程登录方式。
-
步骤 (在客户端机器上操作):
- 生成 SSH 密钥对(如果没有):
ssh-keygen -t rsa -b 4096
一路回车即可,会在
~/.ssh/目录下生成id_rsa(私钥) 和id_rsa.pub(公钥)。 - 将公钥上传到服务器:
# 假设用户是 admin ssh-copy-id admin@your_server_ip
此命令会要求你输入
admin用户的密码,然后将公钥追加到服务器上~/.ssh/authorized_keys文件中。
- 生成 SSH 密钥对(如果没有):
-
步骤 (在服务器上配置):
-
再次编辑
/etc/ssh/sshd_config。# PasswordAuthentication yes # 改为 PasswordAuthentication no # 确保以下设置存在且开启 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys -
重启 SSH 服务:
sudo systemctl restart sshd
注意:配置完成后,请确保自己还能通过密钥成功登录,否则可能被锁在门外。
-
4 设置强密码策略
- 做法:强制用户使用复杂的密码,并定期更换。
- 步骤 (以
libpam-pwquality为例):- 安装密码质量检查工具:
sudo apt-get install libpam-pwquality # Debian/Ubuntu # 或 sudo yum install libpwquality # CentOS/RHEL
- 编辑
/etc/security/pwquality.conf,设置密码策略:minlen = 12 # 最小长度 minclass = 3 # 至少包含3种字符类型 (大写、小写、数字、特殊符号) maxrepeat = 3 # 同一字符不能连续出现超过3次 - 修改
/etc/login.defs来设置密码过期策略:PASS_MAX_DAYS 90 # 密码最长90天过期 PASS_MIN_DAYS 7 # 修改密码后7天内不能再次修改 PASS_WARN_AGE 7 # 密码过期前7天开始警告
- 安装密码质量检查工具:
5 锁定无用账号
-
做法:禁用或删除系统自带的、不需要登录的账号(如
games,news,nobody等)。 -
步骤:
# 锁定账号 sudo usermod -L games # 如果确定不需要,可以删除 (谨慎操作) # sudo userdel games
第二部分:系统与服务加固
减少攻击面,即关闭或最小化不必要的服务和功能。
1 更新系统
-
做法:这是最简单也最有效的安全措施。
-
步骤:
# Debian/Ubuntu sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
2 关闭不必要的服务
-
做法:检查并关闭所有非必需的系统服务。
-
步骤:
-
查看正在运行的服务:
systemctl list-units --type=service --state=running
-
关闭不必要的服务(
telnet,rsh,nfs-server等):# 禁止服务开机自启 sudo systemctl disable telnet.socket # 停止当前运行的服务 sudo systemctl stop telnet.socket
-
3 配置防火墙 (Firewall)
-
做法:只开放必要的端口,拒绝所有其他连接。
-
步骤:
-
对于 Debian/Ubuntu (使用 UFW - Uncomplicated Firewall):
# 启用防火墙 sudo ufw enable # 允许 SSH 连接 (这是必须的,否则会被锁在外面) sudo ufw allow ssh # 允许 HTTP (80) 和 HTTPS (443) 端口 sudo ufw allow http sudo ufw allow https # 查看规则 sudo ufw status
-
对于 CentOS/RHEL (使用 firewalld):
# 启动并启用防火墙 sudo systemctl start firewalld sudo systemctl enable firewalld # 添加永久规则 (SSH, HTTP, HTTPS) 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
-
4 禁用 IPv6 (如果不需要)
- 做法:如果你的网络环境不需要 IPv6,可以禁用它以减少潜在攻击面。
- 步骤:
- 编辑内核启动参数
/etc/default/grub。sudo vi /etc/default/grub
- 找到
GRUB_CMDLINE_LINUX行,添加ipv6.disable=1。GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rhgb quiet" - 更新 GRUB 配置并重启。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo reboot
- 编辑内核启动参数
第三部分:网络安全
1 配置 Fail2ban
- 做法:一个防止暴力破解的利器,它会自动监控日志,并在检测到来自同一IP的多次失败尝试后,暂时封禁该IP。
- 步骤:
- 安装 Fail2ban:
sudo apt install fail2ban -y # Debian/Ubuntu # sudo yum install fail2ban -y # CentOS/RHEL
- 复制并编辑配置文件:
sudo
- 安装 Fail2ban:
