【PTE】Linux操作系统安全

发布于:2022-10-29 ⋅ 阅读:(1313) ⋅ 点赞:(1)

一 账户安全

(一)用户类型

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 命令快速查看

 第一部分:-rwxrwxrwx,10个字符组成

        第一个字符为-表示为普通文件,为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)新建文件,新建目录的权限由系统默认权限和默认权限掩码共同确定

2)Linux系统中目录的最大权限是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.日志分析

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到