January 22, 2025
一般使用该工具都是应对 ssh 的暴力破解,虽然关闭密码访问、使用密钥可以让暴力破解没啥意义,但是日志中出现洪水一般的暴力登录尝试还是令人心烦,故所有公网的机器都建议安装该工具,其基本原理是使用正则表达式分析日志,提取访问失败的IP,制定一系列规则,满足规则条件则通过 [[iptables]] 封禁该IP,一定时间后解封。
jail.conf
和 jail.local
是 Fail2Ban 的两个配置文件,分别用于默认配置和用户自定义配置。一般建议不要直接修改 jail.conf
,在 jail.local
中,只需定义你想修改的设置,未定义的部分会自动继承 jail.conf
的值。如果需要为某些服务创建专用规则,可以将它们分拆到单独的 .local
文件中,例如 /etc/fail2ban/jail.d/sshd.local
。
下面是一个保护 ssh 免被暴力破解的例子( /etc/fail2ban/jail.local
):
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
ignoreip = 127.0.0.1/8
如何查看 fail2ban 的日志呢? sudo tail -f /var/log/fail2ban.log
如何查看 fail2ban 状态?
sudo fail2ban-client status
sudo fail2ban-client status sshd
如何检查日志匹配情况:
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
确保规则启用
sudo fail2ban-client reload
运行以下命令测试正则表达式是否匹配日志:
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
January 8, 2025
去年11月份用了三年的腾讯云服务器到期后,又趁着优惠买了两年的腾讯云,依旧是选择上海的服务器,但是带宽从8M下降到4M,考虑到我只用来部署 wireguard,预想中应该不会出什么问题,事实却教我做人,为此浪费了不少时间。
部署 wireguard 当然可以直接在 host 层面,但是手动管理配置文件比较繁琐,尤其在设备数量比较多的情况下,所以好几年前就实际在用 wg-easy 这个项目部署,有个前端页面进行在线设备的展示,以及新设备配置文件的自动生成,使用体验非常好,一句 docker compose up
即可部署完毕。
问题从换了部署服务器后出现了,配置文件没有更改的情况下,客户端到服务端的 ping 值异常的高,正常情况下应该是在 60 ms 左右 (北京-上海),但是在10分钟到数小时不等的时间后,这个延时会上升到 300+ ms,且此时 SSH 登录会卡死在下面这一步。
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
网络知识有限的我,也知道这个时候网络是通的,ssh 认证阶段出了问题。一番搜索找到 reddit 这个帖子,完全一样的问题,原因在于配置文件中 MTU 参数不对,MTU,全称 Maximum Transmission Unit,即最大传输单元,MTU 就是网络中能够传输的最大数据包大小,以字节为单位。MTU 的作用:
- 限制数据包大小: MTU 就像一个“门框”,只有小于等于 MTU 的数据包才能通过。
- 防止数据包过大: 过大的数据包可能会导致网络拥塞、丢包等问题。
- 影响网络性能: MTU 的大小会直接影响网络传输效率。MTU 设置过小,会导致数据包分片过多,增加网络开销;MTU 设置过大,又可能导致数据包无法通过某些网络设备。
华为关于 MTU 的解释,链接
按照帖子的操作测试获得本地网络的 MTU,注意 macOS 的 ping 命令和 Linux 存在差异:macOS 的 -D 标志等同于 Linux 的 -M do,都是设置 “Don’t Fragment” 位。macOS 的 -s 参数不包含 IP 和 ICMP 头部的 28 字节,所以如果要匹配 Linux 的大小,需要减去 28。
...
January 25, 2019
内网穿透,又称 NAT 穿透,主要目的是为了访问位于 NAT 后的计算机。我的使用场景是访问位于实验室的机器,实验室网络环境为中国联通的 4G,这种情况下端口映射之类的方法是无能为力的,下面主要回顾一下自己用过的几种内网穿透方法。
SSH 端口转发
#
花样繁多,暂时没有搞清楚,待补充。
Zerotier
#
https://www.zerotier.com/
不需要公网服务器。
商业服务,免费用户有一定限制,但是可用。有跨平台的客户端,非常适合懒得自己动手的人。但是速度一般。
frp
#
https://github.com/fatedier/frp
需要公网服务器。
配置简单,样例丰富,稳定。个人使用体验非常不错,适合两个节点之间的连接。
WireGuard
#
https://www.wireguard.com/
需要公网服务器
开源,现代。组建好个人虚拟局域子网后,在此子网内的设备可以相互进行无感的连接,非常方便。
tinc
#
tailscale
#
基于 wireguard 的 mesh vpn 服务
magic dns
nebula
#
links
#