菜鸟科技网

服务器安全命令有哪些关键点需掌握?

服务器安全命令是保障服务器稳定运行和数据安全的重要手段,通过系统化的命令操作可以及时发现漏洞、防范攻击、监控异常,并快速响应安全事件,以下从系统加固、访问控制、日志审计、漏洞扫描、入侵检测、应急响应六个维度,详细介绍常用的服务器安全命令及操作要点,并结合表格对比不同场景下的命令参数及功能。

服务器安全命令有哪些关键点需掌握?-图1
(图片来源网络,侵删)

系统加固与基线检查

系统加固是服务器安全的第一道防线,旨在关闭不必要的服务、修复权限漏洞、更新系统组件。

  1. 系统更新与补丁管理

    • Debian/Ubuntu系统:sudo apt update && sudo apt upgrade -y,更新软件包列表并升级所有可升级的包,修复已知漏洞。
    • CentOS/RHEL系统:sudo yum update -ysudo dnf update -y(适用于CentOS 8+),确保系统内核及应用组件为最新版本。
    • 验证关键服务状态:systemctl status sshd nginx,检查SSH、Nginx等核心服务是否正常运行,避免升级后服务异常。
  2. 关闭不必要的服务与端口

    • 查看系统运行的服务:systemctl list-unit-files --state=enabled,列出开机自启的服务,禁用非必要服务(如telnet、rsh等):sudo systemctl disable telnet.socket
    • 检查监听端口:netstat -tulnp | grep LISTENss -tulnp | grep LISTEN,识别异常监听端口,通过sudo firewall-cmd --permanent --remove-port=端口号/tcp(CentOS)或sudo ufw delete 端口号(Ubuntu)关闭高危端口。
  3. 用户与权限管理

    服务器安全命令有哪些关键点需掌握?-图2
    (图片来源网络,侵删)
    • 查看系统用户:cat /etc/passwd | awk -F: '$3<1000{print $1}',筛选UID小于1000的系统用户,排查异常账户。
    • 禁用闲置用户:sudo usermod -L 用户名 锁定账户,或sudo userdel -r 用户名 删除用户及家目录。
    • 限制sudo权限:编辑/etc/sudoers文件(使用visudo命令安全编辑),仅允许必要用户加入sudo组,避免权限滥用。

访问控制与身份认证

严格的访问控制可防止未授权用户接入服务器,降低账户破解风险。

  1. SSH安全配置

    • 修改默认SSH端口:编辑/etc/ssh/sshd_config,将Port 22改为非默认端口(如2222),重启服务:sudo systemctl restart sshd
    • 禁用root直接登录:在sshd_config中设置PermitRootLogin no,强制普通用户通过sudo su -切换至root。
    • 密码与密钥认证:启用密钥认证(PubkeyAuthentication yes),禁用密码登录(PasswordAuthentication no),提升登录安全性。
  2. 防火墙规则配置

    • Linux防火墙工具:
      • iptables(传统):sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 允许SSH访问;sudo iptables -A INPUT -p tcp --dport 80 -j DROP 禁止HTTP访问(根据需求调整)。
      • firewalld(CentOS 7+):sudo firewall-cmd --permanent --add-service=ssh 开放SSH服务;sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept' 限制仅允许内网访问HTTP。
    • 保存规则:iptables需安装iptables-services并执行sudo service iptables save;firewalld执行sudo firewall-cmd --reload
  3. 失败登录封禁

    • 使用fail2ban工具:安装sudo apt install fail2ban(Ubuntu)或sudo yum install fail2ban(CentOS),配置/etc/fail2ban/jail.local,设置SSH封禁规则:
      [sshd]
      enabled = true
      port = 22
      maxretry = 3
      bantime = 3600

      启动服务:sudo systemctl start fail2ban,查看封禁IP:sudo fail2ban-client status sshd

日志审计与监控

