Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)

  • 一:账户安全控制
    • 1.1:账号安全基本措施
      • 1.1.1:系统账号清理
      • 1.1.2:密码安全控制
      • 1.1.3:命令历史,自动注销
    • 1.2:用户切换与提权
      • 1.2.1:su命令-切换用户
      • 1.2.2:启用pam_wheel认证模块
    • 1.3:linux中的PAM安全认证
      • 1.3.1:PAM及其作用
      • 1.3.2:PAM认证原理
      • 1.3.3:PAM认证的构成
      • 1.3.4:PAM认证类型
      • 1.3.5:PAM安全认证流程
    • 1.4:使用sudo机制提升权限
      • 1.4.1:su命令的缺点
      • 1.4.2:sudo命令的用途及用法
      • 1.4.3:配置sudo授权
    • 1.5:实验
      • 1.5.1:sudo实验
      • 1.5.2:查看sudo操作记录
      • 1.5.3:仅允许用户radmin使用su命令
      • 1.5.3:允许用户zhangsan通过sudu方式管理员工账号:
      • 1.5.4:允许用户lisi通过sudo方式执行特权命令:
  • 二:系统引导和登录控制
    • 2.1:开关机安全控制
      • 2.1.1:调整BIOS引导设置
      • 2.1.2:禁止Ctrl+Alt+Del快捷键重启
      • 2.1.3:GRUB限制
    • 2.2:终端及登录安全控制
      • 2.2.1:减少开放的tty终端个数
      • 2.2.2:禁止root用户登录
      • 2.2.3:禁止普通用户登录
  • 三:弱口令检测
    • 3.1:Joth the Ripper,简称为 JR
    • 3.2:弱口令实验:通过john工具查看自己的密码
  • 四:端口扫描
    • 4.1:NMAP
    • 4.2:nmap实验

一:账户安全控制

1.1:账号安全基本措施

1.1.1:系统账号清理

  • 将非登录用户的Shell设为/sbin/nologin

  • 锁定长期不使用的账号

  • 删除无用的账号

  • 锁定账号文件passwd、shadow

在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而产生的其他大量账号。

除了root之外,其他大量账号只是用来维护系统运作,启动或保持服务进程,一般是不允许登录的,也称为非登录用户。

常见的非登录用户包括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
...省略部分内容
[root@localhost ~]# grep "bash$" /etc/passwd		         '查看当前可以登录的用户'
  • 各种非登录用户中,还有相当一部分是很少用到的,如news. uucp、 games、gopher.这些用户可以视为冗余账号,直接删除即可。

  • 除此之外,还有一些随应用程序安装的用户账号,若程序卸载以后未能自动删除,则需要管理员手动进行清理。

  • 对于Limux服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。

  • 例如,若要锁定、解锁名为zhangsan的用户账号,可以执行以下操作(passwd、uisermod命令都可用来锁定、解锁账号)。

[root@localhost ~]# passwd -l zhangsan (或者 usermod -L zhangsan	)	'#锁定用户zahngsan'
锁定用户 zhangsan 的密码 。
passwd: 操作成功
[root@localhost ~]# usermod -U zahngsan (或者 passwd -u zahngsan)		'#解锁用户zhangsan'
[root@localhost ~]# passwd -S zahngsan		'#查看账号状态'
lisi PS 2019-11-14 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
  • 如果服务器中的用户账号已经固定,不在进行更改,还可以采取锁定账号配置文件的方法使用chattr命令,分别结合“+i”“-i”选项来锁定,解锁文件,使用lsattr命令可以查看文件锁定情况
chattr命令基本格式
chattr +i [目标文件]     '锁定目标文件'
chattr -i [目标文件]     '解锁目标文件'
lsattr  [目标文件]       '查看目标文件'

