我正在安装直接连接到Internet的Debian服务器。 显然我想尽可能保证安全。 我希望你们/女士join你的想法来保护它,以及你使用什么程序。
我希望这个问题的一部分能够涵盖你作为防火墙使用什么? 只是手动configurationiptables或你使用某种软件来帮助你? 什么是最好的方法? 阻止一切,只允许需要什么? 有没有可能为这个主题的初学者提供很好的教程?
你改变你的SSH端口? 你使用类似Fail2Ban的软件来防止暴力攻击吗?
强制性:
另外根据偏执的程度:
/etc/passwd不可变属性,因此添加新用户稍微困难一些 -m state --satete ESTABLISHED只要您使用单个SSH会话, -m state --satete ESTABLISHED就会允许数据包stream动] 事情我不做自己,但有道理:
只是注意防火墙的机器…
amap和nmap的-A选项。 话虽如此,您可以(也可能应该担心)修改您的服务,以躲避自己的眼睛,例如,以下将让攻击者知道您正在运行的OpenSSH的确切版本,然后他们可以寻找漏洞利用对于那个确切的版本。 如果你隐藏这些东西,你会让它变得更难。
[root @ ud-olis-1 uhtbin]#telnet localhost 22
尝试127.0.0.1 ...
连接到localhost.localdomain(127.0.0.1)。
转义字符是'^]'。
SSH-2.0-OpenSSH_3.9p1
底线是,你将永远不会成功地使任何事情100%安全 – 这是不可能的 – 所以目标是使尽可能安全 – 如果只是太多的努力,打破你的系统,这是够好的,最lamer脚本小子将移动到下一个系统。
iptables是任何Linux系统的方式 – 但是要自己configuration它。 永远不要使用任何不以开放标准为基础的“安全软件”,它们注定是写得不好,会被黑客攻击(不是“如果”,而是“什么时候”)。 开放源代码和开放协议是公开审查,并趋于成为一个成熟和可靠的产品; 封闭源代码软件主要依靠作者对他们认为是多么伟大/安全的产品的自信心 – 即less数眼睛与眼睛充满地球。
希望帮助:)
使用denyhosts(或类似的)
编写你自己的iptbles脚本(这样你就可以准确地控制允许的内容,并可以删除其他所有内容)
强制使用SSL / TLS安全通信,并确保拥有有效的未过期签名证书
作为一个总的起点,我遵循安全最佳实践的综合汇编的互联网安全中心的基准/指导。 看起来他们的Debian基准testing版在一段时间内没有更新,但是对这些步骤的总体概述是:
所有这些不同的设置都有很多资源,包括在CISecurity基准testing中在系统上实现的特定命令和configuration文件。
我build议不要将机器直接连接到互联网上。 在机器和互联网之间放置一些防火墙。 这使您可以进行安全和networking监控,而不会增加服务器的负担。 就我个人而言,我发现networking和function分段经常会简化networking故障排除,但有时,额外的复杂性也会使分析变得更加困难。
最安全,但最烦人的pipe理,防火墙的政策是拒绝所有,明确地只允许你必须允许的stream量。 这是烦人的,因为人们经常需要更新防火墙策略,因为networking需要改变。
我也build议在服务器上使用某种接口防火墙 – 深度防御是关键。 使用非标准端口进行pipe理相关的服务不会造成伤害。 fail2ban很好。 在Serverfault上寻找关于安全应用程序的更具体的问题来寻找更多的想法。
安全就像对两个徒步旅行者和熊的笑话 – 而一个人永远不可能达到完美的安全性,这是比其他人更难的目标。
有些人指出了Debian安全手册 。 除了军事要求,这应该是完全足够的。
许多人认为,可笑的偏执是冷静或专业或东西。 事实并非如此 ,这只是令其他pipe理员感到烦恼 ,而且对于你的用户来说也是完全压抑的。 大多数你会看到推荐的东西只是假的繁忙工作,让偏执pipe理员觉得有用,但实际上并没有帮助,因为真正的安全漏洞很可能是由系统更新不足和/或内部来源造成的。
也就是说,我确实认为不要信任本地networking上的任何东西,而不仅仅是来自互联网的东西。 因此,我将所有configuration都设置为需要在本地networking上进行身份validation。 我使用IPsec对每台计算机之间的所有stream量进行encryption和身份validation。
我正在为所有服务器转换为全盘encryption。
我只安装我使用的服务。 我没有防火墙; 我configuration服务,我必须要求身份validation或限制(通过程序自己的configuration或TCP包装)到某些IP。 我唯一需要阻止使用iptables的是memcached ,因为它没有configuration文件,也没有使用TCP-wrappers。
我使用随机生成的良好密码为我的帐户,并信任我的SSH服务器(和所有其他服务),以保持那些不知道密码的人。 fail2ban仅适用于空间有限的日志文件,IMO。 (你应该有足够的密码才能够信任它们。)
请浏览www.debian.org/doc/manuals/securing-debian-howto/
我个人更改ssh端口并使用fail2ban + denyhosts。 我阻止了一切不需要的东西。 你阻止越多,你不必担心。