SSH防止暴力破解--fail2ban
一、ssh密钥对无交互登录
实战1:通过密钥进行sshd服务认证
[root@linl_C ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa. #$HOME/.ssh/id_rsa私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. #$HOME/.ssh/id_rsa.pub公钥
The key fingerprint is:
ca:d7::c0:ee:5d::cc:ea:e4::c4:b4:a5:7f:cf root@linl_C
The key's randomart image is:
+--[ RSA ]----+
| |
| . . |
| o + |
| .= o |
| .S. = |
| . o.o.o.. |
| o +.=..o |
| o B.. E |
| ..+ |
+-----------------+
[root@linl_C ~]# ls .ssh/
id_rsa id_rsa.pub
[root@linl_C ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub lin_S #如果用root账号,则主机可以省略用户名
root@lin_s's password:
Now try logging into the machine, with "ssh 'lin_S'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@linl_C ~]# ssh lin_S #无交互登录
Last login: Fri May :: from 10.0.0.16
[root@linl_S ~]# ls $HOME/.ssh/ #在lin_S上$HOME/.ssh/下查看拷贝过来的文件,会将id_rsa.pub重命名为authorized_keys
authorized_keys known_hosts
[root@linl_C ~]# ssh-copy-id -i .ssh/id_rsa.pub linypwb@lin_S
linypwb@lin_s's password:
Now try logging into the machine, with "ssh 'linypwb@lin_S'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@linl_C ~]# ssh linypwb@lin_S
Last login: Fri May :: from lin_c
[linypwb@linl_S ~]$
[linypwb@linl_S ~]$ ls .ssh/
authorized_keys
[root@linl_S ~]# vi /etc/ssh/sshd_config
#PasswordAuthentication yes #将认证设置为no
PasswordAuthentication no
[root@linl_S ~]# service sshd restart #重启sshd服务
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
二、sshd服务防止暴力破解—fail2ban
实战2:sshd服务防止暴力破解
互动:是否可以禁止root身份登录? 不行,因为有些程序需要使用root身份登录并运行。另外判断一个用户是不是超级管理员,看的是用户的ID是否为0。
1)修改登录shell
将 /bin/bash 改为 /sbin/nologin
[root@linl_S ~]# vim /etc/passwd
#root:x:::root:/root:/bin/bash
root:x:::root:/root:/sbin/nologin
[root@linl_S ~]# vim /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no
[root@linl_S ~]# vi /etc/passwd
#linypwb:x::::/home/linypwb:/bin/bash
linypwb:x::::/home/linypwb:/bin/bash [root@linl_C ~]# ssh linypwb@lin_S
linypwb@lin_s's password:
Last login: Fri May :: from lin_c
[root@linl_S ~]# id linypwb
uid=(root) gid=(root) groups=(root)
[root@linl_S ~]# pwd
/home/linypwb
[root@linl_S ~]# whoami
root
实战3:fail2ban
[root@linl_S ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.-27.1.el6.x86_64.rpm
warning: /mnt/Packages/lrzsz-0.12.-27.1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [%]
:lrzsz ########################################### [%]
[root@linl_S ~]# rz #选择上传安装包
[root@linl_S ~]# ls fail2ban*
fail2ban-0.8..tar.gz
[root@linl_S ~]# tar -zxf fail2ban-0.8..tar.gz
[root@linl_S ~]# ls
fail2ban-0.8. fail2ban-0.8..tar.gz
[root@linl_S ~]# vim fail2ban-0.8./README.md

[root@linl_S ~]# python -V
Python 2.6.
5)安装fail2ban
[root@linl_S ~]# cd fail2ban-0.8.
[root@linl_S fail2ban-0.8.]# python setup.py install
running install
running build
...
Please do not forget to update your configuration files.
They are in /etc/fail2ban/.
[root@linl_S fail2ban-0.8.]# cp files/redhat-initd /etc/init.d/fail2ban
[root@linl_S fail2ban-0.8.]# chkconfig --add fail2ban
[root@linl_S fail2ban-0.8.]# chkconfig --list fail2ban
fail2ban :off :off :off :on :on :on :off
[root@linl_S fail2ban-0.8.]# grep chkconfig ./* -R
./files/redhat-initd:# chkconfig: - 92 08
[root@linl_S ~]# ls /etc/fail2ban/
action.d fail2ban.conf fail2ban.d filter.d jail.conf jail.d
[DEFAULT] #全局设置
ignoreip = 127.0.0.1/ #忽略的IP列表,不受设置限制
bantime = #屏蔽时间,单位:秒
findtime = #这个时间段内超过规定次数会被ban掉
maxretry = #最大尝试次数
backend = auto #日志修改检测机制(gamin、polling和auto这三种)
[sshd] #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled = false #是否激活此项(true/false)
filter = sshd #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数,对应action.d/iptables.conf文件
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] #触发报警的收件人
logpath = /var/log/sshd.log #检测的系统的登陆日志文件。
[ssh-iptables]
enabled = true #是否激活此项(true/false)修改成 true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]
logpath = /var/log/secure #这里要写sshd服务日志文件
findtime = #在5分钟内内出现规定次数就开始工作
maxretry = #3次密码验证失败
bantime = #禁止用户IP访问主机1小时
[root@linl_S ~]# service fail2ban start
Starting fail2ban: [ OK ]
[root@linl_S ~]# > /var/log/secure #清空日志,从现在开始
[root@linl_S ~]# /etc/init.d/fail2ban restart #重启fail2ban 服务
Stopping fail2ban: [ OK ]
Starting fail2ban: [ OK ]
[root@linl_S ~]# iptables -nL #查看防火墙状态
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp -- 0.0.0.0/ 0.0.0.0/ tcp dpt: Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination Chain fail2ban-SSH ( references) #多出一条fail2ban-SSH的规则链
target prot opt source destination
RETURN all -- 0.0.0.0/ 0.0.0.0/
[root@linl_C ~]# ssh lin_S #正确密码可以登录
root@lin_s's password:
Last login: Fri May :: from 10.0.0.1
[root@linl_S ~]# ssh lin_S
ssh: Could not resolve hostname lin_S: Name or service not known
[root@linl_S ~]# logout
Connection to lin_S closed.
[root@linl_C ~]# ssh lin_S #3次错误密码后,被拒绝
root@lin_s's password:
Permission denied, please try again.
root@lin_s's password:
Permission denied, please try again.
root@lin_s's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@linl_C ~]# ssh lin_S #重新尝试,被锁定
ssh: connect to host lin_S port : Connection refused
[root@linl_S ~]# iptables -nL |tail - #查看防火墙,多了一条REJECT条目,禁止10.0.0.16主机访问
Chain fail2ban-SSH ( references)
target prot opt source destination
REJECT all -- 10.0.0.16 0.0.0.0/ reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/ 0.0.0.0/
[root@linl_S ~]# fail2ban-client status #查看fail2ban 工作状态
Status
|- Number of jail:
`- Jail list: ssh-iptables
[root@linl_S ~]# fail2ban-client status ssh-iptables #查看具体某一项工作状态
Status for the jail: ssh-iptables
|- filter
| |- File list: /var/log/secure #读取的日志:/var/log/secure
| |- Currently failed:
| `- Total failed: #一共失败了3次
`- action
|- Currently banned: #当前ban掉了1个IP
| `- IP list: 10.0.0.16 #IP
`- Total banned:
[root@linl_S ~]# vim /var/log/fail2ban.log
...
#-- ::, fail2ban.actions[]: WARNING [ssh-iptables] Ban 10.0.0.16 #删除ban掉IP 的日志信息
[root@linl_S ~]# service fail2ban restart
Stopping fail2ban: [ OK ]
Starting fail2ban: [ OK ]
[root@linl_C ~]# ssh lin_S #此时,lin_C再尝试可以进行登录
root@lin_s's password:
Last login: Fri May :: from lin_c
[root@linl_S ~]#
[root@linl_S ~]# iptables -F #清空防火墙
[root@linl_S ~]# iptables -nL |tail - #REJECT条目已清空
Chain fail2ban-SSH ( references)
target prot opt source destination [root@linl_C ~]# ssh lin_S #此时,lin_C再尝试可以进行登录
root@lin_s's password:
Last login: Fri May :: from lin_c
[root@linl_S ~]#
三、两台Linux服务器之间复制数据
[root@linl_C ~]# scp /etc/passwd root@10.0.0.15:/tmp
root@10.0.0.15's password:
passwd % .5KB/s :
[root@linl_S ~]# scp root@10.0.0.16:/etc/passwd /tmp
root@10.0.0.16's password:
passwd % .5KB/s :
SSH防止暴力破解--fail2ban的更多相关文章
- 开源服务专题之------ssh防止暴力破解及fail2ban的使用方法
15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/roo ...
- 拒绝ssh远程暴力破解
拒绝ssh远程暴力破解 简介 在网络技术日益发展的今天,网络上的安全问题日益严重.当你在公网上使用Linux服务器时,很有可能你的服务器正在遭受ssh暴力破解. 曾经有一次我的同伴将给客户提供监控服务 ...
- SSH密码暴力破解及防御实战
SSH密码暴力破解及防御实战 一.Hydra(海德拉) 1.1 指定用户破解 二.Medusa(美杜莎) 2.1 语法参数 2.2 破解SSH密码 三.Patator 3.1 破解SSH密码 四.Br ...
- ssh防止暴力破解之fail2ban
1.利用sshd服务本身防止暴力破解 2.sshd服务防止暴力破解和fail2ban使用方法 先说说一般的防范措施: 方法1: 1.密码足够复杂: 密码的长度要大于8位最好大于14位.密码的复杂度是密 ...
- fail2ban防护ssh免于暴力破解
一.背景 开放到公网的主机无时无刻不在遭受攻击,其中ssh暴力破解频率最高,会有无数机器不分日夜地搜索公网上的猎物,然后进行弱密码尝试 如果你的公网机器恰巧设的弱密码,估计刚装上系统,没过几小时别人就 ...
- 服务器如何防ssh服务暴力破解??
如图: 当我们遭到暴力破解ssh服务该怎么办 内行看门道 外行看热闹 下面教大家几招办法: 1 密码足够的复杂,密码的长度要大于8位最好大于20位.密码的复杂度是密码要尽可能有数字.大小写字母和特 ...
- Linux 安装DenyHost防止ssh被暴力破解
DenyHosts介绍 当你的linux服务器暴露在外网当中时,服务器就极有可能会遭到互联网上的扫描软件进行扫描,然后试图连接ssh端口进行暴力破解(穷举扫描).如果遇到这个问题,一款非常有用的工具D ...
- Centos 拒绝ssh远程暴力破解方法
佳木斯SEO摘要 有一天突然收到一封邮件,邮件内容告知我的ECS服务器作为肉鸡在攻击别的机器,期初一想,一定是我机器的账号密码被泄露,或者是被人暴力破解,于是乎,我就查询了一下我机器的账号登录记录. ...
- DenyHosts 安全限制ssh防暴力破解
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP ...
随机推荐
- react路由守卫
react没有vue那样的路由钩子beforeEach,实现登陆验证. 实现效果:如果没有登陆,就跳转到登陆界面,如果登陆过浏览器存有登陆信息就跳转到所输入的路由界面,如果该路由不存在则跳到404页面 ...
- yii2GridView的简单使用
GridView::widget([ 'dataProvider' => $dataProvider,// 你传过来的ActiveDataProvider // 'filterModel' =& ...
- ManyToMany参数(through,db_constraint)
through : 指定自己写好的第三张表,我们可以给第三张表添加字段了(告诉Django不用建第三张表了,我们都给他配好了) class Book(models.Model): name=model ...
- Mysql中datetime和timestamp区别
DATETIME日期和时间的组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DA ...
- mysql 表的增删改查
一.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 对于一张表来说,字段是必须要有的. 数据表 类似于excel id,name,qq, ...
- 创建WCF服务的过程
一.创建控制台WCF工程 1.创建一个控制台工程2.System.ServiceModel的引用3.可创建多个WCF服务,如:IService.cs和Service.cs 顺序:右键->添 ...
- 如何确定Hadoop中map和reduce的个数--map和reduce数量之间的关系是什么?
一般情况下,在输入源是文件的时候,一个task的map数量由splitSize来决定的,那么splitSize是由以下几个来决定的 goalSize = totalSize / mapred.map. ...
- PAT 1137 Final Grading[一般][排序]
1137 Final Grading(25 分) For a student taking the online course "Data Structures" on China ...
- Python---1. 基础数据类型
转载: Py西游攻关之基础数据类型
- Ubuntu下navicat过期解决办法
Ubuntu下使用navicat过期.试用期是15天. 可以删除.navicat64/解决.不好的一点就是.需要重新连接数据库,以前的连接记录会被删除 rm -rf ~/.navicat64/