使用 Kali Linux 和其他开源工具来发现系统中的安全漏洞和弱点。
众多被广泛报道的大型消费企业入侵事件凸显了系统安全管理的重要性。幸运的是,有许多不同的应用程序可以帮助保护计算机系统。其中一个是Kali,一个为安全和渗透测试而开发的 Linux 发行版。本文演示了如何使用 Kali Linux 来审视你的系统以发现弱点。
Kali 安装了很多工具,它们都是开源的,默认情况下安装了它们会让事情变得更容易。
本文使用的系统是:
我在上面列出了硬件规格,因为一些任务要求很高,尤其是在运行 WordPress 安全扫描程序(WPScan)时对目标系统 CPU 的要求。
探测你的系统
首先,我会在目标系统上进行基本的 Nmap 扫描(你可以阅读使用 Nmap 结果帮助加固 Linux 系统一文来更深入地了解 Nmap)。Nmap 扫描是一种快速的方法,可以大致了解被测系统中哪些端口和服务是暴露的。
默认扫描显示有几个你可能感兴趣的开放端口。实际上,任何开放端口都可能成为攻击者破坏你网络的一种方式。在本例中,端口 21、22、80 和 443 是不错的扫描对象,因为它们是常用服务的端口。在这个早期阶段,我只是在做侦察工作,尽可能多地获取有关目标系统的信息。
我想用 Nmap 侦察 80 端口,所以我使用参数来查看端口 80,参数来获取操作系统和应用程序版本等信息。
关键信息有:
PORT STATE SERVICE VERSION80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))|_http-generator: WordPress 5.6.1
现在我知道了这是一个 WordPress
服务器
,我可以使用 WPScan 来获取有关潜在威胁的信息。一个很好的侦察方法是尝试找到一些用户名,使用
--enumerate u
告诉 WPScan 在 WordPress 实例中查找用户名。例如:
┌──(rootkali)-[~]└─# wpscan --url vulnerable.usersys.redhat.com --enumerate u_____________________________________________________________________________\ \/ /__ \ / ____|\ \/\/ /| |__) | (________ _ _ __ ®\ \/\/ / |___/ \___ \ / __|/ _` | '_ \\/\/| |____) | (__| (_| | | | |\/\/|_||_____/ \___|\__,_|_| |_|WordPress Security Scanner by the WPScan TeamVersion 3.8.10Sponsored by Automattic -@ethicalhack3r, @erwan_lr, @firefart_______________________________________________________________[+] URL:[10.19.47.242][+] Started: Tue Feb 16 21:38:49 2021Interesting Finding(s):...[i] User(s) Identified:[+] admin | Found By: Author Posts - Display Name (Passive Detection) | Confirmed By: |Author Id Brute Forcing - Author Pattern (Aggressive Detection) |Login Error Messages (Aggressive Detection)[+] pgervase | Found By: Author Posts - Display Name (Passive Detection) | Confirmed By: |Author Id Brute Forcing - Author Pattern (Aggressive Detection) |Login Error Messages (Aggressive Detection)
这显示有两个用户:和。我将尝试使用密码字典来猜测的密码。密码字典是一个包含很多密码的文本文件。我使用的字典大小有 37G,有 3,543,076,137 行。

