![尽管定义了接口,但 Ubuntu samba 共享文件夹仍可从外部访问](https://linux22.com/image/762546/%E5%B0%BD%E7%AE%A1%E5%AE%9A%E4%B9%89%E4%BA%86%E6%8E%A5%E5%8F%A3%EF%BC%8C%E4%BD%86%20Ubuntu%20samba%20%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9%E4%BB%8D%E5%8F%AF%E4%BB%8E%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE.png)
我的问题是,尽管我定义了接口并仅绑定了接口,但我的 samba 共享文件夹仍然可以从本地网络外部访问。我想确保共享文件夹只能在我的本地网络中访问。配置更改后,我重新启动服务sudo service smbd restart
。我将不胜感激任何帮助。
我的设置(smb.conf)的几行:
[global]
interfaces = 192.168.254.0/24
bind interfaces only = yes
[...]
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = myname
security = user
[shared]
Comment = Samba Shared Directory
path = /home/myuser/shared
writable = yes
guest ok = yes
read only = no
force user = nobody
create mask = 0775
directory mask = 0775
force create mode = 0775
force directory mode = 0775
答案1
看起来您正在将所有流量从外部路由器 IP 转发到应该受到防火墙策略保护的 Linux 主机。
检查您的路由器是否有可能只转发来自外部(ssh)的所需流量并拒绝所有其他流量。
如果路由器无法完成这项工作,请尝试在 Linux 主机上使用 iptables。下面的 iptables 命令默认拒绝所有传入流量,只允许任何人使用 ssh,只允许来自本地网络的 cifs。最后记录所有将被丢弃的流量以进行故障排除。
请先检查并仅在您具有本地访问权限时实施它们,以确保您没有将自己锁定在外。
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 192.168.254.0/24 -m state --state NEW -j ACCEPT
iptables -I INPUT ! -s 192.168.254.0/24 -j LOG --log-level 4 --log-prefix "traffic dropped: "
答案2
听起来您已将 Linux 计算机设置为 LAN 上的 DMZ 计算机。这意味着发送到路由器 IP 地址的所有流量都将转发到该计算机。
这意味着端口 139 上的所有流量都将被转发到您的 Linux 机器,并且由于它来自路由器,因此它将到达绑定到 192.168.254.0/24 的接口上的 Linux 机器。
您可以添加hosts allow 192.168.254.0/24
到您的全局部分
如果你确实想确保阻止这种访问,你可以添加一个 iptables 规则,例如:
iptables -A INPUT ! -s 192.168.254.0/24 --dport 139 -J DROP