系统安全及应用

目录

1、账号安全控制

1.1、系统账号清理

         1.2、密码安全控制

         1.3、命令历史限制

终端自动注销

 2、用户切换限制------su命令

用途及用法

密码验证

 限制使用su 命令的用户

查看su操作记录

2.1、Linux中的PAM安全认证

su命令的安全隐患

PAM可插拔式认证模块

2.2、PAM认证原理

一般遵循的顺序

2.3、PAM认证的构成

查看某个程序是否支持PAM认证

查看su的PAM配置文件

2.4、PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果

2.5、PAM的配置文件中的每一行都是一个独立的认证过程

第一列代表PAM认证模块类型

第二列代表PAM控制标记

第三列代表PAM模块

第四列代表PAM模块的参数

3、机制提升权限------sudo

sudo命令的用途及用法

3.1、配置sudo授权

格式 

含义

3.2、用户别名案例

3.3、查看sudo操作记录

4、开关机安全控制

调整BIOS引导设置

GRUB限制

5、终端登录安全控制

限制root只在安全终端登录

禁止普通用户登录

6、系统弱口令检测

John  the  Ripper   简称JR

安装JR工具

检测弱口令账号

密码文件的暴力破解

 7、网络端口扫描

NMAP的扫描

nmap命令常用选项和扫描类型

安装nmap软件包

8、总结

引言:账号的安全性是非要重要的,我们需要了解如何对长期不使用的系统账号进行清理,以及锁定账号和禁止用户访问,同时我们还需要了解PAM认证的原理。

1、账号安全控制

1.1、系统账号清理

将非登录用户的shell设为/sbin/nologin

锁定长期不使用的账号

删除无用的账号

锁定账户文件passwd、shadow

例:不允许gx用户登录shell  

系统安全及应用_第1张图片

锁定长期不使用的账号

系统安全及应用_第2张图片

锁定账户文件,,无法创建用户

系统安全及应用_第3张图片

解锁账户文件,,创建用户lisi成功 

系统安全及应用_第4张图片

1.2、密码安全控制

设置密码有效期

要求用户下次登录时修改密码

例:设置密码有效期(适用于新建用户) 

系统安全及应用_第5张图片

其中:

PASS_MAX_DAYS :上次修改密码最少间隔多少天,用户才能进行修改密码

PASS_MIN_DAYS : 密码最小长度

PASS_WARN_AGE :指定密码到期前多少天 收到警告信息的天数

系统安全及应用_第6张图片

密码有效期(适用于已有用户)

系统安全及应用_第7张图片

 要求用户下次登录时修改密码

系统安全及应用_第8张图片

系统安全及应用_第9张图片

 1.3、命令历史限制

减少记录的命令条数

注销时自动清空命令历史

终端自动注销

闲置600秒后自动注销

例 : 减少记录的命令数,刷新后查看

系统安全及应用_第10张图片

系统安全及应用_第11张图片

例: 注销时自动清空历史命令

系统安全及应用_第12张图片

系统安全及应用_第13张图片

例:终端闲置600秒后自动注销

 系统安全及应用_第14张图片

 2、用户切换限制------su命令

用途及用法

用途:su  切换用户

格式:su  -  目标用户            带  -  选项表示将使用目标用户的登录shell环境

密码验证

root 》》任意用户       不验证密码

普通用户》》其他用户        验证目标用户的密码

系统安全及应用_第15张图片

 限制使用su 命令的用户

将允许使用su 命令的用户加入wheel组

启用pam_wheel 认证模块

系统安全及应用_第16张图片

 开启pam认证 wheel认证模块

系统安全及应用_第17张图片

查看su操作记录

查看日志文件: /var/log/secure

系统安全及应用_第18张图片

2.1、Linux中的PAM安全认证

su命令的安全隐患

默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险

为了加强su命令的使用控制,可借助PAM认证模块,只允许极个别用户使用su命令进行切换

PAM可插拔式认证模块

是一种高效而且灵活便利的用户级别的认证方式

也是当前Linux服务器普遍使用的认证方式

2.2、PAM认证原理

一般遵循的顺序

Service (服务) → PAM(配置文件)→ pam_*.so

首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证

用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证

不同的应用程序所对应的PAM模块是不同的

2.3、PAM认证的构成

查看某个程序是否支持PAM认证

查看su的PAM配置文件

系统安全及应用_第19张图片每一行都是一个独立的认证过程

每一行可以区分为三个字段

认证类型

控制类型

PAM模块及其参数

2.4、PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果

1、required验证失败时仍然继续,但返回fail

2、requisite验证失败则立即结束整个验证过程,返回Fail

3、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

4、optional不用于验证,只显示信息(通常用于session类型)

如图:

系统安全及应用_第20张图片

2.5、PAM的配置文件中的每一行都是一个独立的认证过程

它们按从上往下的顺序依次由PAM模块调用

第一列代表PAM认证模块类型

1、auth:对用户身份进行识别,如提示输入密码,判断是否为root。

2、account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。

3、password:使用用户信息来更新数据,如修改用户密码。

4、session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记

1、required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。

2、requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败

3、sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

4、optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。

5、include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

同一个模块,可以出现不同的模块类型,它在不同的类型中所执行的操作都不同,是由每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数

这个需要根据所使用的模块来添加。

传递给模块的参数。参数可以有多个,之间用空格分隔开。

3、机制提升权限------sudo

su命令的缺点

sudo命令的用途及用法

用途:以其他用户身份(如root)执行授权的命令

用法      sudo  授权命令

sudo [参数选项]  命令

