Linux基础-1
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
感谢泷羽sec 团队的教学
视频地址:linux基础(1)_哔哩哔哩_bilibili
目录
一、openssl
1、openssl passwd -1 123
2、openssl passwd -5 123
命令解释
二、文件管理
补充:什么是软链接和硬链接
三、搜索文件
1.which
命令解释:
2.locate
命令解释
3.find
命令解析
四、账号相关命令
1.用户账号数据库:
2.组账号:
3.禁用账号:
五、文件系统权限
1.linux 系统中一切都是文件
2.查看权限:
(1) ls -la /etc/passwd
3.更改文件所有者:
(1)chown root file
4.修改文件权限:
(1)sudo chmod u=rwx,g+rw,o-r file;
(2)sudo chmod u+x,g+w,o-r file;
(3)chmod 400
补充:如何通过数字设置文件权限。
六、查看日志
1.系统日志:
ls -l /var/log:
2.认证信息日志:
sudo tail -3 /var/log/auth.log;
3.二进制日志:
who /var/log/wtmp | tail -5;
代码解释
输出解释:
4.dmesg:
5.systemd 日志:
journalctl
补充:使用 journalctl进行相关日志操作:
七、存储管理
1.内存使用量:
free -m
命令解释:
内容解释:
2.磁盘使用量
df -hT
命令解释
内容解释
3.文件或目录大小
sudo du./* -hsc
命令解释:
4.查看硬盘分区
sudo fdisk -l
命令解释
5.挂载分区
sudo mount /dev/sdb1 /mnt/usb
命令解释
八、基本网络枚举
基本网络工具:
(1) ifconfig
补充:
(2)ip addr
补充:
(3)sudo ifdown eth0
(4)sudo ifup eth0
网络配置:
(1)/etc/network/interfaces
(2) NetworkManager
九、其他查看工具
1.网络链接查看工具:
(1)netstat -natup
(2)ss -natup
命令解释:
内容解析
区别
2.二层地址查看工具:
arp -en
命令解释
内容解释:
3.路由信息查看工具
(1)route
输出内容解释
(2)ip route
内容解析:
(3)sudo ip route add 10.13.37.0/24 dev eth1
命令解析:
4.路由追踪工具
traceroute offensive-security.com
命令解析
内容解释:
十、SSH服务
1.启动服务:
(1)sudo systemctl start ssh
(2)ssh root@localhost
2.配置文件:
(1)/etc/ssh/sshd_config
3.客户端配置:
(1)hash knownHosts yes
(2)~/.ssh
十一、远程拷贝
(1)scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
十二、查看历史命令
history
一、openssl
1、openssl passwd -1 123
2、openssl passwd -5 123
命令解释
openssl
:这是一个强大的开源密码学工具包,提供了多种加密、解密、证书管理等功能。passwd
:是openssl
工具中的一个子命令,用于处理密码相关的操作。-1
:这是一个选项参数。在这里,-1
表示使用 MD5 算法对密码进行加密。不过需要注意的是,MD5 算法由于存在安全漏洞,在现代安全实践中已经不推荐用于密码加密。123
:这是要进行加密处理的原始密码- 如果要查看openssl相关命令,可以使用-h参
二、文件管理
-
创建空文件:
touch newfile
-
删除文件:
rm newfile
-
新建目录:
mkdir newdir
-
删除目录:
rmdir newdir
-
重命名文件:
mv old_name.txt new_name.txt
-
移动文件:
mv a.txt /tmp
-
拷贝文件:
cp file.txt newdir.txt
-
软连接:
ln -s original.txt symlink.txt
命令解析:
- 这是一个在类 Unix 系统(如 Linux、macOS 等)中使用的命令。
ln
是创建链接的命令,-s
是一个选项,表示创建符号链接(也称为软链接)。 original.txt
是源文件(也称为目标文件),即符号链接将指向的实际文件。symlink.txt
是要创建的符号链接的名称。
工作原理:
- 当你执行这个命令后,系统会创建一个名为
symlink.txt
的符号链接。这个符号链接本质上是一个特殊类型的文件,它包含了指向original.txt
文件的路径信息。 - 对于操作系统和应用程序来说,当它们访问
symlink.txt
时,实际上是通过符号链接中存储的路径信息,找到并访问original.txt
。就好像symlink.txt
是original.txt
的一个 “快捷方式”。
- 这是一个在类 Unix 系统(如 Linux、macOS 等)中使用的命令。
-
硬链接:
ln ~/offsec123.txt hardlink.txt
命令解析
ln
命令用于创建链接,没有-s
选项时,默认创建硬链接。/home/kali/new.txt
是源文件路径,这里使用/home/kali表示用户的主目录,所以完整路径是用户主目录下的new.txt
文件。hardlink.txt
是要创建的硬链接的名称。
工作原理
- 硬链接实际上是给文件创建了一个额外的目录条目,指向文件在文件系统中的相同数据块。这意味着硬链接和源文件本质上是同一个文件的不同名称,它们共享相同的文件内容和属性(如权限、修改时间等)。
- 如果对源文件或硬链接中的任何一个进行修改,另一个也会看到相同的更改,因为它们指向相同的数据。
补充:什么是软链接和硬链接
(1)本质不同
硬链接:同一个文件,多个名称。
软链接:不同的文件。
(2)跨分区
硬链接:不支持跨分区。
软链接:支持跨分区。
(3)目录
硬链接:不支持对目录创建。
软链接:支持对目录创建。
(4)相互关系
硬链接:删除某一个硬链接,另一个硬链接不影响使用。只有当所有硬链接都被删除后才能被真正删除
软链接:原始文件和软链接有依赖关系,原始文件删了,软链接就失效了。
(5)inode编号
硬链接:inode编号是相同的。
软链接:inode编号不同。
(6)链接数
硬链接:删除一个硬链接,硬链接的链接数会有变化。
软链接:删除一个软链接,链接数不会有变化,删除的相当于是一个文件(或快捷方式)。
(7)相对路径:原始文件路径
硬链接:硬链接的相对路径,是相对的当前工作目录的相对路径。
软链接:软链接的原始文件路径是,相对的软链接的相对路径,而不是相对当前工作目录。
(8)文件类型
硬链接:硬链接的文件类型是,原来是什么就是什么,例如:原来是普通文件,还是普通文件。
软链接:软链接的文件类型是L
(9)命令的实现不一样
硬链接:ln
软链接:ln -s
三、搜索文件
1.which
命令解释:
查找可执行文件可以使用 which
命令,如查找 echo
命令的路径:which echo
使用man which
可以查看which指令的详细参数,以下的常用的:
(1)which可以一次性找出多个命令
(2)-a 可以查看所有的匹配路径
2.locate
这个命令依赖于一个预先创建的数据库,通常比 find
命令更快。
命令解释
-
语法:
locate [文件名模式]
-
例如,查找名为
local.db
的文件:locate local.db
。 -
当执行 “locate local.db” 时,系统会在数据库中搜索文件名包含 “local.db” 的文件,并输出其路径(如果存在的话)。如果数据库中没有关于 “local.db” 的记录,或者文件不存在,命令将不会输出任何内容。
-
需要注意的是,
locate
命令依赖的数据库不是实时更新的。如果刚刚创建或修改了文件,可能无法立即通过locate
命令找到。在这种情况下,可以使用 “sudo updatedb” 命令来更新数据库,以便让locate
命令能够找到最新的文件。
3.find
使用 find
命令
- 基本语法:
find [起始目录] [查找条件] [执行动作]
。 - 例如,查找当前用户主目录下最近 2 天内修改过的文件:
find ~ -mtime 2
。 - 查找特定类型的文件,如查找当前目录及其子目录下所有扩展名为
.sh
的文件:find. -type f -iname '*.sh'
。 - 可以结合其他选项进行更复杂的查找,如按照文件大小、所有者等条件查找。
命令解析
-
find ~ -mtime 2 -l s | sort -k9 -k10 | more
:find ~ -mtime 2
:在用户主目录(~
)下查找在最近 2 天内被修改过的文件。-mtime
选项用于根据文件的修改时间进行查找。-l s
:以长格式列出找到的文件信息,并显示文件大小以字节为单位。| sort -k9 -k10
:将上一步的输出通过管道传递给sort
命令,按照第 9 个和第 10 个字段进行排序。这里的字段通常对应文件的某些属性,如大小、修改时间等。| more
:分页显示排序后的结果,方便查看。
-
find. -type f -iname '*.sh' -mmin -30 -ls
:find.
:在当前目录下查找。-type f
:查找普通文件。-iname '*.sh'
:查找文件名以.sh
结尾的文件,不区分大小写。-mmin -30
:查找在最近 30 分钟内被修改过的文件。-ls
:以长格式列出找到的文件信息,并显示文件大小以字节为单位。
-
find. -name '.svn' -exec rm -rf {} \;
:解释一下,这里的 “;” 表示命令的结束。在使用 “-exec” 选项执行命令时,需要用 “{}” 代表查找到的文件名,并在命令末尾加上 “;” 来正确执行命令。
-exec rm -rf {};
:对找到的每个文件或目录执行rm -rf
命令进行删除。{}
会被替换为查找到的文件名或目录名。- 在
find /home/kali/桌面 -name 'new.txt' -exec rm -rf {} \;
这个命令中,“;” 表示-exec
选项所执行命令的结束标志。如果没有这个转义字符 “\”,系统可能会将 “;” 解释为命令行中的其他含义,而不是作为-exec
执行的结束标志,从而导致命令执行错误
-
find / -user root -type f -perm -ow -name '*.sh' 2>/dev/null
:find /
:从根目录开始查找。-user root
:查找所有者为root
用户的文件。-type f
:查找普通文件。-perm -ow
:查找具有其他用户(other)可写权限的文件。-name '*.sh'
:查找文件名以.sh
结尾的文件。2>/dev/null
:将错误输出重定向到/dev/null
,即不显示错误信息。
四、账号相关命令
1.用户账号数据库:
(1)/etc/passwd
- 这是一个系统文件,存储了系统中用户账号的基本信息。
- 每行代表一个用户,包含了用户名、密码占位符、用户 ID、组 ID、用户信息说明、用户主目录、用户默认 shell 等信息。
(2)/etc/shadow;
- 这个文件也与用户账号相关,主要存储用户密码的加密信息以及其他密码相关的属性。
- 包含用户名、加密后的密码、密码最后一次修改的时间、密码最短使用期限、密码最长使用期限、密码过期前警告时间、密码过期后宽限时间、账号失效时间等信息。
2.组账号:
cat /etc/group;
- 这个命令用于查看
/etc/group
文件的内容。 /etc/group
文件存储了系统中的组账号信息。每行代表一个组,包含组名、组密码占位符、组 ID 和组成员列表等信息。
3.禁用账号:
(1)sudo passwd -l username
- 使用
sudo
以管理员权限执行passwd
命令。 -l
选项用于锁定用户账号。当执行这个命令后,指定的用户账号将被锁定,用户无法登录系统。
(2)chage -E 1990-01-01 kali
chage
命令用于修改用户密码的过期信息。-E
选项后面跟一个日期,表示设置用户账号的过期时间。在这个例子中,将用户 “kali” 的账号过期时间设置为 “1990-01-01”,在这个日期之后,该账号将无法使用。
(3)passwd -S username。
- 这个命令用于查看指定用户账号的密码状态信息。
- 它会显示用户账号的状态,如密码是否已设置、密码是否过期、账号是否被锁定等信息。
五、文件系统权限
1.linux 系统中一切都是文件
在 Linux 系统中,几乎所有的资源都被抽象为文件,包括硬件设备(如硬盘、网卡等)、进程间通信、网络连接等。这种设计理念使得对各种资源的管理可以通过统一的文件操作方式来进行,大大简化了系统的架构和管理。
2.查看权限:
(1) ls -la /etc/passwd
具体解释如下:
- “ls” 是列出目录内容的命令。
- “-l” 选项表示以长格式显示文件信息,包括文件的权限、所有者、所属组、文件大小、修改时间等详细信息。
- “-a” 选项表示显示包括隐藏文件在内的所有文件。
- “/etc/passwd” 是要查看的文件路径,这个文件存储了系统用户账户的基本信息。
输出内容解释
- “-rw-r--r--” 表示文件权限,第一个 “root” 是文件所有者,第二个 “root” 是文件所属组,“3213” 是文件大小,“5月8日 14:01” 是文件的修改时间,“/etc/passwd” 是文件名。
3.更改文件所有者:
(1)chown root file
- “chown” 是改变文件所有者和所属组的命令。
- “root” 是要将文件所有者更改为的用户名,在这里表示将文件的所有者设置为 “root” 用户。
- “file” 是要更改所有者的文件名。
执行这个命令后,指定文件 “file” 的所有者将变为 “root” 用户。如果要同时更改文件的所属组,可以使用以下语法:“chown root:group file”,其中 “group” 是要设置的所属组名。
4.修改文件权限:
(1)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
是要更改权限的文件名。
(2)sudo chmod u+x,g+w,o-r file;
- 同样以管理员权限执行。
u+x
表示给文件的所有者增加可执行权限。g+w
表示给文件的所属组增加可写权限。o-r
表示将文件的其他用户(other)权限设置为不可读(-r)file
是要更改权限的文件名
(3)chmod 400
chmod
改变文件权限。400
是一个八进制数字,表示权限设置。其中第一位数字 “4” 代表所有者的权限,这里表示可读(r)权限,用数字 4 表示是因为可读权限在八进制中对应的值为 4。后两位数字 “00” 分别代表所属组和其他用户的权限,这里表示没有任何权限。<file>
是要更改权限的文件名
补充:如何通过数字设置文件权限。
在 Linux 中,可以使用三位八进制数字来设置文件权限。
每个文件的权限分为三组:所有者(user)、所属组(group)和其他用户(other)。每组权限又分为读(read)、写(write)和执行(execute)三种权限,分别用数字表示为:
- 读权限(r):4
- 写权限(w):2
- 执行权限(x):1
具体设置方法如下:
-
确定所需的权限组合:
- 例如,要设置文件的权限为所有者有读、写和执行权限,所属组和其他用户只有读权限,那么权限组合为 “rwxr--r--”。
-
将权限组合转换为数字:
- 对于 “rwxr--r--”,所有者权限 “rwx” 对应的数字为 4 + 2 + 1 = 7;所属组权限 “r--” 对应的数字为 4 + 0 + 0 = 4;其他用户权限 “r--” 对应的数字也为 4。所以,用数字表示的权限为 744。
-
使用
chmod
命令设置权限:- 例如,要将文件 “file.txt” 的权限设置为 “rwxr--r--”,可以使用命令
chmod 744 file.txt
。
- 例如,要将文件 “file.txt” 的权限设置为 “rwxr--r--”,可以使用命令
例如一些其他常见的权限设置:
644
表示所有者有读、写权限,所属组和其他用户只有读权限(“rw-r--r--”)。755
表示所有者有读、写和执行权限,所属组和其他用户有读和执行权限(“rwxr-xr-x”)。
六、查看日志
1.系统日志:
ls -l /var/log:
- “ls” 是列出目录内容的命令。
- “-l” 选项表示以长格式显示文件信息,包括文件的权限、所有者、所属组、文件大小、修改时间等详细信息。
- “/var/log” 是要查看的目录路径,这个目录通常存放着系统的各种日志文件。
2.认证信息日志:
sudo tail -3 /var/log/auth.log;
命令解释:
- “sudo” 表示以管理员权限执行命令。这通常是必要的,因为 /var/log/auth.log 可能受到权限限制,普通用户可能无法直接查看。
- “tail” 是一个用于查看文件末尾内容的命令。
- “-3” 选项指定要显示文件的最后三行。
- “/var/log/auth.log” 是要查看的日志文件路径,这个文件记录了系统的认证相关信息,例如用户登录、身份验证尝试等。
执行这个命令后,会在终端中显示 /var/log/auth.log 文件的最后三行内容,这可以帮助管理员快速了解最近的认证活动情况,以便进行故障排除或安全审计。
3.二进制日志:
who /var/log/wtmp | tail -5;
代码解释
- “who” 命令通常用于显示当前登录到系统的用户信息。当给定 “/var/log/wtmp” 这个参数时,它会读取这个登录记录文件并显示其中的信息,包括登录用户、登录终端、登录时间等。
- “|” 是管道符号,它将 “who” 命令的输出作为输入传递给下一个命令 “tail -5”。
- “tail -5” 表示显示文件的最后 5 行内容。在这个场景中,就是显示 “/var/log/wtmp” 文件中最后 5 行的登录记录信息。
输出解释:
每一行代表一个登录记录,其内容分别表示:
- 第一个字段是登录的用户名,例如“user1”“user2”等。
- 第二个字段是登录终端的名称,常见的有“pts/0”“pts/1”等,表示伪终端设备,通常是通过远程连接工具(如 SSH)或在本地打开的终端窗口产生的。
- 第三个字段是登录的时间,格式为“年-月-日 时:分”,显示了用户登录到系统的具体时间点。
4.dmesg:
- 在系统启动时,“dmesg” 可以显示硬件设备的初始化状态,如硬盘、网卡、显卡等的识别和配置情况。
- 如果某个硬件设备出现问题,内核可能会在环形缓冲区中记录相关的错误信息,通过 “dmesg” 可以查看这些信息以进行故障排查。
- 当内核模块被加载或卸载时,也会有相应的消息记录在环形缓冲区中。
通常,“dmesg” 的输出可以通过管道(“|”)结合其他命令进行进一步的处理和过滤,以便更方便地查看特定类型的信息。例如,“dmesg | grep eth0” 可以用来查找与网卡 “eth0” 相关的消息。
5.systemd 日志:
journalctl
补充:使用 journalctl进行相关日志操作:
(1)查看日志
-
查看所有日志:
- 执行 “journalctl” 命令可以显示系统中所有的 systemd 日志记录,包括内核日志、系统服务日志、应用程序日志等。日志按照时间顺序排列,最新的日志在底部。
-
查看特定时间段的日志:
- 可以使用 “--since” 和 “--until” 选项来指定要查看的日志时间段。例如,“journalctl --since yesterday” 将显示从昨天到现在的日志,“journalctl --since "2024-11-01 00:00:00" --until "2024-11-08 12:00:00"” 可以查看特定日期范围内的日志。
-
查看特定服务的日志:
- 通过 “-u” 选项加上服务名称可以查看特定服务的日志。例如,“journalctl -u apache2” 可以查看 Apache Web 服务器的日志。
(2)过滤和搜索日志
-
根据关键字搜索:
- 使用 “journalctl” 结合 “grep” 命令可以根据关键字搜索日志。例如,“journalctl | grep error” 可以查找包含 “error” 关键字的日志记录。
-
根据优先级过滤:
- 可以使用 “-p” 选项根据日志的优先级进行过滤。例如,“journalctl -p err” 只显示错误级别的日志。
(3)操作日志
-
跟踪日志实时输出:
- 使用 “-f” 选项可以实时跟踪日志的输出,类似于 “tail -f” 命令。这对于监控系统活动或排查问题时非常有用。
-
显示日志的特定字段:
- 可以使用 “-o” 选项指定要显示的日志字段。例如,“journalctl -o short” 以简洁格式显示日志,“journalctl -o json” 以 JSON 格式显示日志。
-
清理日志:
- 系统管理员可以使用特定的工具或命令来清理旧的日志,以防止日志文件占用过多的磁盘空间。但在清理日志时需要谨慎,确保不会丢失重要的信息。
七、存储管理
1.内存使用量:
free -m
命令解释:
“free -m” 是一个在 Linux 系统中用于查看内存使用情况的命令。
具体解释如下:
- “free” 是用于显示系统内存使用情况的命令。
- “-m” 选项表示以兆字节(MB)为单位显示内存信息。
内容解释:
- “total”:系统总的物理内存大小。
- “used”:已使用的内存大小。
- “free”:空闲的内存大小。
- “shared”:被共享的内存大小。
- “buff/cache”:用于缓存和缓冲的内存大小。
- “available”:估算的可用内存大小。
通过这个命令,你可以快速了解系统当前的内存使用状况,以便进行性能监控和资源管理。例如,如果 “used” 值接近 “total” 值,可能表示系统内存资源紧张,需要考虑优化内存使用或增加内存容量。
2.磁盘使用量
df -hT
命令解释
“df -hT” 是一个在 Linux 系统中用于查看磁盘使用情况的命令。
具体解释如下:
- “df” 是用于显示磁盘空间使用情况的命令。
- “-h” 选项表示以人类可读的格式(如以 GB、MB 等单位显示磁盘大小)显示信息。
- “-T” 选项表示同时显示文件系统类型。
内容解释
- Filesystem”:文件系统所在的设备路径。
- “Type”:文件系统类型,如 ext4、xfs 等。
- “Size”:文件系统的总大小。
- “Used”:已使用的磁盘空间大小。
- “Avail”:可用的磁盘空间大小。
- “Use%”:磁盘空间的使用率。
- “Mounted on”:文件系统的挂载点。
通过这个命令,你可以了解系统中各个磁盘分区的使用情况,包括磁盘大小、已使用空间、可用空间以及文件系统类型等信息,这对于管理磁盘空间和监控系统存储资源非常有用。
3.文件或目录大小
sudo du./* -hsc
命令解释:
- “sudo” 表示以管理员权限执行命令。这可能是必要的,因为某些目录可能需要更高的权限才能查看其大小。
- “du” 是用于估算文件空间使用情况的命令。
- “./*” 表示当前目录下的所有文件和隐藏文件。这里的 “.” 代表当前目录,“ * ” 是通配符,表示匹配任何文件名。
- “-h” 选项表示以人类可读的格式(如以 K、M、G 等单位显示大小)显示文件大小。
- “-s” 选项表示只显示每个参数的总计大小,而不是分别显示每个子目录和文件的大小。
- “-c” 选项表示在输出结果中显示总计大小。
- 其中每一行表示一个文件或目录的大小,最后一行显示总计大小。
4.查看硬盘分区
sudo fdisk -l
命令解释
- “sudo” 表示以管理员权限执行命令。查看硬盘分区信息通常需要较高的权限。
- “fdisk” 是一个用于磁盘分区操作的工具。
- “-l” 选项表示列出系统中所有的硬盘设备及其分区信息。
5.挂载分区
sudo mount /dev/sdb1 /mnt/usb
命令解释
- “sudo” 表示以管理员权限执行命令。挂载存储设备通常需要管理员权限。
- “mount” 是用于挂载文件系统的命令。
- “/dev/sdb1” 是要挂载的存储设备的设备路径。在这个例子中,“/dev/sdb1” 通常表示一个硬盘分区、USB 存储设备分区或其他可移动存储设备的分区。
- “/mnt/usb” 是挂载点,即存储设备在文件系统中的挂载位置。当存储设备被挂载后,你可以通过访问 “/mnt/usb” 目录来访问存储设备中的文件和目录。
执行这个命令后,系统会将指定的存储设备分区挂载到指定的挂载点上,使你能够在文件系统中访问该设备上的内容。
八、基本网络枚举
基本网络工具:
(1) ifconfig
执行 “ifconfig” 命令可以显示系统中所有网络接口的详细信息,包括接口名称(如 eth0、wlan0 等)、IP 地址、子网掩码、广播地址、MAC 地址等。
补充:
配置网络接口:
- 可以使用 “ifconfig” 命令临时配置网络接口的参数,如 IP 地址、子网掩码等。
- 例如,“ifconfig eth0 192.168.1.200 netmask 255.255.255.0” 可以将 “eth0” 接口的 IP 地址设置为 “192.168.1.200”,子网掩码设置为 “255.255.255.0”。但这种配置是临时的,系统重启后会恢复到原来的配置。
(2)ip addr
“ip addr” 是一个在 Linux 系统中用于查看和管理网络接口地址信息的命令。
输出内容解析:
- 数字编号(如 “1:”“2:”)代表不同的网络接口。
- “lo” 通常是回环接口,用于本地测试。“eth0” 等可能是以太网接口或其他类型的网络接口。
<LOOPBACK,UP,LOWER_UP>
等表示接口的状态标志,如 “UP” 表示接口已启用,“LOWER_UP” 表示物理层连接正常。- “link/loopback” 或 “link/ether” 后面的内容是接口的硬件地址(MAC 地址)。
- “inet” 后面的内容是接口的 IPv4 地址和子网掩码。例如 “192.168.1.100/24” 表示 IP 地址为 “192.168.1.100”,子网掩码为 “255.255.255.0”。
- “inet6” 后面的内容是接口的 IPv6 地址和子网前缀长度。
- “scope” 表示地址的范围,如 “host” 表示本地主机,“global” 表示全局可路由地址。
补充:
管理网络接口
-
启用和禁用接口:
- 可以使用 “ip link set up” 来启用一个网络接口,例如 “ip link set eth0 up”。
- 使用 “ip link set down” 来禁用一个网络接口,例如 “ip link set eth0 down”。
-
设置 IP 地址:
- “ip addr add / dev ” 可以为一个网络接口添加 IP 地址。例如 “ip addr add 192.168.1.200/24 dev eth0”。
- “ip addr del / dev ” 可以删除一个网络接口上的 IP 地址。
与 “ifconfig” 相比,“ip addr” 命令功能更强大,并且在新的 Linux 系统中更常用。它可以进行更精细的网络接口管理,并且支持更多的网络配置选项。
(3)sudo ifdown eth0
- sudo” 表示以管理员权限执行命令。关闭网络接口通常需要管理员权限。
- “ifdown” 是一个用于关闭网络接口的工具。
- “eth0” 是要关闭的网络接口名称。在 Linux 系统中,网络接口通常以 “ethX”(以太网接口)、“wlanX”(无线接口)等命名。
执行这个命令后,系统会停止 “eth0” 接口的运行,断开该接口的网络连接。这可能会导致使用该接口的网络服务中断。
(4)sudo ifup eth0
- sudo” 表示以管理员权限执行命令。启动网络接口通常需要较高的权限。
- “ifup” 是用于启动网络接口的工具。
- “eth0” 是要启动的网络接口名称。
执行这个命令后,系统会尝试启动 “eth0” 接口,使其恢复网络连接。如果该接口的配置信息正确,并且硬件设备正常工作,接口将被成功启动,并可以进行网络通信。
例如,如果之前使用 “sudo ifdown eth0” 关闭了 “eth0” 接口,之后可以使用 “sudo ifup eth0” 来重新启动它。
网络配置:
(1)/etc/network/interfaces
在 Linux 系统中,“/etc/network/interfaces” 是一个用于网络配置的文件。这个文件用于定义系统的网络接口配置信息,包括静态 IP 地址分配、动态 IP 地址获取(通过 DHCP)、网络接口的启动和关闭等。它是一种传统的网络配置方式,尤其在没有图形界面或需要进行服务器级别的网络配置时非常有用。
(2) NetworkManager
etworkManager 是一个在现代 Linux 系统中广泛使用的网络连接管理工具。
主要功能
-
自动连接管理:
- 它可以自动检测和连接到可用的网络,包括有线网络、无线网络和移动宽带网络。例如,当你带着笔记本电脑从一个地方移动到另一个地方时,NetworkManager 会自动扫描并连接到范围内信号最强的已知无线网络。
- 支持多种连接类型的优先级设置,以便在多个可用网络中选择最合适的连接。
-
动态配置:
- 可以根据网络环境的变化动态调整网络设置。例如,当从一个使用静态 IP 地址的网络切换到一个使用 DHCP 的网络时,NetworkManager 可以自动获取新的 IP 地址和其他网络配置信息,无需手动更改设置。
- 对于无线网络,它可以自动保存和恢复连接的密码和其他配置参数。
-
图形界面和命令行接口:
- 许多 Linux 桌面环境提供了图形化的网络设置界面,这些界面通常是由 NetworkManager 提供支持的。用户可以通过直观的图形界面轻松管理网络连接,包括连接、断开、设置优先级等操作。
- 同时,也可以通过命令行工具(如 “nmcli”)来管理网络连接,这对于服务器管理或脚本化操作非常有用。
九、其他查看工具
1.网络链接查看工具:
(1)netstat -natup
命令解析
“netstat -natup” 是一个在 Linux 和类 Unix 系统中用于查看网络连接状态和网络统计信息的命令。
具体解释如下:
- “netstat” 是一个用于显示网络连接、路由表、接口统计等信息的命令。
- “-n” 选项表示以数字形式显示地址和端口号,而不进行名称解析,这样可以加快命令的执行速度并提供更清晰的输出。
- “-a” 选项表示显示所有的网络连接和监听端口,包括已建立的连接、监听状态的端口以及处于各种状态的连接。
- “-t” 选项表示只显示 TCP 协议的连接。
- “-u” 选项表示只显示 UDP 协议的连接。
- “-p” 选项表示显示与每个连接相关的进程 ID 和进程名称。
内容解析:
其中各列的含义如下:
- “Proto”:连接使用的协议,如 TCP 或 UDP。
- “Recv-Q” 和 “Send-Q”:接收队列和发送队列中的数据量。
- “Local Address”:本地地址和端口号。
- “Foreign Address”:远程地址和端口号。
- “State”:连接的状态,如 LISTEN(监听状态)、ESTABLISHED(已建立连接)等。
- “PID/Program name”:与连接相关的进程 ID 和进程名称。
通过这个命令,你可以了解系统当前的网络连接情况,包括哪些服务正在监听哪些端口、哪些连接已经建立以及与每个连接相关的进程信息等。这对于网络故障排查、安全审计和性能监控都非常有帮助。
(2)ss -natup
“ss -natup” 是一个在 Linux 系统中用于查看网络连接状态的命令。
命令解释:
- “ss” 是一个功能强大的网络连接查看工具,它可以替代传统的 “netstat” 命令。
- “-n” 选项表示不进行名称解析,以数字形式显示地址和端口号,加快命令执行速度并提供更清晰的输出。
- “-a” 选项表示显示所有的套接字。
- “-t” 选项表示只显示 TCP 协议的连接。
- “-u” 选项表示只显示 UDP 协议的连接。
- “-p” 选项表示显示与每个连接相关的进程信息。
内容解析
- “Netid”:网络协议类型,如 tcp、udp 等。
- “State”:连接状态,如 ESTAB(已建立连接)、UNCONN(未连接状态)等。
- “Recv-Q” 和 “Send-Q”:接收队列和发送队列中的数据量。
- “Local Address:Port”:本地地址和端口号。
- “Peer Address:Port”:远程地址和端口号。
- “users:(("process_name",pid=process_id,fd=file_descriptor))”:与连接相关的进程信息,包括进程名称、进程 ID 和文件描述符。
区别
“ss”命令相比 “netstat” 具有一些优势,如更快的执行速度、更丰富的输出选项和对各种网络协议的更全面支持。通过 “ss -natup”,你可以快速了解系统中 TCP 和 UDP 连接的状态以及相关的进程信息,这对于网络故障排查、性能优化和安全审计非常有帮助。
2.二层地址查看工具:
arp -en
命令解释
- “arp” 是用于操作 ARP 缓存的命令。
- “-e” 选项以详细格式显示 ARP 缓存内容,包括 IP 地址、硬件地址(MAC 地址)和接口名称等信息。
- “-n” 选项表示以数字形式显示 IP 地址,而不进行名称解析。
内容解释:
- “Address”:IP 地址。
- “HWtype”:硬件类型,通常为 “ether” 表示以太网。
- “HWaddress”:硬件地址(MAC 地址)。
- “Flags”:标志,如 “C” 表示永久条目(通过手工配置)或动态条目(通过 ARP 解析获得)。
- “Mask”:掩码(通常不显示具体值)。
- “Iface”:网络接口名称。
补充:地址解析协议(Address Resolution Protocol,ARP)是一种在计算机网络中用于将 IP 地址解析为物理地址(通常是 MAC 地址)的协议。
3.路由信息查看工具
(1)route
“route” 是一个在 Linux 和类 Unix 系统中用于查看和管理系统路由表的命令
输出内容解释
- Destination”:目的网络地址。如果是 “default”,表示默认路由,用于所有目的地址不在其他特定路由条目中的数据包。
- “Gateway”:网关地址,即数据包要发送到的下一跳路由器的 IP 地址。如果是 “0.0.0.0”,表示直接连接的网络,不需要经过网关。
- “Genmask”:子网掩码。
- “Flags”:路由标志,如 “U” 表示该路由可用,“G” 表示该路由使用网关。
- “Metric”:路由度量值,用于决定在多个可用路由中选择哪一个。通常,度量值越小的路由优先使用。
- “Ref”:路由的引用计数,通常用于内部管理。
- “Use”:该路由被使用的次数统计。
- “Iface”:该路由使用的网络接口名称。
补充:添加和删除路由
-
添加路由:
- 可以使用 “route add” 命令添加新的路由条目。例如,“route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2 dev eth0” 表示添加一个到 192.168.2.0/24 网络的路由,通过网关 192.168.1.2 并使用接口 “eth0”。
-
删除路由:
- 使用 “route del” 命令可以删除路由条目。例如,“route del -net 192.168.2.0 netmask 255.255.255.0” 可以删除到 192.168.2.0/24 网络的路由。
(2)ip route
“ip route” 是一个在 Linux 系统中用于查看和管理路由表的命令。
内容解析:
- “default via 192.168.1.1 dev eth0” 表示默认路由,即当目标地址不在其他特定路由条目中时,数据包将通过网关地址 192.168.1.1 并使用接口 eth0 发送出去。
- “192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100” 表示对于 192.168.1.0/24 这个网络,直接通过接口 eth0 进行通信,源地址为 192.168.1.100。
(3)sudo ip route add 10.13.37.0/24 dev eth1
命令解析:
- “sudo” 表示以管理员权限执行命令。添加路由通常需要管理员权限。
- “ip route add” 是用于添加路由的命令。
- “10.13.37.0/24” 是目标网络地址和子网掩码。这表示要添加一条到 10.13.37.0 这个网络,子网掩码为 255.255.255.0 的路由。
- “dev eth1” 表示通过名为 “eth1” 的网络接口来到达目标网络
4.路由追踪工具
traceroute offensive-security.com
命令解析
- Traceroute 向目标主机发送一系列具有不同生存时间(TTL)值的 IP 数据包。
- 当一个数据包的 TTL 减为 0 时,中间的路由器会向源主机发送一个 ICMP “Time Exceeded”(时间超时)消息。
- 通过逐渐增加 TTL 值,Traceroute 可以确定数据包经过的每一跳路由器,并记录下每一跳的 IP 地址和响应时间。
内容解释:
其中每一行表示数据包经过的一跳,包括以下信息:
- 跳数序号。
- 路由器的 IP 地址(括号内为 IP 地址的解释,如果有域名解析,也会显示域名)。
- 三个响应时间,表示发送数据包到收到该跳路由器响应的时间,单位通常为毫秒。
十、SSH服务
1.启动服务:
(1)sudo systemctl start ssh
- sudo” 表示以管理员权限执行命令。启动系统服务通常需要管理员权限。
- “systemctl” 是一个用于管理系统服务的命令。
- “start” 是 systemctl 的一个操作选项,表示启动指定的服务。
- “ssh” 是要启动的服务名称,在这里指 SSH 服务。
执行这个命令后,系统会启动 SSH 服务,使得其他设备可以通过 SSH 协议连接到该系统。
(2)ssh root@localhost
- ssh” 是 Secure Shell 的缩写,是一种用于在网络上进行安全远程登录和其他安全网络服务的协议。
- “root” 是要登录的用户名。在 Linux 系统中,“root” 是具有最高权限的超级用户。
- “@localhost” 表示目标主机是本地计算机。“localhost” 是一个特殊的主机名,通常指向本地计算机自身。
执行这个命令后,系统会尝试使用SSH 协议以 “root” 用户身份登录到本地计算机。如果 SSH 服务已经在本地计算机上运行,并且 “root” 用户的密码正确(或者使用了密钥认证),就可以成功登录到本地计算机的命令行界面,并获得 “root” 用户的权限。
2.配置文件:
(1)/etc/ssh/sshd_config
通过这个文件,可以对 SSH 服务器的各种行为和参数进行配置,以满足不同的安全和功能需求。
主要配置项
Port
:指定 SSH 服务器监听的端口号。默认是 22,但可以根据需要进行更改以增强安全性或避免与其他服务冲突。例如:Port 2222
。ListenAddress
:指定 SSH 服务器监听的 IP 地址。可以是特定的 IP 地址或 “0.0.0.0” 表示监听所有接口。例如:ListenAddress 192.168.1.100
。Protocol
:指定使用的 SSH 协议版本。可以设置为 1 或 2,或者同时支持两个版本。目前,建议只使用版本 2,因为它更安全。例如:Protocol 2
。PermitRootLogin
:控制是否允许 “root” 用户通过 SSH 登录。可以设置为 “yes”(允许)、“no”(不允许)或 “without-password”(只允许密钥登录)。例如:PermitRootLogin no
,以增强安全性,不允许直接以 “root” 用户身份登录。PasswordAuthentication
:控制是否允许使用密码进行 SSH 登录。可以设置为 “yes” 或 “no”。例如:PasswordAuthentication no
,强制使用密钥认证,提高安全性。PubkeyAuthentication
:控制是否允许使用公钥进行 SSH 登录。可以设置为 “yes” 或 “no”。例如:PubkeyAuthentication yes
,启用公钥认证。AuthorizedKeysFile
:指定存储用户公钥的文件路径。默认通常是 “~/.ssh/authorized_keys”。例如:AuthorizedKeysFile.ssh/authorized_keys
。LogLevel
:设置 SSH 服务器的日志级别。可以是 “QUIET”、“FATAL”、“ERROR”、“INFO”、“VERBOSE”、“DEBUG” 等。例如:LogLevel INFO
,以记录较为详细的日志信息,有助于故障排查和安全审计。
3.客户端配置:
(1)hash knownHosts yes
命令解析
- Hash KnownHosts yes” 这个设置通常在 SSH 的配置文件中出现,它用于控制 SSH 客户端对已知主机列表(known_hosts 文件)的处理方式。
- “yes”:当设置为 “yes” 时,SSH 客户端会对 known_hosts 文件中的主机名和密钥进行哈希处理。这样做的目的主要是为了增强安全性,防止已知主机列表中的信息被恶意软件或攻击者轻易读取和利用。
(2)~/.ssh
“~/.ssh” 是在 Linux 和类 Unix 系统以及一些其他操作系统中,通常位于用户主目录下的一个目录,主要用于存储与 SSH(Secure Shell)相关的配置文件和密钥等信息。
十一、远程拷贝
(1)scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
语法:scp [参数] [用户名]@[远程主机 IP 地址或域名]:[远程文件路径] [本地文件路径或目标位置]
这行内容是使用 scp
(Secure Copy)命令从 IP 地址为 “1.1.1.1” 的远程主机上复制文件的操作记录。
具体解释如下:
- “scp” 是 Secure Copy 的缩写,用于在网络上安全地复制文件。
- “root@1.1.1.1:/home/kali/.bashrc” 表示要从 IP 地址为 “1.1.1.1” 的主机上,以用户 “root” 的身份,复制位于 “/home/kali/” 目录下的 “.bashrc” 文件。
- “Copiedbashrc” 表示 “.bashrc” 文件已成功复制,重新命名为Copiedbashrc。
这个操作可以将远程主机上的特定文件复制到本地系统,或者反过来,将本地文件复制到远程主机。scp
命令在进行文件复制时会使用加密的方式传输数据,确保数据的安全性。
十二、查看历史命令
history
在命令行中,“history” 命令用于显示用户最近执行过的命令历史记录。
例如,在 Linux 或类 Unix 系统的终端中输入 “history”,会列出之前执行过的一系列命令,每条命令前面通常会有一个编号。
这个命令可以帮助用户回顾之前执行过的操作,方便重复执行某些命令或者查找之前执行过的特定命令。同时,一些命令行环境还允许用户通过特定的快捷键(如向上箭头键)来快速浏览和重复执行历史命令。