日期:2026年4月22日


引子:一个真实的故事

某中型互联网公司,运维小哥图方便,给云服务器设置了root/123456的密码,同时把SSH端口改为默认的22。三个月后,安全巡检发现服务器对外发送了大量异常流量——被人用弱口令爆破进来了。肉鸡卖了半年,删数据又花了三周。事后复盘,所有"没想到"都指向同一个问题:对Linux系统安全的理解太浅

这个故事不是个例。Linux是全球80%以上服务器的操作系统,也是网络安全攻防的"主战场"。无论你未来做渗透测试、安全运维还是安全开发,Linux安全都是绕不开的基石。


一、理解Linux:从"开源"二字说起

什么是Linux

Linux由林纳斯·托瓦兹于1991年发布,最初只是一个内核——一块管理硬件、调度资源的核心代码。内核本身不是操作系统,真正可用的系统是"内核 + 配套软件"打包在一起的完整发行版。

打个比方:内核相当于发动机的引擎,发行版则是把发动机、车身、方向盘组装好之后能开的车。

开源的意义不只是"免费":

  • 源代码全球开发者共同维护,漏洞修复速度远快于闭源系统
  • 任何人都可以审计代码,发现问题可以自己修或者报告社区
  • 安全机制更透明,默认配置偏"安全"而非"易用"

主流发行版一览

发行版 特点 适用场景
Ubuntu 桌面友好、生态完善、社区活跃 入门学习、日常使用
Kali Linux 预装大量安全工具(MSF、Hydra等) 网络安全学习、渗透测试
CentOS / Rocky 稳定、兼容RedHat、企业级 服务器部署、运维
Debian 极度稳定、社区驱动 高可靠性服务器

对于网络安全学习,Kali Linux是标配,它预装了几乎所有主流渗透测试工具,拿来即用。但要注意:Kali只是工具平台,真正的能力来自对Linux系统本身的理解。

Linux vs Windows:几个关键差异

维度 Windows Linux
目录结构 C盘/D盘,盘符驱动 根目录/下统一树状结构,无盘符
操作方式 图形化界面为主 命令行操作为核心
权限模型 UAC辅助,普通用户也能用得很顺手 严格root权限,普通用户处处受限
默认开放 图形界面默认开启 服务器通常无图形,纯命令行
资源占用 内核+图形界面,资源消耗大 无冗余组件,极低占用

Linux核心目录速记:

  • /etc — 系统级配置文件(用户、网络、服务配置都在这里)
  • /var/log — 日志目录(系统运行记录,排查问题的第一手资料)
  • /home — 普通用户的主目录
  • /root — root用户的主目录(系统最高权限用户)
  • /tmp — 临时文件目录,系统重启后通常清空
  • /usr — 用户级应用程序和文档,可理解为"软件仓库"

二、命令行基础:这是你与Linux对话的唯一语言

为什么要先学命令行

Windows你可能习惯了点点鼠标。Linux不一样——尤其是服务器环境,几乎没有图形界面,所有操作都要靠命令完成。命令行不仅是操作方式,更是理解Linux系统运作逻辑的窗口。

核心快捷键(记住这4个就够了)

快捷键 作用
Tab 自动补全命令或路径,输入错误减少90%
Ctrl + C 强制终止当前命令(卡住的时候常用)
Ctrl + L 清屏
↑ / ↓ 翻看历史命令

文件与目录操作命令

命令 功能 示例
pwd 显示当前目录路径 pwd
ls 列出目录内容 ls -l(详细列表)/ls -a(含隐藏文件)
cd 切换目录 cd /etc(绝对路径)/cd ..(返回上级)
mkdir 创建目录 mkdir test/mkdir -p a/b/c(递归创建)
touch 创建空文件 touch readme.txt
cp 复制文件/目录 cp a.txt /tmp/cp -r folder/ /tmp
mv 移动或重命名 mv old.txt new.txt
rm 删除(慎用!) rm -rf /tmp/old/(强制删除目录)
cat 查看文件内容 cat /etc/passwd
grep 文本搜索 grep "error" /var/log/syslog
tail -f 实时追踪日志 tail -f /var/log/syslog

⚠️ 操作禁忌rm -rf /这条命令会递归强制删除根目录下的一切,系统直接报废。操作前养成pwd确认当前位置的习惯。


三、权限管理:Linux安全的核心逻辑

权限是什么

Linux的核心安全哲学是“最小权限原则”——每个用户、每个程序只给它完成工作所必需的最小权限,不多给。

权限表示规则

ls -l查看文件时,每行开头有一串类似-rwxr-xr--的字符,这就是权限标识,共10位:

- rwx r-x r--
│ │  │  │  │
│ │  │  │  └── 其他用户权限
│ │  │  └───── 所属组权限
│ │  └──────── 所有者权限
│ └────────── 执行权限 (x)
└───────────── 写权限 (w)

第1位是文件类型:-表示普通文件,d表示目录,l表示链接。

rwx的含义:

  • r(Read):读权限,文件可查看内容,目录可列出列表
  • w(Write):写权限,文件可修改,目录可增删文件
  • x(Execute):执行权限,文件可作为程序运行,目录可进入

权限的数字表示法

每个权限对应一个数字:r=4w=2x=1,三者相加得到权限值。

权限值 含义 场景
777 rwxrwxrwx 完全开放(极度危险)
755 rwxr-xr-x 所有者完全控制,其他人读和执行
644 rw-r–r– 文件:所有者可读写,其他只读
600 rw------- 私密文件,仅所有者可见

修改权限:chmod

chmod 755 filename     # 数字方式:755 = rwxr-xr-x
chmod u+x filename     # 给所有者添加执行权限
chmod g-x filename     # 取消所属组的执行权限
chmod -R 700 /data     # 递归修改目录及子文件

修改所有者:chown

chown user:group filename    # 修改文件的所有者和所属组
chown -R www-data:www-data /var/www   # 递归修改网站目录归属

实操建议:生产环境中,非必要不给777权限。如果某个程序报错"权限不够",优先检查文件所有者是否正确,而不是直接改成777。


四、用户与用户组:权限管控的基本单元

用户(user)

Linux中的每个用户都有一个唯一标识:UID

UID范围 用户类型 说明
0 root 系统最高权限,可执行任何操作
1-999 系统用户 服务进程专用,如www-datamysql
≥1000 普通用户 手动创建的日常使用账户

用户组(group)

用户组是权限的"批量管理工具"。一个用户可以属于多个组,组内成员自动继承该组的权限。

  • 主组(Primary Group):用户创建文件时默认归属的组
  • 附加组(Supplementary Group):用户可加入的额外权限组

用户管理命令

useradd -m username     # 创建用户(-m 自动创建主目录)
passwd username         # 设置用户密码
su username             # 切换到目标用户
sudo su                 # 切换到root用户(需当前用户在sudoers中)
userdel -r username     # 删除用户及其主目录
groupadd groupname      # 创建用户组
usermod -g groupname username   # 将用户加入某组

关键配置文件

  • /etc/passwd — 用户基本信息(用户名:密码占位符:UID:GID:说明:主目录:登录shell)
  • /etc/shadow — 用户密码的加密存储(仅root可读)
  • /etc/sudoers — sudo权限配置(控制哪些用户可以用sudo提升权限)

五、网络配置基础:让Linux"上网"

查看与测试网络

ifconfig        # 查看网卡配置和IP地址
ip addr         # 同上,更新的命令
ping -c 4 baidu.com   # 测试网络连通性(-c指定ping次数)
netstat -tulnp  # 查看正在监听的端口和对应进程
ss -tulnp       # 同上,效率更高

软件安装:包管理器

Linux通过包管理器安装软件,类似手机应用商店。

系列 发行版 命令示例
Debian系 Ubuntu、Kali apt update / apt install openssh-server
RedHat系 CentOS、Rocky yum install openssh-server
apt update              # 更新软件包索引
apt install nginx       # 安装软件
apt remove nginx        # 卸载软件
apt upgrade             # 升级所有已安装软件

SSH:远程管理的入口

SSH(Secure Shell)类似于Windows的远程桌面,但以命令行操作为主。它是管理Linux服务器最常用的方式,也是网络安全攻防中的高频目标。

apt install openssh-server    # 安装SSH服务
nano /etc/ssh/sshd_config     # 编辑SSH配置文件
service ssh restart           # 重启SSH服务

常见配置项:

  • PermitRootLogin yes/no — 是否允许root用户远程登录
  • PasswordAuthentication yes/no — 是否允许密码认证

六、攻防实战:SSH与后门用户

⚠️ 说明:本节从防御视角讲解,重点是理解攻击原理、建立防范意识,不涉及具体攻击步骤的展开。

SSH暴力破解:为什么弱口令是头号杀手

SSH是远程管理Linux的必经之路,也是攻击者最常瞄准的目标之一。暴力破解的逻辑很简单:如果服务器的SSH密码足够弱,攻击者用工具自动尝试大量密码组合,总有一个能中。

弱口令爆破的本质是"信息差"攻击:利用人们在安全与便利之间倾向便利的心理。

防御手段:

  1. 设置强密码:长度≥12位,包含大小写字母+数字+特殊符号
  2. 禁用root远程登录PermitRootLogin no
  3. 使用密钥登录:生成SSH密钥对,禁用密码认证,完全杜绝暴力破解
  4. 修改默认端口:SSH默认端口22,改为高位端口(如22222)可以减少大量扫描
  5. 配置fail2ban:自动封禁多次登录失败的IP

后门用户:隐蔽的长期控制

拿到服务器权限后,攻击者往往会植入一个"后门用户"——一个看起来正常、但只有攻击者知道的账户。这样即使管理员改了密码,攻击者依然能随时进来。

防御视角的应对

  • 定期检查/etc/passwd,关注陌生的UID=0用户(正常情况UID=0只有root)
  • 用命令筛选所有UID=0的用户:awk -F: '$3==0{print $1}' /etc/passwd
  • 关注非正常时间段的登录日志

七、应急响应:日志是服务器的"监控录像"

当怀疑服务器被入侵,日志是第一排查入口。

核心日志文件