例如
[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
  • 在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加,删除账号,也不能更改用户的密码,登录shell,宿主目录等属性信息

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow ‘锁定目标文件’
[root@localhost ~]# id lisi ‘查看是否存在lisi用户’
id: lisi: no such user
[root@localhost ~]# useradd lisi ‘尝试添加lisi用户’
useradd:cannot open /etc/passwd ‘提示无法添加,文件已被锁定’

1.1.2:密码安全控制

  • 设置密码有效期

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

在不安全的网络环境中,为了降低密码被猜出或者被暴力破解的风险,用户应养成定期修改密码的习惯,避免长期使用同一个密码。

管理员可以在服务器端限制用户密码的最大有效天数

对于密码已经过期的用户,登录时将被要求重新设置密码,否则拒绝登录

chage 命令用于设置密码的时限

例如:执行以下操作可将密码的有效期设为30天(chage命令用于设置密码时限)

[root@localhost ~]# vi /etc/login.defs		'对于未创建的用户,使用此命令修改配置文件'
PASS_MAX_DAYS 30                             "见下图"
[root@localhost ~]# chage -M 30 lisi		'对于已创建的用户,用这条命令'

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第1张图片

在某些情况下会要求用户初次登录的时候必须自设密码,根据安全规划统一要求所有用户更新密码等,可以由管理员执行强行策略,以便用户在下次登录时必须修改密码。

例如,执行以下操作可强制要求用户zhangsan下次登录时重设密码

例如,强制要求用户zhangsan下次登录时重设密码 ‘(重设的密码有密码复杂性要求,例如不可是连续的数字,连续的字母等)’

[root@localhost ~]# chage -d 0 zhangsan		
[lisi@localhost root]$ su - zhangsan
密码:
您需要立即更改密码(root 强制)
为 lisi 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码与原来的太相似
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于字典单词
su: 已经超出服务重试的最多次数
'重设密码有很多限制,比较麻烦'

1.1.3:命令历史,自动注销

  • 命令历史限制

Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。

例如,可以设置最多200条历史命令。

[root@localhost ~]# vi /etc/profile			'对于未创建的用户,使用此命令修改配置文件'
...省略部分内容
将其中的HISTSIZE=1000,修改为HISTSIZE=200		
[root@localhost ~]# export HISTSIZE=200		'该命令适用于当前用户,及时成效'
  • 每当编辑完/etc/profile文件后,都需要使用命令source /etc/profile或者换重启使之生效

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

[root@localhost ~]# vi .bash_logout
history -c
clear
[root@localhost ~]# history 
[root@localhost ~]# source .bash_logout
或者
使用vi /etc/profile,将其中的history值改为0
但是将history值改为0后,↑无法显示刚刚输入的命令。
  • 终端自动注销

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

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

1.2:用户切换与提权

大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。鉴于这些原因,需要为普通用户提供一种身份切换或权限提升机制,以便在必要的时候执行管理任务。

linux系统为我们提供了su,sudo两种命令,其中su命令主要用来切换用户,而sudo命令用来替身执行权限。

1.2.1:su命令-切换用户

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

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

su命令基本格式(Substitute User,切换用户)
su - 目标用户
[root@localhost ~]# su - lisi		'从root切换到其他用户不需要输入密码'
[lisi@localhost ~]$ su - root		'从其他用户切换到root用户需要输入密码'
密码:			'输入用户root的密码'
上一次登录:四 11月 14 16:18:30 CST 2019从 192.168.197.1pts/0 上
[root@localhost ~]# 		'验证成功后获得root权限'

上述操作中,“-”等同于“–login”“-l”,表示切换后进入目标用户的登录shell环境。若缺少此选项则仅切换身份,不切换用户环境

  • 限制使用su命令的用户

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助于wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到wheel组,修改/te/pam./su认证配置以启用pam wheel认证。

[root@localhost ~]# id lisi		'查看lisi用户信息'
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi)		'发现不在wheel组中'
[root@localhost ~]# gpasswd -a lisi wheel		'将lisi用户添加到wheel组中'
正在将用户“lisi”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group          '确认wheel组成员'
或者
[root@localhost ~]# id lisi
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),10(wheel)		'添加成功'

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# id zhangsan 
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan)

1.2.2:启用pam_wheel认证模块

启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令
尝试进行切换时将会按照“拒绝权限”来处理,从而将切换用户的权限控制在最小范围内
/pam.d 服务模块目录
使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看

