泷羽sec-linux基础-1(上)

 声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频)

本章课程链接:linux基础(1)_哔哩哔哩_bilibili

一、OpenSSL

OpenSSL是KaLi Linux中一个非常重要的安全工具库,它提供了丰富的加密、解密、签名和验证等功能。

OpenSSL由三个主要部分组成:

1‌.libcrypto‌:这是一个加密库,包含了众多加密算法,提供通用的加密功能。
2.libssl‌:实现SSL/TLS功能,用于安全通信。
3‌.openssl‌:一个多功能的命令行工具,可以用于加密、解密、自建CA、创建证书、吊销证书等操作。

命令如:

openssl 命令 [选项... ] [参数... ]

openssl list 标准命令摘要命令密码命令密码算法摘要算法mac 算法公钥算法

openssl no-XXX [ options ]

openssl基本命令

检查版本:

 openssl version -a

查看帮助

openssl help
openssh -h

                可以得到:

└─# openssl -h
help:

Standard commands
asn1parse         ca                ciphers           cmp               
cms               crl               crl2pkcs7         dgst              
dhparam           dsa               dsaparam          ec                
ecparam           enc               engine            errstr            
fipsinstall       gendsa            genpkey           genrsa            
help              info              kdf               list              
mac               nseq              ocsp              passwd            
pkcs12            pkcs7             pkcs8             pkey              
pkeyparam         pkeyutl           prime             rand              
rehash            req               rsa               rsautl            
s_client          s_server          s_time            sess_id           
smime             speed             spkac             srp               
storeutl          ts                verify            version           
x509              

Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        md4               md5               
rmd160            sha1              sha224            sha256            
sha3-224          sha3-256          sha3-384          sha3-512          
sha384            sha512            sha512-224        sha512-256        
shake128          shake256          sm3               

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       aria-128-cbc      aria-128-cfb      
aria-128-cfb1     aria-128-cfb8     aria-128-ctr      aria-128-ecb      
aria-128-ofb      aria-192-cbc      aria-192-cfb      aria-192-cfb1     
aria-192-cfb8     aria-192-ctr      aria-192-ecb      aria-192-ofb      
aria-256-cbc      aria-256-cfb      aria-256-cfb1     aria-256-cfb8     
aria-256-ctr      aria-256-ecb      aria-256-ofb      base64            
bf                bf-cbc            bf-cfb            bf-ecb            
bf-ofb            camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  
camellia-192-ecb  camellia-256-cbc  camellia-256-ecb  cast              
cast-cbc          cast5-cbc         cast5-cfb         cast5-ecb         
cast5-ofb         des               des-cbc           des-cfb           
des-ecb           des-ede           des-ede-cbc       des-ede-cfb       
des-ede-ofb       des-ede3          des-ede3-cbc      des-ede3-cfb      
des-ede3-ofb      des-ofb           des3              desx              
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           
rc2-cfb           rc2-ecb           rc2-ofb           rc4               
rc4-40            seed              seed-cbc          seed-cfb          
seed-ecb          seed-ofb          sm4-cbc           sm4-cfb           
sm4-ctr           sm4-ecb           sm4-ofb           zlib              
zstd              

加密与解密
-ciphername:指定加密算法。
-in filename:指定要加密或解密的文件存放路径。
-out filename:指定加密或解密后的文件存放路径。
-e:加密操作。
-d:解密操作。
-a/-base64:使用Base64编码格式。
-salt:自动插入一个随机数作为文件内容加密的盐值,默认选项。
-K key:指定密钥。
-iv IV:指定初始化向量(IV)。


数字签名与验证
-sign filename:使用私钥进行数字签名。
-verify filename:使用公钥验证签名。
-dgst:生成单向加密摘要,如MD5、SHA等。


证书管理
genrsa:生成RSA私钥。
rsa:RSA密钥管理。
req:证书请求管理,如生成证书请求文件、自签名证书等。

随机生成20字节(数字可改变)

openssl rand -hex 20

进阶可以参照学习:【OpenSSL】OpenSSL 教程_openssl教程-优快云博客

二、文件管理 

创建文件

touch 【new】

或多个文件一起新建

删除命令

rm 【rm newfile】

或多个一起删除

创建空文件夹

mkdir 【new】

或一次性创建多个文件夹

也可以创建隐藏文件夹

删除文件夹

rm 【new】

或删除多个文件

重命名文件

mv 【file.txt】 【new.txt】

移动文件

cp  [选项] old.txt  <新路径>

