凌峰创科服务平台

Linux服务器基本安全配置如何规范操作?

Linux 服务器安全配置核心原则

在开始之前,请记住几个核心原则:

Linux服务器基本安全配置如何规范操作?-图1
(图片来源网络,侵删)
  1. 最小权限原则:只给予用户和程序完成任务所必需的最小权限。
  2. 纵深防御:不要依赖单一的安全措施,建立多层防护。
  3. 持续监控:安全不是一次性的配置,而是一个持续的过程。

第一阶段:系统初始化与账户安全

这是在服务器刚上线时必须完成的步骤,也是最关键的一步。

更新系统

确保系统所有软件包都是最新的,修复已知的安全漏洞。

  • 基于 Debian/Ubuntu 的系统:

    sudo apt update && sudo apt upgrade -y
    sudo apt dist-upgrade -y
    sudo apt autoremove -y
  • 基于 CentOS/RHEL/Fedora 的系统:

    Linux服务器基本安全配置如何规范操作?-图2
    (图片来源网络,侵删)
    sudo yum update -y  # 对于 CentOS 7 及更早版本
    # 或者对于 CentOS 8+/RHEL 8+/Fedora:
    sudo dnf update -y

配置防火墙

防火墙是服务器的第一道防线,只允许必要的端口通过。

  • 使用 ufw (Uncomplicated Firewall - 适用于 Debian/Ubuntu):

    # 检查 UFW 状态
    sudo ufw status
    # 允许 SSH 连接(非常重要!先确保能连上再设置其他规则)
    sudo ufw allow OpenSSH
    # 允许 HTTP (80) 和 HTTPS (443) 端口,如果运行 Web 服务
    sudo ufw allow http
    sudo ufw allow https
    # 允许自定义端口,例如数据库端口 3306 (仅允许特定IP访问更安全)
    # sudo ufw allow from 192.168.1.100 to any port 3306
    # 启用防火墙
    sudo ufw enable

    执行 enable 时可能会提示你,确认即可。

  • 使用 firewalld (适用于 CentOS/RHEL/Fedora):

    Linux服务器基本安全配置如何规范操作?-图3
    (图片来源网络,侵删)
    # 启动并设置开机自启
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    # 查看已开放的端口
    sudo firewall-cmd --list-ports
    # 添加永久规则(例如允许 SSH)
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    # 重新加载防火墙使规则生效
    sudo firewall-cmd --reload

创建新用户并禁用 root 直接登录

直接使用 root 用户登录风险极高。

  1. 创建一个新用户 (admin):

    sudo adduser admin
  2. 为新用户设置密码

    sudo passwd admin
  3. 为新用户赋予 sudo 权限

    • 方法一 (推荐): 将用户加入 sudo 组。

      # 在 Debian/Ubuntu 上
      sudo usermod -aG sudo admin
      # 在 CentOS/RHEL 上
      sudo usermod -aG wheel admin
    • 方法二: 编辑 /etc/sudoers 文件 (不推荐新手直接操作)。

      sudo visudo
      # 在文件末尾添加: admin ALL=(ALL:ALL) ALL
  4. 禁用 root 的 SSH 直接登录: 编辑 SSH 配置文件:

    sudo nano /etc/ssh/sshd_config

    找到以下行,并确保它们被修改为:

    PermitRootLogin no
    PasswordAuthentication no  # (可选,但强烈推荐,见下一步)

    保存文件后,重启 SSH 服务:

    sudo systemctl restart sshd

使用 SSH 密钥对进行认证

密码很容易被暴力破解,而 SSH 密钥对更安全。

  1. 在客户端电脑上生成密钥对 (如果没有的话):

    ssh-keygen -t rsa -b 4096
    # 一路按回车即可,使用默认路径和空密码
  2. 将公钥复制到服务器

    # 替换为你的服务器IP和用户名
    ssh-copy-id admin@your_server_ip

    这个命令会要求你输入 admin 用户的密码,然后将 ~/.ssh/id_rsa.pub 的内容追加到服务器上 admin 用户的 ~/.ssh/authorized_keys 文件中。

  3. 在服务器上强化 SSH 配置: 再次编辑 /etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

    确保以下配置项:

    PubkeyAuthentication yes
    PasswordAuthentication no  # 禁用密码登录,强制使用密钥
    PermitRootLogin no         # 禁用root登录
    Port 22                    # (可选) 修改SSH端口,增加一点安全性
    # MaxAuthTries 6          # (可选) 限制认证尝试次数
    # AllowUsers admin@192.168.1.* # (可选) 只允许特定用户和IP登录

    保存并重启 SSH 服务:

    sudo systemctl restart sshd

    注意: 修改 PasswordAuthentication no 后,你必须确保密钥认证已经成功,否则你将无法登录服务器!


第二阶段:系统与服务加固

禁用不必要的服务

