面向初学者的 Linux 服务器加固指南 🐧

_179bd696-cf8c-420f-b12b-94fbea3b9957.jpg

🛡️ 前言

在这个数字化时代,服务器安全成为了至关重要的议题。Linux 系统由于其开放性和灵活性,广泛用于服务器领域。但是,仅仅依赖默认配置往往是不够的。本指南旨在介绍如何加固你的 Linux 服务器,提高其安全性。

🎯 要点

  • 更新操作系统和软件包
  • 设置防火墙规则
  • 最小化安装的软件
  • 管理用户权限
  • 配置 SSH 安全选项
  • 安装安全监控工具
  • 🛠️ 加固步骤

    1️⃣ 更新操作系统和软件包

    • 步骤1: 使用以下命令更新系统。

      sudo apt update && sudo apt upgrade
      
    • 步骤2: 定期检查更新。 建议每周至少检查一次系统更新。

    2️⃣ 设置防火墙规则

    • 步骤1: 使用 ufw 来简化防火墙设置。

      sudo apt install ufw
      
    • 步骤2: 启动并设置基础规则。

      sudo ufw enable
      sudo ufw allow ssh
      

    3️⃣ 最小化安装的软件

    • 步骤1: 使用 dpkgapt 查看已安装的软件包。

      dpkg -l
      
    • 步骤2: 卸载不必要的软件包。

      sudo apt remove 
      

    4️⃣ 管理用户权限

    • 步骤1: 创建一个普通用户,并使用 sudo 提供管理员权限。

      sudo adduser 
      sudo usermod -aG sudo 
      
    • 步骤2: 禁用 root 登录。

      sudo passwd -l root
      

    5️⃣ 配置 SSH 安全选项

    • 步骤1: 编辑 SSH 配置文件。

      sudo nano /etc/ssh/sshd_config
      
    • 步骤2: 更改以下几个设置。

      • 禁用 root 登录:PermitRootLogin no
      • 更改默认端口:Port
      • 使用密钥认证:PasswordAuthentication no

    6️⃣ 安装安全监控工具

    • 步骤1: 安装 Fail2ban。

      sudo apt install fail2ban
      
    • 步骤2: 启动并配置 Fail2ban。

      sudo systemctl start fail2ban
      

    这些步骤只是加固 Linux 服务器的基础,随着安全需求的变化,可能需要进一步的配置和审计。接下来,我们编写一个自动执行服务器加固的脚本。

    📜 自动化脚本

    #!/bin/bash
    
    1. 退出脚本,如果任何语句的执行结果是非零
    set -e
    
    1. 设置 umask 为 077,仅当前用户有权操作新生成的文件
    umask 077
    
    1. 自定义字段(UDF),用于从用户输入获取参数
    1. UDF 用于获取 WireGuard IP 地址
    1. 
    1. UDF 用于获取 WireGuard 对等节点的公钥
    1. 
    1. UDF 用于获取 WireGuard 对等节点的允许的 IPs 设置
    1. 
    1. UDF 用于获取管理员用户
    1. 
    
    1. 更新 apt 包列表并安装必要软件
    apt-get update
    apt-get upgrade -y
    apt-get install -y acl wireguard ufw
    
    1. 把 umask 设置加入到系统配置
    echo -e "numask 077" >> /etc/profile
    
    1. 创建管理用户,赋予 root 权限
    useradd -m -s /bin/bash 
      -G users,sudo 
      -p $(awk -F: '/^root:/ { print $2 }' /etc/shadow) 
      $ADMIN_USER
    
    1. 禁用 root 用户 SSH 登录
    passwd -l root
    cat >/etc/ssh/sshd_config.d/01-disable-root.conf /etc/ssh/sshd_config.d/03-no-passwords.conf /etc/wireguard/wg0.conf /etc/issue