系统账号清理
将非登陆用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名(恢复 usermod -s /bin/bash 用户名)
锁定长期不使用的账号
usermod -L 用户名 (usermod -U 用户名 解锁)
passwd -l 用户名 (passwd -u 用户名 解锁)
(passwd -S 用户名 查看是否锁定)
删除无用账户
userdel -r 用户名
锁定账号文件 密码
chattr +i /etc/[passwd shadow] 锁定账号文件 账号密码
chattr -i /etc/[passwd shadow] 解锁账号文件 账号密码
sattr /etc/[passwd shadow] 查看是否锁定
密码安全控制
设置密码有效期
要求用户下次登录时修改密码
[root@cx cron]# vim /etc/login.defs 修改密码配置文件,适用于新用户
[root@cx cron]# chage -M [时间] [用户] 适用已经存在用户
[root@cx cron]# chage -d 0 [用户] 强制用户下次登陆修改密码
命令历史限制
减少记录的命令条数
[root@cx cron]# vim /etc/profile
#####HISTSIZE=10 修改命令历史条数
[root@cx cron]# source /etc/profile
登录时自动清空命令历史
临时清空
[root@cx cron]# history -c 清除命令历史
永久清空
[root@cx ~]# vim /etc/bashrc
history -c
[root@cx /]# source /etc/bashrc
终端自动注销
[root@cx /]# vim /etc/profile
[root@cx /]# source /etc/profile
登录控制
使用su命令切换用户
用途:Substitute User,切换用户
su 目标用户 ###仅切换用户
su - 目标用户 ###切换用户的同时切换shell环境
密码验证
①root→任意用户,不验证密码
②普通用户→其他用户,验证目标用户的密码
限制使用su命令的用户
su命令的安全隐患:
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登陆密码,带来安全风险
为了加强su命令的使用控制,可借助PAM认证模块,只允许极个别用户使用su命令进行切换
PAM(Pluggable Authentication Modules)可插拔式认证模块:
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上而下的顺序一次由PAM模块调用
将允许使用su命令的用户加入wheel组,并启用pam_wheel认证模块
vim /etc/pam.d/su
{#%PAM-1.0
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
确保这两行不被注释,正常生效}
查看pam认证模块
ls /etc/pam.d
查看某个程序是否支持PAM认证
ls /etc/pam.d | grep 命令名/程序名
.使用sudo机制提升权限
1)sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令
sudo <授权命令>
配置sudo授权
visudo
vim /etc/sudoers
{###配置用户别名
User_Alias 大写别名=用户1,用户2...
###配置主机别名
Host_Alias 大写别名=主机名1,主机名2...
###配置程序别名
Cmnd_Alias 大写别名=程序1,程序2...
###设置用户授权
用户名/用户别名 主机名/主机别名/all=程序列表/程序别名/all
###设置组授权
%组名 主机名/主机别名/all=[(用户)NOPASSWD:]程序列表/程序别名/all
###启动sudo操作日志
Defaults logfile = "/var/log/sudo"(写在尾行)}
查询授权的sudo###在设置程序列表中,可以使用通配符“*”取所有,“!”取反
查询授权的sudo
sudo -l
终端登录安全控制
限制root只在安全终端登录
[root@cx ~]# vim /etc/securetty 安全终端配置
进去后注释掉不让登录的端口
禁止普通用户登录
[root@cx ~]# touch /etc/nologin 创建这个文件 就禁止普通用户登录了
[root@cx ~]# rm -rf /etc/nologin 删除这个文件 普通用户就能登录了
GRUB限制
grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub . pbkd.. . ..#省略部分内容为经过加密生成的密码字符串
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 #进入添加密钥
cat << EOF #添加密钥,密钥是刚才复制的
set superusers="root” #设置用户名为root
password_pbkdf2 root grub. pbkd2. . . .
#设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的grub.cfg文件
#######重启系统进入GRtB菜单时,按e键将需要输入账号密码才能修改引导参数########法二:grub2-setpassword # 一步到位,直接设置
弱口令检测
John the Ripper 是一种开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解
执行暴力破解
cd /opt/john-1.8.0 /run
./john /opt/shadow.txt
#查看已破解的账户列表
./john --show /opt/shadow.txt
#使用密码字典文件
> john.pot #清空已破解的账户列表,以便重新分析
./john --wordlist=./passwd.lst /opt/shadow.txt #使用指定的字典文件进行破解
端口扫描
NMAP扫描端口
-p:指定扫描端口
-n:禁用反向DNS解析(以加快扫描速度)
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口未开放
-sT:TCP连接扫描,完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功认为目标端口正在监听服务,否则认为未开放
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略其他形式的TCP攻击包。这种扫描可间接检测防火墙健壮性
-sU:UDP扫描,探测目标主机提供哪些UDP服务,速度比较慢
-sP:ICMP扫描,类似ping检测,快速判断目标主机是否存活,不做其他扫描
-P0:跳过ping检测,这种认为所有目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描
-v:显示扫描过程
-F:快速扫描
-A:全面的系统扫描:包括打开操作系统探测、版本探测、脚本扫描、路径跟踪
-R:反向域名解析,即IP指向域名
-Pn:服务器禁止ping命令,跳过主机发现的过程进行端口扫描,-p0也要类似的效果
-sV:扫描系统版本和程序版本检测
端口扫描的状态
Opend:端口开启
Closed: 端口关闭
Filtered:端口被过滤,数据没有到达主机,返回的结果为空,数据被防火墙拦截了
Unfiltered:未被过滤,数据有到达主机,但是不能识别端口的当前状
Open|filtered:开放或者被过滤,端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中
Closed|filtered:关闭或者被过滤,只发生在IP ID idle扫描
natstat命令常用选项
netstat -natp 查看正在运行的使用TCP协议的网络状态信息
netstat -naup 查看正在运行的使用UDP协议的网络状态信息