【PTE】Linux操作系统安全
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一 账户安全
一用户类型
Linux用户类型分为三类超级用户系统用户和普通用户
1.超级用户用户名为root或者UID为0的账号具有一切权限可以操作系统中的所有资源。Root用户可以进行基础的文件操作以及特殊的系统管理可以修改系统中的任何文件。
2.系统用户系统定义的群组和账户这些群组和账号是正确安装和更新系统软件所必须的。
每个进程运行在系统里都有一个相应的属主比如某个进程以何种身份运行这些身份就是系统里对应的用户账号比如系统中的htpd进程就是使用用户apache运行的。
当安装apache,sql数据库PHP环境等相关软件时会自动在系统中生成一个属主和账户这便是系统账户。
Linux中的进程都有一个所有者表示这个进程是谁的。
3.普通用户普通使用者能使用Linux的大部分资源一些特定的权限受到控制。用户只对自己的目录有写权限读写权限收到一定的限制有效保证了系统安全性。
二用户管理
Linux用户管理涉及的文件用户账号文件/etc/passwd、用户密码文件/etc/shadow、用户组文件/etc/group
1./etc/passwd
文件中的每一行代表一个单独的用户每一个用户的属性信息不同字段之间用“:”隔开。从左到右依次是用户名密码用户id主组id用户全称主目录登录shell
为保证安全/etc/passwd中的密码全部用“x”代替而所有密码都加密后存在/etc/shadow文件中。
如图用户root的用户名为root密码屏蔽uid为0主组id为0用户全称root主目录位于/root登录shell为/bin/bash
uid为专属不会重复
所有用户均不会独立存在二十会被划分到不同的用户组中通过用户组进行管理
2./etc/shadow
用于存放用户的密码散列密码管理信息仅root可读写
文件格式
用户名密码上次修改密码的时间两次修改密码间隔的最少天数两次修改密码间隔的最多天数提前几天警告用户密码过期密码过期几天禁用用户过期时间保留字段
系统中所有用户的用户密码保存在/etc/.shadow文件中所有的密码都是经过MD5加密过的只有具有超级用户权限才能查看这个文件
3./etc/skel目录
在linux系统中创建一个新用户时系统会自动把/etc/skel目录下所有的内容包括目录文件等复制到新用户的主目录“/home/<用户名>”下
/etc/skel目录是一个配置文件框架里面包含了一些默认配置文件如.bashrc、.bash_profile等如果此文件损坏以后创建的新用户的主目录下文件也都损坏
三用户组属性
1.组账户信息文件/etc/group
/etc/group文件中保存的是系统中所有组的属性信息/etc
每一行代表一个单独的组每一个组的属性信息分别用”:“隔开
各字段从左到右依次是组名密码组id用户列表
2.组密码信息文件/etc/gshadow
/etc/gshadow文件用于保存系统中所有组的密码MD5加密过只有root可查看
四用户管理操作
创建普通用户的流程
1.useradd
添加新用户
-u 指定新建用户的id
-c 指定新建用户的全称
-g 指定新建用户的主组
-G 指定新建用户所属的附加组
-s 指定新建用户的登陆shell
-n 不创建以自己为名的组
-m 创建用户登录目录
内网渗透时创建用户的姿势
2.passwd
设置、修改用户谜面还可以锁定账户
-d 删除用户密码
-l 锁定指定用户的账户
-u 解除指定账户的锁定
-S 显示指定用户账户的状态
3.usermod
使用usermod命令可以修改用户的属性信息
-c 指定用户的全称
-d 指定用户的主目录
-u 修改用户的用户id
-g 修改用户的主组
-G 指定用户所属的附加组
-s 指定用户的登录shell
-l 更改用户的用户名
4.userdel
使用userdel命令可以删除指定用户的账户配合 -r 选项还可以将该用户的主目录一起删除
#检查清楚系统多余账号
1.检查
cat /etc/passwd
cat /etc/shadow
2.清除多余账号
3.锁定账号
特殊保留的系统伪账户可以设置锁定登录
锁定
passwd -l pte
解锁
passwd -u pte
四用户组管理
用户组就是具有相同特征的用户的集合系统能对一个用户组中的所有用户进行集中管理可以把相同属性的用户定义到同一用户组并赋予该用户组一定的操作权限这样用户组下的用户对改文件或目录都具有相同的权限。
通过对/etc/passwd中定义的用户组的添加、修改和删除
一个用户可以属于多个组/etc/passwd中定义的用户组为基本组用户所属的组有基本组和附加组。如果一个用户属于多个组该用户所拥有的的权限是他所在的所有组的权限之和。
1groupadd
使用groupadd命令用户可以创建一个私人组执行这一命令的结果就是在/etc/group和/etc/gshadow文件中增加一行信息。
例如创建组id为1111的用户test 可以执行 groupadd -g 1111 test
2.groupmod
使用groupmod命令可以修改指定组的属性。
例如要将系统中已存在的组id为1111的test组修改组名为test1、组id为1112,可执行命令
groupmod -g 1112 -n test1 test
3.groupdel
使用groupdel命令可以删除指定组
五用户口令管理
空口令风险用户账户如果设置了空口令其他用户可以不需要任何技术手段进入计算机访问浏览空口令用户下的任何数据
可以看到在/etc/shadow中账户ubuntu和pte1都是有密码的(加密了的字符串)
pte2和kkl是空口令账户密码位置是
#使用下面的命令检测空口令账户是否存在
awk -F: '($2=="!") {print $1}' /etc/shadow
#或者会把系统账户apache等也输出
awk -F: 'length($2)==1 {print $1}' /etc/shadow
这里的$1 $2分别表示/etc/shadow中的第一项用户名和第二项(密码)
同理想查找系统中uid为0的具有root权限的用户
awk -F: '($3==0) {print $1}' /etc/passwd
六用户口令策略管理
为防止用户使用弱口令或空口令应在操作系统中配置安全策略防止此类事件发生
除此之外还应对账号口令设置生存期root远程登录禁止su到root登录用户失败N次锁定等
1.口令复杂度策略设置
2.口令生存期
vim /etc/login.defs
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数不大于90
PASS_MIN_DAYS 10 #新建用户的密码最短使用天数为10
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数为7
3.root远程登录
vim /etc/ssh/sshd_config
PermitRootLogin no #禁止root从ssh登录
4.禁止su到root
vim /ect/pam.d/su
#添加下面两行
auth sufficient pam.rootok.so
auth required pam_wheel.so group=wheel
5.设置用户登录失败N次锁定
用户锁定期间无论在输入正确还是错误的密码都将视为错误密码并以最后一次登录为锁定起始时间若果用户解锁后输入密码的第一次依然为错误密码则再次重新锁定。
vim /etc/pam.d/sshd
root_unlock_time: 表示root用户锁定时间
unlock_time: 表示普通用户锁定时间
onerr=fail: 表示连续失败
deny=3: 表示超过3次登录失败即锁定
如果不想限制root用户可以去掉:even_deny_root root_unlock_time=300。
auth requird pam_tally2.so deny=3 unlock_time=120 even_deny_root root_unlock_time=60
二 文件系统安全
一linux文件系统简介
linux文件系统采用树状层次目录结构
二linux主要文件系统类型
考选择题要眼熟
1.查看文件属性
ll命令可快速查看该文件是否有执行权限
ls命令查看文件属性
-a 列出目录下的所有文件包括以 . 开头的隐含文件
-d 将目录像文件一样显示而不是显示其下的文件
-h 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-l 除了文件名之外还将文件的权限、所有者、文件大小等信息详细列出来
-R 以递归方式显示目录下的各级子目录和文件
2.系统文件属性
可通过 ll 命令快速查看
第一部分-rwxrwxrwx10个字符组成
第一个字符为-表示为普通文件为d表示目录,l表示为链接文件s表示套接字文件p表示命名管道文件c表示字符设备文件b表示块设备文件
rwxrwxrwx前3个表示文件拥有者具备的权限中间3个表示文件所有者所在的组的用户拥有的权限最后3个表示其余用户拥有的权限
r可读w可写x可执行
第二部分1 表示文件的链接数
第三部分ubuntu ubuntu 前一个表示文件所有者后一个表示文件所有者的用户组
第四部分23 以字节为单位的文件大小
第五部分表示文件最后更新的时间
最后一部分文件名
三文件类型
linux有4种基本文件系统类型普通文件-目录文件d链接文件l和特殊文件
通过 ls -l 命令可以返回文件的相关属性
链接文件其实是一个指向文件的指针快捷方式通过链接文件用户访问的将会是指针指向的文件
特殊文件
套接字socket文件
通过套接字文件可以实现网络通信标识符s
命名管道文件
通过管道文件可以实现进程间的通信。标识符p
设备文件
linux为每个设备分配一个设备文件存放在/dev目录下分字符设备文件和块设备文件。其中键盘,tty等属于字符设备标识符c内存、磁盘等属于块设备文件标识符b
四更改文件和目录的所有者chown
chown命令用于更改文件或者用户的所有者和数组包括目录下的各级子目录和文件
# 将文件夹test 所有者改为root,属组改为users
chown -R root:users /test
五更改文件和目录的权限chmod
chmod命令用于更改文件或者目录的访问权限包括目录下的各级子目录和文件
命令格式
字符型使用u,g,o,a分别表示所有者属组其他用户和所有用户
数字方式chmod 777 1.py
1.字符型方式
chmod u+x 1.py 为所有者添加1.py的执行权限
chmod g+x,o+w 1.py 2.py 为属组和其他用户添加文件1.py和2.py写权限
chmod a=rwx 1.py 设置所有用户对1.py文件的读写和执行权限
chmod o-w 1.py 取消其他用户对1.py文件的可写权限
chmod -R u+x dir1 为目录所有者添加对目录dir的写权限
chmod o=1 1.py
取消其他用户对1.py文件的所有权限o=1即o组为--x在不可读的权限下可执行这种情况是不存在的故取消了所有权限
2.数字型方式
r=4 w=2 x=1
chmod 777 1.py rwx=4+2+1=7 777就是三种用户对文件的权限都是rwx即rwxrwxrwx
chmod 764 1.py 中764=rwx+rw+r,所以1.py权限变成了-rwxrw-r--
六设置文件和目录的默认权限
对于每个新创建的文件和目录系统会为他们设置默认访问权限通过umask命令可以更改文件或目录对应的默认权限
进程掩码的作用
1新建文件新建目录的权限由系统默认权限和默认权限掩码共同确定
2Linux系统中目录的最大权限是777,文件的最大权限是666
666即rw-rw-rw-可以防止执行木马文件
3默认权限掩码告诉系统当创建一个文件或目录时不应该赋予哪些权限
在linux系统中每个用户都有自己的umask值所以可以通过为不同的安全级别的用户设置不同的umask值来灵活控制用户的默认访问权限。
用户每次登录系统都必须先读取.bash_profile配置文件的内容并执行所以每次用户登录完成后新的umask值会立即生效
#修改shell umask值临时
umask 000
#修改shell umask值永久
vim /etc/bashrc
source /etc/bashrc
vim /etc/profile
source /etc/profile
七为普通用户提权
使用sudo命令为普通用户提权通过配置文件来限制用户的权限让普通用户在执行指定命令或程序时拥有超级用户的权限。
sudo工作过程
1.当用户执行sudo时系统主动寻找/etc/sudoers文件判断该用户是否有执行sudo的权限
2.确认用户具有可执行sudo的权限后让用户输入自己的密码确认
3.若密码输入成功则开始执行sudo后续的命令
4.root执行sudo 时不需要输入密码因为sudoers文件中配置root ALL=(ALL)ALL这样一条规则
#需求给普通用户pte提权让普通用户可以查看root用户的家目录普通用户可以使用useradd命令创建新用户
#步骤
useradd pte
vim /etc/sudoers
#编辑文件98行
root ALL=(ALL) ALL
pte ALL=(ALL) /bin/ls,/user/sbin/useradd
#备注
#第一个ALL多个系统之间部署sudo环境时ALL代表所有主机也可以换成相应的主机名表示改该规则只适用主机名对应的系统
#第二个ALL括号里的指出规定的user用户能够以何种身份来执行命令。该ALL表示user用户能够以任何用户的身份执行命令
#第三个ALL表示能执行“命令表”ALL表示用户能够执行系统中的所有命令
#使用pte用户登录测试
sudo useradd test //可成功创建用户证明提权成功
sudo ls /root //可查看root的家目录证明提权成功
#查看当前用户的可执行命令只有在sudoers文件里的用户才能使用这个
sudo -l
三 日志分析
日志系统可以记录当前系统中发生的各种事件比如登录日志记录每次登录的来源和时间系统每次启动和关闭的情况系统错误等。
一日志的主要用途
1.系统审计记录登录系统的用户和日常行为
2.监测追踪系统受到攻击时如何追踪溯源到攻击者
3.分析统计系统的性能、错误等统计
二日志分类
日志分类 | 日志功能 |
Access-log | 记录web服务的访问日志error-log是其错误日志 |
Acct/pacct ☆ | 记录用户命令 |
btmp | 记录失败记录 |
lastlog☆ | 记录最近几次成功登录的时间和最后一次不成功的登录 |
messages | 服务器的系统日志 |
Sudolog | 记录使用sudo发出的命令 |
Utmp | 记录当前登录的每个用户 |
Wtmp | 一个用户每次登录和退出时间的永久记录 |
Secure | 记录系统登录行为比如ssh登录的记录 |
三日志文件管理
日志文件中的信息可能比较烦但是有时特别重要。
必须经常清空日志文件去掉旧信息以免磁盘占满正确管理日志文件可使需要日志文件时能够访问到清空日志文件时另做备份可以获得更多审计信息。
1.一般日志文件的管理
日志文件应记录尽可能多的信息
所有日志文件最好设置成除了root以外其他用户不能查看会保证系统安全性
2.logrotate
一个可以自动使日志文件循环删除其中保存时间最长的文件并开始新文件的工具。
3.日志分析