什么是暴力破解,简单来说就是对一个服务器进行无数次尝试登陆,并用不同的密码进行登陆直到可以登陆成功。暴力破解的基本步骤可以分为以下几步:
1. 找到对应的linux服务器 Ip地址
2.扫描端口号:22 nmap扫描端口
3.开始暴力破解 : 一般root 破解你的密码 登录你的机器 破坏 盗取你的重要的数据
对于这种情况我们有以下5种解决办法:
将密码设置复杂,长度大于8位或者最好大于14位,密码的复杂度:由大小写字母以及字符和数字组成。 0-9 a-z A-Z @!#$%*. 等等。更改端口号,默认的端口是sshd(22),修改默认端口号。不用root用户登陆(禁止root用户登陆),使用其他用户登陆并且拥有root用户权限。sshd服务,直接编写脚本检查/var/log/secure 内登录失败次数超过某个阈值的ip并将它添加到/etc/hosts.deny(fail2ban的优点更多)
使用fail2ban,起到登录失败多次后直接禁止某个时间段此ip登陆。接下来我们对于上面的五种方法进行一一讲解演示。(以下的 *** 作环境是在centos7下的)
1. 将密码设置复杂
密码的复杂度一定要较高点,尽量通过密钥登陆,这里介绍个密码生成工具:pwgen(需安装,用yum安装下就可以了)
pwgen的一些参数
参数 | 功能描述 |
-c | 密码里面包含至少一个大写字母 |
-A | 密码里面不包含大写字母 |
-n | 密码里面至少包含一个数字。 |
-0 | 密码中不包含数字 |
-y | 密码中至少包含一个特殊字符。 |
-s | 生成安全随机的密码 |
-B | 密码中不包含混淆的字符,例如“1”和“I” |
-h | 查看帮助信息 |
-H | 使用指定文件sha1哈希生成,不适用随机生成 |
-C | 按列打印生成的随机密码 |
-1 | 每行输出一个密码,不按列打印生成密码 |
-v | 密码不包括元音字母或者可能被误认为是元音字母的数字 |
示例:
1 [root@vultr ~]# pwgen -c -n -y -1 12 10 #意思是生成密码长度为12的包含至少一个大写字母和至少一个数字和至少一个特殊字符的10个密码,并分行显示。 2 Adee,lu8laem 3 LIEv0wa=o5ai 4 juP[ae[xi2ae 5 eequ@oo4EeLu 6 GeeBaeXo9on/ 7 ohm5As;ohthi 8 ahtai1AhZee+ 9 Aiwi"moor7bu10 UheiPh<i3aad11 ira^v2oolai8
2. 更改端口号
我们使用的sshd服务的配置文件是在/etc/ssh/sshd_config,我们只需要将端口更改下就行了。
vim /etc/ssh/sshd_config
更改完之后我们需要将我们的82端口开放下。
firewall-cmd --add-port=82/tcp --permanent firewall-cmd --reload
然后重启sshd服务即可:
systemctl restart sshd
访问的时候我们需要加上我们的端口号。
ssh -p82 192.168.1.121
我们可以用nmap 扫描下我们的我们服务器看看哪些端口开放着。
[root@localhost ~]# nmap 1.121Starting Nmap 6.40 ( http://nmap.org ) at 2018-01-03 14:53 CSTNmap scan report for li155.members.com ()Host is up (0.070s latency).Not shown: 998 filtered portsPORT STATE SERVICE22/tcp closed ssh82/tcp open xfe
可以看到虽然我们82端口被扫描出来了,但是是不知道它是sshd服务的。
3. 禁止root用户登陆
1. 不使用root用户名登陆,这样root不知道你的管理员用户的用户名,这样也加大了暴力破解力度。
注:判断一个用户是不是超级管理员,看的是用户的ID是否为0。
例:创建一个普通帐号,修改ID为0 然后变成超级管理权限
创建一个用户后
vim /etc/passwd
改:root:x:0:0:root:/root:/bin/bash
为:root:x:0:0:root:/sbin/nologin #不让root登录系统
改:djx:x:1000:1000::/home/djx:/bin/bash
为:djx:x:0:0::/home/djx:/bin/bash #改ID500为0,cd就成root身份
注:centos7普通用户ID是从1000开始,centos7以前的普通用户ID是从500开始。
然后我们可以使用djx登陆,会发现它拥有root的权限。
我们登陆的家目录是djx家目录,用户djx是具有管理员权限,可以在root下创建目录。
4. 编写脚本检查/var/log/secure访问日志文件。
思路:通过统计日志文件中的登陆失败的ip,并将达到阈值的ip添加到/etc/hosts.deny来拒绝某个ip的再次访问。
脚本:之前写的,比较low。
1 #!/bin/bash###################################################### 3 # $name: protect_ssh 4 # $Version: v1.0# $Function: Prevent SSH from being Hacked 6 # $Author: djx 7 # $Create Date: 2017-11-22 8 # $Description: shell 9 #######################################################10 #SSH配置文件所在位置11 SSH_config='/etc/hosts.deny'12 #ssh 日志文件位置13 SSH_log=/var/log/secure14 #记录尝试登陆超过15次且未登陆成功的ip,以及添加进黑名单的时间日志15 Deny_log=/var/lib/ssh_shell/ssh_deny.log16 #储存所有ip及访问次数文件17 Visit_ip=/var/lib/ssh_shell/ssh_visit.txt18 #超过设置下面次数将被添加进黑名单19 Visit_number=6020 #检查ssh日志文件是否存在21 if [ ! -e $SSH_log ]22 then23 echo -e 3[41;37m ssh 日志文件不存在 请检查原因 3[0m"24 exit 125 fi26 27 if [ ! -e $SSH_config.bak" ]28 29 cp $SSH_config $SSH_config.bak30 if [ $? -eq 31 32 echo 备份文件成功" >>$Deny_log33 else34 echo -e3[41;37m ssh备份文件不成功 3[0m35 exit 236 37 38 已有备份文件 39 40 41 cat $SSH_log |awk /Failed/{print $(NF-3)}'|sort|uniq -c|{ print "==="}' > $Visit_ip42 ---------$(date +%F_%T)------------43 44 for VI in $(cat $Visit_ip)45 do46 Number=$(echo $VI |awk -F=== {print }')47 IP=$({print }48 if [ $Number -gt $Visit_number ]49 50 grep $IP $SSH_config" >/dev/null51 if [ $? -ne 52 53 sshd:$IP:deny$SSH_config54 $IP 55 56 57 58 done
5. 使用fail2ban
见文章:fail2ban的使用以及防暴力破解与邮件预警
总结
以上是内存溢出为你收集整理的centos7防暴力破解五种方法全部内容,希望文章能够帮你解决centos7防暴力破解五种方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)