系统安全与PAM认证与端口扫描

一、系统账号的安全:

1.清理系统中无用的账号:userdel -r
锁定长期不用的账号:usermod -L 用户名
解锁账号:usermod -U 用户名
查询账号状态:passwd -S 用户名
查询可登陆系统的账号数量:grep bash$ /etc/passwd |wc -l
2.修改用户的登陆shell:chsh -s /bin/bash 用户名
3.锁定账号文件:chattr +i /etc/{passwd,shadow}(注:锁定状态下无法对文件进行更改,也无法创建删除用户)
查看账号文件的状态:lsattr /etc/passwd
解锁账号文件:chattr -i /etc/passwd
4.修改账号的密码策略:
语法:chage [选项] 时间 用户名 (注:以天为单位)
选项:-m ##修改密码最短使用时间
-M ##修改最长使用时间
-d 0 ##设置用户登录时必须修改密码
-W ##修改密码过期提醒时间
5.历史命令的管理:
概述:本次登陆的历史命令会保存在内存中,在注销时,历史命令会保存到文件中;
管理:history ##查看内存中的历史命令,退出时会保存到用户家目录中的.bash_history文件中;
history -c ##清除内存中的历史命令,不清除历史命令文件
cat .bash_history ##查看家目录下的历史命令保存的文件
:>.bash_history ##清除保存的历史命令的文件
6.终端自动注销:
echo "export TMOUT=600" >>/etc/profile
source /etc/profile

二、用户提权和切换;

1.su切换用户:
概述:普通用户与管理员之间的相互切换;
语法:su - 用户名
选项:-代表切换用户后,使用其shell环境;
禁止普通用户使用su切换:
sed -i '6s/^#//g' /etc/pam.d/su ##开启pam.wheel.so模块
gpasswd -a 用户 wheel ##将用户添加到wheel组内
grep wheel /etc/group ##只有wheel组内成员才可以使用su命令
2.sudo提权命令:
概述:管理员授权命令给普通用户,执行命令时不需要root密码,便于精确控制普通用户使用命令;
语法:visudo ##root设置可以使用sudo命令的用户,设置哪个用户在哪台主机使用哪个命令,ALL代表所有主机,NOPASSWD:ALL代表不需要密码执行所有命令;
用户名 主机或ip地址=命令的绝对路径
:wq
sudo 命令 ##普通用户执行命令
sudo -l ##普通用户查看自己可以执行的命令列表

三、系统引导和登陆控制;

1.禁用Ctrl+alt+del热键:
sed -i '11s/^/#/g' /etc/init/control-alt-delete.conf ##注释掉文件中的第十一行
2.为GRUB菜单设置密码;
grub-md5-crypt ##生成加密字符串
在/boot/grub/grub.conf配置文件中,在hiddenmenu行和title行中间添加
password --md5 $1$hAVRJ/$pZC65twFnqQZpwFhZs.J70 ##设置加密字符串密码
password=123123 ##设置明文密码
3.控制tty终端启动的数量:
vi /etc/sysconfig/init
ACTIVE_CONSOLES=/dev/tty[345]
vi /etc/init/start-ttys.conf
env ACTIVE_CONSOLES=/dev/tty[345]
4.禁用root登陆的tty终端:
vi /etc/securetty ##禁用tty5登陆root用户,文件中vc为虚拟终端;
#tty5
5.禁用普通用户登录系统;
touch /etc/nologin ##创建此文件则普通用户无法登陆系统

四、PAM认证;

1.概述:Linux-PAM(linux可插拔认证模块):一种高效并且灵活便利的用户级别认证方式,是当前linux服务器普遍使用的认证方式。提供对所有服务进行认证的中央机制,适用于login,远程登录(telnet、ftp等)、su等应用程序。
2.系统处理请求流程;系统安全与PAM认证与端口扫描_第1张图片

3.PAM认证的构成;系统安全与PAM认证与端口扫描_第2张图片

4.PAM认证类型;
auth:认证管理,接收用户名密码等信息,认证该密码是否正确;
account:账户管理,检查账户是否被禁用、是否允许登录系统、是否过期、是否有限制等;
session:会话管理,在用户登录前和用户退出后的会话进行管理和记账;
password:密码管理,主要用来修改用户的密码;
5.PAM控制类型;
required:验证失败时仍然继续,但返回fail;
requisite:验证失败时则立即结束整个验证过程,返回fail;
sufficient:验证成功则立即返回,不再继续,否则忽略结果则继续验证;
optional:不用于验证,只是显示信息(通常用于session会话类型);
6.案例:
a.优化密码复杂性要求
[root@lwh ~]# useradd u01
[root@lwh ~]# passwd u01
[root@lwh ~]# vi /etc/pam.d/system-auth
14 password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 ##长度最小值8,至少有2个数字,至少有1个大写、小写、特殊字符
15 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3 ##密码历史
:wq
[root@lwh ~]# su - u01 ##进入u01
[root@lwh ~]# passwd #修改密码验证

b.设置登录失败次数锁定账号;
[root@lwh ~]# vi /etc/pam.d/system-auth ##本地登录
第5行添加:
auth required pam_tally2.so deny=5 unlock_time=180 quiet
第11行添加:
account required pam_tally2.so
:wq
[root@lwh ~]# vi /etc/pam.d/password-auth ##远程登录
第5行添加:
auth required pam_tally2.so deny=3 unlock_time=180 quiet
第11行添加:
account required pam_tally2.so
:wq
使用虚拟机登录u01账号,连续输入错误密码5次,第六次输入正确密码,发现也登录失败;
使用root账号为普通用户u01解锁;
[root@lwh ~]# pam_tally2 -u u01 ##查看登陆失败记录
[root@lwh ~]# pam_tally2 --reset -u u01 ##重置状态
再次使用虚拟机尝试登录u01账户,发现没问题;

五、NMAP端口扫描;

1.概述:NMap是一个强大的端口扫描类安全评测工具;
2.语法:nmap 选项 扫描类型 目标
推荐扫描类型:-P0 ##主机禁止ping也能扫描 -sU ##UDP扫描
-sT ##TCP扫描 -sO ##IP协议扫描
选项:-p指定端口
目标:有域名、ip、网段
3.案例:
[root@lwh ~]# nmap -sU 127.0.0.1 ##检测主机开放的udp端口
[root@lwh ~]# nmap -sT 127.0.0.1 ##检测主机开放的tcp端口
[root@lwh ~]# nmap -sT www.bdqn.com ##可以扫描京东、淘宝的网站
[root@lwh ~]# nmap -sT 192.168.13.251 |grep ftp
[root@lwh ~]# nmap -sT 192.168.13.251
[root@lwh ~]# nmap -sO 192.168.100.100 ##扫描IP协议的开放端口
[root@lwh ~]# nmap -A -O www.bdqn.com
[root@lwh ~]# nmap -vv www.baidu.com ##显示扫描过程
[root@lwh ~]# nmap -A -O 192.168.3.5 ##扫描OS,端口,MAC能信息
[root@lwh ~]# nmap -p 21,22,23,139,445,80,25,110 192.168.100.0/24 ##扫描整个192.168.100网段是否开放这些端口
[root@lwh ~]# nmap -sP 192.168.100.0/24 ##对一个网段的主机进行ping检测,查看存活主机