使Linux服务器只能通过可信框访问

我在networking上有三个Linux的盒子(让他们是A,B和C)。

A是一个提供less量服务的服务器(ftp,samba,http)。 我希望这些服务只能由B机器访问。 有没有办法,也许使用SSH或VPN来实现这一目标? 你也可以提供这方面的链接?

编辑:从你的答案我明白我没有非常清楚authentication的重点,也简化了太多的问题。 基本上没有真正的networking。 只有A有一个“浮动”以太网插槽。 当我们的客户想要维护时,他使用正常的交叉电缆连接笔记本电脑(B)。 我只是想避免一个恶意的员工可以附加自己的笔记本电脑(C),并开始使用像ftp这样的服务。 是的,我可以使用密码服务,但我想在较低的水平(即在连接的基础上,而不是服务的基础上)使用保护。

编辑2:基本上我只想拥有正确证书的人能够与A进行联网。

你可以使用iptables来阻止一切,但SSH。

SSH服务(sshd)可以configuration为需要基于密码的login,而不允许基于密码的login。 您可以在服务器上为每个用户生成RSA密钥对,并在公用密钥安装到其〜user / .ssh / authorized_keys文件后为用户提供生成的私钥的副本。

然后,授权用户可以使用SSH隧道进行SAMBA和HTTP服务(并使用SFTP而不是FTP)

您可以通过重命名〜user / .ssh / authorized_keys来撤销/禁用访问

我并不完全确定,在服务器端如何控制隧道意外的其他用途。 但也许这不是一个问题 – 只要可信用户保护他们的私钥,没有不可信任的用户可以访问服务器。

有几种不同的方法来完成这个任务,取决于你想要投入多less工作,以及你想要的偏执狂水平。

  • 物理networking:你可以build立一个私人VLAN,B和A有连接,B的服务只能监听特定的networking。 这不一定是最灵活的,因为任何你想访问B服务的主机也必须连线到那个VLAN中。
  • TCP包装器 :比在iptables中做这件事要less得多,而且更容易排除故障。
  • IPtables:与物理networking结合使用会相当紧张,您可以按照Zypher的链接进行操作。

你最好打赌,最简单的方法是使用iptables。

让服务器B的IP为192.168.1.20
在服务器上创build一个链如:

iptables -A INPUT -m tcp -p tcp -s 192.168.1.20/32 --dport 80 -j ACCEPT iptables -A INPUT -m tcp -p tcp -s 192.168.1.20/32 --dport 21 -j ACCEPT iptables -A INPUT -m tcp -p tcp -s 192.168.1.20/32 --dport 389 -j ACCEPT ... iptables -A INPUT -m state --state RELATED,ESTABLISHED --j ACCEPT iptables -A INPUT -j DROP 

这基本上告诉防火墙允许来自特定端口上的一个IP的连接,以及相关的stream量。 对于ftp,你也必须安装ftp_contrak模块。

一些iptables文档,让你开始。


编辑:

在你给的例子中,我只是closures了端口,并没有启动它。 当您需要维护时,打开端口。 此外,如果您的员工有物理访问和恶意的意图,良好的networking连接是您最担心的问题。

你有没有想过使用VPN? 例如,在服务器上安装OpenVPN,并设置iptables,以便在此交叉维护接口上只允许OpenVPN端口。 如果你想给他们一个地址,而不是他们必须手动提出一个IP,也许DHCP。 然后允许FTP和其他协议只需要VPN上的networking地址。

每个授权的员工都有自己的钥匙,如果有员工离开,你可以撤销钥匙。 所以你甚至可以保护以前的员工。 或者,如果您不希望获得此级别的保护,则可以使用共享密钥而不是证书颁发机构。