目录
2)备份密码字符串、grub.cfg文件以及00_header文件;
一. GRUB限制
调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘禁止从其他设备(光盘、U盘、网络)引导系统将安全级别设为setup,并设置管理员密码
GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00 header文件中,添加密码记录
- 生成新的grub.cfg配置文件
限制更改GRUB引导参数
- 通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。
- 可以为GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数
-
实例:GRUB 菜单设置密码
(1)根据提示设置GRUB菜单的密码;
-
[root@mwq ~]# grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码 输入口令: Reenter password: #此处设置的密码就是登录系统时,输入的密码,用户名和密码正确才可以登录系统,修改GRUB引导参数 PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.2E11090ED7F21187E36302A2F34296AAC411240DE33B9E997A58DF4CE3BF5CA0CF0241882DD1A6B509C6F22BAD6E302DBC77909BF7685614D29D9954B170545E.5903DA571D3EBD55FA35B9D45595C552EA2AE017C11F3C47020CA158FFD4609C3ABCDFF39C000AACC175831EFA2C105462D4E6FC2B2AAF128AEE3CCA2FDD4E7A #加密生成的密码字符串
2)备份密码字符串、grub.cfg文件以及00_header文件;
[rootmwq ~]# vim pass.txt #将密码字符串复制到pass.txt文件中
[root@mwq ~]# cat pass.txt
ha512.10000.2E11090ED7F21187E36302A2F34296AAC411240DE33B9E997A58DF4CE3BF5CA0CF0241882DD1A6B509C6F22BAD6E302DBC77909BF7685614D29D9954B170545E.5903DA571D3EBD55FA35B9D45595C552EA2AE017C11F3C47020CA158FFD4609C3ABCDFF39C000AACC175831EFA2C105462D4E6FC2B2AAF128AEE3CCA2FDD4E7A
[root@mwq ~]# cd /boot/grub2
[root@mwq /boot/grub2]# ls
device.map fonts grub.cfg grubenv i386-pc locale
[root@mwq /boot/grub2]# cp grub.cfg grub.cfg,bak #将grub.cfg文件中的内容备份到grub.cfg,bak文件中
[root@mwq/boot/grub2]# cd /etc/grub.d/
[root@mwq /etc/grub.d]# cp 00_header{,.bak} #将00_header文件中的内容备份到00_header.bak文件中
(3)设置能够修改GRUB菜单的用户名和密码;
[root@mwq /etc/grub.d]# vim 00_header
echo else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
fi
cat << EOF
set superusers="root" #设置能够修改GRUB菜单的用户名为root
password_pbkdf2 root grub.pbkdf2.sha512.10000.2E11090ED7F21187E36302A2F34296AAC411240DE33B9E997A58DF4CE3BF5CA0CF0241882DD1A6B509C6F22BAD6E302DBC77909BF7685614D29D9954B170545E.5903DA571D3EBD55FA35B9D45595C552EA2AE017C11F3C47020CA158FFD4609C3ABCDFF39C000AACC175831EFA2C105462D4E6FC2B2AAF128AEE3CCA2FDD4E7A #设置并保存经过加密生成的密码
EOF
(4)生成新的grub.cfg文件;
[root@mwq /etc/grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-675c23e85f174b7ca25013149d0b69ad
Found initrd image: /boot/initramfs-0-rescue-675c23e85f174b7ca25013149d0b69ad.img
done
二.终端登录安全控制
限制root只在安全终端登录
- 安全终端配置:/etc/securetty
/etc/securetty
保存虚拟终/etc/securetty:保存虚拟终端的配置文件,注释指定虚拟主机,将无法登录到系统;端的配置文件,注释指定虚拟主机,将无法登录到系统;
禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或重启后即恢复正常
三.系统弱口令检测
- Joth the Ripper,简称为 JR
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方双站:http://www.openwall.com/john/
安装JR工具
- 安装方法
- 主程序文件为 john
检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行iohn程序,结合--wordlist=字典文件
(1)解压工具包
[root@mwq ~]# cd /opt/
[root@mwq /opt]# rz -E #将john压缩工具包拉入虚拟机中
[root@mwq /opt]# ls
john-1.8.0.tar.gz rh
[root@mwq /opt]# tar xf john-1.8.0.tar.gz #解压工具包
(2)切换到src子目录
[root@localhost opt]# ls
john-1.8.0.tar.gz rh
[root@localhost opt]# tar xf john-1.8.0.tar.gz
[root@localhost opt]# ls
john-1.8.0 john-1.8.0.tar.gz rh
[root@localhost opt]# cd john-1.8.0/
[root@localhost john-1.8.0]# cd src/
(3)进行编译安装
[root@localhost src]# make clean linux-x86-64
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@localhost src]# cd run/
(4)准备待破解的密码文件
[root@localhost run]# cp /etc/shadow ./shadow.txt
(5)执行暴力破解
[root@localhost run]# ./john shadow.txt
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
123 (ll)
123 (lll)
2g 0:00:02:14 23% 2/3 0.01491g/s 373.5p/s 662.1c/s 662.1C/s texas7..dominic7
2g 0:00:02:54 31% 2/3 0.01148g/s 363.2p/s 661.5c/s 661.5C/s admin8..daily8
2g 0:00:04:28 54% 2/3 0.007461g/s 350.9p/s 659.2c/s 659.2C/s 2frederic..2minou
2g 0:00:04:41 56% 2/3 0.007104g/s 349.7p/s 659.4c/s 659.4C/s Laura2..Roadrunner2
password.lst:该文件保存密码字典
[root@localhost run]# vim password.lst
[root@localhost run]# ./john --show shadow.txt
lll:123:19835:0:99999:7:::
ll:123:19835:0:99999:7:::
2 password hashes cracked, 2 left
(6)查看已破解出的账户列表
john.pot:破解后的密码信息都保存在该文件中
[root@localhost run]# ls
ascii.chr john john.log john.rec mailer password.lst shadow.txt unique
digits.chr john.conf john.pot lm_ascii.chr makechr relbench unafs unshadow
[root@localhost run]# cat john.pot
$6$l6mikCAD$Zoguc0DcOATHyHWd9th86tH7aeALfQKwJS/hE4OyxVbxJbwGhZtwkMIqdlLNPVXxAGsQ7dgY5awKtQgjeOWvT1:123
$6$Xdrh4Uhp$/gTxofbC51N9jqozSMZ33sE2HeNsr61ByxVvUapocAIh/t.CUiMtCiqmxOIRgHyyMH.uMl6wIMmwjqJZSKtBm/:123
./john --wordlist=[指定字典文件的绝对路径] [需要破解的文件名]:使用指定的字典文件进行破解;
[root@localhost run]# ./john --wordlist
Option requires a parameter: "--wordlist"
[root@localhost run]# ./john --wordlist=./password.lst shadow.txt
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
0g 0:00:00:10 100% 0g/s 337.7p/s 675.4c/s 675.4C/s !@#$%..sss
Session completed
四.网络端口扫描
nmap命令
- 一款强大的网络扫描、安全检测工具
- 官方网站:http://nmap.orgeCentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86 64.rpm
NMAP的扫描
- nmap[扫描类型][选项]<扫描目标 ...>
常用的扫描类型
- -sS、-sT、-sF、-sU、-SP、-PO·分别查看本机开放的TCP端口、UDP端口
- nmap -sT127.0.0.1
- nmap -sU 127.0.0.1
- 检测192.168.4.0/24网段有哪些主机提供FTP服务
- nmap -p 21 192.168.4.0/24
- 检测192.168.4.0/24网段有哪些存活主机
- nmap -n -sP 192.168.4.0/24
netstat -lntp:以数字形式显示TCP处于监听状态的网络连接及端口信息;
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 772/rpcbind
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1524/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1248/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1250/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1557/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 2193/sshd: root@pts
tcp6 0 0 :::111 :::* LISTEN 772/rpcbind
tcp6 0 0 :::22 :::* LISTEN 1248/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1250/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1557/master
tcp6 0 0 ::1:6010 :::* LISTEN 2193/sshd: root@pts
netstat -antp:以数字形式显示TCP所有状态下的网络连接及端口信息;
[root@localhost ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 772/rpcbind
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1524/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1248/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1250/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1557/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 2193/sshd: root@pts
tcp 0 36 20.0.0.168:22 20.0.0.1:63343 ESTABLISHED 2193/sshd: root@pts
tcp6 0 0 :::111 :::* LISTEN 772/rpcbind
tcp6 0 0 :::22 :::* LISTEN 1248/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1250/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1557/master
tcp6 0 0 ::1:6010 :::* LISTEN 2193/sshd: root@pts
ss -antp:以数字形式显示TCP所有状态下的网络连接及端口信息;(效果和netstat命令相同,但执行效率比netstat命令更高)
[root@localhost ~]# ss -antp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=772,fd=8))
LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1524,fd=6))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1248,fd=3))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=1250,fd=11))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1557,fd=13))
LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=2193,fd=9))
ESTAB 0 0 20.0.0.168:22 20.0.0.1:63343 users:(("sshd",pid=2193,fd=3))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=772,fd=11))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1248,fd=4))
LISTEN 0 128 [::1]:631 [::]:* users:(("cupsd",pid=1250,fd=10))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=1557,fd=14))
LISTEN 0 128 [::1]:6010 [::]:* users:(("sshd",pid=2193,fd=8))
查看指定服务端口是否开启的三种方法
方法一:通过查看进程信息,过滤指定服务的端口是否开启;
方法二:通过指定服务名进行过滤
方法三:通过指定端口号进行过滤
[root@localhost ~]# ps aux | grep httpd
root 2895 0.0 0.0 112824 976 pts/0 S+ 16:50 0:00 grep --color=auto httpd
nmap -p 80 /24 :查看指定192.168.80.0网段内有哪些主机开启了80端口
[root@localhost ~]# nmap -p 20.0.0.168/24
Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 17:06 CST
Error #487: Your port specifications are illegal. Example of proper form: "-100,200-1024,T:3000-4000,U:60000-"
QUITTING!
[root@localhost ~]# nmap -p 80 20.0.0.168/24
Starting Nmap 6.40 ( http://nmap.org ) at 2024-04-22 17:06 CST
Nmap scan report for 20.0.0.1
Host is up (0.00021s latency).
PORT STATE SERVICE
80/tcp filtered http
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 20.0.0.2
Host is up (0.000057s latency).
PORT STATE SERVICE
80/tcp closed http
MAC Address: 00:50:56:F9:C7:68 (VMware)
Nmap scan report for 20.0.0.254
Host is up (-0.10s latency).
PORT STATE SERVICE
80/tcp filtered http
MAC Address: 00:50:56:EC:D2:CA (VMware)
Nmap scan report for 20.0.0.168
Host is up (0.000051s latency).
PORT STATE SERVICE
80/tcp closed http
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.58 seconds
nmap -n -sP 192.168.80.0/24:查看192.168.80.0网段内,有哪些主机存活