我有一个局域网,里面有很多用户(客户端)。他们每个人都有一个私人 samba 共享文件夹。
如何防止某人(在同一网络内)暴力破解另一个帐户(以便他可以访问其他人的数据)?
谷歌搜索仅显示:“Samba 共享不应出现在公共互联网上”。但我在我的本地网络中。
我认为许多管理员都有这个“问题”(例如公司或大学管理员)
那么有没有什么办法可以让每分钟只允许3次登录尝试,或者在3次尝试后将客户端的IP列入黑名单呢?或者这个问题还有其他解决方案吗?我尝试了fail2ban,但日志文件中没有主机IP地址。
更多信息:
- 客户端大多是windows 7或以上版本
- Ubuntu 16.04 上的 Samba 当前版本
答案1
首先我得承认你做不到100%安全。
为了保护 LAN 中的 Samba,我认为唯一的选择是在 iptables 中设置一些规则来阻止任何人尝试错误密码 X 次。 - hitcount数量是你的选择,我建议2或3
这里你可以看到 iptables 中设置的一些简单规则,我在下面的命令中没有使用 IP 地址,但我建议你设置 IP 地址后跟它的 CIDR 号码,这样会变得更安全
$ iptables -A INPUT -i eth0 -p udp --dport 137 -m state --state NEW -m recent --set --name netbios-ns
$ iptables -A INPUT -i eth0 -p udp --dport 137 -m state --state NEW -m recent --update --seconds 20 --hitcount 2 --rttl --name netbios-ns -j DROP
$ iptables -A INPUT -i eth0 -p udp --dport 138 -m state --state NEW -m recent --set --name netbios-dgm
$ iptables -A INPUT -i eth0 -p udp --dport 138 -m state --state NEW -m recent --update --seconds 20 --hitcount 2 --rttl --name netbios-dgm -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 139 -m state --state NEW -m recent --set --name netbios-ssn
$ iptables -A INPUT -i eth0 -p tcp --dport 139 -m state --state NEW -m recent --update --seconds 20 --hitcount 2 --rttl --name netbios-ssn -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 445 -m state --state NEW -m recent --set --name microsoft-ds
$ iptables -A INPUT -i eth0 -p tcp --dport 445 -m state --state NEW -m recent --update --seconds 20 --hitcount 2 --rttl --name microsoft-ds -j DROP