一、账号安全控制

1、账号安全管理的基本措施

1.系统账号清理

  • ==将非登陆用户的shell设为不可登录== image.png
  • ==锁定长期不使用账号==image.png
  • ==删除无用的账号==image.png
  • ==锁定账号文件==image.png image.png

2.设置密码有效期

方法一

image.png

image.png

方法二

image.png

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

image.png

3.命令历史限制

  • 减少记录的命令条数(默认1000条) image.png image.png
  • 登录时自动清空命令历史image.pngimage.png

4.终端自动注销

image.png image.png

2.用户切换与提权

1.切换用户命令:su

用法 image.png 密码验证

  • root→任意用户,不验证密码
  • 普通用户→其他用户,验证目标用户的密码

限制使用su命令切换用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块 image.png image.png

1)以上两行是默认状态(即开启第2行,注释第6行),==这种状态下是允许所有用户间使用su命令进行切换的。==

2)两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第2行不注释,则root使用su切换普通用户就不需要输入密码( pam_rootok.so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)

3)如果开启第6行,表示只有root用户和wheel组内的用户才可以使用su命令。

4)如果注释第2行,开启第6行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

2.PAM安全认证

2.1.概念

LinuX-PAM,是linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式

2.2.概念2

PAM使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的 密码,这就是su命令通过调用PAM模块实现的

2.3.PAM认证原理
  • 一般遵循的规律
    • Service(服务)→ PAM(配置文件)→ pam_*.so
  • 首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
  • 不同的应用程序所对应的 PAM 模块是不同的
  • 如果想要查看某个程序是否支持 PAM 认证,可以使用 ls 命令,进行查看 /etc/pam.d/
2.4.每一列的名称解释

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

auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password: 使用用户信息来更新数据,如修改用户密码。
session: 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记

required: 表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite: 与reguired类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient: 如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一 般不用于验证,只是显示信息(通常用于session 类型)。
include: 表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块

  • 默认是在/1ib64/security/日录下,如果不在此默认路径下,要填写绝对路径。
  • 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行丽数。.

第四列代表PAM模块的参数

  • 这个需要根据所使用的模块来添加传递给模块的参数。参数可以有多个,之间用空格分隔开
2.5.控制标记的补充说明
  • required 表示该行以及所涉及模块的成功是用户通过鉴别的【必要条件】。换句话说,只有当对应于应用程序的所有带required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。 反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。
  • requisite 与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也公立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。
  • sufficient 表示该行以及所涉及模块验证成功是用户通过鉴别的【充分条件】。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不公导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。
  • optional 他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。
2.6.PAM安全认证流程

image.png

  1. required验证失败时仍然继续,但返回Fail
  2. requisite验证失败则立即结束整个验证过程,返回Fail
  3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息(通常用于session类型)

3.使用sudo机制提升权限

3.1 使用su命令的风险

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

3.2 sudo命令的用途及用法
  • 用途:以其他用户身份(如root) 执行授权的命令
  • 用法:image.png
3.3 配置sudo授权
  • visudo或者vim /etc/sudoers
  • 记录格式:用户 主机名=命令程序列表
  • 可以使用通配符*、取反符号!
用户: 直接授权指定的用户名,或采用“%组名"的形式(授权一个组的所有用户)
主机名: 使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户): 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表: 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,"进行分隔。ALL则代表系统中的所有命令

image.png

二、系统引导和登录控制

1.开关机安全控制

1.1调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

2.2GRUB限制

  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00_header文件中, 添加密码记录
  • 生成新的grub.cfg配置文件 image.png

image.png

image.png image.png

image.png

2.终端登录安全控制

2.1限制root只在安全终端登录

==安全终端配置: /etc/securetty== image.png

2.2禁止普通用户登录

image.png

三、网络扫描:NMAP

1.概念:

NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术

2.安装

image.png

3.常用的选项和扫描类型

-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通而放弃扫描

4.实例

image.png image.png image.png

四、控制台命令:netstat

image.png

1.netstat常用选项

-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-n 以数字的形式显示相关的主机地址、端口等信息
-t 查看TCP协议相关的信息
-u 显示UDP协议相关的信息
-p 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r 显示路由表信息
-l 显示处于监听状态的网络连接及端口信息