linux basics

++本篇文章旨在为网络安全初学者介绍linux操作系统基础。通过阅读本文,读者将能够对linux系统有一个初步的了解++

一、openssl

1、命令:

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

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

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

2、命令:

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

二、命令基础

1、文件管理

touch new file		
#创建空文件

rm new file	
#删除文件

mkdir newdir		
#新建目录

rmdir newdir		
#删除目录

mv file.txt  new.tx	
#重命名文件

mv newfile newdir2
#移动文件

cp file.txt newdir.txt
#拷贝文件

ln -s original.txt symlink.txt
#软连接文件

ls ~/offsec123.txt hardlink.txt
#硬链接文件

2、搜索文件

which
#"which"作用是查找命令的可执行文件路径。例如,如果你想知道"ls"命令在系统中的具体位置,可以使用"whichls"。

locate
sudo updatedb
locate whoami.exe
#"locate"命令用于快速查找文件,它通过查询一个预先构建的文件数据库来实现。
#不太清楚local.db)在这里的具体作用,可能是在特定情境下与"local.db"相关的查找操作,但一般来说,单独使用"locate"后面跟文件名或部分文件名可以查找相应的文件。

find
find ~ -mtime 2 -ls |sort -k9 -k10 |more
#这个命令的作用是在当前用户的家目录下查找在过去两天内被修改过的文件,并按照文件名和修改时间排序后显示。
#"find ~"表示再用户的主目录(""代表主目录)下进行查找
#"mtime 2"表示查找再两天内被修改过的文件
#"-ls" 用于以长列形式显示找到的文件信息
#"|" 是管道符号,将前一个命令的输出作为后一个命令的输入。
#"sort -k9 -k10" 是按照第九列和第十列的内容对文件信息进行排序。
#"mort" 用于分页显示结果,方便查看

find . -tpye f -iname '*.sh' -mmin -30 -ls
#这个命令的作用是在当前目录及其子目录下查找在过去30分钟内被修改过的所有以 .sh 结尾的文件,并列出它们的详细信息
#"find." 在当前目录下进行查找
#"-type f"表示查找类型为普通文件
#"iname  '*.sh' "查找文件名以".sh"结尾的文件
#"-mmin -30 "表示查找在30分钟内修改的文件
#"-ls"用于以长列形式显示找到的文件信息

find -name '*.svn' -exec rm -rf {} \;
#这个命令的作用是在当前目录及其子目录下查找所有以 .svn 结尾的文件和目录,并递归地删除它们。
#"find." 在当前目录下进行查找
#"-name '*.svn' "查找文件名以".svn"结尾的文件
#"-exec rm -rf{}\"表示对查找到每个结果执行 rm -rf 命令,即删除找到的文件或目录

find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null
#这个命令的作用是在整个文件系统中查找所有属于 root 用户、类型为文件、具有其他人可写权限的以 .sh 结尾的文件,并将错误信息重定向到 /dev/null。
#"find /" 在整个文件系统(根目录"/")下进行查找
#"-user root"表示查找所有者为root的文件
#"-type f"表示查找类型为普通文件
#"-prem -o=w"表示查找其他用户有写的权限的文件
#"-name '*.sh'"查找文件以"*.sh"结尾的文件
#"2>/dev/null"将错误输出重定向到"/dev/null",也就是不显示错误信息

3、用户账号

/etc/password
#这是一个重要的系统文件,存储了系统中用户账号的基本信息。
#每行代表一个用户,包含了用户名、密码占位符、用户 ID、用户组 ID、用户描述信息、用户主目录、用户默认shell等字段。

/etc/shadow
#这个文件也与用户账号相关,主要存储用户密码的加密信息以及密码的一些属性生,如密码最后一次修改时间、密码最短使用期限、密码最长使用期限等。
#只有具有足够权限的用户(通常是root)才能读取这个文件,以提高密码的安全性。

cat /etc/group
#cat/etc/group查看用户账号信息的同时,也可以间接了解用户所属的组信息,因为其中包含了用户组 ID。

禁用账号
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" 选项用于显示指定用户账号的密码状态信息,包括账号是否锁定,密码信息等等

4、文件系统权限

ls -la /etc/passwd
#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)执行权限。
#g+rw表示文件所属组(group)增加读(r)和写权限。
#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是权限的数字表示,其中第一位数字表示文件所有者的权限,这里代表读权限(r),因为读权限对应的数字是4:后两位数字"00"分别表示文件所属组和其他用户没有任何权限。
#<file>是要设置权限的文件。

5、系统日志文件

系统日志
ls -l  /var/log
#ls是列出目录内容的命令。
#-l 选项以长格式显示文件和目录的详细信息,包括权限、所有者、所属组、文件大小、修改时间等。
#/var/log是系统日志文件所在的目录。执行这个命令可以查看该目录下的日志文件列表及相关信息。

认证信息日志
sudo tail -3 /var/log/auth.log
#sudo表示以管理员权限执行命令
#tail命令用于查看文件的末尾部分。
#-3 表示显示文件的最后3行内容
#/var/log/auth.log是存储系统认证信息的日志文件,包括用户登录、认证失败等信息。执行这个命令可以查看最近的三条认证相关的日志记录

