昨晚,我正在关闭我的服务器,我看到一条消息询问我是否要关闭“pts/0”会话。奇怪,我想。所以我重新登录,finger
然后看到有人从远程 IP 地址(一个意大利地址)登录,他们发出了很多scanssh
命令。他们还更改了他们登录帐户的密码(这是我孩子的帐户,密码很容易猜到 - 他只有 6 岁!)。
好的,所以我打开了一些端口——完全是我的错。我很幸运,该帐户是有限的。W2ksp3.exe
在帐户的主文件夹中还有一个名为(或类似的文件)的文件。所以我猜有人在使用我的服务器来寻找受感染的 Windows 电脑。
所以,我的网络看起来像这样:
互联网 - eth0 - 服务器 - eth1 - 局域网
受到攻击的是服务器。该服务器dnsmasq
用于 DNS 查找和用于 LAN 的 DHCP 服务器。
这让我想到了两个问题:
如何配置防火墙 (
iptables
?) 以阻止eth0
除 http、传出 ftp、电子邮件和访问 Internet 所需的任何其他内容之外的所有内容?我如何停止登录
eth0
但允许他们通过eth1
到目前为止,答案很好,但我还要补充一点,在您的服务器和互联网的其余部分之间放置一个路由器可能不是一个坏主意,除非您真的有令人信服的理由不这样做。如果没有别的,它就像你的房子/公寓/住所/居住地的门——它阻止人们在里面闲逛和四处张望,即使他们什么都看不到。
要在某些接口上禁用 SSH,只需按照以下步骤操作:
eth1
首先,在使用ifconfig
或其他方法上找到服务器的IP地址。例如,这可能是192.168.0.12
.打开您的
/etc/ssh/sshd_config
文件 (sudo nano /etc/ssh/sshd_config
) 并添加编辑以下行:(意思是“监听所有接口”)这个:
(这意味着“只监听来自该 IP 所属接口的连接”)。
然后重启SSH服务器:
现在它应该只接受来自该接口的连接。
只需关闭向公众开放的端口即可。通常它可以由您使用的路由器控制。在 ssh 的情况下,它是端口 22。
对于您的第一个问题,您需要设置防火墙。如果您的服务器完全暴露在互联网上,强烈建议您这样做。您可能想查看Ubuntu Wiki。如果您有路由器,它可能会为您执行此操作。
对于第二部分,您可能希望将 sshd 配置为仅侦听本地地址。这当然是假设你的 eth1 有一个静态 IP。在你的
/etc/ssh/sshd_config
修改ListenAddress
行。它应该看起来像ListenAddress 10.10.0.1:22
替换静态 eth1 ip 的位置。为什么你 6 岁的孩子需要 shell 访问你的服务器?
我支持在您的服务器和 Internet 之间放置路由器的建议。这是建立第一道防线的简单方法。
如果您想从外部启用 ssh,最好禁用密码身份验证并仅保留公钥身份验证。这样,您就不会受到密码猜测攻击:ssh 只能用于您故意创建
authorized_keys
文件的帐户,并且只有在攻击者以某种方式获得您的私钥的情况下。(您仍然容易受到 OpenSSH 中的远程漏洞的影响,但这些漏洞极为罕见,通常会很快修补。)确保您在 中具有以下设置
/etc/ssh/sshd_config
: