Linux操作系统
1. 初始Linux操作系统
1.1 Linux起源
Linux 操作系统的创始人是:
林纳斯·托瓦兹(Linus Torvalds)他在 1991 年发布了最初的 Linux 内核。
1.2 Linux发行版
Linux 本身只是内核(Kernel),而发行版 = Linux 内核 + 开源软件(如shell、编译器、桌面环境、应用程序)+系统工具。(内核是发动机,发行版是整辆车)

(图 各Linux发行版)
1.3 服务器
表 服务器对比

Linux服务器的优越性:
1. 开源免费:无版权费用,使用和部署成本更低。
2. 稳定性更高:可长期 7×24 小时运行,不易蓝屏、死机。
3. 安全性更强:权限管理严格,病毒和漏洞远少于 Windows。
4. 资源占用少:对硬件要求低,运行更流畅高效。
5. 网络与服务器性能更好:适合搭建 Web、数据库、云计算等服务。
6. 可定制性高:可自由修改内核与系统,适配多种设备。
7. 软件丰富且免费:大量开源工具,无需额外付费。
1.4 Linux目录结构

(图 Linux目录结构)
2.Xshell远程登录Ubuntu
2.1 基于的协议
SSH(Secure Shell,安全外壳协议)
是一种加密的网络协议,用于在不安全的网络(如互联网)上安全地远程登录、执行命令、传输文件。
2.2 安装和配置ssh服务
- 在Ubuntu的终端中输出指令:sudo apt install openssh-server,然后输入当前账户的密码提权下载。
- 用nano编辑ssh服务的配置文件,指令:nano/etc/ssh/sshd_config,找到PermitRootLogin和PasswordAuthentication这两个配置参数,分别修改为:


- 重启ssh服务:输出指令:service ssh restart
2.3 Xshell连接
- 打开Xshell添加新会话进行如下配置:

(图 连接参数配置)

(图 身份认证配置)
- 点击连接,出现下图画面则连接成功

(图 成功连接Ubuntu终端)
2.4 Hydra爆破
Hydra(九头蛇)是一款开源、多协议、高速暴力破解工具,用于自动化尝试用户名 / 密码组合,破解各类网络服务的登录凭证。
本次爆破指令:hydra -l [登录名] -P [密码字典路径] [服务]://[目标IP],具体使用方式可参考本文:https://blog.csdn.net/wangyuxiang946/article/details/128194559
具体爆破指令及结果如下图所示:

(图 hydra爆破结果)
获取到了hydra测试认为的正确密码(但密码不一定对,需要登录试一下)。
3.后门用户的植入
- 利用hydra爆破得到的密码,用Xshell连接上Ubuntu,然后输入指令创建后门用户并设置密码。

(图 创建后门用户)

(图 设置密码)
- 然后利用刚刚创建的后门用户用Xshell连接Ubuntu。

(图 连接成功)
- 查看root目录,发现权限不够。

(图 权限不够)
- 两种解决方法:
- 修改hacker的用户信息。
- 将hacker添加到sudoers文件中。
先了解/etc/passwd和/etc/sudoers:
- /etc/passwd
存放系统所有用户基本信息。
格式:用户名:密码占位符:UID:GID:注释信息:家目录:登录Shell
密码位:x 表示密码在 /etc/shadow
UID:用户 ID
0:root用户(拥有最高权限)
1~999:系统用户(通常用于服务进程)
≥1000:普通用户(手动创建用户)
GID:初始组 ID

(图 hacker用户信息)
- /etc/sudoers
配置 sudo 权限:普通用户能以 root 身份执行哪些命令。

(图 root的sudo权限)
root:给谁授权:用户 root
ALL:在哪台主机生效:所有主机
(ALL:ALL):以哪个用户:组身份执行命令
第一个 ALL:可以切换成任何用户
第二个 ALL:可以切换成任何组
ALL:可以执行所有命令
先将hacker后门用户赋予与root一样的sudo权限。
用nano编辑器打开/etc下的sudoers,复制root的权限,然后粘贴并修改用户名为hacker,退出保存即可。

(图 添加hackers权限)
验证:我们再次使用指令sudo ls /root,发现没有报错并列出了/root。

(图 成功获取sudo高级权限)
然后,演示修改hacker用户基本信息,让它和root一样。
同样用nano编辑器打开/etc下的passwd。
复制第一行的root信息,然后粘贴并修改用户名为hacker。

(图 修改hacker的信息)
然后重新连接用hacker登录名连接的Ubuntu。

(图 信息成功变为roo的)
补充:Linux组(group)
文件:/etc/group
格式(组名:密码占位符:GID:组内用户)

(图 部分组信息)
组的分类:
主组:用户创建文件时默认归属组。
附加组:用户可加入的额外权限组。
组管理命令:
-
新建组:
groupadd 组名 -
删除组:
groupdel 组名 -
把用户加入附加组:
usermod -aG 组名 用户名 -
查看用户所属组:
groups 用户名
4.Linux文件权限
4.1权限符号

