Linux--系统安全及应用 理论干货+实操演示(账号安全,用户安全与提权,PAM安全认证,系统引导和登录安全,密码安全,端口扫描)

文章目录

  • 前言
  • 一:账号安全控制
      • 1.1:账号安全基本措施
          • 1.1.1:系统账号清理
          • 1.1.2:密码安全控制
          • 1.1.3:命令历史,自动注销
      • 1.2:用户切换与提权
          • 1.2.1:su 命令 -切换用户
      • 1.3:Linux中的PAM安全认证
          • 1.3.1:su命令的安全隐患
          • 1.3.2:PAM认证原理
          • 1.3.3:PAM认证的构成
          • 1.3.4:PAM安全认证流程
      • 1.4:使用sudo机制提升权限
          • 1.4.1:su命令的缺点
          • 1.4.2:sudo命令的用途及用法
          • 1.4.3:配置sudo授权
          • 1.4.4:sudo实验
          • 1.4.5:查看sudo操作记录
  • 二:系统引导和登录控制
      • 2.1:开关机安全控制
          • 2.1.1:调整BIOS引导设置
          • 2.1.2:GRUB限制
      • 2.2:终端登录安全控制
          • 2.2.1:限制root只在安全终端登录
          • 2.2.2:禁止普通用户登录
  • 三:弱口令检测
      • 3.1:Joth the Ripper,简称为 JR
      • 3.2:弱口令实验:通过john工具查看自己的密码
  • 四:端口扫描
      • 4.1:NMAP
      • 4.2:nmap实验

前言

  • 作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势得以广泛应用
  • 可以从账号安全控制,系统引导和登录控制的角度控制Linux系统的安全优化
  • 还可以使用基于Linux系统环境的弱口令检测,网络扫描等安全工具,查找隐患,及时采取有针对性的防护措施

一:账号安全控制

1.1:账号安全基本措施

1.1.1:系统账号清理
  • 将非登录用户的Shell设为/sbin/nologiin

    在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		'查看当前可以登录的用户'
    
    
  • 锁定长期不使用的账号

    对于长期不用的用户账号,若无法确定是否删除,可以暂时将其锁定,(passwd,usermod命令都可以用来锁定和解锁账号)

    [root@localhost ~]# passwd -l lisi (或者 usermod -L lisi	)	'#锁定用户lisi'
    锁定用户 lisi 的密码 。
    passwd: 操作成功
    [root@localhost ~]# usermod -U lisi (或者 passwd -u lisi)		'#解锁用户lisi'
    [root@localhost ~]# passwd -S lisi		'#查看账号状态'
    lisi PS 2019-11-14 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
    
    
  • 删除无用的账号

    在非登录用户中,还有一部分是很少用到的,如news,uucp,games,gopher等,这些用户可视为冗余账号,可以直接删除

    此外,还有一些随着应用程序安装的用户账号,若程序卸载以后未能自动删除,需要人为手动删除

  • 锁定账号文件passwd,shadow

    如果服务器中的用户账号已经固定,不在进行更改,还可以采取锁定账号配置文件的方法

    使用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 wangwu			'查看是否存在wangwu用户'
    id: wangwu: no such user
    [root@localhost ~]# useradd wangwu				'尝试添加wangwu用户'
    useradd:无法打开 /etc/passwd		'提示无法添加,文件已被锁定'
    
    
