linux基础

免责声明

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

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

linux

openssl

openssl passwd -1 123

openssl是一个开源的加密工具包,提供了各种加密、解密、签名、验证等功能。

password表示这个命令用于处理密码相关的操作。

-1参数指定使用MD5加密算法对密码"123"进行加密处理。MD5是一种常用的哈希算法,它将任意长度的输入数据转换为固定长度的输出(通常是128位的哈希值)。使用这个命令可以将"123"生成为MD5加密后的密文。

openssl passwd -5 123

同样,openssl是加密工具包。

password用于密码处理。

-5参数表示使用SHA-256哈希算法对密码"123"进行哈希加密处理。SHA-256是一种更安全的哈希算法,它生成的哈希值长度为256位。每次对相同的密码进行SHA-256加密时,由于加密过程中通常会引入随机因素(如盐值等),所以每次生成的密文都是不一样的,这增加了密码的安全性,即使攻击者获得了密文,也很难通过逆向计算得到原始密码。

文件管理

- 创建空文件:touch new file

- 删除文件:rm newfile

可以看到刚才的文件已经消失了

- 新建目录:mkdir newdir

- 删除空目录:rmdir newdir

- 重命名文件:mv file.txt new.txt

- 移动文件:mv new.txt newdir

- 拷贝文件:cp newdir/new.txt file.txt

在Linux系统中,链接分为两种:软链接(符号链接)和硬链接

软链接(符号链接)

软链接(Symbolic Link)是一个特殊类型的文件,它包含了指向另一个文件或目录的路径。软链接可以跨文件系统,并且可以链接文件和目录。软链接的创建和使用如下:

创建软链接:

ln -s <目标文件或目录> <链接名称>

例如,创建一个指向/etc/passwd文件的软链接:

ln -s newdir/new.txt new_link

使用软链接:

cat new_link

删除软链接:

rm new_link

硬链接

硬链接(Hard Link)是一个指向文件内容的指针,它允许一个文件拥有多个有效的文件名。硬链接不能跨文件系统,也不能链接目录。硬链接的创建和使用如下:

创建硬链接:

ln <目标文件> <链接名称>

例如,创建一个指向/etc/passwd文件的硬链接:

ln -s newdir/new.txt new_hard_link

使用硬链接:

cat passwd_hard_link

删除硬链接:

rm passwd_hard_link

注意:当删除原文件时,硬链接仍然有效,因为它们指向相同的文件内容。只有当删除最后一个硬链接时,文件内容才会被删除。

总结

  • 软链接是包含目标路径的特殊文件,可以跨文件系统,可以链接文件和目录。

  • 硬链接是指向文件内容的指针,不能跨文件系统,不能链接目录。

  • 删除原文件时,软链接失效,硬链接仍然有效。

  • 只有删除最后一个硬链接时,文件内容才会被删除。

搜索文件

以下是which命令的基本语法:

which [options] <command>

例如,如果您想找到ls命令的路径,可以输入以下命令:

which dir

输出可能类似于: /usr/bin/dir

这表示dir命令位于/usr/bin/目录下。

which命令的一些常用选项包括:

• -a:显示所有匹配的路径,而不仅仅是第一个匹配项。

• -n:指定输出的文件名长度。

• -p:与-a选项一起使用时,同时显示PATH环境变量中的目录。

例如,要查找并显示所有与python命令匹配的路径,可以使用以下命令:

which -a python

需要注意的是,which命令只搜索PATH环境变量中定义的目录。如果您需要查找系统中所有可用的命令,可以使用whereis命令或find命令。 以下是echo命令的基本用法:

  1. 输出文本:

echo "Hello, World"

这将在终端显示 "Hello, World"。

  1. 输出变量的值:

message="Hello, World"

echo $message

这将输出变量message的值,即 "Hello, World"

  1. 输出带有特殊字符的文本:

如果要输出包含特殊字符(如引号、反斜杠等)的文本,可以使用反斜杠(\)进行转义。

echo "He said, \"Hello, World\""

这将输出 He said, "Hello, World"

  1. 使用-e选项解释转义字符:

默认情况下,echo命令不会解释转义字符。要启用转义字符的解释,可以使用-e选项。

echo -e "Line 1\nLine 2"

这将输出:

Line 1
Line 2

其中,\n表示换行符。

  1. 使用-n选项禁止自动换行:

默认情况下,echo命令在输出文本后会自动添加换行符。要禁止自动换行,可以使用-n选项。

