当前位置:网站首页 >  教程

从零搭建个人小型企业通用服务器系统安全基础防护实操指南

时间:2026年06月08日 16:03:35 来源:易频IT社区

前置准备

本次实操使用CentOS 7.9服务器,其他主流Linux发行版(Ubuntu 20.04+/Debian 11+)仅需替换部分命令即可。

  • 服务器登录信息:IP地址、SSH默认端口(通常22)、root账号密码
  • 本地SSH工具:Windows推荐用PowerShell(无需额外安装)或Xshell免费版,Mac/Linux直接用终端

第一步:修改SSH默认端口与禁用root远程登录

90%以上的服务器入侵来自SSH暴力破解默认端口与root账号,这一步是最核心的基础防护。

1.1 修改SSH默认端口

远程连接到服务器后,执行以下命令:

  • 备份SSH配置文件(修改前必做,出问题可直接恢复): ```bash cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak ```
  • 打开配置文件编辑: ```bash vi /etc/ssh/sshd_config ```
  • 按i键进入编辑模式,找到Port 22这一行,删除号,将22修改为10000-65535之间未被占用的端口(比如32456)
  • 找到PermitRootLogin yes这一行,删除号,将yes修改为no
  • 按Esc键退出编辑模式,输入:wq按回车保存退出

1.2 配置防火墙放行新端口

  • CentOS 7.9默认用firewalld,Ubuntu/Debian默认用ufw,分别执行:

    CentOS 7.9:

    ```bash firewall-cmd --permanent --add-port=32456/tcp firewall-cmd --reload ```
  • Ubuntu/Debian: ```bash ufw allow 32456/tcp ufw reload ```

1.3 创建普通管理员账号并重启SSH

  • 创建名为admin的普通账号,设置密码(密码要求:至少12位,包含大小写字母、数字、特殊符号): ```bash useradd admin passwd admin ```
  • 给admin账号添加sudo权限:

    CentOS 7.9:

    ```bash echo "admin ALL=(ALL) ALL" >> /etc/sudoers.d/admin chmod 0440 /etc/sudoers.d/admin ```
  • Ubuntu/Debian: ```bash usermod -aG sudo admin ```
  • 重启SSH服务:

    CentOS 7.9:

    ```bash systemctl restart sshd ```
  • Ubuntu/Debian: ```bash systemctl restart ssh ```

1.4 验证新配置

从零搭建个人小型企业通用服务器系统安全基础防护实操指南

不要断开当前root连接!新开一个本地终端窗口,用admin账号、新端口尝试连接:

```bash ssh admin@你的服务器IP -p 32456 ```

连接成功后,执行sudo su - 切换到root测试权限,确认无误后再关闭旧的root连接。

第二步:配置防火墙仅放行必要端口

默认仅放行SSH新端口,后续如果部署Web/数据库等服务,再单独开放对应端口。

2.1 CentOS 7.9配置

  • 查看当前防火墙状态: ```bash firewall-cmd --state ``` 如果显示not running,先启动并设置开机自启: ```bash systemctl start firewalld systemctl enable firewalld ```
  • 关闭默认开放的所有其他端口(先执行第二步的32456放行,避免连不上): ```bash firewall-cmd --list-all --permanent ``` 查看permanent配置下多余的端口,比如public区域默认的ssh、dhcpv6-client,执行删除: ```bash firewall-cmd --permanent --remove-service=ssh firewall-cmd --permanent --remove-service=dhcpv6-client firewall-cmd --reload ```

2.2 Ubuntu/Debian配置

  • 查看当前防火墙状态: ```bash ufw status ``` 如果显示inactive,先启动并设置开机自启: ```bash ufw enable ```
  • 设置默认策略:拒绝所有入站,允许所有出站: ```bash ufw default deny incoming ufw default allow outgoing ```

第三步:安装Fail2Ban防止SSH暴力破解

Fail2Ban会监控SSH登录日志,当同一IP连续登录失败超过设定次数,自动封禁该IP一段时间。