[root@localhost ~]# su - zhangsan		'之前添加了zhangsan用户,但并未加入到wheel组中'
上一次登录:四 11月 14 16:39:40 CST 2019pts/0 上
[zhangsan@localhost ~]$ su - lisi		'无法使用su命令'
密码:
su: 拒绝权限
[zhangsan@localhost ~]$ su - lisi		'无法使用su命令'
密码:
su: 拒绝权限
[zhangsan@localhost ~]$ exit		'返回root用户'
登出
[root@localhost ~]# su - lisi		'root切换到lisi用户不需要密码'
上一次登录:四 11月 14 16:39:17 CST 2019pts/0 上
[lisi@localhost ~]$ su - zhangsan		'lisi切换到zhangsan用户'
密码:
上一次登录:四 11月 14 16:41:57 CST 2019pts/0 上
[zhangsan@localhost ~]$ exit		'返回lisi'
登出
[lisi@localhost ~]$ su - root		'切换为root'
密码:
上一次登录:四 11月 14 16:41:35 CST 2019pts/0 上
[root@localhost ~]# 

1.3:linux中的PAM安全认证

  • PAM (Pluggable Authentication Modules),是Linux系统可插拔认证模块。

  • Linux系统使用su命令存在安全隐患,默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险。

  • 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换。

1.3.1:PAM及其作用

(1)PAM是一种高效而且灵活便利的用户级别认证方式,它也是当前Linux服务器普遍使用的认证方式。

(2) PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,fp),su 等应用程序。

(3)系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略。

1.3.2:PAM认证原理

  • PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式

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

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

  • 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证

  • 不同的应用程序所对应的PAM模块也是不同的

1.3.3:PAM认证的构成

  • 查看某个程序是否支持PAM认证,可以用ls命令进行查看,例如查看su是否支持PAM模块认证
[root@localhost ~]# ls /etc/pam.d | grep su
  • 查看su的PAM配置文件:cat /etc/pam.d/su

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

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

1.3.4:PAM认证类型

(1)认证管理(authentication management)

接受用户名和密码,进而对该用户的密码进行认证。

(2)账户管理( account management)

检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等。

(3)密码管理(password management)

主要是用来修改用户的密码。

(4)会话管理(session management)

主要是提供对会话的管理和记账。

1.3.5:PAM安全认证流程

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第2张图片

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

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

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

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

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

1.4:使用sudo机制提升权限

1.4.1:su命令的缺点

  • 用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码
  • 对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分

1.4.2:sudo命令的用途及用法

  • 用途:以其他用户身份(如root)执行授权的命令

  • 用法:sudo 授权命令
    

1.4.3:配置sudo授权

  • visudo 或者 vi /etc/sudoers :sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。若使用vi编辑,保存时必须执行“:w!”命令强制操作,否则系统将提示为只读文件而拒绝保存
配置文件/etc/sudoers中,授权记录的基本配置格式
用户 主机名列表 = 命令程序列表
命令程序列表是绝对列表

例如:
[root@localhost ~]# visudo
zhangsan		localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route		'表示张三用户在本地主机拥有以下权限 (/sbin下的所有权限,除了/sbin/ifconfig,除了/sbin/route权限)'

*:通配符号
!:取反符号
%:代表组

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第3张图片

1.5:实验

1.5.1:sudo实验

  • 我们现在用tom和lisi这两个用户来做修改ip地址的sudo实验
[root@localhost ~]# id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
[root@localhost ~]# id lisi
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),10(wheel)
    
'1.我们先用lisi用户尝试修改IP地址'
[root@localhost ~]# su - lisi		'切换到lisi用户'
[lisi@localhost ~]$ ifconfig		'查看主机IP'
ens33: flags=4163  mtu 1500
        inet 192.168.197.141  netmask 255.255.255.0  broadcast 192.168.197.2
    ...省略部分信息
[lisi@localhost ~]$ sudo ifconfig ens33 12.12.12.12		'使用sudo命令修改IP地址'
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] lisi 的密码:

[lisi@localhost ~]$ ifconfig		'发现修改成功'
ens33: flags=4163  mtu 1500
inet 12.12.12.12  netmask 255.0.0.0  broadcast 12.255.255.255
    ...此处省略部分信息

'2.我们用tom用户尝试修改IP地址'
[root@localhost ~]# su - tom
[tom@localhost ~]$ id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
[tom@localhost ~]$ sudo ifconfig ens33 13.13.13.13

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] tom 的密码:
tom 不在 sudoers 文件中。此事将被报告。		'我们发现tom用户无法修改IP地址'
总结
[root@localhost ~]# id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
[root@localhost ~]# id lisi
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),10(wheel)
'我们发现lisi用户在wheel组中,而tom用户不在'

