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 ...
随机推荐
- angular -- get请求该如何使用?
在做 angualr 的开发过程中,经常会用到的就是 ajax 请求.下面是 get 请求示例: 如果存在多个 get 请求可以考虑进行封装下: // get 携参数访问 ajaxGet(getUrl ...
- 微信小程序 --- for循环渲染
循环标签:wx:for <view wx:for="{{['aa','bb','cc']}}"> {{index}} {{item}} </view> 这里 ...
- UNIX的插头问题
UNIX的插头问题 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 你负责为联合国互联网执行组织(UNIX)的周年会议布置会议室. ...
- Windows下Git免密码pull&push
Windows下Git在使用http方式的时候clone,pull,push需要输入用户名及密码,通过以下设置可以免密码 在用户文件夹创建文件.git-credentials内容如下 https:// ...
- poj1934 Trip【线性DP】【输出方案】
Trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3850 Accepted: 1030 Description ...
- 焦作网络赛L-Poor God Water【矩阵快速幂】
God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...
- opencv学习笔记——FileStorage类的数据存取操作
OpenCV的许多应用都需要使用数据的存储于读取,例如经过3D校准后的相机,需要存储校准结果矩阵,以方便下次调用该数据:基于机器学习的应用,同样需要将学习得到的参数保存等.OpenCV通过XML/YA ...
- scrapy爬虫系列之二--翻页爬取及日志的基本用法
功能点:如何翻页爬取信息,如何发送请求,日志的简单实用 爬取网站:腾讯社会招聘网 完整代码:https://files.cnblogs.com/files/bookwed/tencent.zip 主要 ...
- python3.7.2 ssl版本过低导致pip无法使用的问题
环境:系统是centos6.6,python:python3.7.2 问题:安装好python3.pip后,在通过pip install xx 安装模块时,发现无法安装的问题,提示版本太低,系统默认的 ...
- Ultra-QuickSort---poj2299 (归并排序.逆序数.树状数组.离散化)
题目链接:http://poj.org/problem?id=2299 题意就是求把数组按从小到大的顺序排列,每次只能交换相邻的两个数, 求至少交换了几次 就是求逆序数 #include<std ...