就像你可以选择不同的文本编辑器、Web 浏览器和其他应用程序 一样,也有很多工具可以启动密码攻击。下面是两个使用 Nmap 和 WPScan 的示例命令:
# nmap -sV --Script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com
# wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt
这个 Nmap 脚本是我使用的许多脚本之一,使用 WPScan 扫描 URL 只是这个工具可以完成的许多任务之一。你可以用你喜欢的那一个。
WPScan 示例在文件末尾显示了密码:
┌──(rootkali)-[~]└─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin_____________________________________________________________________________\ \/ /__ \ / ____|\ \/\/ /| |__) | (________ _ _ __ ®\ \/\/ / |___/ \___ \ / __|/ _` | '_ \\/\/| |____) | (__| (_| | | | |\/\/|_||_____/ \___|\__,_|_| |_|WordPress Security Scanner by the WPScan TeamVersion 3.8.10Sponsored by Automattic -@ethicalhack3r, @erwan_lr, @firefart_______________________________________________________________[+] URL:[10.19.47.242][+] Started: Thu Feb 18 20:32:13 2021Interesting Finding(s):......[+] Performing password attack on Wp Login against 1 user/sTrying admin / redhat Time: 00:01:57 <==================================================================================================================> (3231 / 3231) 100.00% Time: 00:01:57Trying admin / redhat Time: 00:01:57 <=========================================================> (3231 / 6462) 50.00%ETA: ??:??:??[SUCCESS] - admin / redhat[!] Valid Combinations Found: | Username: admin, Password: redhat[!] No WPVulnDB API Token given, as a result vulnerability>┌──(rootkali)-[~]└─# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=password.txt,threads=6 vulnerable.usersys.redhat.comStarting Nmap 7.91 () at 2021-02-18 20:48 ESTNmap scan report for vulnerable.usersys.redhat.com (10.19.47.242)Host is up (0.00015s latency).Not shown: 995 closed portsPORTSTATE SERVICE VERSION21/tcpopenftpvsftpd 3.0.322/tcpopensshOpenSSH 8.0 (protocol 2.0)80/tcpopenhttpApache httpd 2.4.37 ((Red Hat Enterprise Linux))|_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux)| http-wordpress-brute:|Accounts:|admin:redhat - Valid credentials<<<<<<<|pgervase:redhat - Valid credentials<<<<<<<|_Statistics: Performed 6 guesses in 1 seconds, average tps: 6.0111/tcpopenrpcbind 2-4 (RPC #100000)| rpcinfo:|program versionport/protoservice|1000002,3,4111/tcprpcbind|1000002,3,4111/udprpcbind|1000003,4111/tcp6rpcbind|_1000003,4111/udp6rpcbind3306/tcp openmysqlMySQL 5.5.5-10.3.27-MariaDBMAC Address: 52:54:00:8C:A1:C0 (QEMU virtual NIC)Service Info: OS: UnixService detection performed. Please report any incorrect results at.Nmap done: 1 IP address (1 host up) scanned in 7.68 seconds
然而,运行这样的扫描可能会在目标系统上留下大量的 HTTPD 日志消息:
10.19.47.170 - - [18/Feb/2021:20:14:01 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 ("
为了获得关于在最初的 Nmap 扫描中发现的 HTTPS 服务器的信息,我使用了命令:
┌──(rootkali)-[~]└─# sslscan vulnerable.usersys.redhat.comVersion: 2.0.6-staticOpenSSL 1.1.1i-devxx XXX xxxxConnected to 10.19.47.242Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.comSSL/TLS Protocols:SSLv2disabledSSLv3disabledTLSv1.0disabledTLSv1.1disabledTLSv1.2enabledTLSv1.3enabled
它显示了有关启用的 SSL 协议的信息,在最下方,是关于 Heartbleed 漏洞的信息:
Heartbleed:TLSv1.3 not vulnerable to heartbleedTLSv1.2 not vulnerable to heartbleed
防御或减轻攻击的技巧
有很多方法可以保护你的系统免受大量攻击。几个关键点是:
了解更多
本文对安全工具及其使用方法的介绍只是冰山一角。深入了解的话,你可能需要查看以下资源:
Linux系统怎么安装?
Linux安装前的准备工作1.用Windows系统收集硬件信息在安装Linux之前,您需要借助Windows系统了解计算机硬件的基本信息,如内存大小、声卡、显示器、鼠标和显卡型号等。 2.设置从光盘引导系统Linux支持几种安装方式,但直接以光盘开机启动进行安装最方便和快速。 若要机器以光盘启动,需要修改BIOS的设置,将CD-ROM变更至开机顺序的第一位。 3.Linux分区Linux分区的表示方法分区就是将磁盘驱动器分隔成独立的区域,每个区域都如同一个单独的磁盘驱动器,在DOS/Windows系统下磁盘分区可分为C、 D和E盘等。 但Linux则将磁盘视为块设备文件来管理使用,它以 /dev(device的缩写)开头表示。 例: 在Linux用 “/dev/hda1”表示Windows下的C盘其中:hd 表示IDE硬盘(SCSI硬盘用sd);hda 为 第一个IDE 硬盘(第二为 hdb);/dev/hda1 为主分区,逻辑分区 从5 开始,如: /dev/hda5、/dev/hda6、/dev/hda7等。 为Linux准备分区Linux分区和Windows分区不同,不能共用。 所以需要为Linux单独开辟一个空闲的分区,最好是最后一个分区。 如图1中利用Windows下的Partition Magic(分区魔法)软件,在D盘上腾出空间创建新分区E盘(或利用已有的空闲E盘),文件类型暂设为FAT32,作为稍后创建Linux分区使用,RedHat 9.0 大约需4 ~ 5GB的空间。 4.Linux 的文件系统对于不同的操作系统,文件系统也不同。 Windows文件系统为FAT16、FAT32和NTFS。 而Linux的文件系统可分为ext2、ext3、swap和vfat。 ext2支持最多为255 个字符的文件名;ext3 是基于 ext2之上,主要优点是减少系统崩溃后恢复文件系统所花费的时间,RedHat 9.0 默认文件系统为ext3;交换区swap是被用于支持虚拟内存;Windows的FAT分区在Linux下显示为vfat文件类型。 1.用RedHat 9.0第一张安装光盘引导开机,系统在开机后会出现安装菜单。 安装菜单中提供了供用户选择的图形和文本模式的安装方式,按回车选择图形模式进行安装。 在进入图形画面的安装模式前,RedHat 9.0比以往的版本多了一个环节,那就是提示对安装光盘介质进行检测, 也可按“Skip”按钮跳过检测。 2.接着安装程序会自动检测硬件,包括视频卡(显示卡)、显示器和鼠标的配置,然后进入图形画面的安装向导。 在出现“语言选择”的画面中,我们选择“简体中文”,这样接下去的安装过程界面的文字都会改为中文。 在“键盘配置”画面中接受默认的“美国英语式”键盘。 选择“下一步”,在“鼠标配置”窗口,系统自动检测出鼠标的配置。 3.选择安装类型,安装类型包含四种不同的安装方式:个人桌面、工作站、服务器和定制。 “服务器”的安装适用于专职的服务器使用,“个人桌面”和“工作站”适合于初学者,为了让你更多地了解安装过程,我们将选择“定制”类型进行安装。 4.磁盘分区设置:确认了“定制”方式之后,系统会出现“磁盘分区设置”窗口,它提供了两种分区方式:“自动分区”和“用Disk Druid手工分区”。
如何检查Linux服务器受到DDOS攻击
登录到你的服务器以root用户执行下面的命令,使用它你可以检查你的服务器是在DDOS攻击与否: netstat -anp |grep tcp\|udp | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort –n 该命令将显示已登录的是连接到服务器的最大数量的IP的...
Linux 如何禁止用户登录
在Linux上,有多种方式让不安份的用户无法登录。 testid:*:0:7:::2.使用命令usermodusermod -L testid##锁定帐号testidusermod -U testid ##解锁帐号testid3.通过修改shell类型这种方式会更加人性化一点,因为你不仅可以禁止用户登录,还可以告诉他你这么做的原因。 如下:chsh testid -s /sbin/nologin#将用户testid的shell进行更改##修改/etc/(没有就新建一个),##在里面添加给被禁止用户的提示#解禁用户的方式就是把shell改为他原有的就可以了。 4.禁止所有的用户登录个一个地去禁止用户登录,这将是很……无聊的事。 而且还容易出错。 下面有一种简洁有效的方式:##在/etc目录下建立一个nologin文档touch /etc/nologin ##如果该文件存在,那么Linux上的所有用户(除了root以外)都无法登录cat /etc/nologin9:00-10:00 系统升级,所有用户都禁止登录!##解禁帐号也简单,直接将/etc/nologin删除就行了!
发表评论