对一台空白的 Linux 主机进行安全加固,可以增强其防御能力,减少被攻击的风险。以下是全面的安全加固步骤和相应指令:


1. 更新系统和安装安全补丁

保持系统和软件的更新是第一步。

# 更新包列表和升级系统
sudo apt update && sudo apt upgrade -y   # 对于 Ubuntu/Debian
sudo yum update -y                       # 对于 CentOS/RHEL

2. 配置最小化用户权限

  1. 创建普通用户,避免直接使用 root

    adduser newuser
    passwd newuser
    usermod -aG sudo newuser   # 给予新用户 sudo 权限
  2. 限制 root 登录:编辑 SSH 配置,禁止 root 登录。

    sudo vim /etc/ssh/sshd_config
    # 找到以下行并修改
    PermitRootLogin no
  3. 重启 SSH 服务 使配置生效:

    sudo systemctl restart sshd

3. 配置 SSH 安全

  1. 修改 SSH 默认端口(如非必须,避免使用默认端口 22)。

    sudo vim /etc/ssh/sshd_config
    # 修改端口,例如
    Port 2222
  2. 禁用密码认证,使用密钥认证

    # 在 /etc/ssh/sshd_config 中
    PasswordAuthentication no
  3. 生成 SSH 密钥(在本地机器执行)并将公钥添加到服务器:

    ssh-keygen -t rsa -b 4096
    ssh-copy-id -i ~/.ssh/id_rsa.pub newuser@server_ip

4. 安装并配置防火墙

使用 ufwfirewalld 管理防火墙规则。

UFW(Ubuntu)

# 允许SSH、HTTP、HTTPS等常用端口
sudo ufw allow 2222/tcp       # 根据SSH配置的端口号设置
sudo ufw allow 80/tcp         # HTTP
sudo ufw allow 443/tcp        # HTTPS

# 启用防火墙
sudo ufw enable

Firewalld(CentOS/RHEL)

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

5. 禁用不必要的服务

查看开机启动服务并禁用不必要的服务:

systemctl list-unit-files --type=service | grep enabled
sudo systemctl disable <service_name>   # 禁用不需要的服务

6. 安装和配置 Fail2Ban 防暴力破解

  1. 安装 Fail2Ban

    sudo apt install fail2ban   # Ubuntu/Debian
    sudo yum install epel-release -y && sudo yum install fail2ban -y  # CentOS/RHEL
  2. 创建本地配置文件

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  3. 配置 SSH 监控

    sudo vim /etc/fail2ban/jail.local
    # 在 sshd 部分配置
    [sshd]
    enabled = true
    port = 2222                 # 根据实际的 SSH 端口填写
    maxretry = 5
    bantime = 3600
  4. 启动并启用 Fail2Ban

    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban

7. 配置日志审核和系统日志管理

  1. 设置 logrotate 以管理日志文件:

    sudo vim /etc/logrotate.conf
    # 配置日志文件定期轮换,确保重要日志不会被覆盖
  2. 启用审核日志

    sudo apt install auditd -y   # Ubuntu/Debian
    sudo yum install audit -y    # CentOS/RHEL
    sudo systemctl enable auditd
    sudo systemctl start auditd

8. 配置文件权限和安全性

  1. 设置重要文件的权限

    sudo chmod 600 /etc/ssh/sshd_config
    sudo chmod 600 /etc/fstab
  2. 检查和修复 SUID 和 SGID 文件权限

    sudo find / -perm /6000 -type f -exec ls -l {} \;

9. 禁用不必要的网络协议

  1. 禁用 IPv6(如果不使用):

    sudo vim /etc/sysctl.conf
    # 添加以下行
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
  2. 重启 sysctl 使配置生效:

    sudo sysctl -p

10. 定期自动更新(可选)

  1. 安装 unattended-upgrades,确保系统自动接收安全更新。
    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure unattended-upgrades

11. 检查系统账号和服务

  1. 删除无用的用户账号

    sudo userdel <username>
  2. 锁定系统中未使用的账号

    sudo usermod -L <username>
  3. 设置密码过期策略

    sudo vim /etc/login.defs
    # 配置以下参数
    PASS_MAX_DAYS   90
    PASS_MIN_DAYS   7
    PASS_WARN_AGE   7

总结

这些步骤会大大增强 Linux 服务器的安全性。按需调整上述配置,并确保在操作前有备份,以避免误操作导致系统无法正常使用。

作者:严锋  创建时间:2024-10-08 16:41
最后编辑:严锋  更新时间:2024-11-06 17:37