当系统账户过多时,我们有时候需要有些用户不能进行某些操作,或者给一些用户设置使用期限,或者给某些用户更多的权限,这时我们就需要对账户进行一些设置。
之前的文章中有介绍过账户管理,详细操作和命令可以去看下,这边就不再过多的介绍。
在Linux中除了我们用户自己创建的账号之外,还会产生系统或应用程序安装过程中产生的许多其它账户,除了root用户之外,其它账号都是用来维护系统运作的,一般不允许登录系统,比如:bin、ftp、apache、mail等。它们的账户结尾都是以/sbin/nologin结尾
在我们创建用户账号之后,当不想让这个账户进行登录shell时,我们也可以对其进行设置,让其没有权限登录。
usermod -s /sbin/nologin +用户名
[root@xiayan ~]# usermod -s /sbin/nologin csdn
[root@xiayan ~]# grep "csdn" /etc/passwd
csdn:x:1001:1001::/home/csdn:/sbin/nologin
对于长期不用的账号,我们也可以对其锁定,让其无法继续登入系统。
方法一:
usermod -L 锁定
usermod -U 解锁
#usermod的锁定方式是将
方法二:
passwd -l 锁定
passwd -u 解锁
[root@xiayan ~]# passwd -l csdn
锁定用户 csdn 的密码 。
passwd: 操作成功
[root@xiayan ~]# passwd -S csdn
csdn LK 2022-04-01 0 99999 7 -1 (密码已被锁定。)
[root@xiayan ~]# passwd -u csdn
解锁用户 csdn 的密码。
passwd: 操作成功
[root@xiayan ~]# passwd -S csdn
csdn PS 2022-04-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@xiayan ~]#
[root@xiayan ~]# usermod -L csdn
[root@xiayan ~]# passwd -S csdn
csdn LK 2022-04-01 0 99999 7 -1 (密码已被锁定。)
[root@xiayan ~]# usermod -U csdn
[root@xiayan ~]# passwd -S csdn
csdn PS 2022-04-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
userdel -r +账户名 删除账号
注:一定要-r连同宿主目录一起删除
chattr +i /etc/passwd /etc/shadow //锁定文件,包括root也无法修改
chattr -i /etc/passwd /etc/shadow //解锁文件
lsattr /etc/passwd /etc/shadow //查看文件锁定属性
对文件锁定
[root@xiayan ~]# chattr +i /etc/passwd
[root@xiayan ~]# chattr +i /etc/shadow
[root@xiayan ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd //i表示锁定,锁定后所有用户无法修改,包含root用户
----i----------- /etc/shadow
[root@xiayan ~]#
对passwd进行锁定后,无法进行添加更改账户信息,但是可以进行密码更改。因为账户密码储存再shadow中,passwd中只有密码的占位符,并无实际意义。
但当锁定shadow文件后,添加用户的操作也将无法成功。在创建用户的同时会在shadow中生成相对应的密码信息,因shadow锁定无法创建密码信息,所以添加用户会失效。
解锁文件
[root@xiayan ~]# chattr -i /etc/passwd
[root@xiayan ~]# chattr -i /etc/shadow
[root@xiayan ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
在日常生活中,我们都知道密码长的比短的可靠性高,密码中含有大小写字母数字和特殊字符的更加复杂,同时更加的安全。
在我们Linux系统中,为了提高账户的安全性,密码一般设置为包含大小写字母数字和特殊字符的18位密码。
然后定期通知用户进行密码更改,一般我们会设置密码有效期,提醒用户进行密码更改。
更改密码有效期:
chage -M 日期 + 用户
对于还未建立的用户,比如我们即将新建一批用户时,可以更改系统的默认设置,提示用户更改密码
vim /etc/login.defs
我们在系统操作的每一条命令,系统都会记录在宿主目录下的".bash_history"下,系统默认存储1000调历史记录。我们可以修改配置文件更改默认设置:vim /etc/profile
更改HISTSIZE的值,将HISTSIZE更改为较小的数值,系统默认为1000,可以设置为200或者更小
或者在退出账户时,清空历史命令记录
~/.bash_history
向.bash_history中输入一个空内容,覆盖掉原有内容
vim ~/.banshrc 编辑此文件后,每次登入系统时会自动清空历史命令记录
用户登录系统---->加载~/.bash_profile配置文件-----> ~/.bashrc生效
当用户长时间无操作时,我们可以让其自动退出账号
vim /etc/profile
添加全局变量,设置时间300s
[root@xiayan ~]# vim /etc/profile
[root@xiayan ~]# source /etc/profile //刷新下文件,同步变量
用途:Substitute User,切换用户
格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录)
root切换任意用户,不验证密码
普通用户切换其他用户,验证目标用户的密码
带 “ - ” 表示将使用目标用户的登录Shell环境
su操作记录:/var/log/secure
设置除root用户外其它所有用户禁止使用su命令
vim /etc/pam.d/su
此时启动PAM安全认证,除root用户外,其它用户无法使用su命令
[root@xiayan ~]# gpasswd -a jie wheel
正在将用户“jie”加入到“wheel”组中
[root@xiayan ~]# su - jie
上一次登录:四 4月 7 07:15:46 CST 2022pts/0 上
[jie@xiayan ~]$ su - csdn
密码:
最后一次失败的登录:四 4月 7 07:15:59 CST 2022pts/0 上
[csdn@xiayan ~]$
在进行系统操作时,有些命令只有root用户可以执行,为了避免root用户密码被更多的人知道,我们可以对普通的用户进行提权,使其可以使用root的一些权限而不用登入root账户。
在Linux中可以使用visudo或vim /etc/sudoers文件进行对用户进行提权设置。这里的/etc/sudoers文件权限为440,所以在编辑完之后需要wq!保存强制退出。
语法格式:
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作;“%”用于对组的表示
方法:visudo
[csdn@xiayan ~]$ useradd cs //没有使用提权命令时无法添加用户
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[csdn@xiayan ~]$ sudo useradd cs //使用sudo提权后可以成功添加用户
[csdn@xiayan ~]$ tail -1 /etc/passwd
cs:x:1003:1003::/home/cs:/bin/bash //用户成功添加
[csdn@xiayan ~]$ sudo userdel cs //刚没有给csdn用户授权userdel命令,无法使用
对不起,用户 csdn 无权以 root 的身份在 xiayan 上执行 /sbin/userdel cs。
用户别名的语法格式:
1 ) User Alias
用户别名:包含用户、用户组(%组名(使用%引导) )
User_Alias OPERATORS= zhangsan, tom, lisi
2) Host Alias
主机别名:主机名、IP、网络地址、其他主机别名!取反
Host_ Alias MAILSVRS=smtp, pop .
3) Cmnd Alias
命令路径、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/ rpm, /usr/bin/ yum .
语法格式:
别名用户 别名主机=别名命令列表
上面用了visudo的编辑方法,这儿换个方式
方法:vim /etc/sudoers
记得此文件权限为440是只读文件,编辑后要wq!
[jie@xiayan ~]$ sudo useradd tom
[jie@xiayan ~]$ tail -1 /etc/passwd
tom:x:1004:1004::/home/tom:/bin/bash
我们也可以使用sudo -l+用户名 查询可以使用sudo提权的命令,默认为当前用户
查看sudo日志有两种方法
方法一:
visudo 打开
最后行添加:Defaults logfile=var/log/sudo
将sudo日志文件放在var/log/sudo中
方法二:
var/log/secure查看日志文件
PAM(Pluggable Authentication Modules)可插拔式认证模块,是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式。PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略。
PAM工作原理:
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。、
将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启
在系统开机时可以在GRUB菜单中按e进入GRUB引导设置,进入单用户模式,为了安全可以将其设置密码,无密码禁止用户进入修改参数
方法一:
grub2-mkpasswd-pbkdf2 //设置GRUB菜单的密码
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
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的grub.cfg文件
重启系统进入GRtB菜单时,按e键将需要输入账号密码才能修改引导参数。
方法二:
grub2-setpassword
为了root账户安全,可以设置root用户禁止登入一些终端
vim /etc/securetty
#tty7 //使用#号注释掉相应的终端
tty8
可以使用w命令或tty查看当前用户登录的终端情况
[root@xiayan ~]# w
00:41:20 up 16 min, 1 user, load average: 0.07, 0.03, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.48.1 00:25 0.00s 0.05s 0.01s w
[root@xiayan ~]# tty
/dev/pts/0
tty1-tty6表示字符界面,可以用Ctrl+Alt+F1-F6切换
tty7是图形界面,用Ctrl+Alt+F7切换回图形界面
pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。
login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登入系统
删除/etc/nologin或者重启系统恢复正常
Joth the Ripper一款密码分析工具,支持字典式的暴力破解; 通过对shadow文件的口令分析,可以检测密码强度;
官方网站:John the Ripper password cracker
1. 把下载好的安装包上传到Linux中
2. 解压
tar zxvf john-1.9.0.tar.gz //解压工具包
3.安装软件编译工具
yum -y install gcc gcc-c++ make //安装软件编译工具
4.编译安装
cd /opt/john-1.9.0/src
make clean linux-x86-64
cp /etc/shadow /opt/shadow.txt //将密码文件复制到软件同目录下
5.执行暴力破解
cd /opt/john-1.9.0/run
./john /opt/shadow.txt //执行破解
./john --show /opt/shadow.txt //查看已破解出的账户列表
NMAP
NMAP是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术
官方网站:http://nmap.org/
软件安装:yum install nmap -y
命令格式:nmap [扫描类型] +扫描目标
-p:指定扫描的端口。
-n:禁用反向DNS解析(以加快扫描速度)
-sS: TCP的SYN扫描 (半开打a描), 只向目标发出SYN数据包, 如果收到SYN/ACK响应包就认为目标端口正在监听,并立即
断开连接;否则认为目标端口并未开放。
-sT:TCP连接扫描,这是完整的TCP打1描方式(默认扫描类型),用来建立--个TCP连接,如果成功则认为目标端口正在监
听服务,否则认为目标端口并未开放。
-sF:TCP的FIN才1描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤。而
忽略了其他形式的TCP攻击包。这种类型的打|描可间接检测防火墙的健壮性。
-sU:UDP才1描,探测目标主机提供哪些UDP服务,UDP描的速度会比较慢。
-sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-PO:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
natstat
nstsat常用选项 | 作用 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端1等信息 |
-t | 查看TCP相关的信息 |
-u | 显示UDP协议相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
-r | 显示路由表信息 |
-l | 显示处于监听状态的网络连接及端口信息 |
1.在Linux系统中,账户安全尤为重要,可以通过设置18位的组合密码提高安全性,对长期不用的账户进行锁定,减少历史命令记录存储或即时清除历史命令记录。
2.su命令切换用户,不利于系统其它用户安全,所以要启用PAM认证,开启wheel组进行禁用一些用户的su命令使用权限
3.因root账户拥有最高管理权限,所以root的账户安全尤为重要,使用sudo命令提权,可以避免频繁使用root账户。
4.使用别名方式进行sudo授权,适合批量定义多用户或组的提权
5.开机GRUB设置密码,建议使用grub2-setpassword,简单方便