系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)

系统安全及应用

账户安全控制

基本安全措施

系统账号清理

一般除了手动创建账号之外,还包括系统或安装过程生成的其他账号。除了其他账号只是用来维护系统运作,启动或保持服务,一般不允许登录,常见的非登录用户包括bin,daemon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,haldaemon等。

为了确保系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动

[root@localhost ~]#  grep "/sbin/nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin

对长期不用的账号进行锁定(passwd ,usermod)

[root@localhost ~]# usermod -L tom    锁定账号
[root@localhost ~]# passwd -S tom     查看账号状态
tom LK 2020-06-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U tom     解锁账号
[root@localhost ~]# passwd -S tom
tom PS 2020-06-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

chattr–锁定账号配置文件

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow   锁定文件
[root@localhost ~]# lsattr  /etc/passwd /etc/shadow     查看锁定的状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow   解锁文件 
[root@localhost ~]# lsattr  /etc/passwd /etc/shadow     查看为解锁状态
---------------- /etc/passwd
---------------- /etc/shadow

锁定账户是无法登录和删除账号,更改密码
[root@localhost ~]# useradd zhang
useradd:无法打开 /etc/passwd

密码安全控制( chage)

chage命令—设置密码有效期限

为了降低密码被猜出和暴力爆破的风险

[root@localhost ~]# vi /etc/login.defs		见下图,对于未创建的用户,使用此命令修改配置文件'
PASS_MAX_DAYS   99999    密码有效期无限大
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

[root@localhost ~]# chage -M 30 lisi	对于已创建的用户,用这条命令'

把最大天数9999改为30天,9999为无线大

要求用户下次登录时修改密码

[root@localhost ~]# chage -d 0 mike 重新登录一下
You must change your password now and login again!
更改用户 mike 的密码 。
为 mike 更改 STRESS 密码。
(当前)UNIX 密码:

命令历史,自动注销

shell给用户提供了极大的方便,但是历史机制会给安全带来隐患这里记录条数由HISTSIZE控制,默认1000条,可以设置200条

root@localhost ~]# vi /etc/profile			对于未创建的用户,使用此命令修改配置文件
...省略部分内容
将其中的HISTSIZE=1000,修改为HISTSIZE=200
[root@localhost ~]# export HISTSIZE=200        该命令适用于当前用户,及时成效
		

注销时自动清空命令历史:

修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。即:当用户注销(退出已登录的bash环境)时,所记录的历史命令将自动清空

[root@localhost ~]# vi .bash_logout
history -c
clear

bash终端自动注销

bash终端环境中,可以设置一个闲置超时时间,当超过指定时间没有任何输入时即自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险。闲置时间有变量TMOUT来控制,默认单位为秒

[root@localhost ~]# vi /etc/profile		'适用于新登录的用户'
...中间省略内容
export TMOUT=20			'闲置时间设置为20s'
[root@localhost ~]# export TMOUT=20		'适用于当前用户'

用户切换与提权

大多数Linux服务器并不建议用户直接以root用户进行登录。

linux 提供了su ,sudo 两种命令

su命令主要用来切换用户

sudo命令用来提升执行权限

su 命令 -切换用户

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限

切换时需要对目标用户的密码进行验证(从root用户切换为其他用户不需要)

[root@localhost ~]# su - root
上一次登录:一 6月 22 19:38:36 CST 2020从 192.168.136.2pts/0 上
[root@localhost ~]# su - zhangsan  root用户切换不需要密码
上一次登录:三 7月  1 17:22:44 CST 2020pts/3 上
[root@localhost ~]# su - lisi
上一次登录:三 7月  1 17:23:28 CST 2020pts/3 上

限制用户使用su命令的用户

以减少有机会反复尝试登录密码,将允许使用su命令的用户加入wheel组

[root@localhost ~]# id mike    查看是否在wheel中
uid=1002(mike) gid=1004(mike) 组=1004(mike)
[root@localhost ~]#  gpasswd -a mike wheel    添加到wheel中
正在将用户“mike”加入到“wheel”组中
[root@localhost ~]# id mike
uid=1002(mike) gid=1004(mike) 组=1004(mike),10(wheel)  
[root@localhost ~]# vi /etc/pam.d/su
...省略部分内容
auth            sufficient pam_roottok.so
auth            required        pam_wheel.so use_uid		'进入编辑,将此行开头的#删除,随后wq退出即可

[root@localhost ~]# su lisi
[lisi@localhost /]$ su root
密码:
su: 拒绝权限
[root@localhost ~]# su mike
[mike@localhost root]$ su root
[root@localhost ~]# su  mike  
[ mike@localhost root]$ id 
uid=1001( mike) gid=1001( mike) 组=1001( mike),10(wheel) 环境 在whell中可以直接登录root    =unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