减少运行的服务就减少了潜在的攻击面。

  • 查看所有正在运行的服务

    systemctl list-units --type=service --state=running
  • 禁用不必要的服务 (telnet, rsh, nfslock 等):

    # 禁用并停止服务
    sudo systemctl disable telnet.socket
    sudo systemctl stop telnet.socket
    # 禁用开机自启
    sudo systemctl disable bluetooth.service

配置 Fail2Ban

Fail2ban 是一个防止暴力破解的强大工具,它会监控日志文件(如 SSH 登录日志),并在检测到多次失败尝试后,自动用防火墙封锁攻击者的 IP。

  1. 安装 Fail2ban

    • Debian/Ubuntu:
      sudo apt install fail2ban -y
    • CentOS/RHEL:
      sudo yum install epel-release -y
      sudo yum install fail2ban -y
  2. 配置 Fail2ban: 复制一份配置文件进行修改:

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo nano /etc/fail2ban/jail.local

    [sshd] 部分,确保或修改以下配置:

    [sshd]
    enabled = true
    port = 22
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600  # 封禁1小时 (单位:秒)
    # bantime = -1  # 永久封禁
    • maxretry: 允许的最大失败尝试次数。
    • bantime: 封禁时间。
  3. 启动并启用 Fail2ban

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban

定期更新与安全审计

  • 设置自动安全更新

    • Debian/Ubuntu: 安装 unattended-upgrades
      sudo apt install unattended-upgrades
      sudo dpkg-reconfigure -plow unattended-upgrades # 在交互式界面中选择“是”
    • CentOS/RHEL: 使用 yum-cron
      sudo yum install yum-cron -y
      sudo systemctl enable yum-cron
      sudo systemctl start yum-cron
      # 编辑 /etc/yum/yum-cron.conf,设置 update_cmd = security
  • 使用 AIDE 进行文件完整性检查: AIDE (Advanced Intrusion Detection Environment) 可以监控文件系统的变化,帮助你发现被篡改的文件。

    sudo apt install aide -y # Debian/Ubuntu
    sudo yum install aide -y # CentOS/RHEL
    # 初始化数据库
    sudo aide --init
    # 将生成的数据库移动到正式位置
    sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
    # 每天检查一次,并配置邮件发送报告
    # (需要配置邮件服务,如 Postfix)

第三阶段:日志与监控

配置日志服务器

将所有服务器的日志集中到一台服务器上,便于统一管理和审计。

  • 安装 rsyslog (通常系统已自带):

    # 在客户端和服务器上都安装
    sudo apt install rsyslog -y
  • 配置客户端: 编辑 /etc/rsyslog.d/50-default.conf 或主配置文件,添加一行,将所有日志发送到远程服务器:

    *.* @<your_log_server_ip>:514

    重启 rsyslog 服务。

使用 logwatch 分析日志

logwatch 可以自动分析日志文件,并以摘要报告的形式发送给你。

# 安装
sudo apt install logwatch -y # Debian/Ubuntu
sudo yum install logwatch -y # CentOS/RHEL
# 手动运行测试
sudo logwatch --range today --detail high --mailto your_email@example.com

第四阶段:其他重要安全措施

安装入侵检测系统

  • OSSEC: 一个非常强大的开源 HIDS (主机入侵检测系统),可以监控文件变化、检测 rootkit、监控日志等。

配置内核安全参数

通过修改 /etc/sysctl.conf 来增强系统内核的安全性,例如防止 IP 欺骗、syn-flood 攻击等。

# 编辑 sysctl.conf
sudo nano /etc/sysctl.conf
# 添加或修改以下内容
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# 应用更改
sudo sysctl -p

定期备份

这是最后的防线,也是最重要的,确保你有一个可靠的备份策略,并定期测试恢复流程。

  • /etc 目录、用户数据、数据库等。
  • 备份频率:根据数据重要性决定(每日、每周)。
  • 备份位置:备份到另一台服务器、云存储或离线存储介质。

安全检查清单

阶段 任务 状态
初始化 [ ] 系统已更新到最新版本
[ ] 防火墙已启用,只开放必要端口
[ ] 创建了新的普通用户,并赋予 sudo 权限
[ ] 已禁用 root 的直接 SSH 登录
[ ] 已配置 SSH 密钥对认证,并禁用密码登录
加固 [ ] 已禁用不必要的服务
[ ] 已安装并配置 Fail2ban 防暴力破解
[ ] 已设置自动安全更新
[ ] 已安装 AIDE 或类似工具进行文件完整性检查
监控 [ ] 已配置日志集中或分析工具(如 logwatch
其他 [ ] 内核安全参数已优化
[ ] 已制定并执行定期备份策略
[ ] 所有操作都通过普通用户 + sudo 完成

这份指南为您提供了一个坚实的安全基础,安全是一个持续的过程,需要不断地监控、更新和调整。

分享:
扫描分享到社交APP
上一篇
下一篇