-i:交互模式,在覆盖已存在的文件前提示用户确认。
-r或-R:递归复制目录及其包含的所有子目录和文件。
-p:保留原文件的属性(权限、修改时间等)。
-v:显示详细的复制进度信息。
-u:仅当源文件比目标文件新时才进行复制。
-f或--force:强制复制,即使目标文件已存在也不提示,直接覆盖。

软连接与硬链接:

软连接和硬链接是Linux系统中常见的两种文件链接方式,它们在文件管理和共享方面发挥着重要作用。

软连接(Symbolic Link 或 Soft Link)
软连接是一种特殊类型的文件,它包含了另一个文件或目录的路径名。当访问软连接时,系统会通过该路径名找到并访问目标文件或目录。软链接类似于Windows系统中的快捷方式,它存储的是目标文件的路径,而不是文件本身的数据。这意味着如果目标文件被移动、重命名或删除,软链接将会失效。
特点:
1.独立性:软连接是一个独立的文件,它有自己的inode号,并占用少量的存储空间(通常只有几个字节)。
2.可跨文件系统:软连接可以跨越不同的文件系统,将一个文件或目录链接到另一个文件系统中。
3.可链接目录:与硬链接不同,软连接可以链接到目录。
4.目标文件依赖性:如果目标文件或目录被移动、重命名或删除,软连接将会失效,成为“死链接”。
用途
快捷方式:软连接可以创建桌面或文件夹中的快捷方式,方便用户快速访问目标文件或目录。
软件安装:在某些操作系统中,软连接常用于指向已安装软件的可执行文件,简化软件的升级和管理 。

硬链接(Hard Link)
共享inode:硬链接直接指向文件的数据所在的位置,而不是文件名。多个硬链接实际上是共享同一存储空间的文件名,它们具有相同的inode号。
文件系统限制:硬链接只能在同一个文件系统中创建,不能跨文件系统。
特点
1.无独立性:硬链接并不是独立的文件,它不会增加目标文件的inode数或存储空间占用。
2.不可跨文件系统:硬链接不能跨越不同的文件系统,因为每个文件系统都有自己独立的inode空间。
3.不可链接目录:在大多数Unix-like系统中,不能为目录创建硬链接。
4.目标文件无关性:删除具有多个硬链接的文件(即,其链接数大于1的文件)只会减少其链接数,而不会从文件系统中删除该文件,直到其链接数减至0为止。
用途
共享文件:多个用户或进程可以使用硬链接来共享同一个文件,节省存储空间。
备份文件:硬链接可以用于文件备份,因为它们不会占用额外的磁盘空间(除了链接文件本身的inode和文件名信息)。
系统文件管理:一些系统文件经常需要在不同位置进行引用,通过创建硬链接可以简化管理和维护。
防止误删:通过创建多个硬链接,可以确保即使删除了一个链接,文件本身也不会被删除,从而防止误删。

( 1 )本质不同
硬链接:同一个文件,多个名称。
软链接:不同的文件。
( 2 )跨分区
硬链接:不支持跨分区。
软链接:支持跨分区。
( 3 )目录
硬链接:不支持对目录创建。
软链接:支持对目录创建。
( 4 )相互关系
硬链接:删除某一个硬链接,另一个硬链接不影响使用。只有当所有硬链接都被删除后才能被真正删除
软链接:原始文件和软链接有依赖关系,原始文件删了,软链接就失效了。
( 5 ) inode 编号
硬链接: inode 编号是相同的。
软链接: inode 编号不同。
( 6 )链接数
硬链接:删除一个硬链接,硬链接的链接数会有变化。
软链接:删除一个软链接,链接数不会有变化,删除的相当于是一个快捷方式。
( 7 )相对路径:原始文件路径
硬链接:硬链接的相对路径,是相对的当前工作目录的相对路径。
软链接:软链接的原始文件路径是,相对的软链接的相对路径,而不是相对当前工作目录。
( 8 )文件类型
硬链接:硬链接的文件类型是,原来是什么就是什么,例如:原来是普通文件,还是普通文件。
软链接:软链接的文件类型是 L
( 9 )命令的实现不一样
硬链接: ln
软链接:ln -s  需要指定原始文件的路径

三、搜索文件

1 which

检索范围:PATH环境变量里面指定的路径中查找;
优点:查找速度快  缺点:仅支持二进制文件

which 【选项】 [命令]

————选项————

-a:显示所有符合条件的命令的路径,而不仅仅是第一个找到的。
-n:指定一个要检查的路径的最大数量。这个选项在某些版本的which中可能不被支持。
-p:这个选项在某些版本的which中用于与-a结合使用,以特定格式显示路径,但在其他版本中可能不存在或具有不同的含义。
-v:显示命令的详细信息,包括其版本信息(如果可用)。然而,并非所有版本的which都支持此选项。