[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组中的用户也拥有所有权限'
...此处省略部分信息
'因此,在wheel组中的lisi用户拥有修改IP地址的权限'
' 不在wheel组中的tom用户没有权限修改IP地址'
'实现没有权限的wnagwu用户修改IP地址的方法'
'1.将tom用户添加到wheel组中(方法简单,不赘述)'
'2.在sudo配置文件中给tom用户提权'

第二种方法步骤
[root@localhost ~]# which ifconfig		'查询ifconfig命令所在位置'
/usr/sbin/ifconfig
[root@localhost ~]# visudo		'修改sudo配置文件,将wngwu用户的ifconfig权限添加进去'
将这条命令添加进去
tom  localhost = /sbin/ifconfig		'用户wngwu的本地主机添加 /sbin/ifconfig 权限'
[root@localhost ~]# su - tom		'切换到tom用户'
上一次登录:四 11月 14 19:11:33 CST 2019pts/1 上
[tom@localhost ~]$ sudo ifconfig ens33 33.33.33.33		'修改ens33网卡IP地址'
[sudo] tom 的密码:
[tom@localhost ~]$ ifconfig		'修改成功'
ens33: flags=4163  mtu 1500
        inet 33.33.33.33  netmask 255.0.0.0  broadcast 33.255.255.255
        '实验成功'

1.5.2:查看sudo操作记录

查看sudo操作记录

需启用Defaults logfile 配置

默认日志文件:/var/log/sudo

[root@localhost ~]# visudo		'vi sudo配置文件'
在配置文件中添加
Defaults logfile = "/var/log/sudo"		'将之添加至配置文件中'

[root@localhost ~]# su - tom			'切换tom用户'
上一次登录:四 11月 14 19:34:45 CST 2019pts/1 上
[tom@localhost ~]$ sudo ifconfig ens33 22.22.22.22		'做一个操作,看日志文件是否会记录下来'
[sudo] tom 的密码:
[tom@localhost ~]$ exit		'因为tom用户没有权限查看,所以我们用root用户查看日志文件'
登出
[root@localhost ~]# cat /var/log/sudo			'查看日志文件'
Nov 14 19:44:17 : tom : TTY=pts/1 ; PWD=/home/tom ; USER=root ;
    COMMAND=/sbin/ifconfig ens33 22.22.22.22		'刚刚的操作已经显示在其中'

1.5.3:仅允许用户radmin使用su命令

  1. 先创建一个普通用户radmin,设置密码

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第4张图片

2.将用户radmin加入到wheel组中,并且查看wheel组中是否有radmin的用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBeYBplO-1592923457041)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200622230542960.png)]

3.修改/etc/pam.d/su 认证配置以启用pam_wheel认证

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第5张图片

  1. 加入wheel组的用户radmin可以使用su命令,没有加入的用户不能使用

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第6张图片

1.5.3:允许用户zhangsan通过sudu方式管理员工账号:

  1. 先创建普通用户zhangsan,并设置密码

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第7张图片

  1. 把用户zhangsan加入到wheel组中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUcGhomB-1592923457043)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200622230806481.png)]

  1. 给用户zhangsan管理账号的权限,visudo

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第8张图片

​ 4. 用户zhangsan有了可以管理账户的权力

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第9张图片

1.5.4:允许用户lisi通过sudo方式执行特权命令:

1.创建用户lisi,并将其加入到wheel组中

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第10张图片

2.允许lisi用户可以执行特权命令,visudo

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第11张图片

3.切换到lisi用户中,使用sudo -l命令查看自己的sudo配置

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第12张图片

二:系统引导和登录控制

在互联网环境中,大部分服务器是通过远程登陆的方式来进行管理的,而本地引导和终端登陆过程往往容易被忽视,从而留下安全隐患。

2.1:开关机安全控制

对于服务器主机,其物理环境的安全防护是非常重要的,不仅要保持机箱完好、机柜锁闭,还要严格控制机房的人 员进出、硬件设备的现场接触等过程。在开关机安全控制方面,除了要做好物理安全防护以外,还要做好系统本身的一些安全措施 。

2.1.1:调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘,U盘,网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

2.1.2:禁止Ctrl+Alt+Del快捷键重启