sudo命令–提升执行权限

用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码

对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分,而sudo命令就诞生了,既可以让部分普通用户拥有管理权限还可以不要root密码

配置文件/etc/sudoers中添加

sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。若使用vi编辑,保存时必须执行“:w!”命令强制操作,否则系统将提示为只读文件而拒绝保存

mark

授权配置包括用户,主机,命令

[root@localhost ~]# visudo		'或者使用vi /etc/sudoers 命令进入sudo配置文件'
...此处省略部分信息
root    ALL=(ALL)       ALL		'发现root用户拥有所有权限'
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL		'发现wheel组中的用户也拥有所有权限'

认识了解pam_wheel认证模块

启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令 尝试进行切换时将会按照“拒绝权限”来处理,以减少有机会反复尝试登录密码

[root@localhost ~]# vi /etc/pam.d/su
...省略部分内容
#auth            required        pam_wheel.so use_uid		'进入编辑,将此行开头的#删除,随后wq退出即可'
su: 拒绝权限
[wangwu@localhost ~]$ su - mike		'无法使用su命令'
密码:
su: 拒绝权限

PAM安全认证

su 命令的隐患

限制用户使用su命令的用户,以减少有机会反复尝试登录密码,将允许使用su命令的用户加入wheel组

PAM认证原理

PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so(.so 后缀代表模块文件)

PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证

PAM认证的构成

查看su的PAM配置文件:cat /etc/pam.d/su

每一行都是一个独立的认证过程

每一行可以区分为三个字段(认证类型,控制类型,PAM模块及其参数)

[root@localhost ~]# cat /etc/pam.d/su
#%PAM-1.0
auth		sufficient	pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth		required	pam_wheel.so use_uid
auth		substack	system-auth
auth		include		postlogin
account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet
account		include		system-auth

PAM安全认证流程

控制类型也可以称作Control Flags,用于PAM验证类型的返回结果

1.required验证失败时仍然继续,但返回Fail

2.requisite验证失败则立即结束整个验证过程,返回Fail

3.sufficient验证成功则立即返回,不在继续,否则忽略结果并继续

4.optional不用于验证,只显示信息(通常用于session(会话)类型)

mark

系统引导和登录控制

调整BIOS引导设置

将第一引导设备设为当前系统所在硬盘

禁止从其他设备(光盘,U盘,网络)引导系统

将安全级别设为setup,并设置管理员密码

更改GRUB引导参数

使用grub2-mkpasswd-pbkdf2生成秘钥

修改/etc/grub.d/00_header文件中,添加密码记录

生成新的grub.cfg配置文件

image-20200622231455906

image-20200622231620343

localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak		'将grub配置文件备份'
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak		'将/etc/grub.d/00_header文件也备份一下'
[root@localhost ~]# grub2-mkpasswd-pbkdf2		'开始加密自己的密码'
输入口令:		'例如输入 123123'
Reenter password: 		'重复输入123123'
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.E95B023DE28491A5F5A34B18C5C6CE9F74695A15FB17F48E04630B04DCB8E9A21EE3322C02311DEF3049654B5F64DD7A455BDF707FD304F4DB6ABC51A0F12321.08CF42CC9225D539DB130989F5445BDE2995B3691CE5806F075CBB51AD3084BA5E9B7C04EFC9D5BEEA8782CCDAA3105FA45AD9F534B5473FD91EB20556453EEB		'is 后面的内容就是通过加密算法将123123生成的加密密码'
[root@localhost ~]# vi /etc/grub.d/00_header		'编辑配置文件头文件'
'将以下内容输入进去,刚刚生成的加密密码也输入进去'
cat << EOF
set superusers="root"
passwd_pbkdf2 root grub.pbkdf2.sha512.10000.E95B023DE28491A5F5A34B18C5C6CE9F74695A15FB17F48E04630B04DCB8E9A21EE3322C02311DEF3049654B5F64DD7A455BDF707FD304F4DB6ABC51A0F12321.08CF42CC9225D539DB130989F5445BDE2995B3691CE5806F075CBB51AD3084BA5E9B7C04EFC9D5BEEA8782CCDAA3105FA45AD9F534B5473FD91EB20556453EEB
EOF

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg		'将生成的配置文件覆盖掉原来的grub.cfg配置文件'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-b02d514a7e824ce7b6ea15214bb43466
Found initrd image: /boot/initramfs-0-rescue-b02d514a7e824ce7b6ea15214bb43466.img
done
[root@localhost ~]# init 6		'重启'

