Linux——系统安全及应用(弱口令检测、端口扫描)

文章目录

    • 基本安全措施
          • 系统账号清理
          • 密码安全控制
          • 命令历史限制
          • 终端自动注销
    • 使用su命令切换用户
          • 用途及用法
          • 密码验证
          • 限制使用su命令的用户
    • PAM安全认证
          • su命令的安全隐患
          • PAM认证原理
          • 查看su的PAM配置文件:cat /etc/pam.d/su
      • PAM安全认证流程
      • 提升权限
          • su命令的缺点
          • sudo命令的用途及用法
          • 配置sudo授权
    • 系统引导和登陆控制
      • 开关机安全控制
          • 调整BIOS引导设置
          • GRUB限制管理
      • 终端及登陆控制
          • 限制root只在安全终端的登陆
    • 弱口令检测、端口扫描
        • 弱口令检测—John the Ripper,简称JR
        • 网络扫描— NMAP
          • NMAP的扫描语法
          • 常用的扫描类型
    • 内容总结

基本安全措施

系统账号清理
  • 将非登陆用户的Shell设为/sbin/nologin,表示禁止中断登陆,确保不被人为改动

    在系统中,除了手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号。除了root之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登陆的,因此也称为非登陆用户

    [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
    
  • 锁定长期不使用的账户

    [root@localhost ~]# id zhangsan                    //查看用户zhangsan
    uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
    [root@localhost ~]# usermod -L zhangsan                 //锁定账号
    [root@localhost ~]# passwd -S zhangsan                  //查看账号状态
    zhangsan LK 2019-11-14 0 99999 7 -1 (密码已被锁定。)
    [root@localhost ~]# usermod -U zhangsan                  //解锁账号
    [root@localhost ~]# passwd -S zhangsan
    zhangsan PS 2019-11-14 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
    
  • 删除无用的账号

    [root@localhost ~]# id zhangsan
    uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
    [root@localhost ~]# userdel zhangsan                  //删除账号
    [root@localhost ~]# id zhangsan
    id: zhangsan: no such user
    
  • 锁定账号文件passwd、shadow

    [root@localhost ~]# useradd zhangsan           //目前为操作锁定,可正常创建账户
    [root@localhost ~]# passwd zhangsan
    更改用户 zhangsan 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    [root@localhost ~]# id zhangsan
    uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
    [root@localhost ~]# chattr +i /etc/passwd /etc/shadow         //锁定文件
    [root@localhost ~]# lsattr /etc/passwd /etc/shadow           //查看状态
    ----i----------- /etc/passwd                                   //i  为锁定状态
    ----i----------- /etc/shadow                                  //i  为锁定状态
    [root@localhost ~]# useradd lisi                             //尝试创建账号
    useradd:无法打开 /etc/passwd                               //无法打开创建
    [root@localhost ~]# id lisi                            //未创建成功
    id: lisi: no such user
    [root@localhost ~]# userdel -r zhangsan                      //锁定状态无法删除账号
    userdel:无法打开 /etc/passwd
    [root@localhost ~]# passwd zhangsan                     //锁定状态无法更改账号密码
    更改用户 zhangsan 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd: 鉴定令牌操作错误
    
    [root@localhost ~]# chattr -i /etc/passwd /etc/shadow         //解锁文件
    [root@localhost ~]# lsattr /etc/passwd /etc/shadow           //查看为解锁状态
    ---------------- /etc/passwd
    ---------------- /etc/shadow
    [root@localhost ~]# passwd zhangsan
    更改用户 zhangsan 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。                      //解锁后可以更改密码
    [root@localhost ~]# userdel -r zhangsan                //接所有可以删除账号
    [root@localhost ~]# id zhangsan
    id: zhangsan: no such user
    
    

    当所有的用户账号已经固定不在进行更改,可以采取锁定账号配置文件的方法。使用chattr命令,分别结合“+i” “-i”选项来锁定、解锁文件,使用lsattr命令可以查看文件锁定情况。

    在账号文件被锁定情况下,其内容跟不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登陆shell、宿主目录等属性信息。

密码安全控制
  • 设置密码有效期

    • 已创建的用户设置密码有效期

      [root@localhost ~]# chage -M 30 lisi
      
    • 未创建、准备创建的用户设置密码有效期 vim/etc/login.defs

      [root@localhost ~]# vim/etc/login.defs
      

    Linux——系统安全及应用(弱口令检测、端口扫描)_第1张图片
    Linux——系统安全及应用(弱口令检测、端口扫描)_第2张图片

    配置文件更改后,仅对后期创建的用户生效,不会影响到先前已创建的用户密码有效期

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

    将有效期设置为0,强制在下次登陆时修改密码(不建议使用,更改的密码不允许使用连续字母及数字)

    [root@localhost ~]# chage -d 0 lisi
    
命令历史限制
  • 减少记录的命令条数

    [root@localhost ~]#vim /etc/profile
    
    HISTSIZE=200 (默认是1000)
    [root@localhost ~]#source vim /etc/profile
    

Linux——系统安全及应用(弱口令检测、端口扫描)_第3张图片

Linux——系统安全及应用(弱口令检测、端口扫描)_第4张图片

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

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

在这里插入图片描述

终端自动注销
  • 闲置600秒后自动注销

    [root@localhost ~]#vim ~/.bash_profile            //进入配置文件
    …………
    export TMOUT=60                                 //添加命令
    

Linux——系统安全及应用(弱口令检测、端口扫描)_第5张图片

Linux——系统安全及应用(弱口令检测、端口扫描)_第6张图片

使用su命令切换用户

用途及用法
  • 用途:Substitute User,切换用户

  • 格式:

    su - 目标用户
    
密码验证
  • root——>任意用户,不需要验证密码

  • 普通用户——>其他用户,需要验证目标用户密码

Linux——系统安全及应用(弱口令检测、端口扫描)_第7张图片

限制使用su命令的用户
  • 将允许使用su命令的用户加入wheel组

  • 启用pam_wheel认证模块
    Linux——系统安全及应用(弱口令检测、端口扫描)_第8张图片
    Linux——系统安全及应用(弱口令检测、端口扫描)_第9张图片
    Linux——系统安全及应用(弱口令检测、端口扫描)_第10张图片
    Linux——系统安全及应用(弱口令检测、端口扫描)_第11张图片

PAM安全认证

su命令的安全隐患
  • 默认情况下,任何用户都允许使用苏命令,从而有机会反复尝试其他用户(如root)的登陆密码,带来安全风险
  • 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换

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

PAM认证原理
  • PAM认证一般遵循的顺序:Service(服务)——>PAM(配置文件)——>pam_.so(so结尾的都是模块文件)*
  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块也是不同的

查看某个程序是否支持PAM认证,可以用ls命令进行查看,例如查看su是否支持PAM模块认证

  • ls /etc/pam.d | grep su
查看su的PAM配置文件:cat /etc/pam.d/su
  • 每一行都是一个独立的认证过程
  • 每一行可以区分为三个字段
    • 认证类型
    • 控制类型
    • PAM模块及其参数

PAM安全认证流程

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

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

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

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

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

Linux——系统安全及应用(弱口令检测、端口扫描)_第12张图片

提升权限

su命令的缺点
sudo命令的用途及用法
  • 用途:以其他用户身份(如root)执行授权的命令

  • 用法:

    sudo  授权命令
    
配置sudo授权
  • visudo 或者 vi /etc/sudoers
  • 记录格式:用户 主机名列表=命令程序列表
    Linux——系统安全及应用(弱口令检测、端口扫描)_第13张图片

% 代表设定的组,所有用户具备的权限,%wheel代表wheel组所有用户具备的权限

jerry 用户 localhost 主机名 命令程序列表 绝对路径

Cmnd_Alias 固定格式 PK… (自定义名字) /bin/rpm……具备权限

[lisi@localhost ~]$ ifconfig
ens33: flags=4163  mtu 1500
…………省略部分内容
[lisi@localhost root]$ sudo ifconfig ens33 10.10.10.10    //因为并没有为lisi添加权限,所以提权失败,无法更改ip
[sudo] lisi 的密码:
lisi 不在 sudoers 文件中。此事将被报告。
[root@localhost ~]# visudo            //进入添加权限

进入后为lisi添加权限:

Linux——系统安全及应用(弱口令检测、端口扫描)_第14张图片

[lisi@localhost ~]$ sudo -l                   //查看lisi可执行权限
[sudo] lisi 的密码:
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
    LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 lisi 可以在 localhost 上运行以下命令:
    (root) /sbin/ifconfig

[lisi@localhost ~]$ sudo ifconfig ens33 10.10.10.10          //提权修改ip地址
[lisi@localhost ~]$ ifconfig
ens33: flags=4163  mtu 1500
        inet 10.10.10.10  netmask 255.0.0.0  broadcast 10.255.255.255
………省略部分内容


[lisi@localhost ~]$ yum install httpd -y       //仅开启了ifconfig权限,无法操作磁盘管理
已加载插件:fastestmirror, langpacks
您需要 root 权限执行此命令。
[lisi@localhost ~]$ fdisk -l         
fdisk: 打不开 /dev/sda: 权限不够
fdisk: 打不开 /dev/sdb: 权限不够
fdisk: 打不开 /dev/sr0: 权限不够

查看sudo操作记录

  • 需启用Defaults logfile配置

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

    [lisi@localhost ~]$ visudo
    …………
    Defaults logfile=”/var/log/sudo“
    
  • 查看:tail /var/log/sudo

    [lisi@localhost ~]$ visudo
    …………
    Defaults logfile="/var/log/sudo"                //启用Defaults logfile配置
    lisi loaclhost=/sbin/ifconfig
    [lisi@localhost ~]$ sudo ifconfig ens33 30.30.30.30     //提权更改ip地址
    [root@localhost ~]# tail /var/log/sudo                 //查看日志记录
    Nov 14 19:19:10 : lisi : 3 incorrect password attempts ; TTY=pts/2 ;
        PWD=/home/lisi ; USER=root ; COMMAND=/sbin/ifconfig ens33 30.30.30.30
    Nov 14 19:19:47 : lisi : TTY=pts/2 ; PWD=/home/lisi ; USER=root ;
        COMMAND=/sbin/ifconfig ens33 30.30.30.30
    
    

系统引导和登陆控制

通过GRUB引导参数进入单用户模式,以便对一些系统问题进行修复。这种方式不需要密码即可进入系统且拥有root权限,只应在紧急状况下授权使用。

从安全角度来讲,任何人都可以修改引导参数,是一个极大的威胁。为了加强对引导过程的安全控制,可以为GRUB菜单设置一个密码,只有输入正确密码才被允许修改引导参数

开关机安全控制

调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码
GRUB限制管理
  • 修改grub2-mkpasswd-pbkdf2生成密钥

    [root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak    //先做备份,养成良好习惯
    [root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak    //先做备份,养成良好习惯
    [root@localhost ~]# grub2-mkpasswd-pbkdf2
    输入口令:
    Reenter password: 
    PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.AAE465CD073BAE7E3874448869114FA51381F1E626BE1B47A486D2933AE78425257688006DB750E959D43D490ADDD3DD75A7189A205AC2CCA85342E50A9D080A.966FAB9C2B29678665BA2E7723A3CCDE11A00D75B6E47B9A6BB99D3487DEF8D14A3ECB2FFA8512278902E9D2C85AD3C5B930E8E78770011D1D44C50A882BCB02              //password is 后面内后为生成的密钥
    
    
  • 修改/etc/grub.d/00_header文件中,添加密码记录
    Linux——系统安全及应用(弱口令检测、端口扫描)_第15张图片

  • 生成新的grub.cfg配置文件

    [root@localhost ~]# grub2-mkconfig -o /boot/grub2/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-314397859c974c4aafdd0762e61b9f15
    Found initrd image: /boot/initramfs-0-rescue-314397859c974c4aafdd0762e61b9f15.img
    done
    [root@localhost ~]# init 6          //重启
    

Linux——系统安全及应用(弱口令检测、端口扫描)_第16张图片

配置完成后,重新开机进入GRUB菜单时,按e键将无法直接修改引导参数,需要输入用户及密码才能编辑指定的引导参数

终端及登陆控制

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

禁止普通用户登陆

  • 建立/etc/nologin文件

  • 删除/etc/nologin文件或重启后即可恢复正常

    Linux——系统安全及应用(弱口令检测、端口扫描)_第17张图片

弱口令检测、端口扫描

弱口令检测—John the Ripper,简称JR

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 官方万丈:http://www.openwall.com/john/

实验:

首先需要有一个弱口令包并挂载到系统中
Linux——系统安全及应用(弱口令检测、端口扫描)_第18张图片
Linux——系统安全及应用(弱口令检测、端口扫描)_第19张图片

Linux——系统安全及应用(弱口令检测、端口扫描)_第20张图片
Linux——系统安全及应用(弱口令检测、端口扫描)_第21张图片

网络扫描— NMAP

  • 一款网络扫描、安全检测工具
  • 官方网站:http://nmap.org/
  • 可以从Centos镜像中安装nmap包
NMAP的扫描语法
nmap [扫描类型] [选项] <扫描目标…>
常用的扫描类型
  • -sP:ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
  • -sT:TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接, 如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
  • -sU: UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
  • -sS: TCP SYN扫描(半开扫描):只向目标发出SYN数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
  • -sF:TCP FIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST 数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
  • -P0:跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响 应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。

实验:

检查是否有nmap包,安装nmap

1、针对本机进行扫描,检查开放了哪些常用的TCP端口、UDP端口

[root@localhost ~]# nmap -sT 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-15 11:50 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00035s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh               
25/tcp  open  smtp
80/tcp  open  http                 //安装httpd  打开80端口
111/tcp open  rpcbind
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
[root@localhost ~]# nmap -sU 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-15 11:50 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000046s latency).
Not shown: 997 closed ports
PORT     STATE         SERVICE
68/udp   open|filtered dhcpc
111/udp  open          rpcbind
5353/udp open|filtered zeroconf

Nmap done: 1 IP address (1 host up) scanned in 51.51 seconds
[root@localhost ~]# netstat -ntap |grep 80        //过滤查看80端口
tcp        0      0 192.168.17.129:38952    192.168.10.180:445      ESTABLISHED -                   
tcp6       0      0 :::80                   :::*                    LISTEN      52184/httpd   

在扫描结果中,STATE列若为open则表示端口为开启状态,为filtered表示可能被防火墙过滤,为closed表示端口为关闭状态

2、快速检测192.168.17.0/24网段中有哪些存活主机(能ping通)

[root@localhost ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.17.129  netmask 255.255.255.0  broadcast 192.168.17.255
        …………省略部分内容
[root@localhost ~]# nmap -sP 192.168.17.0/24

[root@localhost ~]# nmap -sP 192.168.17.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-15 12:07 CST
Nmap scan report for 192.168.17.1
Host is up (0.0010s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.17.2
Host is up (0.000048s latency).
MAC Address: 00:50:56:FF:5A:DB (VMware)
Nmap scan report for 192.168.17.128                  //另一台IP
Host is up (0.000098s latency).
MAC Address: 00:0C:29:70:C7:ED (VMware)
Nmap scan report for 192.168.17.254
Host is up (0.000066s latency).
MAC Address: 00:50:56:F2:13:2A (VMware)
Nmap scan report for 192.168.17.129                       //本机IP
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 1.88 seconds

[root@localhost ~]# ping 192.168.17.128          //ping 192.168.17.128
PING 192.168.17.128 (192.168.17.128) 56(84) bytes of data.
64 bytes from 192.168.17.128: icmp_seq=1 ttl=64 time=0.199 ms
64 bytes from 192.168.17.128: icmp_seq=2 ttl=64 time=0.193 ms
64 bytes from 192.168.17.128: icmp_seq=3 ttl=64 time=0.213 ms
^C
--- 192.168.17.128 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.193/0.201/0.213/0.018 ms

探测工具,查看对方是否在线,开了哪些tcp udp端口

内容总结

  • 系统账号清理、密码安全控制、命令历史清理、自动注销
  • 使用su命令,可以切换为其他用户身份,并拥有该用户的所有权限。切换时以目标用户的密码进行验证
  • 使用sudo命令,可以以其他用户的权限执行已授权的命令,初次执行时以使用者自己的密码进行验证
  • PAM(Pluggable Authentication Modules),是Linux系统可插拔认证模块
  • 通过为GRUB菜单设置密码,可以防止未经授权的修改
  • 对于远程管理的Linux服务器,可减少开放的本地终端数量
  • John the Ripper 是一款密码破解工具,可用来检测系统账号的密码安全性
  • NMAP是一款端口扫描类工具,可用来检查目标主机、网络所开放的端口/服务等信息

你可能感兴趣的:(Linux)