-l:列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的

-v:可以跟踪最新的时间戳;

-u:指定以以某个用户执行特定操作

-k:删除时间戳,下一个sudo命令要求用求提供密码;

3.1、配置sudo授权

visudo 或者vi  /etc/sudoers(此文件的默认权限为440,保存退出时必须执行“:wq!”命令来强制操作)

格式 

用户    主机名=命令程序列表

用户    主机名=(用户)命令程序列表

含义

用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)。

主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL代表所有主机

(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令

命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之司以逗号","进行分隔。ALL则代表系统中的所有命令

通配符"*"表示所有、取反符号"!"表示排除

%wheel ALL=NOPASSWD:ALL 

表示wheel组成员无需验证密码即可使用sudo执行任何命令

例:

系统安全及应用_第21张图片

 ly 用户 ALL 所以主机   使用useradd和usermod命令

系统安全及应用_第22张图片

系统安全及应用_第23张图片

3.2、用户别名案例

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_A.ias来进行设置。

grep "wheel" /etc/group                 查看组下面的用户

  User_Alias:用户别名:包含用户、用户组(%组名(使用%引导))、还可以包含其他用户的别名  User_Alias OPERATORS=zhangsan,tom, lisi,%wheel

  Host_Alias :主机别名:主机名、IP、网络地址、其他主机别名!取反Host_Alias MAILSVRS=smtp, pop

  Cmnd_Alias :命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名cmnd_Alias PKGTOOLS=/ bin/ rpm/, usr/bin/yum

用户   改成  别名用户             目的:为了可以操作多个用户和组

主机名    改成   别名主机       目的:为了可以操作设置主机的多个名称或者主机取反

命令操作列表     改成    别名命令列表         目的:所有命令可以操作也就是所有命令的集合

例: 

系统安全及应用_第24张图片

 验证/usr/bin/passwd 和!/usr/bin/passwd 优先级,到底是否可以使用命令

系统安全及应用_第25张图片

系统安全及应用_第26张图片

 3.3、查看sudo操作记录

 需启用Defaults logfile 配置

默认日志文件:/var/log/sudo

sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加"Defaults logfile"设置如果已经启用sudo日志,则可以从/var/log/sudo文件中看到用户的sudo操作记录。注:启用日志:Defaults logfile=/var/log/sudo

另外一个方法是/var/log/secure日志可查看到sudo操作用户步骤

sudo  -l           查看当前用户获得哪些sudo授权

例:visudo里启用配置 

系统安全及应用_第27张图片

查看当前用户下获得了哪些授权

系统安全及应用_第28张图片

4、开关机安全控制

调整BIOS引导设置

将第一引导设备设为当前系统所在硬盘

禁止从其他设备(光盘、U盘、网络)引导系统

将安全级别设为setup ,并设置管理员密码

GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥

修改/etc/grub.d/00_header文件中,添加密码记录

生成新的grub.cfg配置文件

 通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数

例:

系统安全及应用_第29张图片

cat <

 按e键输入账号密码才能修改引导参数系统安全及应用_第30张图片

 这样我们就为GRUB菜单设置了一个密码,只有提供正确的密码才允许修改引导参数,提高了服务器的安全

上述操作如果觉得麻烦,也可以使用grub2-setpassword 命令一步到位,直接设置GRUB菜单的密码。

例;

系统安全及应用_第31张图片

5、终端登录安全控制

限制root只在安全终端登录

安全终端配置:/etc/securetty

在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统

例:想不让在哪个终端登录就在终端前加上注释#

 系统安全及应用_第32张图片

禁止普通用户登录

建立/etc/nologin文件

删除nologin文件或重启即恢复正常

touch /etc/nologin        禁止普通用户登录

rm  -rf  /etc/nologin      取消上述登录限制

6、系统弱口令检测

John  the  Ripper   简称JR

一款密码分析工具,支持字典式的暴力破解

通过对shadow文件的口令分析,可以检测密码强度

安装JR工具

安装方法 make  clean  系统类型

主程序文件为john

检测弱口令账号

获得Linux/Unix服务器的shadow文件

执行john程序,将shadow文件作为参数

密码文件的暴力破解

准备好密码字典文件,默认为password.lst

执行john程序,结合--wordlist=字典文件

例:rz 上传工具压缩包,tar  -zxvf  john-1.8.0.tar.gz        解压工具包

系统安全及应用_第33张图片

系统安全及应用_第34张图片

系统安全及应用_第35张图片

 7、网络端口扫描

控制位

SYN建立链接ACK确认

FIN结束断i开

PSH传送o数据缓存上层应用协议RST重置

URG紧急

NMAP的扫描

一款强大的网络扫描、安全检测工具

nmap  [扫描类型]  [选项]  <扫描目标...> 

nmap命令常用选项和扫描类型

-p:指定扫描的端口

-n:禁用反向 DNS 解析(以加快扫描速度)

-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放

-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放

-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性

-sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢

-sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描

-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描

安装nmap软件包

系统安全及应用_第36张图片

 例:查看本机开放的TCP端口

系统安全及应用_第37张图片

 查看本机开放的UDP端口

系统安全及应用_第38张图片

8、总结

通过上述描述后,我们了解了账户的基本安全措施,有系统账户清理,密码安全控制,命令历史清理,自动注销,用户的切换与提升权限(su、sudo),开关机的安全控制为GRUB菜单设置了一个密码,只有提供正确的密码才允许修改引导参数,提高了服务器的安全,还有一些终端控制以及JR工具和nmap的一些基本了解

你可能感兴趣的:(linux)