先查看/etc/inittab 的文件,并且将ctrl-ait-delete的文件位置注释掉

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第13张图片

2.1.3:GRUB限制

  • 使用grub2-mkpasswd-pbkdf2生成秘钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第14张图片

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第15张图片

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第16张图片

2.2:终端及登录安全控制

在linux服务器中,默认开启了6个tty终端,允许任何用户进行本地登陆。关于本地登陆的安全控制,可以从这几个方面着手。

2.2.1:减少开放的tty终端个数

对于远程维护的Linux服务器,6个ty终端实际上有点多余。在CentOS 7系统中,控制终端的配置文件如下:

/etc/init/tty.conf                         //控制tty终端的开启
/etc/init/start-ttys. conf                 //控制tty终端的开启数量、设备文件
/etc/sysconfig/init                        //控制ty终端的开启数量、终端颜色

通过修改/t/init/start-ttys.conf和/etc/sysconfig/init,可以减少开放的tty终端数量。例如,若只希望开启ty4、ty5、 ty6 三个终端,修改后的操作如下所示。

[root@localhost ~]# vi //itstat-ttys.conf
......                                          //省略部分内容
env ACTIVE CONSOLED=/dev/tty[456]                 //修改为456
rot@localhost ~]# vi /etc/sysconfig/init             //省略部分内容
......
ACTIVE CONSOLES=/dev/tty[456]                   //修改为456
froot@localhost ~]# reboot

禁用tty1、tty2. tty3终端以后,重新开机并进入字符模式时,默认将无法登录。必须按Alt+F4组合键或Alt+F5、Alt+F6组合键切换到可用的终端,然后才能进行登录操作。

2.2.2:禁止root用户登录

  • 安全终端配置:/etc/securetty
  • 若要禁止root用户从指定的终端登陆,只需从改文件中删除或者注释掉对应的行即可。
  • 例如,若要禁止root用户从tty2,tty3登陆,可以修改/etc/securetty文件,将tty2,tty3行注释掉
[root@localhost ~]# vim /etc/securetty		'进入终端配置'
...省略部分内容
vc/9
vc/10
vc/11
tty1
#tty2		'禁止终端tty2登录,在其前方输入#即可'
#tty3		'禁止终端tty3登录,在其前方输入#即可'
tty4
tty5
tty6
tty7
..省略部分内容

2.2.3:禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin		'禁止普通用户登录'
[root@localhost ~]# rm -rf /etc/nologin		'取消上述登录限制'
'一般做维护的时候使用(只有root用户可以登录,其他用户不可登录)'
    
例如
[root@localhost ~]# touch /etc/nologin
此时,再用其他用户登录,即便密码输入正确也会提示密码没有奏效,从而无法登录,只有root用户可以登录
[root@localhost ~]#rm -rf /etc/nologin
此时,将之前的登录限制取消之后,其他用户也可以正常登录了

三:弱口令检测

3.1:Joth the Ripper,简称为 JR

  • John the Ripper是一款开元的密码破解工具,能够在已知密文的情况下快速分析出明文的密码子串,支持DES、MD5等多种加密算法,而且允许使用密码字典来进行暴力破解。

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

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

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第17张图片

解压后可以看到三个子目录—doc、run、scr,分别表示手册文档,运行程序,源码文件
Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第18张图片

四:端口扫描

4.1:NMAP

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

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

NMAP的扫描语法

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

常用的扫描类型

-sS,-sT,-sF,-sU,-sP,-P0

-sT:TCP端口

-sU:UDP端口

-sP:ping

4.2:nmap实验

[root@localhost run]# rpm -q nmap
未安装软件包 nmap 
[root@localhost run]# yum install nmap -y
...此处省略内容
nmap命令基本格式
nmap [扫描类型][选项]<扫描目标>
比较常用的几种扫描类型:
-sS, TCPSYN扫描(半开扫描):只向目标发出SYN数据包,如果收到SYNACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。

-sT,TCP 连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

-sF,TCP FIN扫描: :开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。

-sU, UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。

-sP, ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。

-P0, 跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。

Linux--系统安全及应用(账号安全控制(账户安全基本措施,用户切换与提权,PAM安全认证,sudo机制提升权限,实验),系统引导和登陆控制,弱口控制,端口扫描)_第19张图片

你可能感兴趣的:(Linux系统,linux,云计算)