centos7防暴力破解五种方法
什么是暴力破解,简单来说就是对一个服务器进行无数次尝试登陆,并用不同的密码进行登陆直到可以登陆成功。暴力破解的基本步骤可以分为以下几步:
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
|
密码不包括元音字母或者可能被误认为是元音字母的数字
|
示例:
[root@vultr ~]# pwgen -c -n -y - 10 #意思是生成密码长度为12的包含至少一个大写字母和至少一个数字和至少一个特殊字符的10个密码,并分行显示。
Adee,lu8laem
Liev0wa=o5ai
juP[ae[xi2ae
eequ@oo4EeLu
GeeBaeXo9on/
ohm5As;ohthi
ahtai1AhZee+
Aiwi"moor7bu
UheiPh<i3aad
ira^v2ooLai8
2. 更改端口号
我们使用的sshd服务的配置文件是在/etc/ssh/sshd_config,我们只需要将端口更改下就行了。
vim /etc/ssh/sshd_config

更改完之后我们需要将我们的82端口开放下。
firewall-cmd --add-port=/tcp --permanent
firewall-cmd --reload
然后重启sshd服务即可:
systemctl restart sshd
访问的时候我们需要加上我们的端口号。
ssh -p82 192.168.1.121
我们可以用nmap 扫描下我们的我们服务器看看哪些端口开放着。
[root@localhost ~]# nmap 192.168.1.121 Starting Nmap 6.40 ( http://nmap.org ) at 2018-01-03 14:53 CST
Nmap scan report for li155.members.com (192.168.1.121)
Host is up (.070s latency).
Not shown: filtered ports
PORT STATE SERVICE
/tcp closed ssh
/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。
#!/bin/bash
######################################################
# $Name: protect_ssh
# $Version: v1.
# $Function: Prevent SSH from being hacked
# $Author: djx
# $Create Date: --
# $Description: shell
#######################################################
#SSH配置文件所在位置
SSH_config='/etc/hosts.deny'
#ssh 日志文件位置
SSH_log='/var/log/secure'
#记录尝试登陆超过15次且未登陆成功的ip,以及添加进黑名单的时间日志
Deny_log='/var/lib/ssh_shell/ssh_deny.log'
#储存所有ip及访问次数文件
Visit_ip='/var/lib/ssh_shell/ssh_visit.txt'
#超过设置下面次数将被添加进黑名单
Visit_number=
#检查ssh日志文件是否存在
if [ ! -e $SSH_log ]
then
echo -e "\033[41;37m ssh 日志文件不存在 请检查原因 \033[0m"
exit
fi if [ ! -e "$SSH_config.bak" ]
then
cp $SSH_config $SSH_config.bak
if [ $? -eq ]
then
echo " 备份文件成功" >>$Deny_log
else
echo -e"\033[41;37m ssh备份文件不成功 \033[0m"
exit
fi
else
echo " 已有备份文件 " >>$Deny_log
fi cat $SSH_log |awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{ print $2"==="$1}' > $Visit_ip
echo "---------$(date +%F_%T)------------" >>$Deny_log for VI in $(cat $Visit_ip)
do
Number=$(echo $VI |awk -F=== '{print $2}')
IP=$(echo $VI |awk -F=== '{print $1}')
if [ $Number -gt $Visit_number ]
then
grep $IP "$SSH_config" >/dev/null
if [ $? -ne ]
then
echo " sshd:$IP:deny" >>$SSH_config
echo "$IP " >>$Deny_log
fi
fi done
5. 使用fail2ban
centos7防暴力破解五种方法的更多相关文章
- WordPress防暴力破解:安全插件和用.htpasswd保护WordPress控制面板
正在用Wordpress的博主们一定知道最近全球兴起的一波黑客锁定Wordpress暴力破解控制面板密码的风波了,据CloudFlare执行长Matthew Prince所说,所谓的暴力密码攻击是输入 ...
- fail2ban的使用以及防暴力破解与邮件预警
fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员! fail2ban运行机制:简单来说其功能就 ...
- fail2ban 防暴力破解总结
公司服务器安全问题一直是个令人头疼的问题,许多运维的小伙伴一直在用脚本来监控服务器登录状态,然而脚本编写比较麻烦,今天就给大家推荐一款小而精致的防暴力破解工具 fail2ban ,他可以监控系统日志, ...
- openssh安装、设置指定端口号、免密码登录、变量传递、防暴力破解
首先确保机器挂在好光盘镜像,然后查看软件包信息 [root@xuegod63 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- js去掉字符串前后空格的五种方法
转载 :http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用 function trim(s){ ret ...
- EntityFramework嵌套查询的五种方法
这样的双where的语句应该怎么写呢: var test=MyList.Where(a => a.Flows.Where(b => b.CurrentUser == “”) 下面我就说说这 ...
- 实现sticky footer的五种方法
2017-04-19 16:24:48 什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送. 用position实现? 如果是用 ...
随机推荐
- java 泛型的类型擦除和桥方法
oracle原文地址:https://docs.oracle.com/javase/tutorial/java/generics/erasure.html 在Java中,泛型的引入是为了在编译时提供强 ...
- C++ 中数组做参数的分析
C++ 中数组做参数的分析 1.数组降价问题? "数组引用"以避免"数组降阶",数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是& ...
- Back to December -- Taylor Swift
Back to December 泰勒·斯威夫特(Taylor Swift),美国乡村音乐女创作歌手,会用木吉他.钢琴演奏. 曾获得美国乡村音 ...
- [LeetCode 题解] Spiral Matrix
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 题目链接 54. Spiral Matrix ...
- Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)
目录 1 集成TFS系统.... 1.1 概述.... 1.2 安装TFS插件.... 1.2.1 在线安装方式.... 1.2.2 离线安装方案.... 1.3 常见操作.... 1.3.1 新建G ...
- Python初学手记----在window系统中安装环境
官网地址: https://www.python.org/ Win版下载地址:https://www.python.org/downloads/windows/ 安装注意:安装路径推荐修改. path ...
- Backbone学习笔记 - Collection及Router篇
Collection Collection可以看成是Model的集合.以下是一个集合的例子: var Song = Backbone.Model.extend({ defaults: { name: ...
- JavaScript编程题(含腾讯2016校招题)
作者:ManfredHu 链接:http://www.manfredhu.com/2016/04/02/15-veryGoodForUsing/ 声明:版权所有,转载请保留本段信息,否则请不要转载 几 ...
- 四两拨千斤式的攻击!如何应对Memcache服务器漏洞所带来的DDoS攻击?
本文由 网易云发布. 近日,媒体曝光Memcache服务器一个漏洞,犯罪分子可利用Memcache服务器通过非常少的计算资源发动超大规模的DDoS攻击.该漏洞是Memcache开发人员对UDP协议支 ...
- 洛谷P4197 Peaks&&克鲁斯卡尔重构树学习笔记(克鲁斯卡尔重构树+主席树)
传送门 据说离线做法是主席树上树+启发式合并(然而我并不会) 据说bzoj上有强制在线版本只能用克鲁斯卡尔重构树,那就好好讲一下好了 这里先感谢LadyLex大佬的博客->这里 克鲁斯卡尔重构树 ...