目录
[2.PAM(Pluggable Authentication Modules)可插拔式认证模块](#2.PAM(Pluggable Authentication Modules)可插拔式认证模块)
[7.PAM 的一些用法](#7.PAM 的一些用法)
[三.使用 sudo 机制提升权限](#三.使用 sudo 机制提升权限)
[3.配置 sudo 授权](#3.配置 sudo 授权)
[1. Joth the Ripper ,简称 JR](#1. Joth the Ripper ,简称 JR)
一.账号安全措施
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 :端口号