目录

一、账户安全控制

账户安全基本措施

系统账户清理

密码安全控制

命令历史限制

终端自动注销

二、使用su命令切换用户

用途及用法

密码验证

限制使用su命令的用户

查看su操作记录

三、PAM安全认证

su命令的安全隐患

PAM可插拔式认证模块

PAM认证原理

一般遵循的顺序

PAM认证的构成

PAM认证模块及其参数

PAM安全认证的流程

四、sudo命令机制提升权限

sudo命令的用途以及用法

配置sudo授权

语法格式

五、开关机安全控制

调整BIOS引导设置

限制更改GRUB引导参数

六、终端登录安全控制

限制root用户登录

限制普通用户登录

七、系统弱口令检测

安装JR工具

检测弱口令账号

密码文件暴力破解

网络端口扫描NAMP

NMAP扫描

八、使用natstat查看运行的服务


一、账户安全控制

账户安全基本措施

系统账户清理

  • 将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
  • 锁定长期不使用的账号
usermod -L   用户名
passwd -l   用户名
passwd -S   用户名  查看被锁定用户的信息
  • 删除无用的账号
userdel 【-r】用户名
  • 锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shdow    #锁定文件
chattr -i /etc/passwd /etc/shdow    #解锁文件
lsattr /etc/passwd /etc/shdow       #查看状态

 

用户账号文件/etc/shadow
默认只有root用户能够读取shadow文件中的内容,且不允许直接编辑该文件中的内容。

密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码
vim /etc/login.defs    #修改密码配置文件(适用于新建用户)
chage -M 30 lisi       #适用于已有用户
chage -d 0 zhangsan    #强制在下次登录时更改密码(shadow文件中的第三个字段被修改为0)

1、适用于已存在户

chage -M 30 用户名 ;对xxx用户修改成有效期为30天的用户密码 (永不过期,-M 99999 )

cat /etc/shadow | grep 用户 ;查看是否被修改

没改前还是默认99999

执行命令chage -M 30 wx后第五字段变为30

2、新用户vim /etc/login.defs 设置密码有效期

3、 密码的最长有效天数改为30

4、再次登录需要强改密码

命令历史限制

  1. 减少记录的命令条数
vi /etc/profile    ###去profile文件


export HISTSIZE=200    ###末行加入以下命令,限制最大命令200条

 

2、登录时自动清空命令历史

vim ~/.bashrc
echo " " > ~/.bash_history  

3、临时清空历史命令

history -c    ###临时清空历史命令

终端自动注销

  • 闲置600秒后自动注销
vim /etc/profile     #编辑profie文件
TMOUT=600            #600秒闲置,终端注销
soure /etc/profile   #执行一次配置文件,让配置文件生效

二、使用su命令切换用户

用途及用法

  • 用途:Subbstitute User ,切换用户
  • 格式: su - 目标用途

密码验证

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

 

 注意:如果输入密码后,提示鉴定故障,则需要执行 sudo passwd root ,重新设置新的密码在进行相关操作。

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块
gpasswd -a 用户 wheel    #添加用户到wheel组中
grep wheel /etc/group    #确定wheel组成员

第一步:将允许使用su命令的用户加入wheel组

 第二步:启用pam_wheel认证模块

vim /etc/pam.d/su ;进入这个su文件当中,文件里设置禁止用户使用su命令

2// auth sufficient pam_rootok.so
…......

6// (#)auth required pam_wheel.so use_uid ;把第六行的开头“#”去掉
….......

a、以上两行都是默认状态(开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

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

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

d、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁止su命令。

注意:主要看第二行和第六行

查看su操作记录

  • 安全日志文件:/var/log/secure
cat /var/log/secure  #安全日志文件/var/log/secure

三、PAM安全认证

su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户的登录密码,带来安全风险。
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许及个别用户使用su命令切换

PAM可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前linux服务器普遍使用的认证方式

PAM认证原理

一般遵循的顺序

service(服务)——PAM(配置文件)——pam_*.so

  1. 首先要确定那一项服务,然后加载相应的PAM配置文件(文件位置位于/etc/pam.d下),最后调用认证文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
  2. 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  3. 不同的应用程序对应的PAM模块是不同的
     
看某个程序是否支持PAM认证,可以用ls命令查看/etc/pam.d/

 示例:

PAM认证的构成

查看某个程序是否支持PAM认证,可以使用ls命令

示例:查看su是否支持PAM模块认证

ls /etc/pam.d | grep su  

查看su的PAM配置文件

cat /etc/pam.d/su
  1. 每一行都是一个独立的认证过程
  2. 每一行可以区分为三个字段
  • 认证类型
  • 控制类型
  • PAM模块及参数

PAM认证模块及其参数

PAM的每一行都是一个独立的认证过程,他们按照从上往下的顺序依次由PAM模块调用

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

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

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

password:让用户来更新数据,如修改密码

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

第二列代表PAM控制标记

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

requisite:与required类似,但是如果此模块返回失败,则立即返回失败并表示次类型失败

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

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

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

第三列代表PAM模块

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

第四行代表PAM模块参数

这个需要根据所使用的的模块来添加,传递给模块的参数,参数可以有多个,之间用空格分开。
 

PAM安全认证的流程

控制类型也称作control flags,用于PAM验证类型的返回结果

required验证失败时候任然继续,但是返回失败的值

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

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

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

四、sudo命令机制提升权限

sudo命令的用途以及用法

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

配置sudo授权

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

记录格式:用户  主机名=命令程序列表

语法格式

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

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

示例:给wx用户赋予sudo权限

 

 

五、开关机安全控制

调整BIOS引导设置

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

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

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

限制更改GRUB引导参数

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

六、终端登录安全控制

限制root用户登录

限制root只在安全终端登录

安全终端配置路径:/etc/securetty

vim /etc/securetty   ###vi编辑器进入这个配置文件

#tty5

#tty6(表示禁止5、6号安全终端登录,之后保存并退出就行)

示例:

限制普通用户登录

建立/etc/nologin文件

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

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

rm -rf /etc/nologin    ###取消上述登录限制(或者重启也能取消)

示例:

七、系统弱口令检测

安装JR工具

  • 安装方法:make clean 系统类型
  • 主程序为john

检测弱口令账号

  • 获得linux服务器的shadow文件
  • 执行john程序,将shadow文件作为参考

密码文件暴力破解

  • 准备好密码字典文件,默认为passworld.lst
  • 执行john程序,结合–wordlist=字典文件

执行步骤:

1、解压工具包

cd /opt

tar zxf john-1.8.0.tar.gz

2、安装软件编译工具

yum install -y gcc-c++ make

3、切换到src子目录

cd /opt/john-1.8.0/src

4、进行编译安装

make clean linux-x86-64

5、准备待破解的密码文件

cp /opt/john-1.8.0 /run

./john /opt/shadow.txt

6、执行暴力破解

cd /opt/john-1.8.0 /run

./john /opt/shadow.txt

网络端口扫描NAMP

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

#安装nmap软件包

rpm -qa |grep nmap

yum install -y nmap

NMAP扫描

常用的扫描类型

-p :指定扫描的端口

-n :禁用反向DNS解析

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

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

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

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

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

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

八、使用natstat查看运行的服务

netstat -natp         ###查看正在运行中的TCP协议网络状态信息

netstat -naup        ###查看正在运行中的UDP协议网络状态信息

netatat -natup       ###查看正在运行中的TCP与UDP协议

举例:netatat -natp | grep :22 ;监听TCP协议的22号端口

监听TCP、UDP、端口22

监听TCP

 监听UDP

 监听端口22

 常用选项

-a :显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)

-n:艺术字的形式显示相关的主机地址、端口信息等

-t: 查看TCP相关的信息

-u :显示UDP相关的信息

-p:显示与网络连接相关联的进程号、进程名称信息(改选项需要root权限)

-r :显示路由表信息

-l:显示处于监听状态的网络连接与端口信息

补充:查看服务的几种方式

a、ps aux |grep 服务
b、systemctl is-actvie 服务
c、 systemctl is-enbale 服务
d、lsof -i 服务名称
e、systemctl status 服务名称*

Logo

更多推荐