当前位置:网站首页 >  攻略

Linux入门级服务器主机安全加固全流程零门槛落地实操指南

时间:2026年06月16日 11:34:37 来源:易频IT社区

前置检查(10分钟)

先确认你的服务器是CentOS 7/8/9Ubuntu 20.04/22.04 LTS,本文以这两个主流稳定版的通用操作为主,其他发行版可做参考。

步骤1:远程登录服务器

  • Windows用户:下载PuTTY https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 或使用系统自带PowerShell(推荐后者)
  • macOS/Linux用户:直接打开终端

通用终端登录命令:

```bash ssh root@你的服务器公网IP ```

首次登录会提示输入密码,输入后按回车即可(输入时屏幕无显示,是正常安全机制)。

核心加固操作(45分钟)

步骤2:修改root默认密码

root默认密码通常是服务商生成的弱密码,必须修改为含大小写字母+数字+特殊符号的强密码(至少12位)。

修改命令:

```bash passwd ```

连续输入两次新密码,提示“passwd: all authentication tokens updated successfully”即可。

步骤3:创建普通用户并禁用root远程登录

日常操作普通用户即可,禁用root远程登录可大幅降低被暴力破解的风险。

  • 创建新用户(以用户名为admin为例): ```bash useradd admin ```
  • 设置新用户密码: ```bash passwd admin ```
  • 赋予新用户sudo权限(CentOS/Ubuntu略有不同):
    • CentOS 7/8/9: ```bash usermod -aG wheel admin ```
    • Ubuntu 20.04/22.04 LTS: ```bash usermod -aG sudo admin ```
  • 测试新用户sudo权限是否生效:
    • 先退出当前root登录: ```bash exit ```
    • 用新用户登录: ```bash ssh admin@你的服务器公网IP ```
    • 测试执行root级命令(例如查看系统信息),会提示输入新用户密码: ```bash sudo cat /etc/os-release ```
  • 确认权限生效后,禁用root远程登录:
    • 打开SSH配置文件(CentOS/Ubuntu通用): ```bash sudo vi /etc/ssh/sshd_config ```
    • i键进入编辑模式,找到以下两行配置(若有注释则删除)并修改为: ``` PermitRootLogin no PasswordAuthentication yes 先保留密码登录,等配置完SSH密钥再禁用 ```
    • Esc键退出编辑模式,输入:wq保存并退出
    • 重启SSH服务:
      • CentOS 7: ```bash sudo systemctl restart sshd ```
      • CentOS 8/9、Ubuntu 20.04/22.04 LTS: ```bash sudo systemctl restart ssh ```
    • 再测试root登录,提示“Permission denied”即为成功

步骤4:配置SSH密钥登录

Linux入门级服务器主机安全加固全流程零门槛落地实操指南

密码登录仍有被暴力破解的可能,SSH密钥登录更安全,完全无需记住密码。

  • 本地电脑终端生成SSH密钥对(Windows用PowerShell,macOS/Linux用自带终端): ```bash ssh-keygen -t rsa -b 4096 -b 4096指定密钥长度为4096位,比默认2048更安全 ```

    连续按3次回车即可(第一次回车保存密钥到默认路径,第二次、第三次回车可不设密钥密码,若设了密钥密码每次登录都要输入,按需选择)。

  • 将本地公钥上传到服务器:
    • Windows/macOS/Linux通用命令(替换admin和服务器公网IP): ```bash ssh-copy-id admin@你的服务器公网IP ```
    • 如果Windows PowerShell提示找不到ssh-copy-id命令,可手动复制公钥:
      1. 在PowerShell查看本地公钥内容: ```bash cat ~/.ssh/id_rsa.pub ```
      2. 用新用户登录服务器,创建.ssh目录和authorized_keys文件: ```bash mkdir -p ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ```
      3. 打开authorized_keys文件: ```bash vi ~/.ssh/authorized_keys ```
      4. i键进入编辑模式,粘贴刚才复制的本地公钥内容
      5. Esc键退出编辑模式,输入:wq保存并退出
  • 测试SSH密钥登录(无需输入密码): ```bash ssh admin@你的服务器公网IP ```
  • 确认密钥登录成功后,禁用密码登录:
    • 打开SSH配置文件: ```bash sudo vi /etc/ssh/sshd_config ```
    • 找到PasswordAuthentication配置并修改为: ``` PasswordAuthentication no ```
    • 保存并退出,重启SSH服务

步骤5:关闭不必要的端口和服务