(图 kali根目录信息)
第一列:文件类型
d:目录,l:软链接,b:块设备,c:字符设备,s:socket,p:管道,-:普通文件
后面每三列为一组,每组分别是文件拥有者权限、文件所属组权限、其他用户权限。
r:可读权限,w:可写权限,x:可执行权限。
4.2 修改文件
- 修改文件所有者:chown用户:用户组 文件名
- 修改文件权限 :chmod 权限配置 文件名 ,权限配置部分可以用数字:r=4、w=2、x=1,也可用u=rwx、g=rx、o=rx 直接赋值,也可单独增删权限:+x,u+x等等。
5.木马与肉鸡
5.1 概念
木马是伪装成合法软件、隐蔽运行在目标设备中,用于长期控制设备或窃取数据的恶意程序。
肉鸡是被黑客通过木马等恶意程序秘密控制的设备。
5.2 木马攻击流程
- 制作木马
在kali中msfconsole制作适用Linux系统的木马并运行

(图 木马制作与运行)
将生成在当前目录下的shell.elf移动至/var/www/html,并开启apache2服务

(图 移动木马)

(图 开启Apache2服务)
在靶机上下载并运行shell.elf(注意:运行木马时,会因该木马没有文件执行权限而报错,需要为该木马添加执行权限:chmod +x shell.elf )

(图 下载木马)

(图 授权并运作木马)

(图 攻击成功)
6.计划任务
计划任务Corn是Linux中的一个定时任务调度程序,用于在定时的时间或周期性地执行命令或脚本。
6.1 核心指令
| crontab -e # 编辑计划任务(最常用) crontab -l # 查看当前计划任务 |
6.2 格式
格式:* * * * * 命令/脚本路径
| Corntab 表达式 | 执行频率 |
| * * * * *:分/时/日/月/周 |
|
| * * * * * | 每分钟执行 |
| 5 * * * * | 每小时的第5分钟执行 |
| */5 * * * * | 每5分钟执行 |
| 0 3 * * * | 每天凌晨3点执行 |
| 0 12 * * 6 | 每周六中午12点执行 |
6.3 设置木马为计划任务
- 使用指令crontab -e 打开编辑器编辑计划任务,将木马shell.elf添加为每分钟执行的计划任务。

(图 添加木马为计划任务)
- 在kali上用msfconsole监听,查看是否成功。

(图 计划任务成功执行)
7. 系统启动项
7.1 查看系统启动项
启动项表示在系统开机时就会自动启动的项目。
- 查看系统启动项:ls /etc/init.d/

(图 系统启动项)
8. 创建自启动服务
8.1 查看服务配置文件
ls /etc/systemd/system

(图 查看服务配置文件)
8.2 创建服务配置文件
- 先创建服务文件
sudo vim /etc/systemd/system/test.service
- 然后,写入内容:
| [Unit]
[Service] # 改成你自己的绝对路径 ExecStart=/path/to/your/program
[Install] |
- 重新加载服务配置
systemctl daemon-reload
- 启动服务
systemctl start test.service
- 设置开机自启
systemctl enable test.service
- 查看服务状态
systemctl status test.service
靶机复现:

(图 nano创建编辑服务文件)

(图 后续设置与查看)

(图 服务成功配置)
9.启动项、计划任务、服务区别
| 计划任务 | 定时投递payload |
| 启动项 | 开机一次性植入,但崩溃后无法恢复 |
| 服务 | 持久化控制的终极方案,随时启动恶意服务 |
10.Linux系统日志
10.1 系统日志(记录启动、服务、错误信息)
cat /var/log/syslog

(图 查看系统日志)
我们看到了刚刚创建服务的操作日志。
10.1 登录日志(查看登录异常,比如陌生IP登录)
cat /var/log/auth.log

(图 查看登录日志)
10.3 Linux系统日志排查
- 查看当天所有日志:sudo journalctl
- 查看特定服务的日志,如ssh服务:sudo journalctl -u ssh
- 查看特定时间段的日志:sudo journalctl --since "2024-06-20 18:00:00" --until "2024-06-20 20:00:00"
- 查看ssh的日志:sudo journalctl -u ssh | grep 'Fail password' | tail
sudo journalctl -u ssh | grep 'Accepted password' | tail

(图 journalctl排查)
11. auditd审计工具
11.1 安装
- 安装工具:apt install -y auditd audispd-plugins
- 开启服务:systemctl start auditd
- 查看状态:systemctl status auditd
11.2 创建规则
举例:
- 监视useradd命令
auditctl -w /usr/sbin/useradd -p x -k useradd_exec
| 参数 | 含义 |
|---|---|
-w | watch,监控某个文件 / 目录 |
/usr/sbin/useradd | 要监控的文件(创建用户的命令) |
-p x | 只监控 execute(执行) 行为 |
-k useradd_exec | 给这条规则打个键(标签),方便搜日志 |
- 查看监控记录
ausearch -k useradd_exec

