作为一名在网络安全领域摸爬滚打多年的从业者,我深知Linux命令行工具在渗透测试、系统加固和应急响应中的核心地位。不同于图形界面工具,命令行操作不仅效率更高,还能通过管道和脚本实现复杂的安全审计任务。本文将系统梳理网络安全工作中最常用的Linux命令,涵盖信息收集、漏洞扫描、权限提升、日志分析等关键场景。
在实际工作中,我发现很多安全工程师对Linux命令的掌握停留在表面,无法充分发挥其潜力。比如,用netstat查看端口时忽略-p参数显示进程信息,或者使用grep过滤日志时不会结合正则表达式。这些细节往往决定了安全审计的效率和深度。本文不仅会列出命令,更会结合真实攻防场景,分享参数组合和实战技巧。
ifconfig/ip addr
基础网络接口信息查看命令。在安全评估中,我常用ip -c addr(彩色输出)快速识别多网卡环境。特别注意promisc模式标记,这可能是网络嗅探的迹象。
netstat/ss
网络连接分析利器。推荐使用ss -tulnp替代传统netstat,速度更快且直接显示进程名。在排查后门时,我习惯用ss -ap | grep -v "systemd"过滤系统进程,快速定位异常连接。
nmap
端口扫描的标准工具。除了基础的nmap -sV 192.168.1.1服务识别,高阶用法包括:
bash复制nmap -T4 -A -v -Pn 目标IP # 激进扫描模式
nmap --script vuln 目标IP # 漏洞检测脚本
nmap -p- -sS --min-rate 5000 目标IP # 高速SYN扫描
tcpdump
网络流量抓取必备。我常用的过滤语法:
bash复制tcpdump -i eth0 'tcp port 80 and host 192.168.1.100' -w capture.pcap
tcpdump -nnvvXSs 0 -i any 'port 443' # HTTPS流量捕获
uname -a
快速获取内核版本信息。在提权攻击前,我总会先检查内核版本是否匹配已知漏洞。
lsof
列出打开文件的黄金命令。排查可疑进程时组合使用:
bash复制lsof -i :22 # 查看SSH端口占用
lsof -u root # root用户打开的文件
lsof +L1 # 显示被删除但仍在使用的文件(常用于检测隐藏后门)
find
文件搜索神器。安全审计中的典型用例:
bash复制find / -perm -4000 -type f 2>/dev/null # 查找SUID文件
find / -mtime -2 -type f # 最近两天修改过的文件
find / -name "*.php" -exec grep -l "eval(" {} \; # 查找含危险函数的PHP文件
sudo -l
查看当前用户的sudo权限。在渗透测试中,经常发现配置不当的sudo规则允许以root身份执行特定命令,比如:
bash复制User demo may run the following commands on host:
(ALL) NOPASSWD: /usr/bin/vim
这意味着可以通过vim提权。
chmod/chown
权限修改命令。加固系统时建议:
bash复制chmod 750 /usr/bin/* # 限制可执行文件权限
chown root:root /etc/shadow # 确保关键文件属主正确
journalctl
systemd日志查看工具。排查入侵痕迹时常用:
bash复制journalctl -u sshd --since "2023-08-01" --until "2023-08-02" # SSH登录审计
journalctl --list-boots | awk '{print $1}' | xargs -I{} journalctl -b {} | grep "fail" # 跨启动日志分析
grep/awk/sed
文本处理三剑客。安全日志分析的经典组合:
bash复制cat /var/log/auth.log | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -nr # 统计暴力破解来源IP
last -f /var/log/wtmp | awk '{print $3}' | grep -vE "in|boot" | sort | uniq # 登录过的IP列表
快速检测异常进程:
bash复制ps -eo pid,user,args --sort=-%cpu | head -10 # CPU占用TOP10
ls -la /proc/[0-9]*/exe 2>/dev/null | grep deleted # 查找内存中已删除的可执行文件
一键网络诊断:
bash复制{
echo "=== 网络接口 ==="
ip -br addr
echo "\n=== 路由表 ==="
ip route
echo "\n=== 开放端口 ==="
ss -tulnp
echo "\n=== 连接追踪 ==="
conntrack -L
} > network_diag.txt
SSH暴力破解实时报警:
bash复制#!/bin/bash
tail -f /var/log/auth.log | while read line; do
if echo "$line" | grep -q "Failed password"; then
ip=$(echo "$line" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
echo "[$(date)] 暴力破解尝试来自 $ip" >> /var/log/ssh_attack.log
# 可添加iptables自动封禁规则
fi
done
文件完整性监控:
bash复制#!/bin/bash
# 首次运行生成基准哈希
if [ ! -f /var/log/file_hashes.txt ]; then
find /etc -type f -exec sha256sum {} \; > /var/log/file_hashes.txt
fi
# 后续运行对比变化
find /etc -type f -exec sha256sum {} \; | sort -k 2 | diff -u /var/log/file_hashes.txt - | grep "^+[^+]"
危险权限示例:
bash复制find / -perm -o+w -type f 2>/dev/null # 全局可写文件
find / -perm -4000 -o -perm -2000 2>/dev/null # SUID/SGID文件
敏感信息泄露检查:
bash复制grep -r "password" /var/www/ 2>/dev/null
find / -name "*.bak" -o -name "*.old" 2>/dev/null
隔离系统:立即断开网络连接
bash复制ifconfig eth0 down # 或使用ip命令
保存证据:
bash复制dd if=/dev/mem of=/root/mem.dump # 内存取证
tar czvf /root/forensic_$(date +%s).tar.gz /var/log/ /etc/passwd /etc/shadow
分析时间线:
bash复制find / -type f -printf "%T+ %p\n" | sort -r | head -50 # 最近修改的文件
last -aiFwx | grep -v "still logged in" # 完整登录历史
在多年的安全运维中,我总结出几个关键经验:
命令审计:配置~/.bash_history永久保存并添加时间戳:
bash复制export HISTTIMEFORMAT="%F %T "
export HISTSIZE=100000
export HISTFILESIZE=100000
shopt -s histappend
安全替代方案:
mytop替代top(显示完整命令)htop替代ps(交互式进程管理)ncdu替代du(可视化磁盘分析)别名效率提升:
bash复制alias ports='ss -tulnp'
alias vuln='grep -r --include="*.php" "eval(" /var/www/'
alias chkrootkit='find / -perm -4000 -o -perm -2000 2>/dev/null'
最后提醒:所有安全相关命令都应通过sudo或受限账户执行,避免直接使用root权限。对于生产环境,建议先在测试系统验证命令效果。