echo -n "Hello, "
echo "World"

这将输出 Hello, World,而不是在"Hello, "后换行。

echo命令可以用于显示环境变量PATH的值

echo $PATH

这将输出一个由冒号(:)分隔的目录列表,这些目录是系统在查找可执行文件时会搜索的位置。例如,输出可能类似于:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

这表示系统会按照上述顺序在这些目录中查找可执行文件。

如果您想要查看PATH环境变量的完整值(包括空格和特殊字符),可以使用双引号:

echo "$PATH"

这将确保输出中的空格和特殊字符被正确处理。

locate

locate命令是一个用于快速查找文件的工具,它基于一个预先构建的数据库(通常名为local.db)来搜索文件。

以下是locate命令的基本用法:

  1. 查找文件:

    locate <filename>

例如,要查找名为example.txt的文件,可以输入以下命令:

locate example.txt

这将在local.db数据库中搜索与example.txt匹配的所有文件,并显示它们的完整路径。

  1. 查找包含特定文本的文件:

    locate -i <text>

例如,要查找包含文本hello的所有文件,可以输入以下命令:

locate -i *hello*

-i选项表示忽略大小写。

需要注意的是,locate命令依赖于预先构建的数据库。在Kali Linux中,这个数据库通常由updatedb命令定期更新。如果local.db数据库没有及时更新,locate命令可能无法找到最近创建或移动的文件。为了确保locate命令能够找到最新的文件,您可以手动运行updatedb命令来更新数据库:

sudo updatedb

这将更新local.db数据库,使locate命令能够找到最新的文件。

find

"find" 表示在用户的主目录("~" 代表主目录)下进行查找。

"-mtime 2" 表示查找在两天内被修改过的文件。

"-ls" 用于以长列表形式显示找到的文件信息。

"|" 是管道符号,将前一个命令的输出作为后一个命令的输入。

"sort -k9 -k10" 是按照第九列和第十列的内容对文件信息进行排序。

"more" 用于分页显示结果,方便查看。

find  -type f -iname '*.sh' -mmin -30 -ls

"find" 在当前目录下进行查找。

"-iname '*.sh'" 查找文件名以 "sh" 结尾的文件,注意这里的空格可能会导致不准确匹配,一般用通配符应该紧贴在前面的字符后面,比如 "*sh"。

"-mmin -30" 表示查找在 30 分钟内被修改过的文件。

"-ls" 以长列表形式显示找到的文件信息。

find -name '*svn' -exec rm -rf {} ;

"find" 在当前目录下查找。

"-name 'svn'" 查找名为 "svn" 的文件或目录。

"-exec rm -rf {} ;" 表示对找到的每个结果执行 "rm -rf" 命令,即删除找到的文件或目录。

find / -user root -type f -perm -o=w -name '*sh' 2>/dev/null

"find /" 在整个文件系统(根目录 "/")下进行查找。

"-user root" 表示查找所有者为 "root" 用户的文件。

"-type f" 表示查找类型为普通文件。

"-perm -o=w" 表示查找其他用户有写权限的文件。

"-name '*.sh'" 查找文件名以 "sh" 结尾的文件。

"2>/dev/null" 将错误输出重定向到 "/dev/null",即不显示错误信息。

用户账号数据库相关文件

cat /etc/passwd

这是一个重要的系统文件,存储了系统中用户账号的基本信息。

每行代表一个用户,包含了用户名、密码占位符、用户 ID、用户组 ID、用户描述信息、用户主目录、用户默认 shell 等字段。

cat /etc/shadow:

这个文件也与用户账号相关,主要存储用户密码的加密信息以及密码的一些属性,如密码最后一次修改时间、密码最短使用期限、密码最长使用期限等。

只有具有足够权限的用户(通常是 root)才能读取这个文件,以提高密码的安全性。

组账号相关命令

cat /etc/group:

查看用户账号信息的同时,也可以间接了解用户所属的组信息,因为其中包含了用户组 ID。但这并不是专门用于查看组账号的最佳方式,通常使用 cat /etc/group 来查看组账号信息。

禁用账号相关命令

