目录
一.账号安全基本措施
1.系统账号清理
二.密码安全控制:
1.设置密码有效期:
2.要求用户下次登录时改密码
三.命令历史限制与自动注销
1.命令历史限制:
2.终端自动注销:
四.PAM安全认证
1.su的命令的安全隐患
2.什么是PAM
3.PAM认证原理
4.PAM安全认证流程
五.限制使用su命令的用户(pam-wheel认证模块)
1.su命令概述:
2. su命令的用途以及用法:
3.配置su的授权(加入wheel组)(pam_wheel认证模块:):
4.配置/etc/sudoers文件(授权用户较多的时候使用):
六.开关机安全控制
1.调整BIOS引导设置
2.GRUB限制
七.终端以及登录控制
1.限制root只在安全终端登录
2..禁止普通用户登录
八.系统弱口令检测
1.JOHN the Ripper,简称为JR
2.安装弱口令账号
3.密码文件的暴力破解
九.网络端口扫描
1.NMAP
2.格式
总结:
1.将非登录用户的Shell设为/sbin/nologin
(ps:在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。)
格式:usermod -s /sbin/nologin 用户名
2锁定长期不使用的账号:
[root@hehe ~]# usermod -L test2 锁定用户账号方法一
[root@hehe ~]# passwd -l test3 锁定用户账号方法二
[root@hehe ~]# usermod -U test2 解锁用户账号方法一
[root@hehe~]# passwd -u test3 解锁用户账号方法二
查看账户有没有被锁:passwd -S [用户名]
3.删除无用的账号
[root@hehe ~]# userdel test1
[root@hehe~]# userdel -r test2
4.锁定账号文件passwd,shadow
[root@hehe ~]# chattr +i /etc/passwd /etc/shadow 锁定文件,包括root也无法修改
[root@hehe ~]# chattr -i /etc/passwd /etc/shadow 解锁文件
[root@hehe ~]# lsattr /etc/passwd /etc/shadow查看文件状态属性
举个例子:
1.[root@localhost ~]# chage -M 60 test3 #这种方法适合修改已经存在的用户1
2.[root@localhost ~]# vim /etc/login.defs #这种适合以后添加新用户
PASS_MAX_DAYS 30
1.这个方法适用于早就已经存在的用户:
2.这个方法适用于新用户
[root@hehe ~]# chage -d 0 [用户名] 强制要求用户下次登陆时修改密码
1.减少记录的命令条数
减少记录命令的条数:
1.[root@hehe ~]# vim /etc/profile 进入配置文件修改限制命令条数。适合新用户
HISTSIZE=200 修改限制命令为200条,系统默认是1000条profile
[root@lhehe ~]# source /etc/ 刷新配置文件,使文件立即生效
2.[root@hehe~]# export HISTSIZE=200 适用于当前(之后)用户
[root@hehe~]# source /etc/profile
[root@hehe ~]# source /etc/profile 刷新配置文件,使文件立即生效
1.减少记录命令的条数(适用之前的用户):
2.注销时自动清空命令历史
3. 注销时自动清空命令:
[root@hehe ~]# vim ~/.bash_logout(临时清除,重启缓存的话还在)
echo "" > ~/.bash_history(永久删除)
history是查你使用过的命令
1.闲置600秒后自动注销
闲置600秒后自动注销:
[root@hehe ~]#vim .bash_profile 进入配置文件
export TMOUT=600 全局声明超过60秒闲置后自动注销终端
[root@hehe ~]# source .bash_profile
[root@hehe ~]# echo $TMOUT
[root@hehe ~]# export TMOUT=600
如果不在配置文件输入这条命令,那么是对当前用户生效
[root@hehe ~]#vim .bash_profile
# export TMOUT=600 注释掉这条命令,就不会自动注销了
1.,默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;
2.为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
1.PAM(Pluggable Authentication Modules)可插拔式认证模块
2.是一种高效而且灵活便利的用户级别的认证方式;
3.也是当前Linux服务器普遍使用的认证方式。
4.PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用
5.系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略
1.PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so;,
2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
4.如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
ls /etc/pam.d/ | grep su
5.PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。
控制类型也称做Control Flags,用于PAM验证类型的返回结果
用户1 | 用户2 | 用户3 | 用户4 | ||
auth | required 模块1 | pass | fail | pass | pass |
auth | sufficient 模块2 | pass | pass | fail | pass |
auth | required 模块3 | pass | pass | pass | fail |
结果 | pass | fail | pass | pass |
通过su命令可以非常方便切换到另一个用户,但前提条件是必须知道用户登录密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,安全风险就多一分。于是就多了一种折中的办法,使用sudo命令提升执行权限,不过需要由管理员预先进行授权, 指定用户使用某些命令:
用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
进入授权命令:
1.visudo 或者 vim /etc/sudoers
语法格式:
1.用户 主机名=命令程序列表
2.用户 主机名=(用户)命令程序列表
-l:
列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v:验证用户的时间戳;如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作;用-v可以跟踪最新的时间戳;
-u:指定以以某个用户执行特定操作;
-k:删除时间戳,下一个sudo命令要求用求提供密码;
1.首先创建3个组
2.vim /etc/pam.d/su
把第六行注释去掉保存退出
1. 以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的
2.两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码:
3.如果第–行不注释,则root 使用su切换普通用户就不需要输入密码( pam_ rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
4.如果开启第二行,表示只有root用户和wheel1组内的用户才可以使用su命令。
5.如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
3.将liunan加入到wheel之后,hehe就有了使用su命令的权限
4.使用pam_wheel认证后,没有在wheel里的用户都不能再用su
5.whoami命令确定当前用户是谁
visudo单个授权
visudo 或者 vim /etc/sudoers
记录格式:
user MACHINE=COMMANDS
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
%组名代表一整个组
权限生效后,输入密码后5分钟可以不用重新输入密码。
例如:visudo命令下
user kiro=(root)NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod
##代表 kiro主机里的user用户,可以无密码使用useradd命令,有密码使用usermod
/etc/sudoers多个授权
Host_Alias MYHOST= localhost 主机别名:主机名、IP、网络地址、其他主机别名!取反
Host_Alias MAILSVRS=smtp,pop(主机名)
User_Alias MYUSER = kiro,user1,lisi 用户别名:包含用户、用户组(%组名(使用引导))、还可以包含其他其他已经用户的别名
User_Alias OPERATORS=zhangsan,tom,lisi(需要授权的用户)
Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd 命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum(授权)
MYUSER MYHOST = NOPASSWD : MYCMDDS 授权格式
sudo -l #查询目前sudo操作
查看sudo操作记录
需启用Defaults logfile
配置默认日志文件: /var/log/sudo
sudo -l 查看当前用户获得哪些sudo授权(启动日志文件后,sudo操作过程才会被记录)
1.首先用visudo 或者 vim /etc/sudoers进入,输入需要授权的命令
2.切换到taojian用户,因为设置了它不能使用创建用户的命令所以无法创建
1.将第一引导设备设为当前系统所在硬盘
2.禁止从其他设备(光盘、U盘、网络)引导系统
3.将安全级别设为setup,并设置管理员密码
1.使用grub2-mkpasswd-pbkdf2生成密钥
2.修改/etclgrub.d/00_header文件中,添加密码记录
3.生成新的grub.cfg配置文件
方法一:
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的
威胁。
可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
grub2-mkpasswd-pbkdf2 ###根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub.pbkd..... ###省略部分内容为经过加密生成的密码字符串
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak 8
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak 9
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" ###设置用户名为root
password_pbkdf2 root grub.pbkd2..... ###设置密码,省略部分内容为经过加密生成的密码字符串
EOF16
grub2-mkconfig -o /boot/grub2/grub.cfg ###生成新的grub.cfg文件
重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。
方法二:
1.一步到位
2.grub2-setpassword
安全终端配置文件在 /etc/securetty
1.建立/etc/nologin文件
2.删除nologin文件或重启后即恢复正常
vim /etc/securetty
在端口前加#号拒绝访问
touch /etc/nologin 禁止普通用户登录
rm -rf /etc/nologin 取消禁止
1.一款密码分析工具,支持字典式的暴力破解
2.通过对shadow文件的口令分析,可以检测密码强度
3.官网网站:http://www.openwall.com/john/
1.获得Linux/Unix服务器的shadow文件
2.执行john程序,讲shadow文件作为参数
1.准备好密码字典文件,默认为password.lst
2.执行john程序,结合--wordlist=字典文件
1.—款强大的网络扫描、安全检测工具,支持ping扫描,多端口检测等多种技术。
2.官方网站: http://nmap.orgl
3.CentOS 7.3光盘中安装包,nmap-6.40-7.el7.x86_64.rpm
NMAP [扫描类型] [选项] <扫描目标....>
安装NMAP软件包
rpm -qa | grep nmap
yum install -y nmap
nmap命令常用的选项和扫描类型
-p:指定扫描的端口。
-n:禁用反向DNS 解析 (以加快扫描速度)。
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP attack 包。这种类型的扫描可间接检测防火墙的健壮性。
-sU:UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP:ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping通而放弃扫描。
1.账号基本安全措施:系统账号处理、密码安全控制、命令历史清理、自动注销
2.用户切换与提权(su、sudo)
3.开关机安全控制(BIOS引导设置、禁止Ctrl+Alt+Del快捷键、GRUB菜单设置密码)
4.终端控制
5.弱口令检测——John the Ripper
6.端口扫描——namp