服务器连接

首先花99元购买一台服务器一年的使用权
在这里插入图片描述
第一次通过Workbench通常是无法连接的,此时进入VNC连接界面,通过重置密码设置连接密码和连接方式,之后就可以连接了
在这里插入图片描述

面板安装

进入实例页面安装宝塔面板
在这里插入图片描述

在这里插入图片描述
进入如下页面查看详情
在这里插入图片描述
拉到最下面查看宝塔面板的地址

在这里插入图片描述

端口放行

这个放行要走两步,第一步是从安全策略放行,第二步是从宝塔面板放行

手动修改安全组访问规则
在这里插入图片描述
进入宝塔面板,批量放行端口号
在这里插入图片描述

frps自动运行

进入下面的位置
在这里插入图片描述
点击发送命令
在这里插入图片描述

端口防爆破

安装Fail2ban防爆破插件,进入服务保护设置,修改默认的sshd设置。
在这里插入图片描述
如果直接这样做,在日志/var/log/fail2ban.log会收获下面的报错:

firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports 22,7000,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050 -m set --match-set f2b-sshd src -j REJECT --reject-with icmp-port-unreachable
2024-07-07 06:37:45,928 fail2ban.utils          [924]: ERROR   7fa510012e80 -- stderr: "Error: COMMAND_FAILED: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.8.4 (nf_tables): too many ports specified"

这个错误表明iptables-restore命令失败,因为指定的端口数量过多。iptables有一个限制,不允许在单个规则中指定过多的端口。这个限制是为了防止规则变得过于复杂,影响防火墙性能。

一个解决方案是使用端口范围表示法(如 --dports 22,7000:7050)来替代列出每个单独的端口,但是在宝塔插件的页面端,这样的配置是不生效的

在这里插入图片描述
因此只能直接改配置文件,在/etc/fail2ban/jail.local文件中添加以下内容

[sshd]
enabled = true
filter = sshd
port = 22,7000:7050
maxretry = 5
findtime = 600
bantime = 864000
action = %(action_mwl)s
logpath = /var/log/secure

使用以下命令重启

sudo fail2ban-client reload
sudo systemctl restart fail2ban

刷新插件页面,可以看见了
在这里插入图片描述
但是经过一番测试,我发现它只能防本机22端口的ssh扫描,无法保护我添加的frp端口,这就要从Fail2ban的原理说起了:

Fail2ban 是一个入侵防御工具,通过监控日志文件检测多次失败的登录尝试等可疑行为,并自动更新防火墙规则封禁可疑 IP 地址,从而保护服务器免受暴力破解等攻击。

Fail2ban的核心是日志监控,虽然我把监控端口放进去了,但是frp连接的日志和解析规则我没有给,甚至目前frps是没有开启日志保存功能的。

因此第一步,进入frps.toml文件,添加日志保存:

log.level = "info"
#日志保留时间
log.maxDays = 7
log.to = "/frp/frp_0.57.0_linux_amd64/frps.log"

第二步,针对日志中的SSH连接规则,写正则表达式,保存到/etc/fail2ban/filter.d/frps-ssh-ban.conf

[Definition]
failregex = ^.*\[.*SSH.*\] get a user connection \[<HOST>:[0-9]*\]
ignoreregex =

第三步,在/etc/fail2ban/jail.local中添加新的jail,二三步参考了使用Fail2ban防止FRP穿透SSH,RDP,FTP等服务被爆破

[frps-ssh-ban]
enabled = true
findtime = 600
maxretry = 5
bantime = 864000
filter = frps-ssh-ban
logpath = /frp/frp_0.57.0_linux_amd64/frps.log
port = 22,7000:7050

最后重启一下frp和fail2ban,成功封禁IP
下面是frps的日志
在这里插入图片描述
下面是fail2ban的日志,五次连接后直接封禁
在这里插入图片描述
使用sudo fail2ban-client status frps-ssh-ban可查看被封禁IP:
在这里插入图片描述

IP解禁与封禁

有时候我会不小心用多个软件同时连接某个端口,导致我的IP被封禁,这时可以通过这句话来解禁:sudo fail2ban-client unban xx.2xx.xx9.x8
接下来在/etc/fail2ban/jail.local[frps-ssh-ban]部分加入白名单:ignoreip = 127.0.0.1/8 ::1 xx.2xx.xx9.x8

如果要封禁某个IP,使用这个命令sudo fail2ban-client set frps-ssh-ban banip xx.2xx.xx9.x8

GitHub 加速计划 / fr / frp
83.05 K
13 K
下载
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
最近提交(Master分支:3 个月前 )
4383756f 17 天前
6ba849fc 25 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