sudo passwd -l username:
  • sudo: 表示以管理员权限执行命令。

  • passwd: 是用于管理用户密码的命令。

  • -l 选项用于锁定用户账号。当执行这个命令后,指定的 username 用户账号将被锁定,无法登录系统。

    chage -E 1990-01-01 kali:
    
  • chage: 命令用于修改用户密码的过期信息。

  • -E 选项后面跟着一个日期,表示设置用户账号的过期时间。在这个例子中,将"kali"用户账号的过期时间设置为"1990-01-01",通常意味着在这个日期之后该账号将无法使用,除非重新设置过期时间或进行其他管理操作。

    passwd -S username:

  • passwd: 命令的另一个用法。

  • -S 选项用于显示指定用户账号的密码状态信息,包括账号是否被锁定、密码是否已设置、密码最后一次修改时间等。

文件系统权限

在 Linux 系统中,一切都是文件

查看权限

ls -la /etc/passwd

更改文件所有者

在Linux中,文件和目录的权限分为三种类型:读(Read,简写为r)、写(Write,简写为w)和执行(Execute,简写为x)。

每个文件和目录都有三个权限组:

  1. 用户(User,简写为u):拥有者(创建者)的权限。

  2. 组(Group,简写为g):拥有者所在组的成员的权限。

  3. 其他(Other,简写为o):除拥有者和组内成员之外的其他用户的权限。

权限可以用数字表示,每个权限对应一个数字:

  • 读(r):4

  • 写(w):2

  • 执行(x):1

  • 无权限:0

要设置文件或目录的权限,可以使用chmod命令。有两种表示权限的方法:符号表示法和数字表示法。

符号表示法

使用符号表示法时,您可以使用以下语法:

chmod [ugoa][+-=][rwx] <file_or_directory>
  • [ugoa]:指定权限组(用户、组、其他)。

  • [+-=]:指定操作(添加、删除、设置)。

  • [rwx]:指定权限(读、写、执行)。

例如,要给文件所有者添加执行权限,可以使用以下命令:

chmod u+x <file>

数字表示法

使用数字表示法时,您需要为每个权限组分配一个数字,然后将这三个数字组合在一起。例如,要设置文件权限为rwxr-xr--(即拥有者具有读、写和执行权限,组内成员具有读和执行权限,其他用户具有只读权限),可以使用以下命令:

chmod 754 <file>

这里,数字7、5和4分别表示三个权限组的权限:

  • 用户(u):rwx(4 + 2 + 1)= 7

  • 组(g):r-x(4 + 0 + 1)= 5

  • 其他(o):r--(4 + 0 + 0)= 4

总之,Linux中的数字权限允许您使用三位数字来表示文件或目录的权限,每位数字对应一个权限组(用户、组、其他),每个数字由读、写和执行权限的数值组成。

在Kali Linux(以及大多数Linux发行版)中,数字权限用于设置文件和目录的访问权限。

Kali Linux中常用的数字权限:

  1. 只读权限(444/644):拥有者、组和其他用户都只有读权限。

    • 文件:chmod 644 <file>

    • 目录:chmod 755 <directory>

  2. 可读写权限(666/664):拥有者和组有读写权限,其他用户只有读权限。

    • 文件:chmod 664 <file>

    • 目录:chmod 775 <directory>

  3. 可读写执行权限(777/775):拥有者、组和其他用户都有读、写和执行权限。

    • 文件:chmod 775 <file>

    • 目录:chmod 777 <directory>

  4. 只读执行权限(555/755):拥有者、组和其他用户都有读和执行权限,但只有拥有者有写权限。

    • 文件:chmod 644 <file>

    • 目录:chmod 755 <directory>

  5. 无权限(000):拥有者、组和其他用户都没有任何权限。

    • 文件:chmod 000 <file>

    • 目录:chmod 000 <directory>

一、Linux 系统中一切都是文件

在 Linux 系统中,几乎所有的资源都被抽象为文件,包括硬件设备(如硬盘、网卡等)、进程间通信、网络连接等。这种设计理念使得对各种资源的管理可以通过统一的文件操作方式来进行,大大简化了系统的架构和管理。

二、查看权限

ls 是列出目录内容的命令。

-l 选项以长格式显示文件信息,包括文件的权限、所有者、所属组、文件大小、修改时间等详细信息。

-a 选项显示包括隐藏文件在内的所有文件。

/etc/passwd是要查看的文件路径,这个文件存储了系统用户账号的基本信息。通过这个命令可以看到 /etc/passwd文件的权限设置、所有者、所属组等信息。

三、更改文件所有者

chown root file:

chown 是改变文件所有者的命令。

root 是新的所有者用户名,这里表示将文件的所有者改为"root"用户。