1.1.2:密码安全控制
  • 设置密码有效期

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

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

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

    chage 命令用于设置密码的时限
    例如,将密码的有效期设置为30天
    [root@localhost ~]# vi /etc/login.defs		'见下图,对于未创建的用户,使用此命令修改配置文件'
    [root@localhost ~]# chage -M 30 lisi		'对于已创建的用户,用这条命令'
    
    

    Linux--系统安全及应用 理论干货+实操演示(账号安全,用户安全与提权,PAM安全认证,系统引导和登录安全,密码安全,端口扫描)_第1张图片

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

    在某些情况下会要求用户初次登录的时候必须更改密码

    例如,强制要求用户lisi下次登录时重设密码	'(重设的密码有密码复杂性要求,例如不可是连续的数字,连续的字母等)'
    [root@localhost ~]# chage -d 0 lisi		
    [lisi@localhost root]$ su - lisi
    密码:
    您需要立即更改密码(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 
    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用户进行登录。

    一方面可以大大减少因误操作而导致的破坏

    另一方面也降低了特权密码在不安全的网络中被泄露的风险

  • 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命令的用户

    1.将允许使用su命令的用户加入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 ~]# id lisi
    uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),10(wheel)		'添加成功'
    
    [root@localhost ~]# useradd wangwu
    [root@localhost ~]# id wangwu
    uid=1002(wangwu) gid=1002(wangwu) 组=1002(wangwu)
    
    

    2.启用pam_wheel认证模块

    [root@localhost ~]# vi /etc/pam.d/su		'启用pam-WHEEL认证模块'
    ...省略部分内容
    #auth            required        pam_wheel.so use_uid		'进入编辑,将此行开头的#删除,随后wq退出即可'
    
    启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令
    尝试进行切换时将会按照“拒绝权限”来处理,从而将切换用户的权限控制在最小范围内
    /pam.d  服务模块目录
    使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看
    
    [root@localhost ~]# su - wangwu		'之前添加了wangwu用户,但并未加入到wheel组中'
    上一次登录:四 11月 14 16:39:40 CST 2019pts/0 上
    [wangwu@localhost ~]$ su - lisi		'无法使用su命令'
    密码:
    su: 拒绝权限
    [wangwu@localhost ~]$ su - lisi		'无法使用su命令'
    密码:
    su: 拒绝权限
    [wangwu@localhost ~]$ exit		'返回root用户'
    登出
    [root@localhost ~]# su - lisi		'root切换到lisi用户不需要密码'
    上一次登录:四 11月 14 16:39:17 CST 2019pts/0 上
    [lisi@localhost ~]$ su - wangwu		'lisi切换到wangwu用户'
    密码:
    上一次登录:四 11月 14 16:41:57 CST 2019pts/0 上
    [wangwu@localhost ~]$ exit		'返回lisi'
    登出
    [lisi@localhost ~]$ su - root		'切换为root'
    密码:
    上一次登录:四 11月 14 16:41:35 CST 2019pts/0 上
    [root@localhost ~]# 
    
    
    

1.3:Linux中的PAM安全认证

1.3.1:su命令的安全隐患
  • 默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来风险

    借助pam_wheel认证模块,可以实现指定允许的用户使用su命令

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安全认证流程

Linux--系统安全及应用 理论干货+实操演示(账号安全,用户安全与提权,PAM安全认证,系统引导和登录安全,密码安全,端口扫描)_第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安全认证,系统引导和登录安全,密码安全,端口扫描)_第3张图片

1.4.4:sudo实验
  • 我们现在用wangwu和lisi这两个用户来做修改ip地址的sudo实验

  • 
    [root@localhost ~]# id wangwu
    uid=1002(wangwu) gid=1002(wangwu) 组=1002(wangwu)
    [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.我们用wangwu用户尝试修改IP地址'
    [root@localhost ~]# su - wangwu
    [wangwu@localhost ~]$ id wangwu
    uid=1002(wangwu) gid=1002(wangwu) 组=1002(wangwu)
    [wangwu@localhost ~]$ sudo ifconfig ens33 13.13.13.13
    
    我们信任您已经从系统管理员那里了解了日常注意事项。
    总结起来无外乎这三点:
    
        #1) 尊重别人的隐私。
        #2) 输入前要先考虑(后果和风险)。
        #3) 权力越大,责任越大。
    
    [sudo] wangwu 的密码:
    wangwu 不在 sudoers 文件中。此事将被报告。		'我们发现wangwu用户无法修改IP地址'
    
    
    总结
    [root@localhost ~]# id wangwu
    uid=1002(wangwu) gid=1002(wangwu) 组=1002(wangwu)
    [root@localhost ~]# id lisi
    uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),10(wheel)
    '我们发现lisi用户在wheel组中,而wangwu用户不在'
    
    [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组中的wangwu用户没有权限修改IP地址'
    
    '实现没有权限的wnagwu用户修改IP地址的方法'
    '1.将wangwu用户添加到wheel组中(方法简单,不赘述)'
    '2.在sudo配置文件中给wangwu用户提权'
    
    第二种方法步骤
    [root@localhost ~]# which ifconfig		'查询ifconfig命令所在位置'
    /usr/sbin/ifconfig
    [root@localhost ~]# visudo		'修改sudo配置文件,将wngwu用户的ifconfig权限添加进去'
    将这条命令添加进去
    wangwu  localhost = /sbin/ifconfig		'用户wngwu的本地主机添加 /sbin/ifconfig 权限'
    [root@localhost ~]# su - wangwu		'切换到wangwu用户'
    上一次登录:四 11月 14 19:11:33 CST 2019pts/1 上
    [wangwu@localhost ~]$ sudo ifconfig ens33 33.33.33.33		'修改ens33网卡IP地址'
    [sudo] wangwu 的密码:
    [wangwu@localhost ~]$ ifconfig		'修改成功'
    ens33: flags=4163  mtu 1500
            inet 33.33.33.33  netmask 255.0.0.0  broadcast 33.255.255.255
    
        '实验成功'
    
1.4.5:查看sudo操作记录
  • 查看sudo操作记录

    需启用Defaults logfile 配置

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

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

二:系统引导和登录控制

2.1:开关机安全控制

2.1.1:调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘,U盘,网络)引导系统
  • 将安全级别设为setup,并设置管理员密码