6、存储管理

内存使用率
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是挂载点,即要将分区挂载到的目录。执行这个命令后,系统可以访问该分区中的文件和目录,就像访问本地文件系统中的其他目录一样

7、基本网络枚举

ifconfig
#是一个用于配置和显示网络接口信息的命令行工具
#它可以显示网络接口的 IP地址、子网掩码、MAC 地址等信息,还可以用于启动、停止或配置网络接口

ip addr
#也是用于查看和管理网络接口的命令
#它提供了比ifconfig更详细和灵活的网络接口信息显示,包括接口的状态、IP地址、子网掩码、广播地址等。

sudo ifdown eht0
#sudo表示以管理员权限执行命令。
#ifdown用于关闭指定的网络接口
#eth0是网络接口名称,这里表示关闭名为 "etho"的网络接口。

sudo ifup eth0
#sudo 同样以管理员权限执行。
#ifup用于启动指定的网络接
#eth0表示启动名为'eth0'的网络接口。

网络配置
/etc/network/interfaces
#这是一个系统文件,用于配置网络接口的静态IP地址、子网掩码、网关等信息。
#在一些Linux发行版中,通过编辑这个文件可以实现网络接口的手动配置。

8、网络连接

netstat -natup:
#etstat是一个用于显示网络连接、路由表、接口统计等信息的命令。
#-n选项表示以数字形式显示地址和端口号,避免进行域名解析。
#-a选项显示所有的连接和监听端口。
#-t选项显示TCP连接。
#-u选项显示UDP连接。
#-p选项显示与连接相关的进程ID和程序名称。执行这个命令可以以查看系统当前的网络连接状态,包括连接的协议、本地地址和端口、远程地址和端口等信息。

arp -en
#rp是地址解析协议(Address Resolution Protocol)的工具。
#e选项以详细格式显示ARP缓存表。
#n选项以数字形式显示IP地址,避免进行域名解析。执行这个命令可以查看系统的ARP缓存表,其中包含了IP地址和对应的MAAC地址映射关系,用于在局域网中进行二层地址解析。

ip route
#是ip命令的部分,用于管理系统的路由表。
#它提供了更强大和灵活的路由管理功能,可以进行更复杂的路由配置操作

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

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

9、远程拷贝

scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
#scp是Secure Copy的缩写,用于在不同主机之间安全地复制文件
#root@1.1.1.1表示从IP地址为1.1.1.1.1.1的主机上以"root"用户身份进行操作。
#/home/kali/.bashrc是源文件路径,即要从远程主机上复制的为文件
#Copiedbashrc是目标文件名称或目标路径,即将远程文件复制到本地后的名称或存放位置。这个命令会从指定的远程主机复制.bashrc文件到本地.并命名为Copiedbashrc。
#scp passwd-pkalisshroot@127.0.0. 0. 0. 1

三、服务

1、ssh服务

启动服务
sudo systemctl start shh
#sudo表示以管理员权限执行命
#systemctl是用于管理系统服务的工具
#start ssh是启动名为'ssh'的服务,也就是启动SSH服务器,使得其他设备可以通过SSH协议连接到这台主机。

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

客户端配置
hashknownHosts yes
~/.ssh
#这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件
#通常包含私钥文件(如id_rsa)、公钥文件(如id_rsa.pub)以及已知主机文件(known_hosts)等。这些文件用于SSH客户端的身份认证和连接管理

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

四、目录介绍

五、资源耗尽病毒(思路)

使用alert或者notify-send等工具发送通知

#!/bin/bash
while true     	 											#死循环
do         													 #do中是循环体
    notify-send  "alert""attention"
    sleep 2    											 #中途停两秒
done      													  #done脚本结束标志

1、查看脚本文件的内容:

2、给脚本加上执行权限

3、使用bash解释运行脚本,观察弹窗

++声明! 学习内容来自B站up主 泷羽sec的OSCP考证培训课程有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!++

相关推荐
信创极客几秒前
Linux系统内存带宽读写性能测试工具Stream
linux·运维·服务器
monstercl1 分钟前
【Linux】shell语法
linux·运维
安年CJ16 分钟前
Python 中的指针:深入理解与应用
运维·开发语言·python
手心里的白日梦19 分钟前
linux下的单例安全的线程池实现
linux·运维·安全
牵牛老人25 分钟前
Qt生成随机数的方法
服务器·数据库·qt
听风吹等浪起39 分钟前
PYTHON 自动化办公:更改图片尺寸大小
运维·自动化
安 当 加 密44 分钟前
不同数据中心间海量数据的安全加密传输方案
服务器·数据安全·加密系统·密钥管理·透明加密·加密技术·安当tde
小馋喵知识杂货铺1 小时前
Linux 打印队列功能解析
linux·运维·chrome
Sigtuna1 小时前
layui动态添加option
java·服务器·layui
文浩(楠搏万)1 小时前
Java Spring Boot 项目中嵌入前端静态资源:完整教程与实战案例
java·服务器·前端·spring boot·后端·nginx·github