端口暴露越多,被攻击的风险越大,只保留需要的端口(例如SSH 22、HTTP 80、HTTPS 443)。

  • 先查看当前开放的端口和服务: ```bash sudo ss -tulnp ```
  • CentOS使用firewalld管理防火墙,Ubuntu使用ufw:
    • CentOS 7/8/9操作:
      1. 检查firewalld是否运行: ```bash sudo systemctl status firewalld ```

        如果未运行,启动并设置开机自启: ```bash sudo systemctl start firewalld sudo systemctl enable firewalld ```

      2. 只保留SSH(默认22)、HTTP(80)、HTTPS(443)的永久规则(--permanent永久生效,否则重启后失效): ```bash sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https ```

        如果修改了SSH默认端口(后面会讲),需替换为自己的端口: ```bash sudo firewall-cmd --permanent --add-port=你的SSH端口/tcp ```

      3. 重载防火墙规则: ```bash sudo firewall-cmd --reload ```
      4. 查看当前防火墙规则: ```bash sudo firewall-cmd --list-all ```
    • Ubuntu 20.04/22.04 LTS操作:
      1. 检查ufw是否运行: ```bash sudo ufw status ```

        如果未运行,启动并设置开机自启(会先提示“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”,输入y回车): ```bash sudo ufw enable ```

      2. 设置默认规则(拒绝所有入站,允许所有出站): ```bash sudo ufw default deny incoming sudo ufw default allow outgoing ```
      3. 只保留SSH、HTTP、HTTPS的永久规则: ```bash sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw allow 443/tcp ```

        如果修改了SSH默认端口: ```bash sudo ufw allow 你的SSH端口/tcp ```

      4. 查看当前防火墙规则: ```bash sudo ufw status numbered ```

步骤6:修改SSH默认端口

SSH默认端口22被大量扫描,修改为非标准端口(1024-65535之间)可减少90%以上的扫描流量。

  • 先确认修改后的端口未被占用(例如修改为22222): ```bash sudo ss -tulnp | grep 22222 ```

    无输出即为未被占用

  • 打开SSH配置文件: ```bash sudo vi /etc/ssh/sshd_config ```
  • 找到Port配置(默认被注释),删除注释并修改为: ``` Port 22222 ```
  • 保存并退出,重启SSH服务
  • 在防火墙添加新的SSH端口规则(见步骤5)
  • 测试新端口登录(替换admin、服务器公网IP和22222): ```bash ssh -p 22222 admin@你的服务器公网IP ```
  • 确认新端口登录成功后,删除防火墙原有的22端口规则:
    • CentOS 7/8/9: ```bash sudo firewall-cmd --permanent --remove-service=ssh sudo firewall-cmd --reload ```
    • Ubuntu 20.04/22.04 LTS: ```bash sudo ufw delete allow ssh ```

步骤7:定期更新系统和软件

系统和软件漏洞是主要攻击来源之一,定期更新可修复已知漏洞。

  • CentOS 7/8/9: ```bash sudo yum update -y CentOS 9可用sudo dnf update -y,效果相同 ```
  • Ubuntu 20.04/22.04 LTS: ```bash sudo apt update && sudo apt upgrade -y ```

自动更新设置(可选但推荐,5分钟)

为避免忘记手动更新,可配置自动更新(仅更新安全补丁,避免自动更新业务相关软件导致问题)。

CentOS 7/8/9自动安全更新

  • 安装yum-cron: ```bash sudo yum install yum-cron -y ```
  • 打开配置文件: ```bash sudo vi /etc/yum/yum-cron.conf ```
  • 找到以下配置并修改: ``` update_cmd = security 仅更新安全补丁 update_messages = yes download_updates = yes apply_updates = yes ```
  • 保存并退出,启动并设置开机自启: ```bash sudo systemctl start yum-cron sudo systemctl enable yum-cron ```

Ubuntu 20.04/22.04 LTS自动安全更新

  • 安装unattended-upgrades: ```bash sudo apt install unattended-upgrades -y ```
  • 启动配置向导: ```bash sudo dpkg-reconfigure unattended-upgrades ```

    选择“Yes”即可

  • 打开配置文件确认仅更新安全补丁: ```bash sudo vi /etc/apt/apt.conf.d/50unattended-upgrades ```

    确保以下两行未被注释: ``` "${distro_id}:${distro_codename}-security"; "${distro_id}ESMApps:${distro_codename}-apps-security"; "${distro_id}ESM:${distro_codename}-infra-security"; ```

标签 主机安全

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图