日志路径 记录内容
/var/log/syslog 系统级日志:启动信息、服务状态、错误报告
/var/log/auth.log(或/var/log/secure 认证日志:SSH登录、sudo操作、用户认证
/var/log/nginx/access.log Web服务访问日志

高效查看方法

cat /var/log/auth.log                  # 查看认证日志全文
grep "Failed password" /var/log/auth.log   # 筛选登录失败记录(暴破痕迹)
grep "Accepted" /var/log/auth.log       # 筛选登录成功的记录
tail -f /var/log/syslog                # 实时追踪系统日志
journalctl -u sshd                     # 查看SSH服务的日志

高级审计工具:auditd

Linux内核级审计工具,可记录文件访问、命令执行等行为,日志不可被普通手段删除,适合高安全场景。

apt install auditd              # 安装
systemctl start auditd         # 启动
auditctl -w /usr/sbin/useradd -p x -k useradd_exec   # 监控useradd命令执行
ausearch -k useradd_exec      # 查询useradd相关的审计记录

入侵排查清单

排查项 核心命令 看什么
账户 cat /etc/passwdawk -F: '$3==0{print $1}' /etc/passwd 陌生账户、非root的UID=0账户
进程 ps -eftop 名字异常、CPU/内存占用过高的进程
端口 netstat -tulnpss -tulnp 陌生对外监听端口
计划任务 crontab -lcat /etc/crontab 异常定时任务、陌生脚本
启动项 ls /etc/init.d/ 不明启动脚本
服务 systemctl list-unit-files --type=service 开机自启的陌生服务

八、系统加固:六步建立基本防线

第一步:账户加固

userdel 陌生用户名          # 删除无关账户
passwd root                # 给root设强密码
# 编辑SSH配置,禁止root远程登录
nano /etc/ssh/sshd_config
# 找到 PermitRootLogin yes,改为 no
systemctl restart sshd

第二步:防火墙加固

功能 Ubuntu (ufw) CentOS (firewalld)
启用防火墙 ufw enable systemctl start firewalld
允许SSH ufw allow 22/tcp firewall-cmd --permanent --add-port=22/tcp
允许HTTP/HTTPS ufw allow 80/tcp / ufw allow 443/tcp 同上端口规则
默认拒绝入站 ufw default deny incoming firewall-cmd --permanent --set-default-zone=drop
查看状态 ufw status firewall-cmd --list-all

第三步:关闭不必要的服务

systemctl disable bluetooth    # 关闭蓝牙服务
systemctl stop cups            # 关闭打印服务(无打印机时)
ss -tulnp                      # 查看所有监听端口,关闭不需要的服务

第四步:定期更新系统

# Ubuntu
apt update && apt upgrade -y && apt full-upgrade -y
reboot

# CentOS
yum update -y && yum upgrade -y
reboot

第五步:限制文件权限

chmod 700 /root          # 仅root可访问root主目录
chmod 600 /etc/shadow    # 仅root可读密码文件
chmod 644 /etc/passwd    # 所有用户可读passwd文件(必要)

第六步:启用日志审计

安装并配置auditd,监控关键命令和文件,建立完整的审计追踪链。


九、攻防思维:理解对立才能真正防御

攻击链视角

真实的入侵通常不是一步到位的:

侦察(Recon)→ 突破入口(Initial Access)→ 权限提升(Privilege Escalation)
→ 持久化(Persistence)→ 横向移动(Lateral Movement)→ 目标达成(Exfiltration/Impact)
  • 侦察阶段:攻击者扫描端口、收集信息,寻找薄弱点
  • 突破入口:利用弱口令、未修复的漏洞进入系统
  • 权限提升:从普通用户升级到root
  • 持久化:植入后门用户、计划任务、服务伪装,确保"随时能回来"
  • 横向移动:以当前服务器为跳板,渗透内网其他机器
  • 目标达成:窃取数据、部署勒索软件、挖矿等

防御链视角

每个攻击阶段都有对应的防御手段:

攻击阶段 防御手段
侦察 关闭无用端口、隐藏版本信息
突破入口 强密码、禁用root登录、修改默认端口、及时打补丁
权限提升 最小权限原则、SELinux/AppArmor
持久化 定期查账户/计划任务/启动项、启用auditd
横向移动 网络分段、防火墙严格控流出方向
目标达成 数据备份、蜜罐诱捕、异常流量监控

审计思维的价值

对于有审计背景的同学来说,理解这个框架并不难——渗透测试本质上是一次有计划的"内部审计",只不过审计员是攻击者视角,报告读者是防御者。渗透测试报告的逻辑结构(目标→方法→发现→建议),与审计报告的逻辑高度一致。安全审计(Security Audit)正是这两个领域的交汇点。


十、个人安全行动清单

以下是可以立刻执行的操作:

账户与密码

  • 检查root密码强度,不够强的立刻改
  • 禁用root远程SSH登录,改用普通用户+sudo
  • 检查/etc/passwd是否有陌生账户

访问控制

  • 配置防火墙,只开放必要端口(SSH、Web服务等)
  • 考虑改SSH默认端口22为高位端口
  • 禁止密码登录,改用SSH密钥对

系统维护

  • 制定系统更新计划,至少每月一次
  • 安装并启用auditd,监控关键命令
  • 确认日志正常记录且有足够存储空间

监控与响应

  • 熟悉/var/log/auth.log的查看方法
  • 了解如何用journalctl追踪服务状态
  • 建立异常登录的发现和响应流程

总结:网络安全筑基的核心逻辑

学习Linux安全,本质上是理解**“攻防不对称”**:

  • 攻击者只需要找到一个漏洞就能突破
  • 防御者需要堵住所有可能的入口

这看起来不公平,但恰恰是网络安全的魅力所在。掌握Linux基础、理解权限模型、熟悉日志分析、建立防御体系——这些"笨功夫"才是真正的护城河。

技术会过时,工具会更新,但系统逻辑、安全原理、攻防思维是穿越周期的底层能力。


本文整理自网络安全课程资料,内容仅供学习与安全意识提升使用。请勿将相关知识用于未经授权的系统测试,遵守法律法规。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