file 是要更改所有者的文件名称。执行这个命令后,文件的所有者将变为"root"用户。

四、修改文件权限

sudo chmod u=rwx, g+rw, o-r file:
  • sudo表示以管理员权限执行命令。

  • chmod是改变文件权限的命令。

  • u=rwx表示文件所有者(user)具有读(r)、写(w)、执行(x)权限。

  • g+rw表示文件所属组(group)增加读(r)和写(w)权限。

  • o-r表示其他用户(other)去除读(r)权限。

  • file是要修改权限的文件名称。

    sudo chmod u+x, g+w, o-r file:

  • 同样以管理员权限执行修改文件权限的操作。

  • u+x表示给文件所有者增加执行权限。

  • g+w表示给文件所属组增加写权限。

  • o-r表示去除其他用户的读权限。

  • file是目标文件。

    chmod 400 <file>:

  • chmod命令直接以数字方式设置文件权限。

  • 400是权限的数字表示,其中第一位数字"4"表示文件所有者的权限,这里代表读权限(r),因为读权限对应的数字是4;后两位数字"00"分别表示文件所属组和其他用户没有任何权限。

  • <file>是要设置权限的文件。 以下是提取的文章内容:

系统日志

ls -l /var/log
  • ls 是列出目录内容的命令。

  • -l 选项以长格式显示文件和目录的详细信息,包括权限、所有者、所属组、文件大小、修改时间等。

  • /var/log 是系统日志文件所在的目录。执行这个命令可以查看该目录下的日志文件列表及相关信息。

认证信息日志

sudo tail -3 /var/log/auth.log
  • sudo 表示以管理员权限执行命令。

  • tail 命令用于查看文件的末尾部分。

  • -3 表示显示文件的最后 3 行内容。 /var/log/auth.log 是一个在 Linux 系统(特别是 Debian 及其衍生发行版,如 Ubuntu)中常见的日志文件,用于记录与系统认证相关的事件。

以下是一些可能记录在 /var/log/auth.log 文件中的事件类型:

  1. 用户登录和注销

    • 成功登录

    • 失败登录尝试(例如,错误的密码)

    • 用户注销

  2. 远程认证

    • SSH 登录和注销

    • 使用其他远程认证协议(如 FTP、SMTP 等)的登录和注销

  3. 系统服务认证

    • 系统服务启动和停止时的认证事件

    • 使用 PAM(Pluggable Authentication Modules)进行的服务认证

  4. 密码更改和其他用户管理操作

    • 用户密码更改

    • 用户账户创建和删除

    • 用户权限更改

  5. 认证警告和错误

    • 多次失败的登录尝试

    • 认证模块错误

    • 其他与认证相关的警告和错误

查看和分析 /var/log/auth.log 文件

您可以使用文本编辑器或命令行工具(如 catlessgrep 等)查看和分析 /var/log/auth.log 文件。例如:

sudo less /var/log/auth.log

或者,如果您只想查看包含特定关键字的日志条目(例如,SSH 登录失败),可以使用 grep 命令:

sudo grep "Failed password for invalid user" /var/log/auth.log

注意事项

  • /var/log/auth.log 文件通常只包含与认证相关的事件,其他类型的系统日志(如系统消息、应用程序日志等)会记录在其他日志文件中(如 /var/log/syslog/var/log/messages)。

  • 由于 /var/log/auth.log 文件可能包含敏感信息(如用户名和密码),因此请确保只有授权用户可以访问该文件,并定期备份该文件以防止数据丢失。

总之,/var/log/auth.log 是一个重要的系统日志文件,用于记录与系统认证相关的事件。通过查看和分析该文件,您可以了解系统的登录活动、认证失败以及其他与认证相关的事件。

二进制日志

who /var/log/wtmp | tail -5
  • who 命令用于显示当前登录的用户信息。

  • /var/log/wtmp 是一个二进制日志文件,记录了系统的登录和注销信息。

  • | 是管道符号,将前一个命令的输出作为后一个命令的输入。

  • tail -5 表示显示最后 5 行内容。执行这个命令可以查看最近的五次登录或注销记录。

dmesg

  • dmesg 这个命令用于显示内核环形缓冲区(kernel ring buffer)中的信息,包括系统启动时的硬件检测信息、内核模块加载信息、设备驱动的初始化信息等。它可以帮助用户了解系统的硬件状态和内核的运行情况。

systemd 日志相关命令

