【网络安全】Linux基础详解
声明:学习视频来自 b 站 up 主 泷羽 sec,如涉及侵权马上删除文章
声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。
感谢泷羽 sec 团队的教学
视频地址:泷羽 secB 站
公众号:泷羽 sec
一、Linux基础知识
openssl
openssl passwd -1 123
openssI是一个开源的加密工具包,提供了各种加密、解密、签名、验证等功能。
password表示这个命令用于处理密码相关的操作。
-1参数指定使用MD5加密算法对密码“123”进行加密处理。MD5是一种常用的哈希算法,它将任意长度的输入数据转换为固定长度的输出(通常是128位的哈希值)。使用这个命令可以将“123”生成为MD5加密后的密文。
openssl passwd -5 123
-5参数表示使用SHA-256.哈希算法对密码“123”进行哈希加密处理。
SHA-256是一种更安全的哈希算法,它生成的哈希值长度为256位。每次对相同的密码进行SHA-256加密时,由于加密过程中通常会引入随机因素(如盐值等),所以每次生成的密文都是不一样的,这增加了密码的安全性,即使攻击者获得了密文,也很难通过逆向计算得到原始密码。
文件管理
创建空文件
touch newfile
删除文件
rm newfile
新建目录
mkdir newdir
删除空目录
rmdir newdir
重命名文件
mv file.txt new.txt
移动文件
mv newfile newdir2
拷贝文件
cp file.txt newwdir.txt
软连接
In -s original.txt symlink.txt
硬链接
In ~/offsec123.txt hardlink.txt
软链接和硬链接的区别:
硬链接相当于创建了一个新的文件名指向与源文件相同的inode(索引节点),当删除硬链接或者删除源文件,不影响其他的硬链接,只有当指向该inode的所有硬链接都被删除,源文件内容才可以被删除;硬链接只能在同一个文件系统中使用;硬链接不支持对目录进行创建。
软链接相当于快捷方式,如果删除源文件,则软链接失效;软链接可以跨文件系统和操作系统使用;软链接支持对目录和文件进行创建。
软链接通常用于方便管理,例如将复杂路径的文件链接到简单路径下;硬链接主要用于防止误删文件。
搜索文件
1.which【查找系统中可执行文件的路径,例如查找ls,使用 which ls】
echo $PATH
2.locate (local.db)
sudo updatedb
启动命令【updatedb用于更新locate所使用的文件数据库】
locate whoami.exe
【locate 用于快速查找文件,通过查询一个预先构建的文件数据库来实现】
3.find
find ~ -mtime 2 -ls| sort -k9 -k10| more
【-mitime2 表示查找2天内被修改过的文件;-ls 用于以长列表形式显示找到的文件信息;sort -k9 -k10 按照第九列和第十列的内容对文件信息进行排序;more用于分页显示结果,方便查看】
find . -type f -iname '*.sh' -mmin -30 -ls
【-type f 表示查找类型为普通文件;-iname '*.sh'表示查找以 .sh 结尾的文件;-mmin -30表示30分钟内修改过的文件】
find . -name '*.svn' -exec rm -rf {};
【-name '*.svn' 查找文件名为 .svn 的文件;-exec rm -rf {} 表示对找到的每一个结果执行 rm -rf 命令】
find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/nul1
【-user root 表示查找所有者为root 的文件;-type f 表示普通文件;-perm -o=w 表示查找其他用户具有写权限的文件;-name '*.sh' 表示查找以 .sh 结尾的文件;2>/dev/null 表示将错误输出重定向到/dev/null ,既不显示错误信息;2表示(stderr)标准错误,1表示(stdout)标准输出,0表示(stdin)标准输入,其中0、1、2被称为文件描述符;> 表示输入,>> 表示追加】
注意 :
-iname 和 -name 的区别:-iname 对大小写不敏感,-name 对大小写敏感。
find命令根据时间查找文件:
-atime
:按文件的访问时间(天)过滤。这个选项后面跟的数字表示天数,例如 -atime 2
表示查找在当前时间之前 48 小时内被访问过的文件
-ctime
:按文件的状态改变时间(天)过滤。这个选项后面跟的数字同样表示天数,例如 -ctime -7
表示查找在最近 7 天内状态发生过改变的文件
【状态发生改变:通常指文件的元数据(文件的属性,不包括文件的内容,常见的元数据包括修改时间、访问时间、创建时间、状态改变时间)发生了变化,例如权限、所有者、组、链接、大小、时间戳】
-mtime
:按文件的修改时间(天)进行过滤
-amin
:按文件的访问时间(分钟)过滤。这个选项类似于 -atime
,但是以分钟为单位,例如 -amin -30
表示查找在最近 30 分钟内被访问过的文件【其余类似】
-newermt
:按指定的日期来查找文件。这个选项后面跟的是一个日期,格式为 YYYY-MM-DD
,例如 -newermt 2022-01-01
表示查找在2022年1月1日之后被修改过的文件
用户账户
用户账号数据库
/etc/shadow
/etc/password
组账号
cat/etc/group
禁用账号
sudo passwd -l username
chage -E 1990-01-01 kali
passwd -S username
一、用户账号数据库相关文件
/etc/passwd
:这是一个重要的系统文件,存储了系统中用户账号的基本信息。
每行代表一个用户,包含了角户名、密码占位符、角户ID、用户组ID、用户描述信息、用户主目录、用户默认shelI等字段。
/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” 选项后面跟着一个日期,表示设置用户账户的过期时间,超过这个时间后,账户将无法使用,需要重新设置过期时间。
passwd -S username
“passwd” 命令的另一个用法;“-S ” 选项用于显示指定用户账户的密码状态信息,包括账户是否被锁定、密码是否已设置、密码最后一次修改时间等。
文件系统权限
linux系统中一切都是文件
查看权限
ls -la /etc/passwd
更改文件所有者
chown root file
修改文件权限
sudo chmod u=rwx ,g+rw,o-r file
sudo chmod u+x ,g+w o-r file
chmod 400 file
一、Linux系统中-一切都是文件
在Linux系统中,几乎所有的资源都被抽象为文件,包括硬件设备(如硬盘、网卡等)、进程间通信、网络连接等。这种设计理念使得对各种资源的管理可以通过统一的文件操作方式来进行,大大简化了系统的架构和管理。
二、查看权限
ls -al /etc/passwd
ls 是列出目录内容
-l 是以长格式显示文件信息,包括文件权限,所有者,所有组,文件大小,修改时间等详细信息
-a 选项是显示包括隐藏文件在内的所有文件
/etc/passwd 是要查看的文件路径
三、更改文件所有者
chown root file
chown 是改变文件所有者的命令
root 是新的所有者的用户名,这里表示将文件所有者改为root
四、修改文件权限
sudo chmod u=rwx g+rw o-r file
chmod用于修改文件权限
u=rwx 表示文件所属用户权限修改为 可读可写可执行
g+rw 表示文件所属组用户的权限为可读可写
o-r 表示其他用户的权限去掉可读
chmod 400 file
400 是数字权限表示,rwx权限分别用数字表示为421,该命令是将文件所有者权限改为4也就是可读,其他用户的权限均为不可读不可写不可执行
系统日志
ls -l /var/log
认证信息日志
sudo tail -n 3 /var/log/auth.log
【查看文件的前3行】
二进制日志
who /var/log/wtmp | tail -n 5
【who 用于显示当前登录的用户信息;wtmp是一个二进制日志文件,记录了系统的登录和注销信息;查看wtmp的信息,也可以使用专用的 last 命令来查看 】
dmesg
【该命令用于显示内核环形缓冲区(kernel ring buffer)中的信息,包括系统启动时的硬件检测信息、内核模块加载信息、设备驱动的初始化信息等。它可以帮助用户了解系统的硬件状态和内核的运行情况。】
systemd日志
journalctl
【用于查看和管理systemd日志的命令。systemd是Linux系统的初始化系统和服务管理器 ,它会记录系统和服务的启动、运行和错误信息等日志。journalctl可以根据不同的参数来筛选、查看特定时间段、特定服务或特定优先级的日志记录。
存储管理
【内存使用量】 free -m
free用于显示系统内存使用情况;-m 表示以兆字节(MB)为单位显示内存信息
执行这个命令后,会显示系统的总内存、已使用内存、可用内存、缓冲内存和缓存内存等信息,帮助用户了解系统当前的内存使用状态。
【磁盘使用量】 df -hT
df命令用于显示磁盘使用情况
-h 选项表示以人类可读的格式(例如KB、MB、GB)等显示磁盘空间大小
-T 选项显示文件系统类型。执行这个命令可以查看各个磁盘分区的总大小、已使用空间、可用空间以及文件系统类型等信息
【文件或目录大小】 sudo du ./* -hsc
du命令用于统计文件或目录的磁盘使用空间
./*
表示当前目录下的所有文件和目录
-h 以人类可读的格式显示大小
-s 汇总显示每个参数的总大小
-c 在最后显示总计;执行这个命令可以查看当前目录下的每个文件和目录的大小,并在最后显示总计大小
【查看硬盘分区】 sudo fdisk -l
fdisk 是一个磁盘分区工具
-l 表示列出系统中所有磁盘分区信息,包括磁盘大小、分区类型、分区编号、起始和结束扇区等。【这个命令可以帮助用户了解系统的磁盘分区情况】
【挂载分区】 sudo mount /dev/sdb1 /mnt/usb
mount 用于将一个文件系统挂载到指定目录
/dev/sdb1 是要挂载的磁盘分区设备路径
/mnt/usb 是挂载点,既要将分区挂载到的目录【执行这个命令后,系统可以访问该分区中的文件和目录】
挂载 :将新的磁盘安装完毕后,通过fdisk工具将磁盘进行分区格式化,之后通过挂载到某个目录,就可以通过该目录访问新的磁盘。
网络
基本网络工具
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发行版中,通过编辑这个文件可以实现网络接口的手动配置】
arch系系统 网络配置文件存在位置为 /etc/systemd/network/ens33.network
ens33为网络接口名称。当需要配置静态网络时:
1. sudo systemctl disable --now NetworkManager.service
1. 先停止networkmanager
2. sudo vim /etc/systemd/network/ens33.network
1. 创建网络接口相关 network文件
3. 在文件中写入
[Match]
Name=enp0s3
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
4. sudo systemctl enable --now systemd-networkd.service
1. 保存文件并重新启动 NetworkManager 服务
5. 如果需要恢复为 DHCP,需要做的就是删除我们之前创建的文件(或将其重命名为不包含接口名称的名称),然后重新启动 NetworkManager 服务。
NetworkManager
【是一个动态网络控制和配置守护进程 ;NetworkManager提供了图形界面和命令行工具来配置和管理网络,使得网络配置更加方便和灵活。它可以自动检测网络变化,并根据配置自动连接到可用的网络;它可以自动管理网络连接,包括有线网络、无线网络和VPN连接等】
网络连接
netstat -natup
【netstat 是一个用于显示网络连接、路由表、接口统计等信息的命令;
-n选项表示以数字形式显示地址和端口号,避免进行域名解析;
-a选项显示所有的连接和监听端口;
-t选项显示TCP连接;
-u选项显示UDP连接;
-p选项显示与连接相关的进程ID和程序名称。
执行这个命令可以查看系统当前的网络连接状态,包括连接的协议、本地地址和端口、远程地址和端口等信息。】
【补充
-l 只列出监听中的连接;
-s 列出各个协议下的网络统计数据;
-c 持续输出信息;
-o 显示每个连接的计时器信息】
ss -natup
【ss是另一个用于显示网络套接字状态的工具,他比netstat 更快速和高效;
选项的含义于上述一致】
二层地址查看工具
arp -en
【arp是地址解析协议的工具;
-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协议连接到这台主机】
【配置文件】 /etc/ssh/sshd_config
【这是SSH服务器的主要配置文件;
其中包含了各种参数,可以用来配置SSH服务器的行为,比如端口号、允许的登录用户、认证方式、访问控制等。通过编辑这个文件,可以根据具体需求对SSH服务器进行定制化配置】
【客户端配置】 hashknownHosts yes
【通常情况下,/.ssh/known_hosts文件用于存储已知的远程主机的公钥信息,以确保连接的安全性。这个配置选项可能是指示对已知主机文件中的主机名进行哈希处理,可以可以提高一定的安全性,但具体效果可能因不同的SSH实现而有所差异。】
~/.ssh
【这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件;
通常包含私钥文件(如id_rsa)、公钥文件(如id_rsa.pub)以及已知主机文件(known_hosts)等。这些文件用于SSH客户端的身份认证和连接管理】
远程拷贝
scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
【scp是SecureCopy的缩写,用于在不同主机之间安全地复制文件;
root@1.1.1.1表示从IP地址为1.1.1.1的主机上以以“root”用户身份进行操作;
/home/kali/.bashrc是源文件路径,即要从远程主机上复制的文件;
Copiedbashrc是目标文件名称或自标路径,即将远程文件复制到本地后的名称或存放位置;
这个命令会从指定的远程主机复制.bashrc文件到本地,并命名为Copiedbashrc】
scp localfile.txt username@remotehost:/home/username/
将本地文件复制到romotehost 的/home/username/ 路径下
查看历史命令
使用 history
命令,即可查看到近期输入的命令列表。
二、Linux命令详解
Linux目录介绍
/bin二进制可执行命令
/etc系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home用户主目录的基点
/lib标 准程序设计库,又叫动态链接共享库
/sbin 超级管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公共的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载的文件系统
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里面
/proc虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var某些大文件的溢出区,比方说各种服务器的日志文件
/usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录
/usr/bin众多的应用程序
/usr/sbin超级用户的一些管理程序
基本命令详解
- ls(显示当前目录的文件)
- clear(清屏)
- cd(切换目录)
cd /
cd /home - pwd(显示你当前所在的目录)
- vim(文本编辑器)
vim 1.txt - touch(创建文件)
touch 2.txt - mkdir 123【创建一个名为123的目录】
- mkdir -p (-p参数 遍历)
mkdir -p 123/1/2/3【递归创建】 - rm -r 123(删除123目录)【-i 递归删除;-r 强制删除文件夹和他的所有内容;-f强制删除】
- cp(copy的简写)
- mv(move 的简写)
- cat(查看文件内容)
- head(查看文件前半段内容)【加 -n 3,可查看文件前三行内容】
- tail (查看文件后半段内容)【加 -n 3 或 -3,可查看文件后三行内容】
- more(分页查看文件内容)【用于文件内容过多时,使用cat不方便查看】
- ssh(用于远程连接)
基本命令
- chmod rwx -R (r表示读,数字表示4,w表示写,数字表示2,x表示执行,数字表示1)【-R 表示递归更改文件和目录】
- chown (改变文件所属用户以及所属组)
chown root:root 1.txt 【将1.txt修改所属用户为root,所属组为root组】 - useradd&adduser
adduser(会自动为创建的用户指定目录,系统shelI版本,会在创建时输入用户密码)。
useradd(需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码,无主目录,没有指定shell版本)
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]
useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]
【-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的起始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 制定用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s<shell> 指定用户登入后所使用的shell。
-u<uid> 指定用户ID。】
使用useradd添加账户后,可使用 passwd 命令修改或添加密码
passwd[-dkls][-u-f>][用户名称]
【d删除密码。本参数仅有系统管理者才能使用。
-f强制执行。仅root权限才能操作。
-k设置只有在密码过期失效后,方能更新。
-l锁住密码,不能修改密码。仅能通过root权限操作。
-S列出密码的相关信息。本参数仅有系统管理者才能使用。
-u解开已上锁的帐号。
-w在距多少天提醒用户修改密码;仅能root权限操作。】
用户创建完成后,可以使用su 用户名
切换到用户 - userdel -f 用户名(删除用户)
- sudo 以管理员权限运行某程序
- passwd 修改账户密码
Linux资源耗尽病毒
使用 alert 或 notify-send等工具发送通知
#!/bin/bash
while true
do
notify-send "无限弹窗" "这是一个无限弹窗"
sleep 2
done
保存这个脚本到一个文件中,比如infinite_popup.sh,然后给它执行权限:chmod +x infinite_popup.sh
运行这个脚本:
/infinite_popup.sh
注: 该实例仅用于学习参考,不得用于任何违法犯罪活动,任何使用或依赖于本文信息所造成的法律后果均与本人无关。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义