locate


locate是Linux系统提供的一种快速检索全局文件的系统命令,它并不是真的去检索所以系统目录,而是检索一个数据库文件locatedb(Ubuntu系置/var/cache/locate/locatedb),该数据库文件包含了系统所有文件的路径索引信息,所以查找速度很快。
Linux系统动创建这个数据库,并且每天动更新次,所以对于新变动的文件(如新安装或新拷贝)使locate命令是查不到的。为了避免这种情况,可以在使locate命令之前,先执行一下"sudo updatedb"命令来手动更新数据库。

查找类型:所有文件;
优点:查找速度快,且支持所有文件类型  缺点:不支持新变动的文件检索,需要手动更新数据库

locate -h

Usage: plocate [OPTION]... PATTERN...

  -b, --basename                             search only the file name portion of path names
  -c, --count                                    print number of matches instead of the matches
  -d, --database DBPATH                 search for files in DBPATH
                                                      (default is /var/lib/plocate/plocate.db)
  -i, --ignore-case                           search case-insensitively
  -l, --limit LIMIT                              stop after LIMIT matches
  -0, --null                                       delimit matches by NUL instead of newline
  -N, --literal                                    do not quote filenames, even if printing to a tty
  -r, --regexp                                   interpret patterns as basic regexps (slow)
      --regex                                     interpret patterns as extended regexps (slow)
  -w, --wholename                            search the entire path name (default; see -b)
      --help                                       print this help
      --version                                   print version information
 

-b、 --basename            仅搜索路径名的文件名部分

-c,                              计算打印匹配数而不是匹配数

-d,                              数据库DBPATH搜索DBPATH中的文件

                                 (默认为/var/lib/pplocate/plocate.db)

-i,                             不敏感地忽略案例搜索大小写

-l,                             limit匹配后limit停止

-0,                            null用NUL而不是换行符分隔匹配项

-N,                            literal不要引用文件名,即使打印到tty

-r,                             regexp将模式解释为基本正则表达式(慢速)

                                  正则表达式将模式解释为扩展正则表达式(慢)

-w,--wholesname       搜索整个路径名(默认值;请参阅-b)

find

查找类型:所有文件;
检索范围:指定路径;
描述:find命令是Linux最强大的查找命令,参数多,用法丰富。

优点:功能强大,且支持组合命令;  缺点:如果指定的检索路径层级复杂,则检索速度较慢

基本用法

find <检索路径> <选项> <搜索内容>

1.按文件名
find 路径 -name "文件名"
例:查找/home目录下的所有以.txt为后缀的文件

find /home -name "*.txt"


2.按文件类型查询

find 路径 -type [类型]

————类型:

普通文件 f               目录d                 符号链接l        块设备文件b

字符设备文件c        socket文件s        管道文件p

一般需要搜索的文件类型就只有普通文件(f),目录(d),链接文件(l)。

例:查找/bin/log路径下的所有文件

find /bin/log -type f 

3.按照文件大小查找

find 【路径】 -size [范围]

————范围

+表示大于                     -表示小于           等于不需要符号

大小:M(必须大写)        k(必须小写)        c(表示字符)

例:查找/bin/log路径下0k到10k的文件

4.按照文件日期查找
  4.1按照创建日期查找

find [路径] -ctime -n/+n


  4.2按照修改日期查找

find [路径] -mtime -n/+n


4.3按照访问日期查找

  find 路径 -atime -n/+n
#-n:n天以内                +n:n天以外

类unix系统中每个文件都有三种时间戳

访问时间(-atime、-amin):用户最近一次访问文件的时间。

修改时间(-mtime、-mmin):文件最后一次被修改的时间。

元数据更改时间(-ctime、-cmin) :文件权限、所有权等最后一次被修改的时间。

5.按深度查找
5.1查找起始点以下n层的目录,不超过n层

find [路径] -maxdepth n(层数)
#-maxdepth 和 -mindepth选项可以限制find命令遍历的目录深度
find -maxdepth 2 -mindepth 1 -name "*.pdf"


 5.2搜距离起始点n层以下的目录(即最少n层)

find 路径 -mindepth n(层数)

按权限或所有权查找文件

#-perm选项find可以帮助我们按特定权限搜索文件:
#如:搜索所有具有 777(读、写、执行)权限的文件
find . -type f -perm 777
# 打印用户www拥有的文件
find -type f -user www

找到文件并执行命令

find . -type f -atime +365 -exec rm -rf {} \;

#上面的-exec选项后面的命令是rm -rf,用于删除文件。{}是查找结果的占位符。