systemd是一个系统和服务管理器,用于启动、停止和管理系统服务和守护进程

以下是关于Kali Linux中systemd的一些基本信息和常用命令:

基本信息

• systemd是Linux系统中常用的初始化系统和服务管理器,取代了传统的SysV init系统。

• systemd旨在提高启动速度、优化资源使用并提供更好的并行性。

• Kali Linux默认使用systemd作为其初始化系统和服务管理器。

常用命令

  1. 查看系统状态:

    systemctl status

这将显示系统的整体状态,包括已启动的服务和运行级别。

  1. 启动、停止和重启服务:

    sudo systemctl start <service_name>
    sudo systemctl stop <service_name>
    sudo systemctl restart <service_name>

例如,要启动、停止和重启ssh服务,可以使用以下命令:

sudo systemctl start ssh
sudo systemctl stop ssh
sudo systemctl restart ssh
  1. 启用和禁用服务:

    sudo systemctl enable <service_name>
    sudo systemctl disable <service_name>

启用服务会在系统启动时自动启动该服务,禁用服务则不会在系统启动时启动该服务。 例如,要启用和禁用ssh服务,可以使用以下命令:

sudo systemctl enable ssh
sudo systemctl disable ssh
  1. 查看服务状态:

    systemctl status <service_name>

例如,要查看ssh服务的状态,可以使用以下命令:

systemctl status ssh
  1. 查看所有服务的状态:

    systemctl list-units --type=service

这将显示系统中所有服务的状态。

journalctl

  • 这是一个用于查看和管理 systemd 日志的命令。systemd 是 Linux 系统的初始化系统和服务管理器,它会记录系统和服务的启动、运行和错误信息等日志。

  • journalctl 可以根据不同的参数来筛选、查看特定时间段、特定服务或特定优先级的日志记录。

1. 创建挂载点目录(如果尚未创建)

首先,确保挂载点目录(在本例中为/mnt/usb)已经存在。如果不存在,请使用mkdir命令创建该目录:

sudo mkdir -p /mnt/usb

-p选项表示如果父目录不存在,则一并创建。

2. 挂载设备

使用mount命令将/dev/sdb1设备挂载到/mnt/usb目录:

sudo mount /dev/sdb1 /mnt/usb

现在,/dev/sdb1设备的内容已经挂载到/mnt/usb目录,您可以通过访问/mnt/usb目录来访问设备上的文件。

3. 卸载设备

当您不再需要挂载的设备时,可以使用umount命令将其卸载:

sudo umount /mnt/usb

或者,您也可以使用设备名来卸载设备:

sudo umount /dev/sdb1

注意事项

  • 在挂载设备之前,请确保您具有足够的权限。通常需要使用sudo来执行挂载和卸载操作。

  • 在卸载设备之前,请确保没有正在使用该设备的进程。否则,卸载操作可能会失败,并显示"设备正忙"的错误消息。

    一、内存使用量

    free -m:

free命令用于显示系统内存的使用情况。

-m选项表示以兆字节(MB)为单位显示内存信息。执行这个命令后,会显示系统的总内存、已使用内存、可用内存、缓冲内存和缓存内存等信息,帮助用户了解系统当前的内存使用状态。

二、磁盘使用量

df -hT:

df命令用于显示磁盘空间使用情况。

-h选项表示以人类可读的格式(如KB、MB、GB等)显示磁盘空间大小。

-T选项显示文件系统类型。执行这个命令可以查看各个磁盘分区的总大小、已使用空间、可用空间以及文件系统类型等信息。

三、文件或目录大小

