SSH防爆破

服务器的22端口在公网上开放,也就是任何人都可以尝试连接服务器,通过一些字典进行爆破,将会导致安全性降低,所以需要进行防爆破措施,利用fail2ban进行爆破防护。

fail2ban支持SSH、阿帕奇、ftp服务的防护功能。如果采用了密钥登录方式,则无需设置该功能

安装fail2ban

apt-get install fail2ban 

fail2ban配置文件

fail2ban的配置文件有两种类型:分别是 lcoal配置文件 和 conf配置文件。但是更新该软件时,conf配置文件会被更新。所以我们自行复制默认配置文件并更名为local配置文件.

ssh1.png

本地配置文件可修改内容:

[全局配置]
#禁止时间:10分钟,当该值为-1时表示永久禁止访问
bantime = 10m 
#检查日志时间:每隔10分钟检查一次日志
findtime =10m
#错误尝试次数:5次
maxretry =5

[局部配置]
#管理员邮箱地址
sender = root@<fq-hostname>

[jails配置,高于全局配置]
[sshd] 
enabled=true  #启用保护ssh服务
bantime=10m  #超过错误尝试次数,查询日志后,封禁ip 10分钟
filter=sshd #侦测日志中寻找sshd关键词,判断是否有人尝试暴力破解ssh登录

tips: 每次修改完local文件后,需要重启服务! 老规矩了,基本的命令格式就是这样:service 服务名 restart

SSH隧道

SSH隧道:将server:23端口和client:2001端口形成映射关系,两个端口之间的通讯经过了SSH隧道,中间的数据都是加密的。SSH隧道分为 本地端口映射、远程端口映射、动态端口映射。

SSH本地端口映射(点到点隧道)

我所理解的本地端口映射:就是从client到server这个数据方向是可以访问

ssh6.png

图示背景:client想使用本机的123端口访问sshserver的456端口
工作原理

  • Client上的应用客户端将数据发送到本地的123端口上
  • Client上的SSH客户端将本地123端口收到的数据发送到server端的ssh server上
  • SSH server会解密收到的数据并将之转发到监听的456端口上
  • 最后应用程序服务端将数据返回以完成整个流程

SSH_client建立隧道:ssh -fNg -L 123:sshserver_ip:456 root@sshserver_ip

ssh7.png

SSH_client建立隧道:ssh -fNg -L 123:remoteserver_ip:80 root@sshserver_ip

参数解释:
-L 本地端口转发
-f 后台运行进程
-N 无需登录sshserver
-g 复用访问时作为网关,支持多主机访问本地侦听端口

SSH远程端口映射(点到点隧道)

我所理解的远程端口映射:就是从client到server这个数据方向是不可以访问的,假设服务器中间有个罪恶的防火墙,但是服务器可以访问client

ssh5.png

图示背景:sshserver想使用456端口访问client的123端口
SSH_server建立隧道:ssh -fNg -R 456:client_ip:123 root@client_ip

参数解释:
-R 远程端口转发

SSH动态端口映射(点到多点隧道)

一般用于科学上网,建立一条隧道去访问远程内网(即国外网络)里的一片设备

ssh9.png

套用下“别赢”的图,讲述下他用SSH动态端口映射所做所为:拿下A主机并建立SSH隧道,并在本地侦听一个空闲端口。此时公网主机设置socks代理为渗透者IP及其侦听的端口,流量实质将通过此端口流向远程内网任意地址。A主机将自动判断过来的流量该去哪里。

隧道建立:ssh -fNg -D 7001 root@172.20.163.136 -p 22

参数解释:
-D 动态端口转发

SSH实现跨越防火墙

实验环境:ubuntu虚拟机、新加坡轻量型服务器

很简单的几步操作:

  1. ubuntu操作
ssh -fNg -D 7000 root@149.129.37.30 -p 22

本地监听7000端口和轻量型服务器监听的22端口形成动态端口映射,其实SSH创建了一个socks代理服务,之后使用localhost:7000来作为正常的socks代理来使用

  1. 火狐浏览器设置

ssh10.png

  1. 最重要的一步

把你的嘴角上扬50°左右,答应我,不管发生什么,都要时刻保持微笑

ps:卡到怀疑人生 !

SSH其他

关于SSH登录时遇到的小问题

我经常遇到云服务器重置密码或者重装系统之后,使用ssh连接时就出现了报错,具体截图,下次遇到时会放上来。“服务器密钥改变,为避免中间人攻击而报错”。我的解决方法是将.ssh/目录下的know_hosts文件删除,然后重新尝试登录就解决了。

SSH有意思的操作

修改banner信息

问:什么是banner?

banner就是服务器所返回的一些服务器的信息或者告警信息,用于告诉客户端这台服务器的用途或者是未经授权不得访问,这样服务器被入侵了,抓到了入侵者可以给他定罪!

问:为什么要修改banner?

  1. 主要为了保护公司服务器
  2. 次要为了装X,秀下散装英文

#修改sshd服务的配置文件

vim /etc/ssh/sshd_config
Welcome back! & Caution: No unauthorized access!

友情翻译:欢迎回来!& 警告:未经授权不得访问!

以下是客户端登陆服务器时所返回的信息

ssh11.png


保持一个积极向上的良好心态,分享网络技术!