一、账号安全控制
(一)系统账号清理
1、将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin用户名
2、锁定长期不使用的账号
usermod -L用户名 passwd-l 用户名 --------------锁定账号
passwd-S用户名 ----------------------------查看用户状态
passwd -u 用户名 ------------------------------------解锁账号
3、删除无用的账号
userdel -r 用户名
4、锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow --------------锁定文件
Isattr /etc/passwd /etc/shadow-----------------------查看状态
chattr -i /etc/passwd /etc/shadow-----------------解锁文件
(二)密码安全控制
1、设置密码有效期
[root@localhost ~]# vi /etc/login.defs----------------修改密码配置文件,适用于新建用户
PASS_ MAX_ DAYS 30
[root@localhost ~]# chage -M 30 zhangsan-----------适用于已有用户
2、要求用户下次登录时修改密码
[root@localhost ~]# chage -d 0 zhangsan-------------强制在下次登录时更改密码
[root@localhost ~]# cat /etc/shadow | grep zhangsan--------------shadow文件中的第三个字段被修改为
(三)命令历史限制
1、减少记录的命令条数
[root@localhost ~]# vi /etc/profile----------------系统环境变量配置文件(所有用户登录都会执行)
export HISTSIZE=200
2、登录时自动清空命令历史
[root@localhost ~]# vi ~/.bashrc
echo “” > ~/.bash_ history
(四)终端自动注销
1、闲置600秒后自动注销
[root@localhost ~]# vi letc/profile
export TMQUT=600
[root@localhost ~]# source /etc/profile
二、使用su命令切换用户
(一)用途用法及密码验证
▶作用:切换用户
▶格式:su [-] 目标用户 #带“-”表示使用目标用户的登录shell环境,不加环境变量不变。
▶可登录的用户一般分两种种,超级用户root、普通用户。
▶当root切换到任意的用户时,不需要密码。但当普通用户切换其他用户的时候,需要输入目标用户的密码进行验证。
(二)限制使用su命令的用户
1、将允许使用su命令的用户加入wheel组
gpasswd -a 用户 wheel #添加用户到wheel组中
grep wheel /etc/group #确定wheel组成员
2、修改/etc/pam.d/su认证配置启用pam_wheel认证
vim /etc/pam.d/su #编辑/etc/pam.d/su文件
auth sufficient pam_rootok.so
#pam_rootok.so模块的主要作用是使uid为0的用户root能够直接通过认证而不用输入密码
... #省略部分
auth required pam_wheel.so use_uid
#pam_wheel.so作用是让wheel组内的用户使用su命令,其他人(包括root)无法使用su命令
每种状态的解释:
两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证
开启第一行,注释第二行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码。
注释第一行,开启第二行:只有wheel组内的用户才能使用su命令,root用户也无法切换。
两行都开启:只有root用户和wheel组内的用户才可以使用su命令。
修改文档将命令前面的注释符“#”删除,并“wq”保存。
(三)查看su操作记录
1、安全日志文件—/var/log/secure
三、Linux中的PAM安全认证
(一)PAM安全认证流程
(二)PAM认证原理
▶PAM认证顺序:Service(服务)—>PAM(配置文件)—>pam_*.so
▶PAM首先确定服务,然后加载相应的PAM配置文件,最后调用PAM认证模块进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。
四、使用sudo机制提升权限
(一)sudo命令的用途及用法
▶作用:提升执行权限(使用其他用户的身份执行)
▶用法:sudo 授权命令
(二)配置sudo授权
1、visudo或vi /etc/sudoers
vi /etc/sudoers----此文件默认权限为440,保存退出时必须执行wq!强制操作
2、记录格式
用户 主机名=命令程序列表
3、语法格式
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
用户:直接授权指定的用户名,或采用“%组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户): 用户能够以何种身份来执行命令。此项可 省略,缺省时以root用户的身份来运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,"进行分隔。ALL则代表系统所有命令
4、设置别名
输入时,有时候有些用户、主机名或命令字符比较长或复杂,可以设置一个别名,方便省力。
使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
多个信息需要用“,”隔开。
User_Alias USERS=用户名1,用户名2,用户名3 #用户别名,USERS代表后面三个用户
Host_Alias HOSTS=localhost,bogon #主机别名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel #命令别名
USERS HOSTS=CMNDS #使用别名编写授权
(三)查看sudo操作记录
1、需要启动Defaults logfile配置
2、默认日志文件在"/var/log/sudo"
(四)查询授权的sudo操作
五、开关机安全控制
(一)调整BIOS引导设置
▶将第一引导设备设为当前系统所在硬盘
▶禁止从其他设备(光盘、U盘、网络)引导系统
▶将安全级别设为setup,并设置管理员密码
(二)GRUB限制
▶使用grub2-mkpasswd-pbkdf2生成密钥
▶修改/etc/grub.d/00_ header文件中, 添加密码记录
▶生成新的grub.cfg配置文件
grub2-mkpasswd-pbkdf2 #使用grub2-mkpasswd-pbkdf2生成密钥
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 #修改/etc/grub.d/00_header文件,添加密码记录
cat << EOF
set superusers=“root” #设置用户名为root
password_pbkdf2 root grub.pbkdf2…… #设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的 grub.cfg 文件
1、使用grub2-mkpasswd-pbkdf2生成密钥
2、修改/etc/grub.d/00_header文件,添加密码记录
修改文件前备份文件,防止出现问题好恢复。这里将第三步的grup.cfg一起备份了
3、生成新的grub.cfg配置文件
重启系统init 6,在相应界面按“e”,会跳出下图界面,按照提示输入用户名和密码才可以进入grub菜单。
六、终端登录安全控制
(一)限制root只在安全端登录
1、安全终端配置:/etc/securetty
vi /etc/securetty
.....
#tty5
#tty6 #禁止root用户从终端tty5、tty6登录
(二)禁止普通用户登录
1、建立 /etc/nologin文件
2、删除 nologin 文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin #禁止普通用户登录
[root@localhost ~]# rm -f /etc/nologin #取消上述登录限制
七、系统弱口令检测
一款密码分析工具,支持字典式的暴力破解。通过对shadow文件的口令分析,可以检测密码强度。
---解压工具包----
cd /opt
tar zxf john-1.8.0.tar.gz
---安装软件编译工具---
yum install -y gcc gcc-c++ make
---切换到src子目录---
cd /opt/john-1.8.0/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
—使用密码字典文件—
> john.pot #清空已破解出的账户列表,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt #使用指定的字典文件进行破解
1、解压工具包到opt目录下
2、将本地磁盘挂载到/mnt目录下,然后安装安装软件编译工具
3、切换到scr子目录进行编译安装
4、准备待破解的密码文件,然后去到 /opt/john-1.9.0/run子目录下执行强制破解,/john --show /opt/shadow.txt查询已破解出的账号列表
5、若字典中没有此密码,则添加
八、网络端口扫描------NMAP
(一)安装 NMAP 软件包
mount /dev/sr0 /mnt #先进行本地磁盘挂载
yum install -y 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 扫描的速度会比较慢 |
-s | ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描 |
-P0 | 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描 |