sudo du ./* -hsc:

sudo表示以管理员权限执行命令。

du命令用于统计文件或目录的磁盘使用空间。

./*表示当前目录下的所有文件和目录。

-h选项以人类可读的格式显示大小。

-s选项表示汇总显示每个参数的总大小。

-c选项表示在最后显示总计。执行这个命令可以查看当前目录下每个文件和目录的大小,并在最后显示总计大小。

四、查看硬盘分区

sudo fdisk -l:

sudo以管理员权限执行。

fdisk是一个磁盘分区工具。

-l选项表示列出系统中的所有磁盘分区信息,包括磁盘的大小、分区类型、分区编号、起始和结束扇区等。这个命令可以帮助用户了解系统的硬盘分区情况。

五、挂载分区

sudo mount /dev/sdb1 /mnt/usb:

sudo以管理员权限执行。

mount命令用于将一个文件系统挂载到指定的目录。

/dev/sdb1是要挂载的磁盘分区设备路径。

/mnt/usb是挂载点,即要将分区挂载到的目录。执行这个命令后,系统可以访问该分区中的文件和目录,就像访问本地文件系统中的其他目录一样。

基本网络工具

ifconfig:

  • 是一个用于配置和显示网络接口信息的命令行工具。

  • 它可以显示网络接口的 IP 地址、子网掩码、MAC 地址等信息,还可以用于启动、停止或配置网络接口。

ip addr:

  • 也是用于查看和管理网络接口的命令。

  • 它提供了比 ifconfig 更详细和灵活的网络接口信息显示,包括接口的状态、IP 地址、子网掩码、广播地址等。

sudo ifdown eth0:

  • sudo 表示以管理员权限执行命令。

  • ifdown 用于关闭指定的网络接口。

  • eth0 是网络接口名称,这里表示关闭名为"eth0"的网络接口。

sudo ifup eth0:

  • 同样以管理员权限执行。

  • ifup 用于启动指定的网络接口。

  • eth0 表示启动名为"eth0"的网络接口。

网络配置

/etc/network/interfaces:

  • 这是一个系统文件,用于配置网络接口的静态 IP 地址、子网掩码、网关等信息。

  • 在一些 Linux 发行版中,通过编辑这个文件可以实现网络接口的手动配置。

NetworkManager:

  • 是一个动态网络控制和配置守护进程。

  • 它可以自动管理网络连接,包括有线网络、无线网络和 VPN 连接等。

  • NetworkManager 提供了图形界面和命令行工具来配置和管理网络,使得网络配置更加方便和灵活。

  • 它可以自动检测网络变化,并根据配置自动连接到可用的网络。

一、网络连接状态查看工具

  • netstat -natup:
  • netstat是一个用于显示网络连接、路由表、接口统计等信息的命令。

  • -n选项表示以数字形式显示地址和端口号,避免进行域名解析。

  • -a选项显示所有的连接和监听端口。

  • -t选项显示TCP连接。

  • -u选项显示UDP连接。

  • -p选项显示与连接相关的进程ID和程序名称。

  • 执行这个命令可以查看系统当前的网络连接状态,包括连接的协议、本地地址和端口、远程地址和端口等信息。

  • ss -natup:

  • ss是另一个用于显示网络套接字状态的工具,它比netstat更快速和高效。

  • 选项的含义与netstat中的类似,用于显示TCP和UDP连接的状态、地址和端口信息,以及相关的进程信息。

二、二层地址查看工具

  • arp -en:
  • arp是地址解析协议(Address Resolution Protocol)的工具。

  • -e选项以详细格式显示ARP缓存表。

  • -n选项以数字形式显示IP地址,避免进行域名解析。

  • 执行这个命令可以查看系统的ARP缓存表,其中包含了IP地址和对应的MAC地址映射关系,用于在局域网中进行二层地址解析。

三、路由信息相关工具

  • route:
  • 用于显示和管理系统的路由表。

  • 可以查看系统当前的路由信息,包括目标网络、网关、子网掩码等。还可以用于添加、删除或修改路由条目。

  • ip route:

  • 是ip命令的一部分,用于管理系统的路由表。

  • 它提供了更强大和灵活的路由管理功能,可以进行更复杂的路由配置操作。

  • sudo ip route add 10.13.37.0/24 dev eth1:

- sudo表示以管理员权限执行命令。
- ip route add用于添加一条路由条目。
- 10.13.37.0/24是目标网络地址和子网掩码。
- dev eth1表示通过名为"eth1"的网络接口到达目标网络。
  • 执行这个命令可以向系统的路由表中添加一条路由,指定如何到达特定的网络。

四、路由跟踪工具

traceroute offensive-security.com

traceroute是一个用于跟踪数据包从本地主机到目标主机所经过的路由路径的工具。

offensive-security.com是目标主机的域名或IP地址。执行这个命令会逐跳显示数据包经过的路由器的IP地址和响应时间,帮助用户了解网络连接的路径和可能存在的网络问题。

ssh服务

一、启动服务

sudo systemctl start ssh:

sudo表示以管理员权限执行命令。

systemctl是用于管理系统服务的工具。

start ssh是启动名为"ssh"的服务,也就是启动SSH服务器,使得其他设备可以通过SSH协议连接到这台主机。

二、连接本地主机

ssh root@localhost:

ssh是Secure Shell的客户端命令。

root表示要以"root"用户身份进行登录。

@localhost表示连接到本地主机。执行这个命令可以使用SSH协议以"root"用户身份登录到本地主机,如果SSH服务已启动且配置正确,并且用户有相应的权限,就可以成功登录并获得一个远程命令行会话。

三、配置文件

/etc/ssh/sshd_config:

这是SSH服务器的主要配置文件。

其中包含了各种参数,可以用来配置SSH服务器的行为,比如端口号、允许的登录用户、认证方式、访问控制等。通过编辑这个文件,可以根据具体需求对SSH服务器进行定制化配置。

四、客户端配置 HashKnownHosts yes 是一个 SSH 配置选项,用于在使用 OpenSSH 客户端时对 known_hosts 文件中的主机密钥进行散列处理

以下是关于 HashKnownHosts yes 的一些详细信息:

作用

  • 当设置为 yes 时,SSH 客户端会在将主机密钥添加到 ~/.ssh/known_hosts 文件时对其进行散列处理。

  • 散列后的主机密钥无法直接阅读,从而提高了安全性。

优点

  1. 保护隐私:散列处理后的主机密钥无法直接阅读,这有助于保护您的 SSH 连接信息不被恶意用户窃取。

  2. 减少拒绝连接的风险 :由于散列后的主机密钥无法直接比较,因此即使 known_hosts 文件中的条目被篡改,SSH 客户端也不会拒绝连接。

缺点

  1. 无法手动删除特定主机的条目 :由于散列处理后的主机密钥无法直接阅读,因此您无法手动删除 known_hosts 文件中的特定主机条目。

  2. 无法轻松迁移:散列处理后的主机密钥在不同系统之间迁移时可能需要进行额外的配置。

配置方法

要将 HashKnownHosts yes 添加到 SSH 配置文件,请按照以下步骤操作:

  1. 使用文本编辑器打开 SSH 配置文件(通常位于 ~/.ssh/config):

    nano ~/.ssh/config

  2. 在文件末尾添加以下行:

    HashKnownHosts yes

  3. 保存并关闭文件。

现在,当您使用 OpenSSH 客户端连接到远程主机时,known_hosts 文件中的主机密钥将自动进行散列处理。

总之,HashKnownHosts yes 是一个 SSH 配置选项,用于在使用 OpenSSH 客户端时对 known_hosts 文件中的主机密钥进行散列处理,以提高安全性。要启用此选项,请将其添加到 SSH 配置文件中。

远程拷贝

scp root@1.1.1.1:/home/kali/bashrc Copiedbashrc:

scp是 Secure Copy 的缩写,用于在不同主机之间安全地复制文件。 root@1.1.1.1表示从 IP 地址为 1.1.1.1 的主机上以"root"用户身份进行操作。

/home/kali/.bashrc是源文件路径,即要从远程主机上复制的文件。 Copiedbashrc是目标文件名称或目标路径,即将远程文件复制到本地后的名称或存放位置。这个命令会从指定的远程主机复制 .bashrc 文件到本地,并命名为 Copiedbashrc

scp passwd -p kali ssh root@127.0.0.1:

这个命令看起来有点不太准确或不太清晰。一般来说,scp 的语法是 scp [源文件路径] [目标路径]。这里的"passwd -p kali ssh"不太明确具体含义,可能存在错误表述。如果是想复制名为"passwd"的文件到IP 为 127.0.0.1 的本地主机,可以写成 scp [远程用户名]@[远程主机 IP] [远程文件路径] [本地目标路径]。

二、查看历史命令

history

这个命令用于显示命令历史记录,即之前在当前终端会话中执行过的命令列表。可以通过查看历史记录来快速重复执行之前的命令,或者查找之前执行过的特定命令。

相关推荐
光路科技17 分钟前
八大网络安全策略:如何防范物联网(IoT)设备带来的安全风险
物联网·安全·web安全
滴水之功26 分钟前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
saynaihe30 分钟前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
星河梦瑾40 分钟前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
ldinvicible44 分钟前
How to run Flutter on an Embedded Device
linux
黑客Ela1 小时前
对安全的认知
安全
Hacker_LaoYi1 小时前
【漏洞分析】DDOS攻防分析(四)——TCP篇
网络·tcp/ip·ddos
爱吃水果蝙蝠汤1 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
YRr YRr2 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.2 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker