系统安全及应用

目录

一.账号安全措施

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 :端口号
相关推荐
儒道易行44 分钟前
【DVWA】RCE远程命令执行实战
网络·安全·网络安全
Hacker_LaoYi1 小时前
网络安全与加密
安全·web安全
Koi慢热2 小时前
路由基础(全)
linux·网络·网络协议·安全
hzyyyyyyyu3 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
网络研究院4 小时前
国土安全部发布关键基础设施安全人工智能框架
人工智能·安全·框架·关键基础设施
Daniel 大东5 小时前
BugJson因为json格式问题OOM怎么办
java·安全
EasyNVR9 小时前
NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案
安全·音视频·监控·视频监控
黑客Ash12 小时前
【D01】网络安全概论
网络·安全·web安全·php
阿龟在奔跑14 小时前
引用类型的局部变量线程安全问题分析——以多线程对方法局部变量List类型对象实例的add、remove操作为例
java·jvm·安全·list
.Ayang14 小时前
SSRF漏洞利用
网络·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构