Bootstrap

网络安全之Linux基础

免责声明

学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。

笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。

泷羽sec官网:https://longyusec.com/

泷羽sec B站地址:https://space.bilibili.com/350329294

目录

文件管理操作

创建空文件

删除文件

创建和删除目录

文件移动与重命名

文件拷贝

查看文件内容

查看文件文件全部内容

查看文件前几行

查看文件后几行

链接管理:软链接与硬链接

硬链接

软链接

链接实验

文件搜索与定位

查找可执行文件

使用 locate 查找文件

使用 find 查找文件

示例1

作用

选项详解

示例2 

作用

选项详解

示例3 

作用

选项详解

示例4

作用

选项详解

用户管理与权限控制

查看用户账户信息

添加或删除用户

文件系统权限

ls -la /etc/passwd

作用

选项详解

chown root file

作用

选项详解

sudo chmod u=rwx,g+rw,o-r 文件名

作用

选项详解

sudo chmod u+x,g+w,o-r 文件名

作用

选项详解

chmod 400 文件名

作用

选项详解

chmod数字权限值

系统日志

ls -l /var/log

作用

选项详解

输出示例

sudo tail -3 /var/log/auth.log

作用

选项详解

who /var/log/wtmp | tail -5

作用

选项详解

输出示例

dmesg

作用

选项详解

查看 systemd 日志 (通过 journalctl 命令)

作用

常见命令

选项详解

存储管理

free -m

作用

选项详解

输出示例

df -hT

作用

选项详解

输出示例

sudo du ./* -hsc

作用

选项详解

输出示例

sudo fdisk -l

作用

选项详解

输出示例

sudo mount /dev/sdb1 /mnt/usb

作用

选项详解

适用场景

注意事项

总结

基本网络枚举

1. 基本网络工具

1.1 ifconfig

1.2 ip addr

1.3 sudo ifdown eth0

1.4 sudo ifup eth0

2. 网络配置

2.1 /etc/network/interfaces

2.2 NetworkManager

3. 网络连接

3.1 netstat -natup

3.2 ss -natup

4. 二层地址(MAC 地址)

4.1 arp -en

5. 路由信息

5.1 route

5.2 ip route

6. 路由追踪

6.1 traceroute offensive-security.com

总结

ssh服务

1. 启动服务

1.1 sudo systemctl start ssh

2. 连接到本地主机

2.1 ssh root@localhost

3. 配置文件

3.1 /etc/ssh/sshd_config

4. 客户端配置

4.1 HashKnownHosts yes

4.2 ~/.ssh

总结

远程拷贝

scp [email protected]:/home/kali/.bashrc Copiedbashrc

作用:

命令详解:

总结:

history

作用:

命令详解:

常用选项:

总结:

总结表

linux目录介绍

/bin 二进制可执行文件

/etc 系统管理和配置文件

/etc/rc.d 启动的配置文件和脚本

/home 用户主目录的基点

/lib 标准程序设计库,又叫动态链接共享群

/sbin 超级管理命令,这里存放的是系统管理员使用的程序

/tmp 公共的临时文件存储点

/root 系统管理员的主目录

/mnt 系用户临时挂载的文件系统

/lost+found 系统非正常关机保存文件的

/proc 虚拟的目录

/var 某些大文件的溢出区

/usr 应用程序

/usr/bin 众多应用程序

/usr/sbin 超级用户的一些管理程序

了解

软链接和硬链接区别

1. 本质区别

2. 实现方式

3. 特性对比

4. 使用场景

openssl


文件管理操作

在 Linux 中,文件管理是最基础的操作之一。无论是创建、删除文件,还是对文件进行复制、移动,掌握相关命令都能大大提高工作效率。

创建空文件

使用 touch 命令可以轻松创建一个空文件:

touch 文件名

删除文件

删除文件时,使用 rm 命令:

rm 文件名

加上 -r 选项,可以递归删除文件夹及其内容:

rm -r 目录名

如果需要强制删除文件(不提示确认),可以使用 -f 选项:

rm -f 文件名

创建和删除目录

新建目录使用 mkdir

mkdir newdir

如果目录为空,使用 rmdir 删除:

rmdir emptydir

文件移动与重命名

通过 mv 命令可以移动或重命名文件:

mv oldfile newfile

例如,将文件 file.txt 重命名为 new.txt

mv file.txt new.txt

文件拷贝

cp 命令用于复制文件:

cp file.txt newfile.txt

查看文件内容

在 Linux 中,快速查看文件内容是很常用的需求

查看文件文件全部内容

cat 文件名

查看文件前几行

head -n 5 文件名

查看文件后几行

tail -n 5 文件名

链接管理:软链接与硬链接

在 Linux 中,链接可以让我们在不同位置引用相同的文件。理解硬链接和软链接的区别至关重要。

硬链接

硬链接是文件系统中多个文件名指向同一数据块。如果删除原文件,数据依然可以通过其他链接访问:

ln 原文件 硬链接名

软链接

软链接类似于 Windows 中的快捷方式,如果原文件被删除,软链接会失效:

ln -s 原文件路径 软链接名

链接实验

#创建一个测试文件f1

#创建f1的一个硬连接文件f2

#创建f1的一个符号连接文件f3

删除以后f2可以继续查看,f3却不可以

文件搜索与定位

当系统中有大量文件时,快速查找所需文件变得尤为重要。常见的文件查找工具有 whichlocatefind

查找可执行文件

使用 which 查找命令的具体位置:

which 命令名

使用 locate 查找文件

locate 通过数据库快速查找文件:

locate 文件名

更新数据库:

sudo updatedb

使用 find 查找文件

find 是一个强大的工具,可以根据多种条件查找文件:

示例1
find ~ -mtime 2 -ls | sort -k9 -k10 | more
作用
  • 在用户主目录 (~) 中查找最近 2天前(不含当天)修改过 的文件或目录。
  • 列出这些文件的详细信息。
  • 按文件名(或路径)进行排序。
  • 分页显示结果。
选项详解

 find ~ -mtime 2 -ls

  • find:搜索文件和目录的命令。
  • ~:表示当前用户的主目录(例如 /home/username)。
  • -mtime 2
    • 匹配 最近 2 天前修改过 的文件或目录。    
    • 时间计算是基于文件的最后修改时间,以天为单位(以当前时间为基准,向前推 2 天)。
    • 精确解释:
      • -mtime 2 匹配最近 大于 2 天但不超过 3 天 的文件(以整天计,不包括今天)。
  • -ls:列出匹配文件的详细信息,包括 inode、权限、大小、所有者、组、时间戳和路径。

| sort -k9 -k10

  • |:管道符,将前面 find 命令的输出传递给 sort
  • sort -k9 -k10
    • -k9:按第 9 列(通常是文件名或路径)进行排序。
      • -k10:如果第 9 列相同,则按第 10 列(通常是文件的后续部分,如时间戳)进一步排序。
      • 此排序适用于 -ls 输出格式,其中文件名和路径通常在第 9 列。

| more

  • |:管道符,将 sort 命令的结果传递给 more
  • more:分页显示结果,按屏幕大小逐页展示。
    • /按空格键查看下一页。
    • q 退出。

示例2 
find . -type f -iname '*.sh' -mmin -30 -ls
作用

在当前目录及其子目录中,查找过去 30 分钟内修改过的 .sh 脚本文件,并显示其详细信息。

选项详解
  • find:搜索文件和目录的命令。
  • .:表示从当前目录开始搜索。
  • -type f:仅匹配普通文件(不包括目录、链接等)。
  • -iname '*.sh'
    • -iname:忽略大小写的文件名匹配。
    • *.sh:匹配以 .sh 结尾的文件。
  • -mmin -30
    • -mmin:按修改时间筛选文件。
    • -30:表示文件的最后修改时间在 30 分钟以内。
  • -ls:列出符合条件的文件的详细信息,包括 inode、权限、大小等。

示例3 
find . -name '*.svn' -exec rm -rf {} \;
作用

在当前目录及其子目录中,查找名字为 *.svn 的文件或目录,并递归删除它们。

选项详解
  • find:搜索文件和目录的命令。
  • .:表示从当前目录开始搜索。
  • -name '*.svn'
    • -name:按文件名匹配。
    • *.svn:匹配名字以 .svn 结尾的文件或目录。
  • -exec:对匹配到的文件执行指定的命令。
  • rm -rf
    • rm:删除命令。
    • -r:递归删除目录及其内容。
    • -f:强制删除,不提示。
  • {}:占位符,代表匹配到的每个文件或目录。
  • \;:表示 -exec 命令结束。
示例4
find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null
作用

在整个文件系统中,查找属于 root 用户、文件类型为普通文件、可被其他用户写入且文件名以 .sh 结尾的文件,并忽略错误信息。

选项详解
  • find /:从根目录 / 开始搜索。
  • -user root:匹配文件的所有者为 root 的文件。
  • -type f:仅匹配普通文件。
  • -perm -o=w
    • -perm:按文件权限匹配。
    • -o=w:表示文件的 "其他用户"(即非所有者和所属组)对文件有写权限。
  • -name '*.sh':匹配以 .sh 结尾的文件。
  • 2>/dev/null
    • 2>:将标准错误输出重定向。
    • /dev/null:将错误信息丢弃,避免权限不足等错误干扰输出。

用户管理与权限控制

在 Linux 系统中,合理管理用户和设置文件权限非常重要,以确保系统的安全性。

查看用户账户信息

Linux 的用户账户信息通常存储在 /etc/passwd/etc/shadow 文件中:

cat /etc/passwd
cat /etc/shadow
组账号

cat /etc/group
禁用账号

添加或删除用户

使用 useradd 添加用户,使用 userdel 删除用户:

useradd 新用户名
userdel -f 用户名

文件系统权限

linux系统中一切都是文件

ls -la /etc/passwd
作用

列出 /etc/passwd 文件的详细信息,包括权限、所有者、大小、修改时间等。

选项详解
  • ls:列出目录内容或文件信息。
  • -l:使用长格式显示文件信息,包括权限、硬链接数、所有者、组、大小、时间戳等。
  • -a:显示所有文件,包括隐藏文件(以 . 开头的文件)。

chown root file
作用

将文件 file 的所有者更改为用户 root

选项详解
  • chown:更改文件的所有者。
  • root:新所有者的用户名。
  • file:要更改所有者的文件。

sudo chmod u=rwx,g+rw,o-r 文件名

r(读)w(写)x(执行)

作用

修改文件 file 的权限:

  • 用户(owner)有 读、写、执行 权限。
  • 组(group)增加 读、写 权限。
  • 其他用户(others)移除 权限。
选项详解
  • sudo:以超级用户权限执行命令。
  • chmod:更改文件权限。
  • u=rwx:设置用户(owner)的权限为 读(r)、写(w)、执行(x)
  • g+rw:增加组(group)的 读(r)和写(w) 权限。
  • o-r:移除其他用户(others)的 读(r) 权限。
  • file:要修改权限的文件。

sudo chmod u+x,g+w,o-r 文件名
作用

修改文件 file 的权限:

  • 用户(owner)增加 执行 权限。
  • 组(group)增加 权限。
  • 其他用户(others)移除 权限。
选项详解
  • 与上一条类似,只是权限变更具体不同:
    • u+x:用户增加执行权限。
    • g+w:组增加写权限。
    • o-r:其他用户移除读权限。

chmod 400 文件名
作用

将文件权限设置为 仅用户可读(用户有读权限,组和其他用户没有任何权限)。

选项详解
  • chmod:更改文件权限。
  • 400:使用八进制表示文件权限:
    • 4:代表读权限。
    • 0:无权限。
  • 400 的含义
    • 组(g):0(无权限)。
    • 其他用户(o):0(无权限)。
    • 用户(u):4(读权限)。
chmod数字权限值

数字

权限

描述

0

---

无任何权限

1

--x

仅执行权限

2

-w-

仅写权限

3

-wx

写和执行权限

4

r--

仅读权限

5

r-x

读和执行权限

6

rw-

读和写权限

7

rwx

读、写、执行权限

三位数字分别代表用户,组,其他用户

系统日志

ls -l /var/log
作用

列出 /var/log 目录中所有文件的详细信息。

选项详解
  • ls:列出目录内容。
  • -l:使用长格式显示文件信息。
    • 权限、硬链接数、所有者、组、文件大小、修改时间、文件名。
  • /var/log:系统日志文件所在的目录,存储了系统运行和服务的日志文件。
输出示例

  • 文件类型:
    • c: 表示该文件是字符设备文件。
    • rw-rw-r--: 读写读写读都没有执行权限。
    • 1: 硬链接数。
    • root: 文件的拥有者。
    • utmp: 文件所属组。
    • Dec 2 14:55: 文件最后修改时间。
    • wtmp: 文件名。

sudo tail -3 /var/log/auth.log
作用

显示 /var/log/auth.log 文件的最后 3 行内容,通常包含身份验证相关的日志(例如登录尝试、SSH 访问等)。

选项详解
  • sudo:以超级用户权限运行(某些日志文件需要权限)。
  • tail:显示文件末尾的内容。
  • -3:仅显示最后 3 行。
  • /var/log/auth.log:身份验证日志文件。

who /var/log/wtmp | tail -5
作用

查看 /var/log/wtmp 文件中的用户登录历史,并仅显示最后 5 条记录。

选项详解
  • who:显示当前和历史登录会话。
  • /var/log/wtmp:记录登录历史的二进制日志文件。
  • |:管道符,将 who 的输出传递给 tail
  • tail -5:显示最后 5 行。
输出示例


dmesg
作用

显示内核启动后的系统消息(从系统启动到现在的内核日志)。

选项详解
  • 无选项时:默认输出所有内核日志信息。
  • 常用选项
    • dmesg | tail:仅查看最新的日志信息。
    • dmesg -T:将日志时间戳转换为可读格式(需支持该选项的系统)。
    • dmesg | grep keyword:通过 grep 筛选日志中特定的关键字。

查看 systemd 日志 (通过 journalctl 命令)

journalctl 基础用法

作用

journalctlsystemd 提供的日志查看工具,用于管理和查看所有系统日志(包括内核日志、服务日志等)。

常见命令
  • 查看全部日志
journalctl

输出所有日志,按时间顺序排列。

  • 实时查看日志
journalctl -f

类似于 tail -f,实时滚动显示新日志。

  • 查看特定服务的日志
journalctl -u servicename

替换 servicename 为目标服务名,例如 ssh

  • 按时间范围过滤
journalctl --since "2024-11-01" --until "2024-11-30"

显示指定时间段内的日志。

  • 查看内核日志
journalctl -k

仅显示内核相关的日志。

  • 按优先级筛选
journalctl -p 3

显示优先级为 3(错误)及更高(严重错误)的日志。

选项详解
  • -u servicename:筛选指定服务的日志。
  • -f:实时显示日志。
  • -k:仅查看内核日志。
  • --since/--until:按时间范围筛选日志。
  • -p priority:按日志优先级筛选。

存储管理

free -m

作用

显示系统的内存使用情况,包括物理内存(RAM)、交换内存(swap)和缓存。

选项详解
  • free:查看内存使用信息。
  • -m:以 MB(兆字节) 为单位显示内存使用情况。
输出示例

  • Mem
    • total:总物理内存。
    • used:已用内存。
    • free:未使用内存。
    • shared:共享内存(通常为 tmpfs)。
    • buff/cache:缓冲区和缓存占用的内存。
    • available:系统可以立即使用的内存(考虑缓存)。
  • Swap
    • total:总交换分区大小。
    • used:已使用交换分区。
    • free:剩余交换分区。

df -hT

作用

显示文件系统的磁盘空间使用情况,包括每个分区的类型和使用百分比。

选项详解
  • df:查看磁盘空间使用情况。
  • -h:以人类可读的格式(如 KB、MB、GB)显示大小。
  • -T:显示文件系统的类型(如 ext4、xfs、vfat)。
输出示例

  • Filesystem:设备名。
  • Type:文件系统类型。
  • Size:分区总大小。
  • Used:已用空间。
  • Avail:可用空间。
  • Use%:使用百分比。
  • Mounted on:挂载点。

sudo du ./* -hsc

作用

统计当前目录下每个文件和子目录的大小,并以人类可读的格式显示总计。

选项详解
  • sudo:以超级用户权限运行(某些目录可能需要权限)。
  • du:显示目录或文件占用的磁盘空间。
  • ./*:统计当前目录下的所有文件和子目录。
  • -h:以人类可读格式(如 KB、MB、GB)显示大小。
  • -s:只显示每个文件/目录的总计大小,而不是逐层列出。
  • -c:显示一个总计。
输出示例

  • 每一行显示子目录或文件的大小,最后一行显示总计。

sudo fdisk -l

作用

显示所有磁盘及其分区表的信息。

选项详解
  • sudo:以超级用户权限运行(查看磁盘信息需要权限)。
  • fdisk:磁盘分区管理工具。
  • -l:列出所有磁盘及其分区。
输出示例

  • Disk:磁盘设备及其大小。
  • Device:分区设备名称。
  • Boot:是否可引导。
  • Start/End/Sectors:分区的起始扇区、结束扇区和扇区数量。
  • Size:分区大小。
  • Type:分区类型(如 Linux、swap 等)。

sudo mount /dev/sdb1 /mnt/usb

作用

将设备 /dev/sdb1 挂载到目录 /mnt/usb,使用户可以访问该设备的内容。

选项详解
  • sudo:以超级用户权限运行(挂载操作需要权限)。
  • mount:挂载文件系统。
  • /dev/sdb1:设备路径(例如 USB 驱动器的分区)。
  • /mnt/usb:挂载点(需要提前创建该目录)。
适用场景
  • 挂载 USB 设备或其他存储设备。
  • 挂载远程文件系统(如 NFS 或 Samba)。
注意事项
  • 确保目标目录 /mnt/usb 存在,可以使用 mkdir /mnt/usb 创建。
  • 如果设备未正确挂载,可以使用 sudo umount /mnt/usb 卸载后重新尝试。

总结

命令

作用

free -m

查看系统内存和交换分区的使用情况,以 MB 为单位。

df -hT

查看磁盘分区的使用情况和文件系统类型,以人类可读格式显示。

sudo du ./* -hsc

统计当前目录下每个文件和子目录的大小,并显示总计。

sudo fdisk -l

显示所有磁盘及其分区表信息(设备路径、大小、分区类型等)。

sudo mount /dev/sdb1 /mnt/usb

将设备(如 USB 驱动器)挂载到指定目录以访问其内容。

基本网络枚举

1. 基本网络工具

1.1 ifconfig
  • 作用:显示或配置网络接口信息(IPv4)。
  • 常用选项
    • 无参数:显示所有活动网络接口信息(包括 IP 地址、子网掩码、MAC 地址)。
    • ifconfig eth0 down:关闭网络接口 eth0
    • ifconfig eth0 up:启用网络接口 eth0
  • 注意:已被 ip 命令替代,但仍可用于某些系统。

1.2 ip addr
  • 作用:显示或配置网络接口信息(IPv4 和 IPv6)。
  • 常用选项
    • ip addr show:显示所有网络接口的 IP 地址及相关信息。
    • ip addr add 192.168.1.100/24 dev eth0:为接口 eth0 添加 IP 地址 192.168.1.100
    • ip addr del 192.168.1.100/24 dev eth0:从接口 eth0 删除指定 IP 地址。

1.3 sudo ifdown eth0
  • 作用:停用指定网络接口(需要超级用户权限)。
  • 示例

停用 eth0 网络接口。

1.4 sudo ifup eth0
  • 作用:启用指定网络接口(需要超级用户权限)。
  • 示例

启用 eth0 网络接口。


2. 网络配置

2.1 /etc/network/interfaces
  • 作用:Linux 系统中存储网络配置的文件(在传统网络管理工具中使用)。
  • 内容示例

2.2 NetworkManager
  • 作用:现代 Linux 系统中的网络管理工具,支持动态和静态配置。
  • 相关命令
    • nmcli:命令行工具,用于管理网络连接。
nmcli dev status
nmcli con show
    • nmtui:基于文本的用户界面,用于配置网络。

3. 网络连接

3.1 netstat -natup
  • 作用:显示网络连接、监听的端口及其进程信息(已被 ss 替代)。
  • 选项详解
    • -n:数字化显示(IP 地址和端口号),而非主机名和服务名。
    • -a:显示所有连接(包括监听和非监听状态)。
    • -t:显示 TCP 连接。
    • -u:显示 UDP 连接。
    • -p:显示连接的进程信息(需要超级用户权限)。

3.2 ss -natup
  • 作用:显示活动网络连接及监听的端口(更高效的 netstat 替代工具)。
  • 选项同 netstat


4. 二层地址(MAC 地址)

4.1 arp -en
  • 作用:显示 ARP 表,解析二层地址(MAC 地址)。
  • 选项详解
    • -e:显示扩展信息,包括接口名称。
    • -n:数字化显示(不解析主机名)。
  • 输出示例

    • Address:IP 地址。
    • HWtype:硬件类型(如 ether 表示以太网)。
    • HWaddress:MAC 地址。
    • Iface:接口名称。

5. 路由信息

5.1 route
  • 作用:显示或修改系统的路由表。
  • 示例
    • route -n:数字化显示路由表。
    • 添加路由:

5.2 ip route
  • 作用:更现代的路由配置工具(替代 route)。
  • 示例
    • 显示路由表:
ip route show
    • 添加路由:
sudo ip route add 10.13.37.0/24 dev eth1

为网络 10.13.37.0/24 设置路由,数据通过接口 eth1 传输。


6. 路由追踪

6.1 traceroute offensive-security.com
  • 作用:跟踪数据包到目标主机的路由路径。
  • 参数详解
    • 默认无参数时,显示每一跳的信息,包括 IP 地址、响应时间等。
    • 示例输出:
1  192.168.1.1  1.123 ms  1.456 ms  1.789 ms
2  10.0.0.1     10.123 ms 10.456 ms 10.789 ms
      • 每行表示一跳(路由器或设备)的信息。
      • 第一列为跳数。
      • 后续为设备 IP 和响应时间。
  • 注意事项
    • 若需要超级用户权限,可以使用 sudo traceroute

总结

命令

作用

ifconfig

显示或配置网络接口(传统工具)。

ip addr

显示或配置网络接口(现代工具,支持 IPv4 和 IPv6)。

sudo ifdown/ifup eth0

停用/启用网络接口 eth0

/etc/network/interfaces

存储静态网络配置的文件。

NetworkManager

现代 Linux 网络管理工具。

netstat -natup

显示网络连接、端口及进程(传统工具)。

ss -natup

显示网络连接、端口及进程(netstat的替代工具)。

arp -en

显示 ARP 表和二层地址(MAC 地址)。

route

显示或配置路由表(传统工具)。

ip route

显示或配置路由表(现代工具)。

sudo ip route add ...

添加一条新的路由规则。

traceroute offensive-security.com

跟踪数据包到目标主机的路由路径,用于网络故障排查。

ssh服务

1. 启动服务

1.1 sudo systemctl start ssh
  • 作用:启动 SSH 服务,允许远程主机通过 SSH 协议连接到本地系统。
  • 命令详解
    • sudo:以超级用户权限运行。
    • systemctl:服务管理工具,用于启动、停止、重启、查看状态等操作。
    • start ssh:启动名为 ssh 的服务。
  • 相关命令
    • sudo systemctl stop ssh:停止 SSH 服务。
    • sudo systemctl restart ssh:重启 SSH 服务。
    • sudo systemctl status ssh:查看 SSH 服务状态。

2. 连接到本地主机

2.1 ssh root@localhost
  • 作用:通过 SSH 协议连接到本地主机的 root 用户账户。
  • 参数详解
    • ssh:SSH 客户端命令,用于连接到远程主机。
    • root@localhost
      • root:目标主机上的用户名。
      • localhost:目标主机的地址,这里表示本地。
  • 连接过程
    • 系统会提示输入 root 用户的密码。
    • 连接成功后会进入目标主机的终端环境。

3. 配置文件

3.1 /etc/ssh/sshd_config
  • 作用:SSH 服务端的配置文件,用于定义服务行为。
  • 常用配置项
    • Port 22:指定 SSH 服务监听的端口(默认是 22)。
    • PermitRootLogin yes:是否允许 root 用户通过 SSH 登录。
      • yes:允许。
      • no:禁止。
      • prohibit-password:禁止基于密码的登录,但允许使用密钥。
    • PasswordAuthentication yes:是否允许基于密码的身份验证。
      • yes:允许。
      • no:禁止,仅支持密钥登录。
    • AllowUsers user1 user2:指定允许通过 SSH 登录的用户。
    • MaxAuthTries 3:限制身份验证的最大尝试次数。
  • 配置文件生效: 修改后需重启 SSH 服务:
sudo systemctl restart ssh

4. 客户端配置

4.1 HashKnownHosts yes
  • 作用:在客户端的 ~/.ssh/known_hosts 文件中,将已知主机的公钥信息保存为哈希值。
  • 优点
    • 提高安全性,防止直接暴露已连接主机的 IP 地址或主机名。
  • 配置位置
    • ~/.ssh/config 文件中添加:
HashKnownHosts yes
4.2 ~/.ssh
  • 作用:SSH 客户端的默认配置目录,用于存储密钥和相关配置。
  • 常见文件
    • ~/.ssh/config:客户端配置文件,用于指定默认行为或连接选项。
      • 示例:
Host example
    HostName example.com
    User username
    Port 22
    • ~/.ssh/id_rsa:默认的私钥文件(RSA 算法)。
    • ~/.ssh/id_rsa.pub:对应的公钥文件。
    • ~/.ssh/known_hosts:存储已连接主机的公钥,用于防止中间人攻击。

总结

命令/配置

作用

sudo systemctl start ssh

启动 SSH 服务,允许远程主机连接到本地。

ssh root@localhost

使用 SSH 协议连接到本地主机的 root

用户账户。

/etc/ssh/sshd_config

SSH 服务端配置文件,定义服务行为(如端口、允许用户等)。

HashKnownHosts yes

客户端配置项,将 known_hosts

文件中的主机信息以哈希形式存储,提升安全性。

~/.ssh

客户端默认配置目录,存储密钥文件、公钥文件、已知主机信息等。

~/.ssh/known_hosts

存储已连接主机的公钥,用于验证主机身份防止中间人攻击。

远程拷贝

scp [email protected]:/home/kali/.bashrc Copiedbashrc

作用

使用 scp 命令从远程主机 1.1.1.1root 用户)复制文件 /home/kali/.bashrc 到本地机器,目标文件名为 Copiedbashrc

命令详解
  • scp:用于在本地与远程主机之间复制文件或目录,支持加密传输。
  • [email protected]:/home/kali/.bashrc
    • root:远程主机的用户名。
    • 1.1.1.1:远程主机的 IP 地址。
    • /home/kali/.bashrc:远程主机上的源文件路径。
  • Copiedbashrc:本地文件的目标路径和文件名,复制的内容将被保存在本地名为 Copiedbashrc 的文件中。
总结

该命令将远程主机 1.1.1.1 上的 /home/kali/.bashrc 文件复制到本地,并将其保存为 Copiedbashrc


history

作用

history 命令用于显示当前用户的命令历史记录。

命令详解
  • history:无参数时,显示当前用户的命令历史列表,列出执行过的命令及其编号。
常用选项
  • history n:显示最近 n 条命令记录。例如,history 10 显示最近的 10 条命令。
  • !n:执行编号为 n 的历史命令。例如,!5 将执行历史记录中的第 5 条命令。
  • history -c:清除命令历史。
总结

history 命令会显示你当前用户在终端中输入的命令历史记录,方便查看或重复使用以前执行的命令。


总结表

命令

作用

scp [email protected]:/home/kali/.bashrc Copiedbashrc

从远程主机 1.1.1.1复制

/home/kali/.bashrc文件到本地,

保存为 Copiedbashrc

history

显示当前用户的命令历史记录。

linux目录介绍

/bin 二进制可执行文件

/etc 系统管理和配置文件

/etc/rc.d 启动的配置文件和脚本

/home 用户主目录的基点

/lib 标准程序设计库,又叫动态链接共享群

/sbin 超级管理命令,这里存放的是系统管理员使用的程序

/tmp 公共的临时文件存储点

/root 系统管理员的主目录

/mnt 系用户临时挂载的文件系统

/lost+found 系统非正常关机保存文件的

/proc 虚拟的目录

/var 某些大文件的溢出区

/usr 应用程序

/usr/bin 众多应用程序

/usr/sbin 超级用户的一些管理程序

了解

软链接和硬链接区别

1. 本质区别
  • 硬链接
    • 是文件系统中多个文件名指向同一数据块的方式。
    • 硬链接与原始文件共享相同的 inode 号码,实际上指向同一个存储空间。
    • 删除任意一个硬链接或原始文件,数据依然存在,除非所有指向该数据块的链接都被删除。
  • 软链接
    • 是一个指向目标文件路径的文件,类似于快捷方式。
    • 软链接有自己的 inode,与原文件的 inode 不同。
    • 如果原文件被删除,软链接会失效,成为“死链接”。

2. 实现方式
  • 硬链接
    • 直接通过文件系统的 inode 来实现。
    • 只能在同一个文件系统中创建。
  • 软链接
    • 存储的是目标文件的路径。
    • 可以跨文件系统创建。

3. 特性对比

特性

硬链接

软链接

是否占用存储空间

不额外占用存储空间

占用存储空间,用于存储路径信息

指向方式

指向相同数据块

指向目标文件路径

文件删除的影响

删除某个链接不影响其他链接和数据

删除目标文件会导致链接失效

是否支持目录

一般不支持(Linux下可以通过特殊方式实现)

支持

跨文件系统支持

不支持

支持

inode 共享情况

共享相同的 inode

不共享 inode


4. 使用场景
  • 硬链接
    • 用于需要确保数据安全的场景,即使原文件名被删除,数据仍然可通过其他链接访问。
    • 如需要多个路径指向相同数据,同时无需创建新文件。
  • 软链接
    • 用于快捷访问目标文件或目录的场景。
    • 跨文件系统、跨目录引用文件。
    • 方便更改目标路径时,链接本身不需要变化。

openssl

开源的加密工具包,提供各种加密,解密,签名,验证等功能。

openssl passwd -1 123

passwd表示用于密码处理

-1 使用md5

-5 使用SHA-256哈希算法

-6 使用 SHA-512 哈希算法生成密码散列

-apr1 加入了盐的md5

-aixmd5 IBM AIX 系统上的 MD5 哈希算法

'123'对这个密码进行处理

;