系统安全与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.系统处理请求流程;

3.PAM认证的构成;

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检测,查看存活主机