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

系统加固与基线检查
系统加固是服务器安全的第一道防线,旨在关闭不必要的服务、修复权限漏洞、更新系统组件。
-
系统更新与补丁管理
- Debian/Ubuntu系统:
sudo apt update && sudo apt upgrade -y,更新软件包列表并升级所有可升级的包,修复已知漏洞。 - CentOS/RHEL系统:
sudo yum update -y或sudo dnf update -y(适用于CentOS 8+),确保系统内核及应用组件为最新版本。 - 验证关键服务状态:
systemctl status sshd nginx,检查SSH、Nginx等核心服务是否正常运行,避免升级后服务异常。
- Debian/Ubuntu系统:
-
关闭不必要的服务与端口
- 查看系统运行的服务:
systemctl list-unit-files --state=enabled,列出开机自启的服务,禁用非必要服务(如telnet、rsh等):sudo systemctl disable telnet.socket。 - 检查监听端口:
netstat -tulnp | grep LISTEN或ss -tulnp | grep LISTEN,识别异常监听端口,通过sudo firewall-cmd --permanent --remove-port=端口号/tcp(CentOS)或sudo ufw delete 端口号(Ubuntu)关闭高危端口。
- 查看系统运行的服务:
-
用户与权限管理
(图片来源网络,侵删)- 查看系统用户:
cat /etc/passwd | awk -F: '$3<1000{print $1}',筛选UID小于1000的系统用户,排查异常账户。 - 禁用闲置用户:
sudo usermod -L 用户名锁定账户,或sudo userdel -r 用户名删除用户及家目录。 - 限制sudo权限:编辑
/etc/sudoers文件(使用visudo命令安全编辑),仅允许必要用户加入sudo组,避免权限滥用。
- 查看系统用户:
访问控制与身份认证
严格的访问控制可防止未授权用户接入服务器,降低账户破解风险。
-
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),提升登录安全性。
- 修改默认SSH端口:编辑
-
防火墙规则配置
- 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需安装
iptables-services并执行sudo service iptables save;firewalld执行sudo firewall-cmd --reload。
- Linux防火墙工具:
-
失败登录封禁
- 使用
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。
- 使用
日志审计与监控
日志是追溯安全事件、分析攻击行为的核心依据,需定期检查并留存。
-
系统日志查看
- 实时查看日志:
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,检查硬件或驱动异常导致的系统错误。
- 实时查看日志:
-
日志轮转与留存
- 配置
logrotate:编辑/etc/logrotate.conf,设置日志按天轮转、保留30天:/var/log/*.log { daily rotate 30 compress missingok notifempty }手动执行轮转测试:
sudo logrotate -f /etc/logrotate.conf。
- 配置
-
进程与服务监控
- 查看异常进程:
ps aux | grep -v grep | awk '{print $11}' | sort | uniq -c | sort -nr,统计进程启动频率,发现可疑进程(如挖矿程序)。 - 资源使用监控:
top -b -n 1 | head -20查看CPU、内存占用;df -h检查磁盘空间,避免日志或恶意文件占满磁盘。
- 查看异常进程:
漏洞扫描与安全检测
定期扫描可主动发现系统及应用层漏洞,及时修复降低风险。
-
系统漏洞扫描
- 使用
lynis工具:安装sudo apt install lynis(Ubuntu)或sudo yum install lynis(CentOS),执行sudo lynis audit system生成详细报告,重点关注warnings和suggestions。 - 内核漏洞检查:
uname -r查看内核版本,访问https://access.redhat.com/security/updates/classification/(RHEL)或https://ubuntu.com/security/notices(Ubuntu)比对已知漏洞。
- 使用
-
Web应用漏洞扫描
- 使用
Nikto:sudo apt install nikto,扫描Web目录漏洞:nikto -h http://服务器IP,检测默认文件、未授权访问等问题。 - 端口与服务探测:
nmap -sV -p- 服务器IP,全端口扫描并识别服务版本,发现未授权开放的高危服务(如Telnet、FTP)。
- 使用
入侵检测与恶意代码清理
通过命令快速发现入侵痕迹,清除恶意文件或进程。
-
文件完整性检查
- 使用
AIDE(高级入侵检测环境):安装sudo apt install aide,初始化数据库:sudo aide --init,移动数据库至/var/lib/aide/aide.db.new,每日检查:sudo aide --check,对比文件变更。
- 使用
-
恶意进程与文件清理
- 查看可疑网络连接:
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,强制终止进程。
- 查看可疑网络连接:
应急响应与备份恢复
遭遇攻击时,需快速隔离主机、保留证据并恢复服务。
-
攻击隔离与证据留存
- 立即断开网络:
sudo ifconfig 网卡名 down或sudo 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/,压缩关键日志留存。
- 立即断开网络:
-
数据备份与恢复
- 备份关键数据:
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:可通过以下命令排查:
- 查看异常进程:
top -b -n 1 | grep -E "xmrig|kdevtmpfsi|minerd",检查是否存在挖矿进程特征; - 监控网络连接:
netstat -anop | grep ESTABLISHED | grep ":4433\:3333"`,观察是否有外联矿池IP的异常连接; - 检查CPU占用:
vmstat 1 5,若us(用户态CPU占用)持续高于90%且无明显业务增长,可能存在挖矿程序,发现后需立即终止进程、清理恶意文件,并修改服务器密码。
Q2:服务器被暴力破解后,如何快速封禁攻击IP并加固SSH?
A:操作步骤如下:
- 封禁攻击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)封禁; - 加固SSH:修改默认端口(如22→2222),禁用root登录(
PermitRootLogin no),启用密钥认证(PubkeyAuthentication yes,PasswordAuthentication no),重启SSH服务:sudo systemctl restart sshd; - 启用fail2ban:配置
/etc/fail2ban/jail.local,设置SSH最大重试次数为3次,封禁时间3600秒,启动服务并检查状态:sudo systemctl start fail2ban && sudo fail2ban-client status sshd。