2.1.2:GRUB限制
  • 使用grub2-mkpasswd-pbkdf2生成秘钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

2.1.3:实验过程

Linux--系统安全及应用 理论干货+实操演示(账号安全,用户安全与提权,PAM安全认证,系统引导和登录安全,密码安全,端口扫描)_第4张图片


[root@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 ~]# vim /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		'重启'

Linux--系统安全及应用 理论干货+实操演示(账号安全,用户安全与提权,PAM安全认证,系统引导和登录安全,密码安全,端口扫描)_第5张图片

2.2:终端登录安全控制

2.2.1:限制root只在安全终端登录
  • 安全终端配置:/etc/securetty

  • [root@localhost ~]# vim /etc/securetty		'进入终端配置'
    ...省略部分内容
    vc/9
    vc/10
    vc/11
    tty1
    #tty2		'禁止终端tty2登录,在其前方输入#即可'
    #tty3		'禁止终端tty3登录,在其前方输入#即可'
    tty4
    tty5
    tty6
    tty7
    ..省略部分内容
    
2.2.2:禁止普通用户登录
  • 建立/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

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 资源有需要可以私我

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

[root@localhost ~]# mkdir /111		'创建挂载点'
[root@localhost ~]# mount.cifs //192.168.100.3/cccc /111	'挂载(cccc文件中有john压缩包)'
'对于如何将Windows中文件挂载到Linux中的,可以查看我的博客“Linux 安装及管理程序--理论和命令配置”https://blog.csdn.net/CN_TangZheng/article/details/102849246'
Password for root@//192.168.100.3/cccc:  
[root@localhost ~]# cd /111
[root@localhost 111]# ls
john-1.8.0.tar.gz		
[root@localhost 111]# tar zxvf john-1.8.0.tar.gz -C /opt	'将压缩包解压到/opt中'
[root@localhost 111]# cd /opt/john-1.8.0/	'进入压缩包'
[root@localhost john-1.8.0]# ls	'查看压缩包'
doc  README  run  src		'doc是说明文档,README是说明书,run是脚本,src是源码文件'
接下来是手工编译安装的过程
[root@localhost src]# yum install gcc gcc-c++ -y
    ...此处省略内容
[root@localhost src]# make linux-x86-64		'make编译'
    ...此处省略内容
[root@localhost src]# cd ..
[root@localhost john-1.8.0]# ls
doc  README  run  src
[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文件'
Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status		'等待几分钟,若设置的密码在弱口令字典中,就会被识别出来密码,说明密码不够复杂,不太安全'
123123           (root)
123123           (lisi)
123123           (wangwu)
4g 0:00:01:14 100% 2/3 0.05368g/s 344.0p/s 363.4c/s 363.4C/s leslie..boston
Use the "--show" option to display all of the cracked passwords reliably
Session completed
[root@localhost run]# cat password.lst 		'查看弱口令字典'

四:端口扫描

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
...此处省略内容

[root@localhost run]# nmap -sP 192.168.197.0/24		'192.168.197.0/24是本台主机的网络号,此命令查看此网段中那些主机在线'

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-14 23:49 CST
Nmap scan report for 192.168.197.1
Host is up (0.00064s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.197.2
Host is up (0.000052s latency).
MAC Address: 00:50:56:EF:60:82 (VMware)
Nmap scan report for 192.168.197.254
Host is up (0.000077s latency).
MAC Address: 00:50:56:EA:BF:C1 (VMware)
Nmap scan report for 192.168.197.141
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.95 seconds

[root@localhost run]# nmap -sT 192.168.197.141

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-14 23:52 CST
Nmap scan report for 192.168.197.141		'查看主机192.168.197.141开了哪些TCP端口'
Host is up (0.00078s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
111/tcp open  rpcbind

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

你可能感兴趣的:(Linux系统,Linux账号安全控制,Linux系统引导和登录控制,john弱口令检测,NMAP端口扫描,su和sudo实操)