日志是追溯安全事件、分析攻击行为的核心依据,需定期检查并留存。

  1. 系统日志查看

    • 实时查看日志:tail -f /var/log/syslog(Ubuntu)或tail -f /var/log/messages(CentOS),监控系统操作记录。
    • SSH登录日志:grep "Failed password" /var/log/auth.log(Ubuntu)或grep "Failed password" /var/log/secure(CentOS),定位暴力破解尝试。
    • 内核日志:dmesg | grep -i error,检查硬件或驱动异常导致的系统错误。
  2. 日志轮转与留存

    • 配置logrotate:编辑/etc/logrotate.conf,设置日志按天轮转、保留30天:
      /var/log/*.log {
          daily
          rotate 30
          compress
          missingok
          notifempty
      }  

      手动执行轮转测试:sudo logrotate -f /etc/logrotate.conf

  3. 进程与服务监控

    • 查看异常进程:ps aux | grep -v grep | awk '{print $11}' | sort | uniq -c | sort -nr,统计进程启动频率,发现可疑进程(如挖矿程序)。
    • 资源使用监控:top -b -n 1 | head -20 查看CPU、内存占用;df -h 检查磁盘空间,避免日志或恶意文件占满磁盘。

漏洞扫描与安全检测

定期扫描可主动发现系统及应用层漏洞,及时修复降低风险。

  1. 系统漏洞扫描

    • 使用lynis工具:安装sudo apt install lynis(Ubuntu)或sudo yum install lynis(CentOS),执行sudo lynis audit system生成详细报告,重点关注warningssuggestions
    • 内核漏洞检查:uname -r 查看内核版本,访问https://access.redhat.com/security/updates/classification/(RHEL)或https://ubuntu.com/security/notices(Ubuntu)比对已知漏洞。
  2. Web应用漏洞扫描

    • 使用Niktosudo apt install nikto,扫描Web目录漏洞:nikto -h http://服务器IP,检测默认文件、未授权访问等问题。
    • 端口与服务探测:nmap -sV -p- 服务器IP,全端口扫描并识别服务版本,发现未授权开放的高危服务(如Telnet、FTP)。

入侵检测与恶意代码清理

通过命令快速发现入侵痕迹,清除恶意文件或进程。

  1. 文件完整性检查

    • 使用AIDE(高级入侵检测环境):安装sudo apt install aide,初始化数据库:sudo aide --init,移动数据库至/var/lib/aide/aide.db.new,每日检查:sudo aide --check,对比文件变更。
  2. 恶意进程与文件清理

    • 查看可疑网络连接:netstat -anop | grep ESTABLISHED,识别异常外联IP(如C&C服务器)。
    • 查找恶意文件:find / -name "*.sh" -mtime -7 -exec ls -la {} \;,查找近7天修改的脚本文件;grep -r "恶意关键词" /var/www/ 扫描Web目录中的后门代码。
    • 清理恶意进程:ps aux | grep 可疑进程名 | grep -v grep | awk '{print $2}' | xargs kill -9,强制终止进程。

应急响应与备份恢复

遭遇攻击时,需快速隔离主机、保留证据并恢复服务。

  1. 攻击隔离与证据留存

    • 立即断开网络:sudo ifconfig 网卡名 downsudo ip link set 网卡名 down,避免攻击扩大。
    • 保留内存镜像:sudo dd if=/dev/mem of=/mem.dump bs=4K,提取内存数据用于后续分析。
    • 打包日志:tar -czf security_logs.tar.gz /var/log/auth.log /var/log/syslog /var/log/nginx/,压缩关键日志留存。
  2. 数据备份与恢复

    • 备份关键数据:rsync -avz /重要目录/ /备份路径/,增量备份重要文件;mysqldump -u root -p 数据库名 > backup.sql 备份数据库。
    • 恢复系统:从干净的系统镜像恢复,或使用备份文件覆盖被篡改的文件,验证完整性后重新上线。

不同场景下的安全命令对比

场景 命令示例 功能说明
系统更新 sudo apt update && sudo apt upgrade -y 更新Ubuntu/Debian系统及软件包
关闭高危端口 sudo ufw deny 23/tcp 通过UFW关闭Telnet端口(Ubuntu)
查看SSH登录失败日志 grep "Failed password" /var/log/auth.log \| awk '{print $(NF-3)}' \| sort \| uniq -c 统计失败登录IP及次数,定位暴力破解源
进程资源监控 top -b -n 1 \| grep -v grep \| sort -k %CPU -r 按CPU占用率排序进程,发现异常高资源占用进程
文件完整性检查 sudo aide --check 使用AIDE对比当前文件与数据库,检测被篡改的文件
防火墙添加IP白名单 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' 仅允许指定IP访问服务器(CentOS 7+)

相关问答FAQs

Q1:如何判断服务器是否被植入挖矿程序?
A:可通过以下命令排查:

  1. 查看异常进程:top -b -n 1 | grep -E "xmrig|kdevtmpfsi|minerd",检查是否存在挖矿进程特征;
  2. 监控网络连接:netstat -anop | grep ESTABLISHED | grep ":4433\:3333"`,观察是否有外联矿池IP的异常连接;
  3. 检查CPU占用:vmstat 1 5,若us(用户态CPU占用)持续高于90%且无明显业务增长,可能存在挖矿程序,发现后需立即终止进程、清理恶意文件,并修改服务器密码。

Q2:服务器被暴力破解后,如何快速封禁攻击IP并加固SSH?
A:操作步骤如下:

  1. 封禁攻击IP:通过grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -5 获取Top5攻击IP,使用sudo iptables -I INPUT -s 攻击IP -j DROP(iptables)或sudo ufw deny from 攻击IP(UFW)封禁;
  2. 加固SSH:修改默认端口(如22→2222),禁用root登录(PermitRootLogin no),启用密钥认证(PubkeyAuthentication yesPasswordAuthentication no),重启SSH服务:sudo systemctl restart sshd
  3. 启用fail2ban:配置/etc/fail2ban/jail.local,设置SSH最大重试次数为3次,封禁时间3600秒,启动服务并检查状态:sudo systemctl start fail2ban && sudo fail2ban-client status sshd
分享:
扫描分享到社交APP
上一篇
下一篇