账号安全基本措施
● 系统账号清理
- 将非登录用户的Shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
- 锁定账号文件passwd、shadow
[root@localhost~]# chattr-i /etc/passwd /etc/shadow 解锁文件井查看状态
[root@localhost~]# Isattr /etc/passwd /etc/shadow
---------------/etc/passwd
---------------/etc/shadow'
得出结论,由于/etc/passwd和/etc/shadow都存放的用户账号信息,所以两个缺一不可,少一个都无法创建用户与更改密码
● 密码安全控制
chage -M 日期 用户 设置用户密码有效期
chage -E xxxx-xx-xx 设置过期日期
- 设置密码有效期
- 要求用户下次登录时修改密码
[root@localhost~]# vi /etc/login.defs 适用于新建用户
......
PASS_MAX_DAYS 30 适用于已有用户
[root@localhost~]# chage-M 30 lisi
[root@localhost~]# chage-d 0 zhangsan强制在下次登录时更改密码
- 强制下次登陆更换密码
chage -d 0 用户 强制在下次登陆时更改密码
cat /etc/shadow | grep 用户 shadow文件中的第三个字段被修改为0
● 命令历史限制
- 减少记录的命令条数
/etc/profile这个文件是系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile命令使文件被读取重载。
[root@localhost ~]# vi /etc/profile #编辑全局变量配置文件
export HISTSIZE=200 #输入export HISTZIZE=200
[root@localhost ~]# source /etc/profile #相当于使/etc/profile内的命令重载一遍
- 登陆时自动清空历史命令
~/.bashrc文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行
echo " " > ~/.bash_history
配置文件,:vim /etc/profile(对全局配置):查看缓存多少条的bash
默认缓存1000条历史命令
● 终端自动注销
- 闲置600秒后自动注销
vi /etc/profile #编辑全局变量配置文件
export TMOUT=600 #输出timeout=600
● 常用选项
chage
设置账号的属性以及查看
chage -l usrname:查看用户的账户信息
chage -h:查看帮助
chage -d 0 usrname:比较特殊,表示下一次登录必须修改用户密码
使用su命令切换用户
-
用途及用法
用途:Substitute User,切换用户
格式 su -目标用户 -
密码验证
①root→任意用户,不验证密码
②普通用户→其他用户,验证目标用户的密码
[jerry@localhost ~]$ su - root 带-选项表示将使用目标用户的登陆Shell环境
口令:
[root@localhost ~]# whoami
root
限制用户使用su命令
①将允许使用su命令的用户加入wheel组
②启用pam_wheel认证模块
●su命令具有安全隐患:
su命令使得每个用户都具有反复尝试其他用户的登陆密码,若是root用户,则风险更大。
所以需要加强su命令的使用控制,可以借助PAM认证模块,仅允许极个别指定用户可使用su命令进行切换。
[root@localhost ~]# gpasswd -a admin wheel
将用户“admin”加入到whell组中
在/etc/pam.d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/su
【1】以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
【2】两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码
(pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码)
【3】如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。
【4】如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
linux中的PAM安全认证
◾ su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
◾ PAM(Pluggable Authentication Modules)可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
◾ 查看su操作记录
安全日志文件:/var/log/secure
PAM认证原理
- 一般遵循的顺序
- service(服务)→PAM(配置文件)→pam_*.so
- 首先要确定哪一项服务,然后加载响应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lin64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM慕课进行认证
- 不同的应用程序锁对应的PAM模块是不同的
PAM安全认证流程
认证流程四个过程
- 程序开始
- 验证开始
- 验证结束
- 程序后续动作
认证流程的四个状态 - required:验证失败也继续下一步,走完四个流程–>验证结束
- requisite:验证失败直接–>验证结束
- sufficient:验证失败也继续下一步,走完流程
- optional:不论失败成功,已经是最后一个流程,–>验证结束
使用sudo机制提权
- sudo是一个授权命令
用途:以其他用户身份(如root)执行授权的命令
1、配置sudo授权
● visudo或者vi /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)
2、语法格式
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
①用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。
②主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
③(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
④命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令
3、别名创建
用户别名 User_Alias
主机别名 Host_Alias
命令别名 Cmnd_Alias
开关机安全控制
- 调整BIOS引导设置
①将第一引导设备设为当前系统所在硬盘
②禁止从其他设备(光盘、U盘、网络)引导系统
③将安全级别设为setup,并设置管理员密码
系统弱口令检测
操作步骤
cd /opt
tar zxvf john-1.9.0.tar.gz #解压工具包
yum -y install gcc gcc-c++ make #安装软件编译工具
cd /opt/john-1.9.0/src
make clean linux-x86-64 #切换到src子目录,进行编译安装
cp /etc/shadow /opt/shadow.txt #准备待破解的密码文件
cd /opt/john-1.9.0/run
./john /opt/shadow.txt #切换到run子目录,执行暴力破解
./john --show /opt/shadow.txt #查看已破解出的账户列表
网络端口扫描
NMAP
-
是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术
-
官方网站:http://nmap.org/
-
安装 NMAP 软件包
mount /dev/sr0 /mnt #先进行本地磁盘挂载
yum install -y nmap #然后安装nmap软件包
命令常用选项与对应扫描类型
nmap [扫描类型][选项] <扫描目标...>
-sU ip地址:扫描udb端口
-sP:p相当于ping
-P:只ping 检查主机是否存活,后面跟ip地址-机器数;1-30或者245.0-24/表示一个网段的30/255台机器都扫描
-sP -n:加速ping
-n:加速;不进行域名解析增加速度
-P0 :扫描之前不建立三次握手连接,即不操作ping,直接扫描
-A:扫描显示的非常完全
-sS:只执行两次握手,没有最好一次握手(确认过程);S:syn的缩写
-sT:完整的三次握手过程,扫描TCP
-sF:只检测FIN包
-p 端口号 IP地址:指定端口扫描