目录
引言
一、账号安全基本措施
1.系统账号清理
2.密码安全控制
3.命令历史限制
二、使用su命令切换用户
1.用途及用法
2.密码验证
3.限制使用su命令的用户
4.查看su操作记录
三、Linux中的PAM安全认证
1.su命令的安全隐患
2.PAM(Pluggable Authentication Modules)可插拔式认证模块
3.PAM认证原理
4.PAM认证的构成
5.PAM安全认证流程
四、使用sudo机制提升权限
1.sudo命令的用途及用法
2.配置sudo授权
3.查看sudo操作记录
五、开关机安全控制
1.调整BIOS引导设置
2.GRUB限制
六、终端登录安全控制
1.限制root只在安全终端登录
2.禁止普通用户登录
七、系统弱口令检测
1.JOHN the Ripper,简称为JR
2.安装弱口令账号
3.密码文件的暴力破解
八、网络端口扫描
1.NMAP
2.格式
九、总结
linux系统中保护账号安全,sudo提升机制,弱口令检测应用,linux系统中提供了多种机制来确保账号的安全使用。
usermod -s /sbin/nologin 用户名
usermod -L用户名 passwd -l用户名 (锁定用户)
usermod -U用户名 passwd -u用户名 (解锁)
passwd -S 用户名 (查看用户状况)
userdel[-r]用户名
chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看状态
chattr -i /etc/passwd /etc/shadow 解锁文件
[root@localhost ~]# vi /etc/login.defs ———>设置密码有效期
......
PASS_ MAX_ _DAYS 30
[root@localhost ~]# chage -M 30 lisi
[root@localhost ~]# chage -d 0 zhangsan ———>强制在下次登陆时修改密码
[root@localhost ~]# cat /etc/shadow | grep zhangsan
history 查看历史记录(默认1000条)
vim /etc/profile 修改文件
export HISTSIZE=20
source /etc/profile 更新配置 ./etc/profile (相同作用)
echo $HISTSIZE 查看HISTSIZE配置
history -c 临时清空 (重启更换环境,历史记录会恢复。文件保存保存在.bash_history)
登录时自动清空命令历史
vim .bashrc (修改文件)
echo " " > ~/.bashrc_history (在最后输入命令)
终端限制30秒自动注销
vim /etc/profile
export TMOUT=600
source /etc/profile
[jerry@localhost ~]$ su - root 带-选项表示将使用目标用户的登录Shell环境 口令: [root@localhost ~]# whoami root
[root@localhost ~]# gpasswd -a tsengyia wheel
tsengyia
正在将用户"tsengyia'加入到"wheel"组中
[root@localhost ~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_ rootok.so
auth required pam_ wheel.so use_ uid
gpasswd -a qqq wheel 添加授权用户 qqq 到 wheel 组中
在/etc/pam.d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/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命令。启用pam_wheel认证以后,未加入到 wheel 组内的其他用户将无法使用su命令
安全日志文件: /var/log/secure
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险。
- 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
- 一般遵循的顺序:
Service(服务)一PAM(配置文件)→pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。
- 不同的应用程序所对应的PAM模块是不同的
- 查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
每一行可以区分为三个字段:1.认证类型,2.控制类型,3.PAM模块及其参数
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session类型)。
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开
required验证失败时仍然继续,但返回Fail
requisite验证失败则立即结束整个验证过程,返回Fail
sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
optional不用于验证,只显示信息 (通常用于session类型)
用户1 | 用户2 | 用户3 | 用户4 | ||
auth | required 模块1 | pass | fail | pass | pass |
auth | sufficient 模块2 | pass | pass | fail | pass |
auth | required 模块3 | pass | pass | pass | fail |
结果 | pass | fail | pass | pass |
用途:以其他用户身份(如root) 执行授权的命令
用法 sudo 授权命令
visudo或者vim /etc/sudoers(需要wq!强制保存)
记录格式:用户 主机名=命令程序列表 或 用户 主机名=(用户) 命令程序列表
sudo命令的用途及用法:
用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
1.
配置sudo授权
visudo 或者 vim /etc/sudoers
记录格式:
用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。
2.
配置/etc/sudoers文件,可以授权用户较多的时使用
Host_Alias MYHOST= localhost 主机名
User_Alias MYUSER = zhangsan,lisi 需要授权的用户
Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd 授权
MYUSER MYHOST = NOPASSWD : MYCMD 授权格式
3.查看sudo操作记录
需启用Defaults logfile
配置默认日志文件: /var/log/sudo
初次使用sudo时需验证当前用户的密码,默认超时时长为5分钟,在此期间不再重复验证密码。
- 需启用 Defaults logfile配置
- 默认日志文件:/var/log/sudo
- sudo -l 查看当前用户获得哪些sudo授权(启动日志文件后,sudo操作过程才会被记录)
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员密码
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etclgrub.d/00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
限制更改GRUB引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
grub2-mkpasswd-pbkdf2 #根据提示设置GRUB 菜单的密码
PBKDF2 hash of your password is grub.pbkd...#省略部分内容为经过加密生成的密码字符串###备份配置文件
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak###配置设置用户和密码文件
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" #设置用户名为root
password_pbkdf2 root grub.pbkdf2.....#设置密码,省略部分内容为经过加密生成的密码字符串
EOF#生成行grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg 生成新的grub.cfg 文件
重启系统进入GRUB 菜单时,按e键将需要输入账号密码才能修改引导参数。
安全终端配置文件在 /etc/securetty
vim /etc/securetty
在端口前加#号拒绝访问
touch /etc/nologin 禁止普通用户登录
rm -rf /etc/nologin 取消禁止
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官网网站:http://www.openwall.com/john/
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,讲shadow文件作为参数
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合--wordlist=字典文件
- —款强大的网络扫描、安全检测工具,支持ping扫描,多端口检测等多种技术。
- 官方网站: http://nmap.orgl
- CentOS 7.3光盘中安装包,nmap-6.40-7.el7.x86_64.rpm
NMAP [扫描类型] [选项] <扫描目标....>
安装NMAP软件包
rpm -qa | grep nmap
yum install -y nmapnmap命令常用的选项和扫描类型
-p:指定扫描的端口。
-n:禁用反向DNS 解析 (以加快扫描速度)。
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP attack 包。这种类型的扫描可间接检测防火墙的健壮性。
-sU:UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP:ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping通而放弃扫描。
本章内容教会了我们账号的安全措施,su命令切换用户和sudo命令提升权限。以及开关机的安全控制,可以限制更改GRUB引导参数,对他设置密码,只有有正确提供密码才能修改参数。使用系统弱口令检测暴力破解密码文件,使用端口扫描NMAP来检测端口。