#注意:占位符{}非常重要,尤其是在您想删除文件时。因为如果您不使用它,该命令将针对所有文件而不是您刚刚通过该find命令找到的文件执行。  
#     结尾 \; 也很重要  命令-exec必须以分号结束  "\"表示转义

whereis

which 命令用于查找指定命令(脚本文件)的可执行文件路径,在系统的【PATH】变量指定的路径中搜索某个系统命令的位置,并返回搜索结果(默认只返回第1个匹配结果)。

which [参数] [命令名称]

————参数

  • -a:列出所有匹配项,而不仅是第1个匹配项

————命令名称

  • -b:只查找二进制文件(可执行文件)。
  • -m:只查找手册页文件(man pages)。
  • -s:只查找源代码文件。
  • -u:搜索默认路径之外的目录(需要更新数据库)。
  • -f:取消路径名中的 -(连字符)的特殊处理。

例1:查找 ls 命令的位置,默认只返回第1个匹配结果

which ls

例2:查找 ls 命令的位置,返回所有匹配结果

which -a ls

在系统特定目录下查找文件

whereis 命令只是在特定目录下查找文件并返回路径,并没有查找硬盘上的所有文件,所以查找速度非常快。

whereis [参数] [文件名或目录]

———— 参数

-l:列出 whereis 会查找的几个主要目录                 -b:只查找 binary 二进制格式的文件

-m:只查找说明文件 manual 路径下的文件            -s:只查找 source 源文件

-u:查找不在上述 3 个项目当中的其它特殊文件

四、用户账号数据库

/etc/password           ————————

/etc/shadow              ————————

/etc/group                ————————组账号

1、/etc/passwd

    用于存储用户的基本信息

 输出结果每行记录一个用户的信息,每行以6个“:”分隔为7个部分,从左到右依次为用户的

①名称②登录口令情况③用户ID④所属组ID⑤用户的全称等其它详细信息⑥用户的home目录⑦用户的默认登录shell,如:

sudo head /etc/passwd 

反馈:
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

或可以:

 sudo head -3 /etc/passwd

反馈:

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

sudo head:显示          【-3】最后三条,或可以修改数值

2、/etc/shadow

用户密码文件,/etc/passwd对所有用户都有读的权限,/etc/shadow理论上只对root用户有读权限,相对来说很安全,但是之前说过,超级用户很多权限不受限制,所以超级用户可以编辑该文件。主要含义为:

1登录名:2加密口令:3最后一次修改时间:4最小时间间隔:5最大时间间隔:6警告时间:7不活动时间:8失效时间:9标志

sudo head /etc/shadow

root:!:19935:0:99999:7:::
daemon:*:19935:0:99999:7:::
bin:*:19935:0:99999:7:::
sys:*:19935:0:99999:7:::
sync:*:19935:0:99999:7:::
games:*:19935:0:99999:7:::
man:*:19935:0:99999:7:::
lp:*:19935:0:99999:7:::
mail:*:19935:0:99999:7:::
news:*:19935:0:99999:7:::
 

  1. 如果为空,则对应用户没有口令,登录时不需要口令;
  2. 星号代表帐号被锁定;
  3. 双叹号表示这个密码已经过期了;
  4. $6$开头的,表明是用SHA-512加密;
  5. $1$表明是用MD5加密;
  6. $2$ 是用Blowfish加密;
  7. $5$ 是用 SHA-256加密;

3、/etc/group

 /etc/group 是一个文本文件,用于定义用户在 Linux 和 UNIX 操作系统下所属的组。可以将多个用户分类为组。Unix 文件系统权限分为三个类:用户、组和其他。使用组允许以有组织的方式委派其他功能,例如访问磁盘、打印机和其他外围设备。除其他外,此方法还使超级用户能够将某些管理任务委派给普通用户。

sudo head /etc/group 

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:Kali
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:

1group_name:是组的名称。2密码:通常不使用密码,因此它是空的/空白的。3群组 ID (GID):必须为每个用户分配一个群组 ID。4组列表:组成员的用户名列表。

禁用账号

sudo passwd -I username
chage -E 1990-01-01 kali
passwd -S username

禁用账号相关命令


1. sudo passwd -I username:

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

        "-I"选项用于锁定用户账号。当执行命令后,指定的"username"用户账号将被锁定,无法登陆系统。

上面这个命令的效果是在加密后的密码文件 /etc/shadow 中,用户对应的那一行的最前面加上一个 ! 符号。这样就足够阻止用户使用密码来访问账号了。

2. chage -E 1990-01-01 kali:

        "chage"命令用于修改用户密码的过期信息。

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

3. passwd -S usename:

        ''passwd''命令的另一个用法。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值