1. 更新系统和安装安全补丁
  • 2. 配置最小化用户权限
  • 3. 配置 SSH 安全
  • 4. 安装并配置防火墙
  • UFW(Ubuntu)
  • Firewalld(CentOS/RHEL)
  • 5. 禁用不必要的服务
  • 6. 安装和配置 Fail2Ban 防暴力破解
  • 7. 配置日志审核和系统日志管理
  • 8. 配置文件权限和安全性
  • 9. 禁用不必要的网络协议
  • 10. 定期自动更新(可选)
  • 11. 检查系统账号和服务
  • 总结
  • 对一台空白的 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. 安装并配置防火墙

    使用 ufw 或 firewalld 管理防火墙规则。

    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 服务器的安全性。按需调整上述配置,并确保在操作前有备份,以避免误操作导致系统无法正常使用。

    点赞(122)