系统基础操作规范
基本思想
-
一切都是文件
-
系统中所有都归为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件
-
每个软件都有确定的用途
优点
-
成本低
-
安全性好,采取很多措施,包括对读写权限控制、带保护的子系统、审计跟踪、核心授权等,为网络多用户环境中的用户提供了必要的安全保障
-
网络功能强大
-
开源性
操作规范
当前用户名称
当前系统主机名称
当前系统目录路径 (~ 为当前用家目录 /为根目录)
当前用户权限
root管理员 #
非管理员 $
系统远程管理
ssh
-
安全外壳协议(Secure Shell),是一种在不安全网络上用于安全远程登陆和其他安全网站服务的协议
-
密码(key)、公钥文件(pub),源于RSA算法,key与public一一对应
-
连接步骤
-
将CentOS 7 的网络模式全部设置为NAT模式
-
使用xshell远程连接终端
-
将root设置为允许登录
-
开始SSH服务 (查看SSH服务运行状态: systenctl status sshd)
-
关闭firewall防火墙(systemctl status firewalld)
-
检查ssh连接的端口是否开启(netstat -tlnp)
-
测试CentOS是否可以上网或与本地网络互通
-
使用telnet命令检查22端口是否允许外部连接
-
-
常用快捷键
tab 命令补全
ctrl+c 终端终端正在执行的的任务并开启新的一行
ctrl+d 退出当前shell命令行,如果是切换过来的用户,则执行这个命令回退到原用户
ctrl+l 清除屏幕所有的内容,并开启新的一行
ctrl+s 锁定终端,任何人无法输入
ctrl+q 解锁
ctrl+z 暂停在终端执行的任务,使用“fg”命令可以使暂停回复
Ctrl +Alt +F2 切换到命令行界面
Ctrl+Alt+F1 切换到图形化界面
init 3 在终端输入跳转至命令行模式
init 5 到图形模式
系统目录结构和文件属性
系统目录重要结构
tree
bin -> /usr/bin 存放系统命令文件 目录 binary
sbin -> /usr/sbin 存放系统命令文件此目录大部分命令只能root使用
etc 存放系统或服务部署文件信息
home 家目录
var 存储可变的文件数据信息(日志信息)
opt 存储第三方软件程序
usr 存储第三方软件
proc 存储系统硬件信息/系统内核配置信息 优化系统 此目录中存储数据信息都在内存中
lib/lib64 存储库文件(开发软件程序需要依赖库文件)
tmp 进行数据临时存储
系统命令
pwd 显示当前工作目录的绝对路径
clear 清除当前屏幕终端上的任何信息
mkdir 用于创建一级或多级目录
rmdir 用于删除空目录
reboot 重新启动
passwd 修改用户密码
ls al 列出所有文件(包括隐藏文件)的详细信息
文件的增删改查(touch rm mv/cp tail/head/find/grep)
创建
mkdir(make directory) 创建新目录
mkdir /data{0,1,2,3,4,5}有序创建多个目录
mkdir -p /data/ospteach
删除 rm [-rf] aa (删除文件夹aa)
无论删除任何文件夹或目录,都直接使用rm -rf
修改
mv aa bb (修改目录名称)
mv的语法不仅可以对目录进行重命名,,也可以对各种文件,压缩包进行重命名的操作
mv对文件进行重新命名,或者将文件从一个目录移到另一个目录
mv ,目录名称 目录新位置:移动目录的位置--剪切
cp -r 目录名称 目标拷贝的目标位置:拷贝
拷贝文件可以不用写 -r 递归
拷贝目录要写 -r 递归
cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,使用-r参数后可以复制文件或文件夹,拷贝文件和压缩包时不用写 -r
查找
find 目录 参数
列出当前目录及其子目录下的所有文件和文件夹
rm:可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除。对于链接文件,只是删除整个链接文件,而源文件保持不变
rm -r * 删除当前目录下除隐含文件外的所有文件和子目录
rm testfile.txt 删除文件
rm -rf testdir 删除目录
ps:用于报告当前系统的进程状态。该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源。可以搭配kill指令随时中断、删除不必要的程序
ps axo pid,comm, pcpu # 查看进程的PID、名称、以及CPU占用率
ps aux |sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux |sort -nk 3 # 按CPU资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -ef |grep ssh # ps 与grep常用组合用法,查找特定进程
ps -aux |grep named # 查看named进程详细信息
ps -o command -p 91730 |sed -n 2p # 通过进程id获取服务名称
service和systemctl 格式区别
service 服务名 动作
systemctl 动作 服务名
利用管道符和grep 查看ssh进程的详细信息,利用kill强制终止服务端与客户端连接
ps -aux |grep ssh
kill 9 PID (数字9代表最高级别,强制终止)
创建文件的默认权限为644(rw-r--r--)
当上传完木马文件到服务器后,一般给木马文件添加可执行权限(chmod +x 文件名)
linux用户信息存放在/etc/passwd中
密码信息存放在/etc/shadow中
chmod(change mode):控制用户对文件的权限的命令
Linux/Unix的文件调用权限分为三级:文件所有者、用户组、其他用户(Owner、Group、Other Users)
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号表示指定文件的权限
用户管理
useradd:可用来建立用户账号。账号建好后再用passwd设定账号的密码
usermod:可用来修改用户账号的各项设定
userdel:可删除用户账号与相关的文件。若不加参数,仅删除用户账号,不删除相关文件
groupadd:用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
groupdel:用于删除群组,倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组
su:切换用户
su 用户名 (若缺省表示切换至root)
sudo:用于在当前用户某项命令中使用root用户权限
ifconfig:查看所有网卡的详细信息 ifconfig -a
ifconfig ens33 down 停用指定网卡
ifconfig ens33 up 启动指定网卡
tail:输出文件中的尾部内容,默认在屏幕上显式指定文件的末尾10行,
tail file # 显示文件file的最后10行
tail -n +20 fille # 显示文件file的内容,从第20行至文件末尾
tail -25 mail.log # 显示mail.log 的最后25行
head :用于显示文件的开头部分,在未指定行数时默认显示10行
重定向
“> ” 覆盖
”》“ 追加
vim编辑文件时存在3中工作模式,分别是命令模式、输入模式和编辑模式,这三种工作模式可随意切换
Vim
-
Vim编辑文件存在3种工作模式,分别是命令模式,输入模式和编辑模式,这三种模式可随意切换
0
定位到光标所在行的首字符 $ 定位到光标所在行的末字符 G 定位到文档的最后一行 gg 定位到文档第一行 dd 剪切光标所在行数据 yy 复制光标所在行数据 p 向光标后所在行粘贴已剪切数据 /word 搜索文档中的word字符串 :%s/word1/word2 将文档中的word1字符串替换为word2字符串
Crontab定时任务
2023年5月29日
Linux下软件分类
源代码安装
-
安装自由
-
稳定高效
-
容易卸载
源代码编译方式安装步骤
下载方式 wget、curl
configure 配置项进行安装预配置,如软件安装包目录、指定用户、编译目录
make 编译
make install 安装
yum 安装软件包(apt/apt-get)
-
可自动解决软件包依赖关系
安装步骤
镜像网站:
更换软件安装源
cd /etc/yum.repos.d/ # 进入配置目录
备份当前软件源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 将源文件进行备份
下载新的软件源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 下载新的软件源
重新生成缓存
yum makecache
安装软件
yum install -y 软件名称
常见安装包
net-tools 网络工具相关安装包 (找不到ifconfig、ping命令)
vim 文本编辑工具安装包
wget 下载工具安装包
telnet 测试某个机器的某个端口是否开放
卸载命令
yum remove -y 软件包名称
更新命令
yum update 更新软件包缓存
查看软件包列表
yum list
压缩与解压缩
tar
解包:tar zxvf gilename.tar
打包:tar czvf filename.tar dirname
gz
解压1:tar zxvf filename.tar.gz
解压2:tar zcvf filename.tar.gz
压缩:gzip filename
bz2,bz
解压: tar jxvf filename.tar.bz2
解压: tar jxvf filename.tar.gz
压缩:tar jcvf filename.tar.gz2
zip
解压:unzip filename.zip
压缩:zip filename.zip dirname
系统重要文件介绍
系统网卡信息
系统域名解析配置文件
指定域名与IP地址的解析关系
日志文件
-
secure -> /var/log/secure
RSA
概念
-
非对称加密需要两个密钥:公钥(public key)和私钥(privatekey)。公钥和私钥是一对,如果用公钥对数据进行加密,那么只能用对应的私钥解密。如果用私钥对数据进行加密,只能用对应的公钥进行解密。因为加密和解密是不同的密钥,所以称为非对称加密
特点
-
算法强度复杂、安全性依赖于算法与密钥,但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快,对称密码体制只有一种密钥,并且是非公开的,如果要解密就得染谷地方知道密钥。所以保证安全性就是保证密钥的安全,而非对称密钥体制有两种密钥其中一个是公开的,这样就可以不需要对称密码那样传输对方的密钥了(传输给对方密钥),这样安全性就大了很多
工作原理
A要向B发送消息,A和B都要产生一对用于加密和解密的公钥
A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A
A给B发送消息时,A用B的公钥加密信息,因为A知道B的公钥
A将这个消息发送给B(已经用B的公钥加密消息)
B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥
应用场景
-
信息加密
收信者是唯一能解开加密信息的人,因此收信者手里的必须是私钥。发信人手里的是公钥,其他人知道公钥没有关系,因为其他人发来的信息对收信人没有意义
-
登录认证
客户端需要将认证标识传送给服务器,此认证标识(可能是一个随机数)其他客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务端保存的是公钥,其他服务器知道公钥没有关系,因为客户端不需要登录其他服务器
-
数字签名
数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性
-
简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少
-
不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密(就像字迹他人无法学会一样),得到签名。
-
-
数字证书
问题起源:对1和3,发信人怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?
这就需要第三方机构保证公钥的合法性(CA 证书中心)
CA用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。
信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用CA给的公钥接触信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了
远程管理
Linux通过publickey进行远程连接
服务器端生成RSA密钥对
ssh-keygen -t rsa
生成2个文件,私钥ospteach、公钥ospteach.pub
cd /root
创建 mkdir/root/.ssh
赋权 chmod 755 .ssh
cat /ospteach.pub >> authorized_keys
修改配置文件,重启服务
PublicAuthentication
#PasswordAuthentication
systemctl restart sshd
基线检测与Windows用户组管理
检查点
文件目录: /etc/passwd
检查,将不需要账号设置成/sbin/nologin
查看那些不许需要的账号,锁定或设置成不可登录,一般都是系统自带或云自带的用户
检测用户是否使用密码加密机制
查看密码是不是*或者x,证明密码是使用系统的加密方式进行存放
检查uid为0的非root用户
检查是否存在uid为0的非root用户,UID是一个数值,是Linux系统中唯一的用户标识,用于区别不同的用户。在系统内部管理进程和文件保护时使用UID字段,所以尽量一个系统只存在一个uid为0的用户
文件目录: /etc/peofile
检查点:超时自动登录时间
子检查项其实时担心你一直在登陆情况下,没超时的话其他人入侵或者使用你的电脑做高危操作
history 保存命令数
说明:基本上很多入侵者进来第一时间就是来看history有没有明文ssh连接和db连接的记录,用于内网渗透
文件目录:/etc/ssh/sshd_config
限制用户必须在指定时限内认定成功
LoginGraceTime 5m
该检查项基本很多基线脚本都有配
检查是否允许root登录
PermitRootLogin yes
基本root不能运行登陆时基本操作,防止远程登陆最高级别的账号
设置不能免密码
StrictModes
指定是否要求sshd(8)在接受连接请求前对用户主目录和相关配置文件进行宿主和权限检查
SSH超时断开
ClientAliveInterval
设置一个以秒计的时长,如果超过这么长时间没有收到客户端的任何数据,sshd(8)将通过安全通道向客户端发送一个“alive”消息,并等待响应
看到尝试X次系统就断开连接
MaxAuthries
指定每个连接最大允许的认证次数
校验远程用户密码
PermitEmptyPasswords
是否允许密码为空的用户远程登录,默认为 no
检查文件权限设置
目录:/etc/pam.d/su
禁止非WHEEL用户使用su命令
auth required /lib/secureity/$ISA/pam_wheel.so use_uid
该操作是只让管理员组内的用户才能su到root
目录:/etc/rsyslog.conf
检查是否有记录日志并检查预期一样的日志
![]()
![]()
基线检测
-
XFTP将shell脚本传至虚拟机 /tmp 目录下
-
修改权限 chmod 755 linuxcheeklist2.2.sh
-
运行 ./linuxcheeklist2.2.sh
用户概述
-
每个用户登陆系统后,拥有不同的操作权限
-
每个账户有自己唯一的SID(相当于身份证号)
-
Windows 系统管理员administrator的UID是500
-
普通用户的UID从1000开始
-
不同账户拥有不同的操作权限,为不同的账户赋权,就是为不同的SID赋权
-
账户密码存储位置:C:\Windows\system32\config\SAM(不可逆,hash校验值,方法:暴力破解和撞库)
Windows密码爆破实验步骤
非正常关机3次,进入系统修复界面,找到命令行
进入C: C:\Windows/system32
运行 rename sethc.exe sethc.exe.bak
rename cmd.exe sethc.exe
重启电脑
连按五次Shift可呼出cmd命令行窗口(相当于代替粘滞键)