SSH防爆破
服务器的22端口在公网上开放,也就是任何人都可以尝试连接服务器,通过一些字典进行爆破,将会导致安全性降低,所以需要进行防爆破措施,利用fail2ban进行爆破防护。
fail2ban支持SSH、阿帕奇、ftp服务的防护功能。如果采用了密钥登录方式,则无需设置该功能
安装fail2ban
apt-get install fail2ban
fail2ban配置文件
fail2ban的配置文件有两种类型:分别是 lcoal配置文件 和 conf配置文件。但是更新该软件时,conf配置文件会被更新。所以我们自行复制默认配置文件并更名为local配置文件.
本地配置文件可修改内容:
[全局配置]
#禁止时间: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这个数据方向是可以访问
图示背景: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
SSH_client建立隧道:ssh -fNg -L 123:remoteserver_ip:80 root@sshserver_ip
参数解释:
-L 本地端口转发
-f 后台运行进程
-N 无需登录sshserver
-g 复用访问时作为网关,支持多主机访问本地侦听端口
SSH远程端口映射(点到点隧道)
我所理解的远程端口映射:就是从client到server这个数据方向是不可以访问的,假设服务器中间有个罪恶的防火墙,但是服务器可以访问client
图示背景:sshserver想使用456端口访问client的123端口
SSH_server建立隧道:ssh -fNg -R 456:client_ip:123 root@client_ip
参数解释:
-R 远程端口转发
SSH动态端口映射(点到多点隧道)
一般用于科学上网,建立一条隧道去访问远程内网(即国外网络)里的一片设备
套用下“别赢”的图,讲述下他用SSH动态端口映射所做所为:拿下A主机并建立SSH隧道,并在本地侦听一个空闲端口。此时公网主机设置socks代理为渗透者IP及其侦听的端口,流量实质将通过此端口流向远程内网任意地址。A主机将自动判断过来的流量该去哪里。
隧道建立:ssh -fNg -D 7001 root@172.20.163.136 -p 22
参数解释:
-D 动态端口转发
SSH实现跨越防火墙
实验环境:ubuntu虚拟机、新加坡轻量型服务器
很简单的几步操作:
- ubuntu操作
ssh -fNg -D 7000 root@149.129.37.30 -p 22
本地监听7000端口和轻量型服务器监听的22端口形成动态端口映射,其实SSH创建了一个socks代理服务,之后使用localhost:7000来作为正常的socks代理来使用
- 火狐浏览器设置
- 最重要的一步
把你的嘴角上扬50°左右,答应我,不管发生什么,都要时刻保持微笑
ps:卡到怀疑人生 !
SSH其他
关于SSH登录时遇到的小问题
我经常遇到云服务器重置密码或者重装系统之后,使用ssh连接时就出现了报错,具体截图,下次遇到时会放上来。“服务器密钥改变,为避免中间人攻击而报错”。我的解决方法是将.ssh/目录下的know_hosts文件删除,然后重新尝试登录就解决了。
SSH有意思的操作
修改banner信息
问:什么是banner?
banner就是服务器所返回的一些服务器的信息或者告警信息,用于告诉客户端这台服务器的用途或者是未经授权不得访问,这样服务器被入侵了,抓到了入侵者可以给他定罪!
问:为什么要修改banner?
- 主要为了保护公司服务器
- 次要为了装X,秀下散装英文
#修改sshd服务的配置文件
vim /etc/ssh/sshd_config
Welcome back! & Caution: No unauthorized access!
友情翻译:欢迎回来!& 警告:未经授权不得访问!
以下是客户端登陆服务器时所返回的信息