目录
账号安全基本措施
将用户设为无法登录
—— 将非登录用户的 Shell 设为 /sbin/nologin
无法登录
允许用户登录
锁定用户/解锁用户
锁定用户命令 | 解锁用户命令 |
---|---|
usermod -L 用户名 | usermod -U 用户名 |
passwd -l 用户名 | passwd -u 用户名 |
删除无用账号
—— userdel -r 用户名
删除用户包括该用户的家目录
锁定配置文件
—— chattr +i /etc/passwd /etc/shadow :锁定配置文件
—— chattr -i /etc/passwd /etc/shadow :解锁配置文件
密码安全控制
设置密码有效期
对于已有的用户可以使用 chage 命令
格式:chage 选项 用户名
chage | 作用 |
---|---|
-m | 密码可更改的最小天数,为零时代表任何时候都可以更改密码 |
-M | 密码保持有效的最大天数 |
-W | 用户密码到期前,提前收到警告信息的天数 |
-E | 帐号到期的日期,过了这天,此帐号将不可用 |
-d | 上一次更改的日期 |
-i | 停滞时期,如果一个密码已过期这些天,那么此帐号将不可用 |
-l | 例出当前的设置,由非特权用户来确定他们的密码或帐号何时过期 |
命令举例
chage -d 0 mihuyo :强制用户 mihuyo 下一次登录一定修改密码(设置的密码要复杂)
对于新建用户,可以修改 /etc/login.defs 文件里的内容来设置密码规则
命令历史
history :查看历史命令
—— 减少记录命令的条数
-
vim /etc/profile :进入配置文件修改限制命令条数,适合新用户
HISTSIZE=200 :修改限制命令为200条,系统默认是1000条profile
source /etc/profile :刷新配置文件,使文件立即生效
vim .
-
export HISTSIZE=200 : 适用于当前用户
source /etc/profile :刷新配置文件,使文件立即生效
—— 临时清楚历史命令
-
history -c
-
clear
—— 注销时自动清空命令
-
vim ~/.bashrc
在脚本的最后一行回车输入:echo ‘ ’ > ~/.bash_history
—— 设置超时的时间
-
vi /etc/profile :对所有用户生效
在脚本的最后一行回车输入:expor TMOUT=数字(自动注销时间 S)
-
source /etc/profile :刷新文件
-
echo $TMOUT :查看自动注销时间
切换用户
任何一个用户登录都需要加载 bash 这个程序
——用途及用法
用途:Substitute User,切换用户
格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录)
root - - - >任意用户,不验证密码
普通用户- - - >其他用户,验证目标用户的密码
带 “ - ” 表示将使用目标用户的登录Shell环境
—— 查看su操作记录
安全日志文件:/var/log/secure
—— whoami :确定当前用户是谁
—— vim /etc/pam.d/su
把第六行注释去掉保存退出
默认情况下,使用 root 切换不需要密码,注释两行,所有账号都可以使用,但是 root 切换时需要密码
切换用户的方式
su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
限制使用 su 命令的用户
第一种
两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的
第二种
两行都注释也是允许所有用户都能使用 su 命令,但 root 下使用 su 切换到其他普通用户需要输入密码;如果第一行不注释,则 root 使用 su 切换普通用户就不需要输入密码
第三种
如果开启第二行,表示只有 root 用户和 wheel 组内的用户才可以使用 su 命令
第四种
如果注释第一行,开启第二行,表示只有 wheel 组内的用户才能使用 su 命令,root 用户也被禁用 su 命令
PAM 安全认证
当前linux普遍的认证方式
PAM模块:插件式的模块
常见的功能:
1.验证 用户名 密码功能
2.开发出一款软件如果要用到用户名和密码的功能时,就会调用pam架构中的密码模块,不需要二次开发
PAM认证原理
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/
例
ls /etc/pam.d | grep su 查看su是否支持PAM模块认证
专用配置文件/etc/pam.d/格式
type :功能
control :判断成功失败
module-path :指明本模块对应的程序文件的路径名
arguments :传递该模块的参数
认证模块类型(module-type)
auth :对用户身份进行识别,如提示输入密码,判断是否为root
acconut :对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等
password :使用用户信息来更新数据,如修改用户密码
session :用户会话期间的控制,如登录连接信息,用户数据的打开和关闭,挂载文件系统
-type :表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
PAM 验证流程 Control(控制位)
required:一票否决(失败了也会往下走)
requisite:一票否决(失败了退出,成功继续)
sufficient:一票通过(成功了退出,失败了会继续往下走)
optional:可选项 (不同于验证只显示信息)
sudo 命令——提升执行权限
用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
—— 配置sudo授权
visudo 或者 vim /etc/sudoers
记录格式:
用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。
—— 配置/etc/sudoers文件,可以授权用户较多的时使用
Host_Alias MYHOST= localhost 主机名
User_Alias MYUSER = yxp,zhangsan,lisi 需要授权的用户
Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd 授权
MYUSER MYHOST = NOPASSWD : MYCMD 授权格式
—— 查看sudo操作记录
需启用Defaults logfile
配置默认日志文件: /var/log/sudo
shell 模块
功能:检查有效 shell
帮助:满pam_shells
第一步:vim /etc/pam.d/su
并在第一行添加:auth required pam_shells.so
:wq
第二步:vim /etc/shells
去掉其中的:/bin/csh
第三步:useradd -s /bin/csh 用户名
新建用户
第四步:su 用户名
显示鉴定故障
limit 命令
作用:在用户级别实现对其可使用的资源的限制
ulimit 是 linux shell 的内置命令,它具有一套参数集,用于对 shell 进程及其子进程进行资源限制
ulimit 的设定值是 per-process 的,也就是说,每个进程有自己的 limits 值,使用ulimit进行修改,立即生效
ulimit 只影响 shell 进程及其子进程,用户登出后失效。
可以在 profile 中加入 ulimit 的设置,变相的做到永久生效
limit | 作用 |
---|---|
-H | 设置硬件资源限制 |
-S | 设置软件资源限制 |
-a | 显示当前所有的资源限制 |
-c | 设置 core 文件的最大值(单位:blocks) |
-d | 设置数据段的最大值(单位:kbytes) |
-f | 设置创建文件的最大值(单位:blocks) |
-l | 设置在内存中锁定进程的最大值(单位:kbytes) |
-m | 设置可以使用的常驻内存的最大值(单位:kbytes) |
-n | 设置内核可以同时打开的文件描述符的最大值(单位:n) |
-p | 设置管道缓冲区的最大值(单位:kbytes) |
-s | 设置堆栈的最大值(单位:kbytes) |
-t | 设置CPU使用时间的最大上限(单位:seconds) |
-u | 最大用户进程数 |
-v | 设置虚拟内存的最大值(单位:kbytes) |
unlimited | 是一个特殊值,用于表示不限制 |
默认修改配置文件路径
vim /etc/sudoers
运行命令者的身份 以哪个用户的身份 运行哪些程序
visudo -c :检查语法是否正确
别名类型
User_Alias(用户)
Runas_Alias(代表用户)
Host_Alias(登录主机)
Cmnd_Alias(命令)
###别名 Host_Alias MYHOSTS = kgc,localhost User_Alias MYUSERS = zhangsan,wangwu,lisi Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
root ALL=(ALL) ALL 用户 主机名ip= 命令
grub 加密
grub2 -setpassword
暴力破解密码
需要借助Ripper工具软件
弱口令检测一 -John the Ripper. John the Ripper是一-款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。
./configre 安装路径和选择功能 make .c .py 高级语言 机器 make(编译) 高级编译二进制 0 1 让机器课读懂 make install 将程序 存起来
nmap 扫描
要想使用此命令需要先安装
rpm -qa|grep nmap
yum install -y nmap
常用选项和扫描类型
nmap | 作用 |
---|---|
-p | 指定扫描的端口 |
-n | 禁用反向 DNS 解析(以加快扫描速度))ip 转换成 域名 12222 2www.baidu.com |
-sS | TCP 的 SYN 扫描 (半开扫描)只向目标发出 SYN 数据包,如果收到 SYN/ACK 响应包就认为目标端口正在监听,并立即断开连接,否则认为目标端口并未开放 |
-sT | TCP 连接扫描,这是完整的 TCP 扫描方式(默认扫描类型)用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放 |
-sF | TCP 的 FIN 扫描,开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包;许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包;这种类型的扫描可间接检测防火墙的健壮性 |
-sU | UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢 |
-sP | ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描 |
-P0 | 跳过 ping 检测, 这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法ping通而放弃扫描 |