(图 监控记录查询)
12. 安全审计
12.1 Linux可疑账户排查
- 查看具有sudo权限的用户
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL:ALL)"

- 查看超级用户(UID=0)
awk -F: '$3==0{print $1}' /etc/passwd

- 查看sudo组
cat /etc/group | grep sudo

如果有异常则可采取一下操作:
- 强制用户下线
pkill -KILL -u hacker
- 禁用用户
usermod -L hack
- 恢复用户
usermod -U hacker
- 删除用户
userdel hacker
- 删除用户与主目录
userdel -r hacker
12.2 进程排查
- 动态查看进程,查看CPU和内存情况

(图 动态进程查看)
表 白色行参数解释
| 字段 | 英文全称 | 含义解释 |
|---|---|---|
| PID | Process ID | 进程的唯一 ID 号,用来标识系统里的每个进程 |
| USER | User | 启动这个进程的用户名(比如 root、enjoy) |
| PR | Priority | 进程的调度优先级,数值越小优先级越高(范围通常是 -20 ~ 19) |
| NI | Nice value | 进程的 “谦让值”,用来调整优先级,范围 -20 ~ 19,数值越大越谦让(给其他进程让 CPU) |
| VIRT | Virtual memory | 进程使用的虚拟内存总量(包括代码、数据、共享库、交换空间等) |
| RES | Resident memory | 进程占用的物理内存(常驻内存,不包括交换出去的部分) |
| SHR | Shared memory | 进程使用的共享内存大小(可以和其他进程共享的内存部分) |
| S | Status | 进程当前状态:- R:运行中- S:睡眠中- I:空闲- Z:僵尸进程- T:停止 / 跟踪 |
| %CPU | CPU usage | 进程占用 CPU 的百分比(从上一次刷新到现在的占比) |
| %MEM | Memory usage | 进程占用物理内存的百分比 |
| TIME+ | CPU time | 进程累计占用的 CPU 时间(精确到百分之一秒) |
| COMMAND | Command | 启动这个进程的命令 / 程序名 |
- 查看进程
ps -ef

(图 进程查看)
- 根据CPU占用率降序进程
ps aux --sort -pcpu

(图 降序进程)
- 根据内存降序
ps aux --sort -pmem

(图 内存降序)
- 若遇到异常进程,则使用kill -9 pid 杀死进程。
12.3 网络连接排查
- 端口连接
#查看IP连接情况
netstat -ano -A inet

(图 查看IP连接情况)
#以数字形式,快速查看系统所有 TCP/UDP 连接的状态、端口占用和通信双方
netstat -nut

(图 查看TCP/UDP连接情况)
#以数字形式,查看所有 TCP 连接 + 显示进程名 + 显示监听端口
ss -ntap

(图 查看TCP连接情况)
12.4 计划任务排查
- 查看计划任务
crontab -l (-u 用户)
cat /etc/crontab


(图 查看计划任务)
- 删除指定用户所有计划任务
crontab -r -u root
- 编辑当前用户计划任务
crontab -e
12.5 启动项排查
ls /etc/init.d

如若有异常文件则实现如下操作
1.首先要确保它当前没在运行。
sudo service 文件名 stop
# 或者
sudo systemctl stop 文件名
2. 删除启动符号链接
不要直接删 /etc/init.d/ 里的文件,先用 update-rc.d 移除开机依赖。
sudo update-rc.d -f 文件名 remove
(参数 -f 强制删除,防止报错)
3. 删除脚本本体
现在可以安全删除了。
sudo rm /etc/init.d/文件名
4. 终极查杀(必做)
可疑文件通常藏在 /tmp/ 或 /var/tmp/ 里,建议全盘搜查:
sudo find / -name 文件名
搜到的结果一并删除。
12.6 分析服务
查看已启动的服务
systemctl list-unit-files --type=service --state=enable

13. Linux加固
13.1 账户加固
- 删除陌生、无用账户:userdel id
- 给root设置强密码: passwd root
- 禁用root远程登录(修改ssh配置文件)
nano /etc/ssh/sshd_config
修改后重启 systemctl restart sshd
13.2 防火墙加固

允许/禁止 单个 IP/IP段 访问单个端口:ufw allow/deny from <IP/IP段> to any port <端口>
13.3 其他加固
- 关闭无用服务:systemctl disable <服务名>
- 定期更新系统:apt update && apt upgrade -y && apt full-grade -y,然后重启生效reboot
- 限制文件权限 chmod <参数> <文件绝对路径>
(本人学习笔记,待续)
(如有问题,请各位博友指出)
(注意:本文操作均在自己靶场进行,若要复现,请自行搭建靶场进行,禁止对真实主机进行操作,遵守网络安全法规。)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)