3.1 安装Fail2Ban

  • CentOS 7.9需要先安装EPEL源: ```bash yum install -y epel-release yum install -y fail2ban fail2ban-systemd ```
  • Ubuntu/Debian直接安装: ```bash apt update && apt install -y fail2ban ```

3.2 配置Fail2Ban

  • 复制默认配置文件为正式配置(避免官方更新覆盖): ```bash cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ```
  • 打开正式配置文件编辑: ```bash vi /etc/fail2ban/jail.local ```
  • 按i键进入编辑模式,找到[sshd]这一段,修改或添加以下内容(注意替换32456为你的新SSH端口): ``` [sshd] enabled = true port = 32456 logpath = %(sshd_log)s maxretry = 5 findtime = 600 bantime = 86400 ```
  • 各参数说明:
    • maxretry:连续失败次数,设为5
    • findtime:统计失败次数的时间窗口,单位秒,设为600(10分钟)
    • bantime:封禁时长,单位秒,设为86400(24小时)
  • 按Esc键退出编辑模式,输入:wq按回车保存退出

3.3 启动Fail2Ban并设置开机自启

```bash systemctl start fail2ban systemctl enable fail2ban ```

3.4 验证Fail2Ban运行状态

```bash fail2ban-client status fail2ban-client status sshd ```

如果看到Status for the jail: sshd下有Filter、Actions项,说明配置成功。

第四步:定期自动更新系统安全补丁

4.1 CentOS 7.9配置yum-cron

  • 安装yum-cron: ```bash yum install -y yum-cron ```
  • 打开配置文件编辑: ```bash vi /etc/yum/yum-cron.conf ```
  • 按i键进入编辑模式,修改以下两项: ``` update_cmd = security apply_updates = yes ```
  • 按Esc键退出编辑模式,输入:wq按回车保存退出
  • 启动yum-cron并设置开机自启: ```bash systemctl start yum-cron systemctl enable yum-cron ```

4.2 Ubuntu/Debian配置unattended-upgrades

  • 安装unattended-upgrades: ```bash apt install -y unattended-upgrades apt-listchanges ```
  • 打开自动升级配置文件编辑: ```bash vi /etc/apt/apt.conf.d/50unattended-upgrades ```
  • 按i键进入编辑模式,找到"${distro_id}:${distro_codename}-security";这一行,确保前面没有号,其他升级源(比如-updates、-backports)可以加号注释掉
  • 按Esc键退出编辑模式,输入:wq按回车保存退出
  • 打开自动升级周期配置文件编辑: ```bash vi /etc/apt/apt.conf.d/20auto-upgrades ```
  • 按i键进入编辑模式,确保内容为: ``` APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; ```
  • 按Esc键退出编辑模式,输入:wq按回车保存退出

第五步:禁止root使用密码登录(可选但推荐,需提前配置SSH密钥)

如果担心密码泄露,这一步可以彻底杜绝SSH密码暴力破解。

5.1 本地生成SSH密钥对

  • Windows PowerShell/Mac/Linux终端执行: ```bash ssh-keygen -t ed25519 -C "你的备注信息(比如admin@服务器名)" ```
  • 一路按回车,生成的密钥对默认保存在:
    • Windows:C:\Users\你的用户名\.ssh\id_ed25519(私钥,绝对不要泄露)和id_ed25519.pub(公钥)
    • Mac/Linux:~/.ssh/id_ed25519和id_ed25519.pub

5.2 将公钥上传到服务器

用admin账号执行: ```bash mkdir -p ~/.ssh chmod 700 ~/.ssh echo "你的本地公钥内容(打开id_ed25519.pub复制完整内容)" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ```

5.3 服务器禁用SSH密码登录

  • 打开SSH配置文件编辑: ```bash sudo vi /etc/ssh/sshd_config ```
  • 按i键进入编辑模式,找到PasswordAuthentication yes这一行,删除号,将yes修改为no
  • 按Esc键退出编辑模式,输入:wq按回车保存退出
  • 重启SSH服务(同第一步1.3)
  • 新开一个终端窗口验证密钥登录,确认无误后再关闭旧的SSH连接

相关推荐

最新

热门

推荐

精选

标签

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

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