终端登录安全控制

禁止root用户登录


[root@192 ~]# vi /etc/securetty
vc/11
tty1
tty2
tty3
tty4
#tty5   '禁止终端tty5登录,在其前方输           入#即可'
#tty6       '禁止终端tty6登录,在其前方输入#即可'

禁止普通用户登录

维护时候不希望有新的用户登录

建立/etc/nologin文件

删除nologin文件或重启后即恢复正常

[root@localhost ~]# touch /etc/nologin		'禁止普通用户登录'
[root@localhost ~]# rm -rf /etc/nologin		'取消上述登录限制'
'一般做维护的时候使用(只有root用户可以登录,其他用户不可登录)'

弱口令检测

弱命令检查

  • 一款密码分析工具,支持字典式的暴力破解

  • 通过对shadow文件的口令分析,可以检测密码强度

弱口令实验:通过john工具查看自己的密码

[root@localhost ~]# ll
总用量 5336
-rw-------. 1 root root    1423 6月  17 01:34 anaconda-ks.cfg
-rw-r--r--. 1 root root 5450412 6月  22 23:56 john-1.8.0.tar.gz
-rw-r--r--. 1 root root    2158 6月  22 23:58 John BUG  ???ϴ?????Loaded 5 password hashes with 5 different salts (crypt, generic crypt(3) [64]).txt
----------. 1 root root     867 6月  23 10:08 shadow.txt
[root@localhost ~]# tar zxvf john-1.8.0.tar.gz 
john-1.8.0/README
john-1.8.0/doc/CHANGES
john-1.8.0/doc/CONFIG
john-1.8.0/doc/CONTACT
john-1.8.0/doc/COPYING
john-1.8.0/doc/CREDITS
john-1.8.0/doc/EXAMPLES
john-1.8.0/doc/EXTERNAL
john-1.8.0/doc/FAQ
john-1.8.0/doc/INSTALL
[root@localhost 111]# cd /root/john-1.8.0/	

[root@localhost john-1.8.0]# ls	'查看压缩包'
doc  README  run  src		'doc是说明文档,README是说明书,run是脚本,src是源码文件'
接下来是手工编译安装的过程
[root@localhost src]# cd src 源码中编辑
[root@localhost src]# yum install gcc gcc-c++ -y
[root@localhost src]# make linux-x86-64		'make编译'
[root@localhost john-1.8.0]# cd run
[root@localhost run]# ls		'此时已经有john脚本'
ascii.chr   john       lm_ascii.chr  makechr       relbench  unique
digits.chr  john.conf  mailer        password.lst  unafs     unshadow
[root@localhost run]# ./john /etc/passwd /etc/shadow	'运行脚本查看/etc/passwd /etc/shadow文件'
123123           (zhangsan)        已经出来密码
1g 0:00:00:40 0% 2/3 0.02488g/s 228.7p/s 252.6c/s 252.6C/s leslie..boston

四:端口扫描

一款强大的网络扫描,安全检测工具

可以探测局域网中那些主机在线,或者某台主机中开了那些端口

NMAP的扫描语法

nmap [扫描类型] [选项] <扫描目标…>

常用的扫描类型
-sS:tcp syn扫描

-sF:tcp fin扫描

 -P0:跳过ping扫描

-sT:TCP连接扫描

-sU:UDP端口扫描,查看主机提供哪些UDP

-sP:类似于ping,查看主机是否在线

nmap实验

[root@localhost run]# yum install nmap -y
[root@localhost ~]# nmap -sP 192.168.136.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:11 CST
Nmap scan report for 192.168.136.1
Host is up (0.00016s latency).
MAC Address: 00:50:56:F6:EF:9A (VMware)
Nmap scan report for 192.168.136.2
Host is up (0.00014s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.136.254
Host is up (-0.11s latency).
MAC Address: 00:50:56:F9:0A:A8 (VMware)
Nmap scan report for 192.168.136.158
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 6.32 secon
[root@localhost ~]# nmap -sT 192.168.136.158 查看tcp端口

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:12 CST
Nmap scan report for 192.168.136.158
Host is up (0.0012s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh


8.136.254
Host is up (-0.11s latency).
MAC Address: 00:50:56:F9:0A:A8 (VMware)
Nmap scan report for 192.168.136.158
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 6.32 secon
[root@localhost ~]# nmap -sT 192.168.136.158 查看tcp端口

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:12 CST
Nmap scan report for 192.168.136.158
Host is up (0.0012s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh


猜你喜欢

转载自blog.csdn.net/weixin_47151717/article/details/107127033