目录
一、账号基本安全措施
1.1.系统账号清理
(1)将非登录用户的Shell设为/sbin/nologin
命令: usermod -s 用户登录shell路径 用户
(2)锁定账号文件passwd、影子文件shadow;并查看
命令:
chattr +i /etc/passwd 锁定
chattr -i /etc/passwd 解锁
lsattr /etc/passwd 查看
chattr +i /etc/shadow
chattr -i /etc/shadow
lsattr /etc/shadow
(3)删除无用的账号
命令:userdel -r 用户名
(4)锁定长期不使用的账号
命令:
passwd -l 用户名 ###锁定用户账号(2个!)
passwd -u 用户名 ###解锁用户账号
usermod -L 用户名 ###锁定用户账号(1个!)
usermod -U 用户名 ###解锁用户账号
查看/etc/shadow文件,看效果
cat /etc/shadow
1.2.密码安全控制
(1)设置密码的有效期
①适用于新建用户:
vi /etc/login.defs
进去编辑:
查看:
②
适用于已有用户
命令:chage -M 天数 用户
(2)要求用户下次登录时修改密码
命令:chage -d 0 用户
1.3.命令历史清理
1)减少记录的命令条数
例如:把记录的命令条数改为200条
vim /etc/profile
(2)注销时自动清空历史命令
永久清除:
临时清除(重启缓存还在):
1.4.自动注销
闲置(*)秒后自动注销:
例如:闲置600秒后自动注销
进去编辑:
二、用户切换su
2.1.用途及用法
su – : 切换到宿主目录下
su :切换到当前目录下
2.2.密码验证
(1)root→任意用户,不验证密码。
(2)普通用户→其他用户,验证目标用户的密码。
2.3.限制使用su命令的用户
(1)①将允许使用su命令的用户加入wheel组②启用pam_wheel认证模块
默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到 wheel 组,修改/etc/pam.d/su 认证配置以启用pam_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)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
(2)查看su操作记录:
安全日志文件:/var/log/secure
普通用户切换登录测试验证:
使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看。
2.4.su命令的安全隐患
①默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。
②为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
2.5.PAM可插拔式认证模块
①是一种高效而且灵活便利的用户级别的认证方式。
②也是当前Linux服务器普遍使用的认证方式。
2.6.PAM认证原理
(1)PAM认证一般遵循的顺序: Service (服务) –> PAM (配置文件) –> pam_*.so;
(2)PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。
(3)用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。
(4)不同的应用程序所对应的PAM模块也是不同的。
2.7.查看某个程序是否支持PAM认证,可以用ls命令
例如:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
2.8.PAM安全认证流程
1.required验证失败时仍然继续,但返回Fail。
2.requisite验证失败则立即结束整个验证过程,返回Fail。
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续。
4.optional不用于验证,只显示信息(通常用于session类型)。
三、提权sudo
3.1.sudo命令的用途及用法
(1)用途:以其他用户身份(如root)执行授权的命令。
(2)用法:sudo 授权命令
3.2.配置sudo授权
(1)visudo 或者 vi /etc/sudoers
(2)语法格式:
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
-l:列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v:验证用户的时间戳;如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作;用-v可以跟踪最新的时间戳;
-u:指定以以某个用户执行特定操作;
-k:删除时间戳,下一个sudo命令要求用求提供密码;
①用户:直接授权指定的用户名,或采用”%组名”的形式(授权一个组的所有用户)。
②主机名:使用此规则的主机名。没配置过主机名时可用localhost,
有配过主机名则用实际的主机名,ALL则代表所有主机。
③(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令。
④命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号”,”进行分隔。ALL则代表系统中的所有命令。
(3)案列
①:wangliu 用户可以使用useradd usermod
需求: wangliu root用户下的权限 useradd usermod
3.3.用户别名案列
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd _Alias来进行设置。
用户别名的语法格式:
(1)User_Alias 用户别名:包含用户、用户组(%组名(使用引导))、还可以包含其他其他已经用户的别名
User_Alias MYUSER =zhangsan,lisi,wangwu
(2)Host_Alias 主机别名:主机名、IP、网络地址、其他主机别名!取反
Host_Alias MYHOST=yy,localhost
(3)Cmnd Alias命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias MYCMND=/usr/sbin/*,/usr/bin*,!/usr/sbin/reboot
(4) MYUSER MYHOST=NOPASSWD:MYCMND
3.3.启动sudo操作记录
visudo
Defaults logfile = “/var/log/sudo”
(1)sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加”Defaults logfile”设置如果已经启用sudo日志,则可以从/var/log/sudo文件中看到用户的 sudo操作记录。注:启用日志:Defaults logfile=/var/ log/ sudo。
(2)另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤。
sudo -l ###查看当前获得哪些sudo授权
四、开关机安全控制
4.1.调整BIOS引导设置原则
①将第一引导设备设为当前系统所在硬盘;
②禁止从其他设备(光盘、 U盘、网络)引导系统;
③将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启
4.2.GRUB限制
①使用grub2-mkpasswd-pbkdf2生成密钥
②修改/etc/grub.d/00_header文件中,添加密码记录
③生成新的grub.cfg配置文件
方法一:
通常情况下在系统开机进入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.pbkd2….. ###设置密码,省略部分内容为经过加密生成的密码字符串EOF
grub2-mkconfig -o /boot/grub2/grub.cfg ###生成新的grub.cfg文件
重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。
方法二:
一步到位
grub2-setpassword
五、终端控制
5.1.限制root只在安全终端登录
(1)安全终端配置:/etc/securetty
(2)步骤:
-
更改相关配置文件
-
切换至指定终端进行测试
-
切换至其他终端进行测试
5.2.禁止普通用户登录
(1)建立/etc/nologin文件
(2)删除nologin文件或重启后即恢复正常
六、弱口令检测、端口扫描
6.1.弱口令检测——John the Ripper
(1)John the Ripper,简称为JR
①一款密码分析工具,支持字典式的暴力破解;
②通过对shadow文件的口令分析,可以检测密码强度;
③官方网站:http://www.openwall.com/john/
(2)安装JR工具
①安装方法:make clean 系统类型
②主程序文件为john
(3)检测弱口令账号
①获得Linux/Unix服务器的shadow文件。
②执行john程序,将shadow文件作为参数。
(4)密码文件的暴力破解
①准备好密码字典文件,默认为password.lst。
②执行john程序,结合–wordlist=字典文件。
(5)案列
弱口令检测————John the Ripper
John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。
① cd /opt
② tar zxvf john-1.8.0.tar.gz #解压工具包
③ yum install -y gcc gcc-c++ make #安装软件编译工具
④ cd /opt/john-1.8.0/src #切换到src子目录
⑤ make clean linux-x86-64 #进行编译安装
⑥ cp /etc/shadow /opt/shadow .txt #准备待破解的密码文件
⑦ cd /opt/john-1.8.0/run
./john /opt/shadow.txt #执行暴力破解
⑧ ./john –show /opt/shadow.txt #查看己破解出的账户列表
6.2.端口扫描——NMAP
①一款强大的网络扫描、安全 检测工具。
②官方网站:http://nmap.org/。
③CentOS 7.7光盘中安装包 nmap-6.40-7.el7.x86_64.rpm。
常用格式:nmap [扫描类型] [选项] <扫描目标…>
控制位:
控制位 | |
SYN | 建立连接 |
ACK | 确认 |
FIN | 结束断开 |
PSH | 传送0数据缓存 上层应用协议 |
RST | 重置 |
URG | 紧急 |
rpm -qa | grep nmap 查看nmap是否安装
yum install -y nmap
nmap命令常用的选项和描类型
-p |
指定扫描的端口。 |
-n |
禁用反向DNS解析(以加快扫描速度)。 |
-sS |
TCP的sYN扫描(半开扫描),只向目标发出sYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 |
-sT |
TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。 |
-sF |
TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYTN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 |
-sU |
UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 |
-sP |
ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 |
-P0 |
跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。 |
案列:
①分别查看本机开放的TCP端口、UDP端口
②检测192.168.10.0/24网段有哪些存活主机
七、总结
(1)账号基本安全措施:系统账号处理、密码安全控制、命令历史清理、自动注销。
(2)用户切换与提权(su、sudo)。
(3)开关机安全控制:BIOS引导设置、禁止Ctrl+Alt+Del快捷键、GRUB菜单设置密码。
(4)终端控制
(5)弱口令检测——John the Ripper
(6)端口扫描——namp
。