我有一个运行多个服务的debian-machine,例如带有http和https的Apache,jabber和一个用于pipe理的openssh服务器。 ssh服务器没有在端口22上运行。它的端口类似于端口62111.我使用fail2ban来保护openssh。 因此,无论何时攻击者试图连接到端口62111上的ssh,在端口62111上被fail2ban禁止了两天之前,他有两次尝试。
我想在端口22上启动一个(假的)SSH服务器,每当有人试图连接到这个端口时,他将被iptables永久禁止在所有端口上,或者至less在我放弃iptables规则之前。 任何合法的SSH连接都不会尝试ssh到端口22,因为每个pipe理员都知道正确的SSH端口。
这个想法是攻击者会先尝试攻击22号端口。 所以他甚至没有机会尝试SSH到港口62111.我不在乎那些cookies看到我的网站。 所以在任何端口上(包括80和443)都可以阻止它们。
任何build议如何做到这一点?
我会试着build议你另一个解决偏执的办法:)
http://www.portknocking.org/view/
当然只有ssh密钥authentication。
没有好主意(恕我直言)。
连接到端口22并不意味着有人试图插入到您的服务器。
为了保护您的服务器免受黑客/黑客的攻击,请遵循一些简单的规则(例如)。
我想在其他端口上运行sshd,仍然使用相同的fail2ban等 – 我发现了一个非常好的,类似的手册: http : //www.kudos.be/multiple_sshd
将在这里重新发布和改变你的东西:
目标是在两个不同的端口上运行相同的守护进程,并在一个实例上禁用任何types的身份validation。
复制configuration:
cd / etc / ssh / sshd_config / etc / ssh / sshd_config-fake
根据这个改变configuration:
更改Port , SyslogFacility , *Authenticationstring(禁用伪造), PidFile
创build符号链接:ln -s / usr / sbin / sshd / usr / sbin / sshd-fake
创buildinit脚本: cp /etc/init.d/sshd /etc/init.d/sshd-fake并相应地修改sshd-fake文件的内容。
更改/ etc / sysconfig / sshd-fake: OPTIONS="-f /etc/ssh/sshd_config-fake"
添加服务chkconfig --add sshd-fake
创buildpamconfiguration: cp /etc/pam.d/sshd /etc/pam.d/sshd-fake
编辑/etc/pam.d/sshd-fake并禁止一切,或者使用不同的方法,如允许用户从文件列出: http : //linux.die.net/man/8/pam_listfile
重启服务: service sshd restart;service sshd-fake restart;chkconfig sshd-fake on
相应地configurationfail2ban
这可能不是最优雅的,但它应该是快速和function性的:
iptables -I INPUT --m recent --name blocked --rcheck -j DROP iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name blocked --set
说明:
在input链中插入firwall规则(在顶部),检查数据包的源地址是否当前在“阻止”列表中,如果是,则将其丢弃。
在input链中插入另一个防火墙规则(在我们刚刚插入的规则之上),该规则将任何连接尝试的源地址添加到端口22到“阻止”列表。
我没有看到需要真正运行一个(假的)服务器,或任何端口22上的任何监听器。
编辑:看看我的答案,我想补充说,你可能应该超时你的阻止列表比
“永远或至less直到我放弃iptables规则”
因为您将从dynamicIP地址获得大量的点击,这些点击后将在几小时甚至几分钟内重新分配给合法用户。
请参阅: http : //www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html#ss3.16