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目录,发现权限不够。

(图 权限不够)

  • 两种解决方法:
  1. 修改hacker的用户信息。
  2. 将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]
Description=My Custom Service
After=network.target  

 

[Service]
Type=simple

# 改成你自己的绝对路径

ExecStart=/path/to/your/program
Restart=always

 

[Install]
WantedBy=multi-user.target

  • 重新加载服务配置

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

参数含义
-wwatch,监控某个文件 / 目录
/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和内存情况

(图 动态进程查看)

表 白色行参数解释

字段英文全称含义解释
PIDProcess ID进程的唯一 ID 号,用来标识系统里的每个进程
USERUser启动这个进程的用户名(比如 root、enjoy)
PRPriority进程的调度优先级,数值越小优先级越高(范围通常是 -20 ~ 19)
NINice value进程的 “谦让值”,用来调整优先级,范围 -20 ~ 19,数值越大越谦让(给其他进程让 CPU)
VIRTVirtual memory进程使用的虚拟内存总量(包括代码、数据、共享库、交换空间等)
RESResident memory进程占用的物理内存(常驻内存,不包括交换出去的部分)
SHRShared memory进程使用的共享内存大小(可以和其他进程共享的内存部分)
SStatus进程当前状态:- R:运行中- S:睡眠中- I:空闲- Z:僵尸进程- T:停止 / 跟踪
%CPUCPU usage进程占用 CPU 的百分比(从上一次刷新到现在的占比)
%MEMMemory usage进程占用物理内存的百分比
TIME+CPU time进程累计占用的 CPU 时间(精确到百分之一秒)
COMMANDCommand启动这个进程的命令 / 程序名
  • 查看进程

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 <参数> <文件绝对路径> 

(本人学习笔记,待续)

(如有问题,请各位博友指出)

(注意:本文操作均在自己靶场进行,若要复现,请自行搭建靶场进行,禁止对真实主机进行操作,遵守网络安全法规。)

 

 

 

 

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