系统安全及应用

目录

一.账号安全措施

1.系统账号清理

2.密码安全控制

3.命令历史限制

4.限制使用su命令切换用户

二.Linux中的PAM安全认证

1.su命令的安全隐患

[2.PAM(Pluggable Authentication Modules)可插拔式认证模块](#2.PAM(Pluggable Authentication Modules)可插拔式认证模块)

3.PAN认证原理

4.PAM的构成

5.PAM的配置文件

6.PAM安全认证流程

[7.PAM 的一些用法](#7.PAM 的一些用法)

[三.使用 sudo 机制提升权限](#三.使用 sudo 机制提升权限)

1.su命令的缺点

2.sudo命令的用途及用法

[3.配置 sudo 授权](#3.配置 sudo 授权)

4.使用别名设置进行授权

四.开关机安全控制

1.调整BIOS引导设置

2.GRUB限制

3.限制root只在安全终端登录

4.限制普通用户登录

五.系统弱口令检测

[1. Joth the Ripper ,简称 JR](#1. Joth the Ripper ,简称 JR)

2.网络端口扫描-NMAP

一.账号安全措施

1.系统账号清理

(1)将非登录用户的 Shell 设为 /sbin/nologin

useradd -s /sbin/nologin 用户名

[root@192 ~]# useradd test         #新创建一个用户
[root@192 ~]# vi /etc/passwd       #查看用户文件默认拥有登录权限
test:x:1001:1001::/home/test:/bin/bash   #默认拥有登录权限


[root@192 ~]# usermod -s /sbin/nologin test   #取消用户登录权限
[root@192 ~]# vi /etc/passwd                   #查看用户文件已修改
test:x:1001:1001::/home/test:/sbin/nologin

(2)锁定长期不使用的账号

usermod -L 用户名    #锁定用户
passwd -l 用户名     #锁定用户
passwd -S 用户名     #查看锁定账号状态

[root@192 ~]# usermod -L test      #锁定用户test
[root@192 ~]# passwd -S test       #查看用户状态
test LK 2024-04-21 0 99999 7 -1 (密码已被锁定。) 

[root@192 ~]# passwd -u test       #解锁用户
解锁用户 test 的密码。
passwd: 操作成功

[root@192 ~]# passwd -l test       #锁定用户test
锁定用户 test 的密码 。
passwd: 操作成功

[root@192 ~]# passwd -u test       #解锁用户
解锁用户 test 的密码。
passwd: 操作成功

[root@192 ~]# passwd -S test      #查看用户状态
test PS 2024-04-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

(3)删除无用的账号

userdel -r 用户名

[root@192 ~]# userdel -r test     #删除用户   [-r]选项:连同家目录一起删
[root@192 ~]# passwd -S test
passwd:未知的用户名 test。

(4)锁定账号文件passwd、shadow

chattr +i  /etc/passwd 或 /etc/shadow    锁定文件
lsattr /etc/passwd 或 /etc/shadow       查看文件锁定状态
chattr -i /etc/passwd 或 /etc/shadow    解锁文件

[root@192 ~]# echo abc > abc.txt     #在文件中输入内容abc 
[root@192 ~]# cat abc.txt            #查看文件的内容
abc
[root@192 ~]# chattr +i abc.txt     #锁定文件
[root@192 ~]# lsattr abc.txt        #查看文件锁定内容
----i----------- abc.txt            #文件已上锁
[root@192 ~]# echo 123 > abc.txt    ##=在文件中输入内容123
-bash: abc.txt: 权限不够             #输入失败
[root@192 ~]# cat abc.txt           #文件内容依旧只有abc
abc

对 /etc/passwd 上锁后无法在创建用户和修改用户的内容

[root@192 ~]# chattr -i abc.txt    #解锁文件
[root@192 ~]# echo 123 > abc.txt   #输入内容给文件
[root@192 ~]# cat abc.txt          #查看文件
123                                #内容成功输入

2.密码安全控制

(1)设置密码有效期

vi /etc/login.defs  #修改密码配置文件、适用于新建用户

chage -M 天数 用户名   修改密码有效期、适用于已有用户;天数为99999表示为永不过期

首先进入到 vi /etc/login.defs 文件中

[root@192 ~]# useradd test      #添加用户test
[root@192 ~]# vi /etc/passwd    #进入密码管理文件
test:!!:19834:0:99999:7:::      #查看test用户密码有效期为99999

[root@192 ~]# chage -M 30 test  #修改test密码有效期为30天,适用于已添加用户
[root@192 ~]# vi /etc/shadow    #进入密码管理文件
test:!!:19834:0:30:7:::         #已修改为30天

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

chage -d  0  用户名    #强制用户下次登录时立即修改密码

3.命令历史限制

(1)减少记录的命令条数

进入 vi /etc/profile 文件中,在文件最下面加入一条命令expoer HISTSIZE=20,可改变历史记录数

source /etc/profile    #在当前shell环境中重新加载profile文件中所有的配置变量
./etc/profile
history -c 清空历史记录(临时删除)

[root@192 ~]# history -c
[root@192 ~]# history
   26  history

系统重启后,历史记录会恢复

(2)登录时自动清空命令历史

修改 vi /etc/profile文件中 添加命令echo > ~/.bash_history 可做到开机后自动清空历史记录

(3)终端自动注销

4.限制使用su命令切换用户

(1)使用su命令切换用户的用法:

(2)限制使用su命令切换用户

【1】修改su的PAM认证配置文件

切换到 /etc/pam.d/目录,进入到su文件中
[test@192 ~]$ su - root   #切换用户
密码:                     #密码正确也无法切换
su: 拒绝权限
                 #就可以限制用户的登录了

【2】将信任的用户加入到wheel组中

gpasswd wheel -a 用户名

[root@192 pam.d]# gpasswd wheel -a test    #将用户添加到wheel组中
正在将用户"test"加入到"wheel"组中
[root@192 pam.d]# id test                  #查看test是否属于wheel组
uid=1001(test) gid=1001(test) 组=1001(test),10(wheel)
[root@192 pam.d]# su - test                #切换到test用户中
上一次登录:日 4月 21 23:14:00 CST 2024pts/0 上
最后一次失败的登录:日 4月 21 23:14:27 CST 2024pts/0 上
最有一次成功登录后有 2 次失败的登录尝试。
[test@192 ~]$ su - root                    #在切换到root用户
密码:                                     #输入密码后就可以登录了
上一次登录:日 4月 21 23:13:52 CST 2024pts/0 上
最后一次失败的登录:日 4月 21 23:19:15 CST 2024pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。

二.Linux中的PAM安全认证

1.su命令的安全隐患

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

2.PAM(Pluggable Authentication Modules)可插拔式认证模块

是一种高效而且灵活便利的用户级别的认证方式·也是当前Linux服务器普遍使用的认证方式

3.PAN认证原理

4.PAM的构成

5.PAM的配置文件

PAM的配置文件中每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用

第一列代表PAM认证模块类型

auth:认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据

account:账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服务,检查账户是否到期

password:密码模块接口,用于更改用户密码,以及强制使用强密码配置

session:会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效
第二列代表PAM控制标记

required:模块结果必须成功才能继续认证,如果在此处测试失败,则继续测试引用在该模块接口的下一个模块,直到所有的模块测试完成,才将结果通知给用户。

requisite:模块结果必须成功才能继续认证,如果在此处测试失败,则会立即将失败结果通知给用户。

sufficient:模块结果如果测试失败,将被忽略。如果sufficient模块测试成功,并且之前的required模块没有发生故障,PAM会向应用程序返回通过的结果,不会再调用堆栈中其他模块。

optional:该模块返回的通过/失败结果被忽略。一般不用于验证,只是显示信息(通常用于 session 类型)。

include:与其他控制标志不同,include与模块结果的处理方式无关。该标志用于直接引用其他PAM模块的配置参数
第三列代表PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数

这个需要根据所使用的模块来添加。

传递给模块的参数。参数可以有多个,之间用空格分隔开。

6.PAM安全认证流程

7.PAM 的一些用法

(1)ssh远程登录输入三次密码错误则锁定用户

在远程登录其他用户时可以无限制的尝试密码,没有防护功能;具有一定的危险。

切换到 cd /etc/pam.d/ 目录中,进入ssh文件

三.使用 sudo 机制提升权限

1.su命令的缺点

若是su切换到root用户后,可以使用root为所欲为,不安全

2.sudo命令的用途及用法

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

用法:sudo 授权命令

[root@192 ~]# su - zhangsan     #切换到zhangsan  用户
[zhangsan@192 ~]$ df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913552       0  1913552    0% /dev
tmpfs                    1930628       0  1930628    0% /dev/shm
tmpfs                    1930628   12756  1917872    1% /run
tmpfs                    1930628       0  1930628    0% /sys/fs/cgroup
/dev/mapper/centos-root 37202180 4537576 32664604   13% /
/dev/sda1                 520868  184536   336332   36% /boot
tmpfs                     386128      28   386100    1% /run/user/0
[zhangsan@192 ~]$ mount /dev/sr0 /mnt                  #挂载
mount: 只有 root 能执行该操作                            #权限不够
[zhangsan@192 ~]$ ifconfig ens32:1 192.168.80.199/24   #权限不够
SIOCSIFADDR: 不允许的操作
ens32:1: ERROR while getting interface flags: 没有那个设备
SIOCSIFNETMASK: 不允许的操作


[zhangsan@192 ~]$ sudo ifconfig ens32:1 192.168.80.199/24   #sudo授权

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

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

3.配置 sudo 授权

visudo 或者 vi /etc/sudoers
格式为  用户   主机名=命令程序列表

/etc/sudoers 文件中只有读的权限;在修改过程中需要root用户强制保存(wq!)

# 想要扫描权限就授予相对应的权限

[root@192 ~]# su - zhangsan                        #切换到zhangsan用户
上一次登录:一 4月 22 00:18:19 CST 2024pts/0 上
[zhangsan@localhost ~]$ ifconfig ens33:1 192.168.80.100/24   #添加新的网卡
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作 
SIOCSIFNETMASK: 不允许的操作                                   #添加失败
[zhangsan@localhost ~]$ route add -net 192.168.100.0 gw 192.168.80.2  
SIOCADDRT: 不允许的操作                         #添加新的静态路由    #添加失败

[zhangsan@localhost ~]$ ifconfig                               #查看网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.90  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::d8f3:733f:7ac0:ee90  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:05:15:60  txqueuelen 1000  (Ethernet)
        RX packets 1991  bytes 174931 (170.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1620  bytes 211448 (206.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 92  bytes 7936 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 7936 (7.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:11:ee:c5  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[zhangsan@localhost ~]$ sudo ifconfig ens33:1 192.168.80.100/24   #授权后可以进行操作

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

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

[sudo] zhangsan 的密码:                              #输入密码后五分钟内不用再次输入

[zhangsan@localhost ~]$ ifconfig             
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.90  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::d8f3:733f:7ac0:ee90  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:05:15:60  txqueuelen 1000  (Ethernet)
        RX packets 3136  bytes 269674 (263.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2431  bytes 314466 (307.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.100  netmask 255.255.255.0  broadcast 192.168.80.255
        ether 00:0c:29:05:15:60  txqueuelen 1000  (Ethernet)
                #新的网卡添加成功
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 92  bytes 7936 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 7936 (7.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:11:ee:c5  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[zhangsan@localhost ~]$ sudo route add -net 192.168.100.0/24 gw 192.168.80.2
                                                   #授权后可以进行操作
[zhangsan@localhost ~]$ route -n                   #查看设置的静态路由
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.80.2    0.0.0.0         UG    100    0        0 ens33
192.168.80.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.100.0   192.168.80.2    255.255.255.0   UG    0      0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
                         #添加成功

拓展:也可以给组进行授权:%组名 主机名=程序列表

4.使用别名设置进行授权

别名设置
User_Alias 大写别名=用户1, 用户2, ...
Host_Alias 大写别名=主机名1, 主机名2, ...
Cmnd_Alias 大写别名=命令路径1, 命令路径2, ...
用户别名 主机别名=命令别名

四.开关机安全控制

1.调整BIOS引导设置

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

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

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

2.GRUB限制

使用grub2-mkpasswd -pbkdf2生成密钥

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

生成新的grub.cfg配置文件

通常情况下,在系统开机进入GRUB菜单的时候,按e键就可以查看并修改GRUB引导参数,这对服务器是一个极大的危险; 我们可以为GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

(1)GRUB限制实验步骤

[root@192 ~]# grub2-mkpasswd-pbkdf2           #输入命令
输入口令:                                     
Reenter password:                             #输入密码会自动生成密钥信息
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.45F1737724FE26BB6E5D0C5A1B8DB8D07C0DD48B87EAFB9A63FB55F936F71BE25890B00E14BDB57D5765BEB647925EE8EE35625E1F90C8D950929A59433AF43D.45369BA90FB5562BB478F537626ECE22AD3E9C3272014F19F036D07DF6A3361D4DA70032E165C22AE96F539D6039DEFBC7ADB54D3E370D5CE63CD8ABC85645B2
[root@192 ~]# cd /etc/grub.d/                  #切换到grub文件目录
[root@192 grub.d]# ls
00_header  01_users  20_linux_xen     30_os-prober  41_custom
00_tuned   10_linux  20_ppc_terminfo  40_custom     README
[root@192 grub.d]# cp 00_header{,.bak}         #对文件进行复制,以保证有失误的机会
[root@192 grub.d]# ls
00_header      00_tuned  10_linux      20_ppc_terminfo  40_custom  README
00_header.bak  01_users  20_linux_xen  30_os-prober     41_custom
[root@192 grub.d]# vim 00_header              #此后进入文件进行配置命令
[root@192 grub.d]# vim 00_header              #修改后查看知否配置完成
[root@192 grub.d]# cd /boot/grub2/            #切换到grub文件目录
[root@192 grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@192 grub2]# cp grub.cfg grub.cfg.bak    #也对文件进行复制,以保证有失误的机会
[root@192 grub2]# ls
device.map  fonts  grub.cfg  grub.cfg.bak  grubenv  i386-pc  locale
[root@192 grub2]# grub2-mkconfig -o /boot/grub2/grub.cfg     #输入命令进行配置操作
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-653239c1b9a54b94b88a690aeb729499
Found initrd image: /boot/initramfs-0-rescue-653239c1b9a54b94b88a690aeb729499.img
done
[root@192 grub2]# reboot                       #此后关机即可
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.80.90) at 20:23:04.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

进入00_header文件的配置;在文件底部敲入以下代码,密钥信息由一开始自动生成的信息复制

重启之后,在GRUB菜单界面按e进入配置,需要密码验证

3.限制root只在安全终端登录

安全终端配置:/etc/securetty

[root@192 ~]# vim /etc/securetty     #文件里面记录登录终端的限制

console
vc/1 vc/2 vc/3 vc/4 vc/5 vc/6 vc/7 vc/8 vc/9 vc/10 vc/11 tty1 tty2 tty3 
tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 ttyS0 ttysclp0 sclp_line0 3270/tty1
hvc0 hvc1 hvc2 hvc3 hvc4 hvc5 hvc6 hvc7 hvsi0 hvsi1 hvsi2 xvc0 ~    
                       # 文件打开竖排显示    

                    #Ctrl +Alt +F数字进行切换

[root@192 ~]# who        #查看你登录的设备
root     pts/0        2024-04-22 20:36 (192.168.80.1)
root     tty2         2024-04-22 20:42
root     tty5         2024-04-22 20:44


 在文件内内容的前面加上#即可禁止终端登录
#tty1
#tty2
#tty3
tty4
tty5
tty6
#表示为这样子即可

4.限制普通用户登录

建立 /etc/nologin 文件

[root@192 ~]# touch /etc/nologin     #创建此文件后普通用户即可无法登录
[root@192 ~]# ls /etc/nologin
/etc/nologin


                   #删除 nologin 文件或重启即恢复正常
[root@192 ~]# rm -rf /etc/nologin

五.系统弱口令检测

1. Joth the Ripper ,简称 JR

主要是支持暴力破解密码

【1】把文件上传到终端和解压的过程

[root@192 ~]# cd /opt/       #将JR压缩包上传到/opt/目录
[root@192 opt]# ls
john-1.8.0.tar.gz
[root@192 opt]# tar xf john-1.8.0.tar.gz     #tar解压文件
[root@192 opt]# ls
john-1.8.0  john-1.8.0.tar.gz
[root@192 opt]# cd john-1.8.0/           #进入到文件内容
[root@192 john-1.8.0]# ls
doc  README  run  src
[root@192 john-1.8.0]# cd src/
[root@192 src]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@192 src]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913552       0  1913552    0% /dev
tmpfs                    1930628       0  1930628    0% /dev/shm
tmpfs                    1930628   12832  1917796    1% /run
tmpfs                    1930628       0  1930628    0% /sys/fs/cgroup
/dev/mapper/centos-root 37202180 4555816 32646364   13% /
/dev/sda1                 520868  184536   336332   36% /boot
tmpfs                     386128      36   386092    1% /run/user/0
/dev/sr0                 4635056 4635056        0  100% /mnt
[root@192 src]# yum install -y gcc gcc-c++ make         #提前安装相关软件 
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@192 src]# pwd
/opt/john-1.8.0/src
[root@192 src]#           #在src目录下用 make clean 解压加上自己的系统版本
[root@192 src]# make clean linux-x86-64
rm -f ../run/john ../run/unshadow ../run/unafs ../run/unique ../run/john.bin ../run/john.com ../run/unshadow.com ../run/unafs.com ../run/unique.com ../run/john.exe ../run/unshadow.exe ../run/unafs.exe ../run/unique.exe
rm -f ../run/john.exe john-macosx-* *.o *.bak core
rm -f detect bench generic.h arch.h tmp.s
cp /dev/null Makefile.dep
ln -sf x86-64.h arch.h
make ../run/john ../run/unshadow ../run/unafs ../run/unique \
	JOHN_OBJS="DES_fmt.o DES_std.o DES_bs.o DES_bs_b.o BSDI_fmt.o MD5_fmt.o MD5_std.o BF_fmt.o BF_std.o AFS_fmt.o LM_fmt.o trip_fmt.o dummy.o batch.o bench.o charset.o common.o compiler.o config.o cracker.o crc32.o external.o formats.o getopt.o idle.o inc.o john.o list.o loader.o logger.o math.o memory.o misc.o options.o params.o path.o recovery.o rpp.o rules.o signals.o single.o status.o tty.o wordlist.o unshadow.o unafs.o unique.o c3_fmt.o x86-64.o" \
	CFLAGS="-c -Wall -Wdeclaration-after-statement -O2 -fomit-frame-pointer  -DHAVE_CRYPT" \
	LDFLAGS="-s  -lcrypt"
make[1]: 进入目录"/opt/john-1.8.0/src"
                        #中间解压过程省略
rm -f ../run/unshadow
ln -s john ../run/unshadow
rm -f ../run/unafs
ln -s john ../run/unafs
rm -f ../run/unique
ln -s john ../run/unique
make[1]: 离开目录"/opt/john-1.8.0/src"
[root@192 src]# cd ..                 #返回到上级目录
[root@192 john-1.8.0]# ls
doc  README  run  src
[root@192 john-1.8.0]# cd run/         #进入到run目录下,里面生成了破解密码的密码包
[root@192 run]# ls
ascii.chr   john       lm_ascii.chr  makechr       relbench  unique
digits.chr  john.conf  mailer        password.lst  unafs     unshadow
[root@192 run]# vim password.lst          #进入到密码包里面查看
[root@192 run]# cat password.lst | wc -l  #一共2559行内容,用文件内容组合破译密码
3559

【2】使用JR暴力破译密码

[root@192 run]# ./john shadow --wordlist=./password.lst   #根据密码包暴力破解

./john --wordlist=[指定字典文件的绝对路径] [需要破解的文件名]:使用指定的字典文件进行破解;

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

123456           (zhangsan)   #已破解
123123           (lisi)

2g 0:00:00:11 100% 0.1670g/s 296.2p/s 640.6c/s 640.6C/s !@#$%..sss
Use the "--show" option to display all of the cracked passwords reliably
Session completed
[root@192 run]# ./john shadow --wordlist=./password.lst
Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])
Remaining 2 password hashes with 2 different salts
Press 'q' or Ctrl-C to abort, almost any other key for status

abc1234          (root)       #已破解
abc1234          (liu)

2g 0:00:00:00 100% 6.666g/s 320.0p/s 640.0c/s 640.0C/s 123456..pamela
Use the "--show" option to display all of the cracked passwords reliably
Session completed
[root@192 run]# 

【3】显示已破解的账号和密码

[root@192 run]# ./john --show shadow     #显示出破解的账号密码

root:abc1234::0:99999:7:::
liu:abc1234::0:99999:7:::
zhangsan:123456:19835:0:99999:7:::
lisi:123123:19835:0:99999:7:::

4 password hashes cracked, 0 left

      #破解的密码信息放在john.pot文件中

[root@192 run]# cat john.pot     #查看文件内容
$6$5yCIFzCt$J.bgul3taGd4R99U/6NI1qycH8DdnHqPaXQu7O40Oi8C8SGdiISfEdaH/9VdNMUDeZNjSSAW7bNIbF1IHf/aZ0:123456
$6$D5vojeWV$kI3yqFsxeKKuRji4nriZ29zfqeahlkxaT1t8Zv7pW3ZocB2gXLIx8UZLTCPTPzUPIcuEYg5KNfkw3PLUf1fHs0:123123
$6$8oBXoHcs6gdGzW9L$z4Te2i55pEGiu2RE8FpF2MFiKaS4P64crDn9wRVnuFsH02a7p2dplTmBRhYewMjjn2M/85dPzmCQgWMe.KYo70:abc1234
$6$/FlJvT8QWjXW4sNh$VIsBQxnJ.yfdm5MNxzM8c7BSNCi3CdlbSpnr/O3H0LU4Se5q34AcC3ZVfsZLX0sv9hglAyb7.Sgk1g7G5aqY8.:abc1234

2.网络端口扫描-NMAP

(1)NMAP:NMAP 是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术

用 yum install -y nmap   安装即可

(2)NMAP常用的选项和用法

nmap 命令常用的选项和扫描类型

-p: 指定扫描的端口。
-n: 禁用反向 DNS 解析(以加快扫描速度)。
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢。
-sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描

【1】nmap -sT 和 nmap -sU

[root@192 opt]# nmap -sT 127.0.0.1    #查看本机开放的TCP端口

Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 22:11 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00030s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
111/tcp open  rpcbind
631/tcp open  ipp

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

[root@192 opt]# nmap -sU 127.0.0.1    #查看本机开放的UDP端口

Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 22:12 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000059s latency).
Not shown: 998 closed ports
PORT     STATE         SERVICE
111/udp  open          rpcbind
5353/udp open|filtered zeroconf

Nmap done: 1 IP address (1 host up) scanned in 2.70 seconds
[root@192 opt]# 

【2】nmap -p 端口号 网段

               #检测192.168.80.0/24网段有哪些主机提供HTTP服务
[root@192 opt]# nmap -p 80 192.168.80.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 22:19 CST
Nmap scan report for 192.168.80.1 (192.168.80.1)
Host is up (0.00044s latency).
PORT   STATE  SERVICE
80/tcp  open http                           #open为开启
MAC Address: 00:50:56:C0:00:08 (VMware)

Nmap scan report for 192.168.80.2 (192.168.80.2)
Host is up (0.00021s latency).
PORT   STATE  SERVICE
80/tcp closed http                          #closed 为关闭
MAC Address: 00:50:56:EC:A9:B4 (VMware)

【3】nmap -n(反向查询) -sP(检测主机是否存活) 网段

                  #检测192.168.80.0/24网段有哪些存活主机
[root@192 opt]# nmap -n -sP 192.168.80.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 22:24 CST
Nmap scan report for 192.168.80.1
Host is up (0.00030s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.80.2
Host is up (0.00019s latency).
MAC Address: 00:50:56:EC:A9:B4 (VMware)
Nmap scan report for 192.168.80.208
Host is up (-0.10s latency).
MAC Address: 00:0C:29:60:68:8F (VMware)
Nmap scan report for 192.168.80.254
Host is up (-0.11s latency).
MAC Address: 00:50:56:E8:6D:6D (VMware)
Nmap scan report for 192.168.80.90
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 2.16 seconds
[root@192 opt]# 

(3)netstat 命令

netstat命令常用选项:

-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息。

            #查看正在运行的使用TCP和UDP协议的网络状态信息
[root@192 opt]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1552/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      4934/sshd: root@pts 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      5678/sshd: root@pts 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      725/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1523/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1196/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1197/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1552/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      4934/sshd: root@pts 
tcp6       0      0 ::1:6011                :::*                    LISTEN      5678/sshd: root@pts 
tcp6       0      0 :::111                  :::*                    LISTEN      725/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1196/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1197/cupsd          
udp        0      0 0.0.0.0:893             0.0.0.0:*                           725/rpcbind         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           718/avahi-daemon: r 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1523/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1523/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           725/rpcbind         
udp        0      0 0.0.0.0:55482           0.0.0.0:*                           718/avahi-daemon: r 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           758/chronyd         
udp6       0      0 :::893                  :::*                                725/rpcbind         
udp6       0      0 :::111                  :::*                                725/rpcbind         
udp6       0      0 ::1:323                 :::*                                758/chronyd        

(5)ss 和netstat 的去区别

ss 比 netstat 显示出来的信息更完整、更全面

[root@192 opt]# netstat -lntp | grep httpd
tcp6       0      0 :::80                   :::*        LISTEN    6141/httpd          
[root@192 opt]# netstat -lntp | grep :80
tcp6       0      0 :::80                   :::*        LISTEN    6141/httpd          
[root@192 opt]# ss -lntp | grep httpd
LISTEN     0      128       [::]:80                    [::]:*                   
users:(("httpd",pid=6146,fd=4),("httpd",pid=6145,fd=4),("httpd",pid=6144,fd=4)
("httpd",pid=6143,fd=4),("httpd",pid=6142,fd=4),("httpd",pid=6141,fd=4))
[root@192 opt]# ss -lntp | grep :80
LISTEN     0      128       [::]:80                    [::]:*                   
users:(("httpd",pid=6146,fd=4),("httpd",pid=6145,fd=4),("httpd",pid=6144,fd=4)
("httpd",pid=6143,fd=4),("httpd",pid=6142,fd=4),("httpd",pid=6141,fd=4))
[root@192 opt]# 

(6)查看软件是否正在运行的几种方法

systemctl status 软件名
systemctl is-active 软件名
ps -aux | grep 软件名
netstat -lntp | grep 软件名
netstat -lntp | grep :端口名
ss -lntp | grep 软件名
ss -lntp | grep :端口名
lsof -i :端口号
相关推荐
网安-轩逸13 分钟前
网络安全核心目标CIA
安全·web安全
鸭梨山大。2 小时前
Jenkins 任意文件读取(CVE-2024-23897)修复及复现
安全·中间件·jenkins
Hacker_xingchen2 小时前
天融信Linux系统安全问题
linux·运维·系统安全
黑客老陈2 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
代码改变世界ctw9 小时前
如何学习Trustzone
安全·trustzone·atf·optee·tee·armv8·armv9
WTT001111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
群联云防护小杜14 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
ihengshuai14 小时前
HTTP协议及安全防范
网络协议·安全·http
黑客Jack15 小时前
防御 XSS 的七条原则
安全·web安全·xss
o(╥﹏╥)15 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全