答案1
必須的:
- 使用专家模式安装系统,仅安装我需要的软件包
- 手写防火墙,对 iptables'input 的默认策略为:drop,允许访问 SSH、HTTP 或给定服务器正在运行的任何其他内容
- 失败禁止对于 SSH [ 有时也用于 FTP / HTTP / 其他 - 取决于上下文 ]
- 禁用 root 登录,强制使用普通用户和 sudo
- 自定义内核 [ 只是老习惯 ]
- 预定系统升级
根据偏执程度另外:
- 删除输出策略,但允许几个目的地/端口除外
integrit
例如,检查文件系统的某些部分是否未被修改(校验和保存在机器外部)。绊线- 至少使用 nmap 从外部对系统进行定期扫描
- 自动日志检查未知模式[但这主要是为了检测硬件故障或一些轻微崩溃]
- 预定运行chkroot工具
- 不可变属性,
/etc/passwd
因此添加新用户稍微困难一些 - /tmp 使用 noexec 挂载
- 端口敲击器或其他非标准方式打开 SSH 端口 [例如,访问 Web 服务器上的“秘密”网页允许从查看该页面的 IP 地址在有限的时间内传入 SSH 连接。如果您连接成功,
-m state --satete ESTABLISHED
只要您使用单个 SSH 会话,就会允许数据包流动]
我自己不会做但很有意义的事情:
- grsecurity对于内核
- 远程系统日志,因此当系统受到威胁时日志不会被覆盖
- 对任何 SSH 登录发出警报
- 配置亨特并将其设置为不时运行
答案2
仅就您的机器的防火墙提出一点说明...
- 使用白名单,而不是黑名单 - 即阻止所有内容,并且只允许您需要的内容,拒绝其他所有内容。
- 不要使用 GUI/ncurses 或其他任何试图为您编写防火墙的软件。如果您这样做,您将允许软件为您做出假设 - 您不需要也不应该冒这个风险。自己配置它,如果您不确定,请禁用它 - 您很快就会发现它是否是必需的。如果它已经是一个正在运行的系统,并且您不能中断流量(通过意外阻止它),那么运行 tcpdump(转储到文件)并获取样本 - 稍后研究它们,然后找出哪些是有效的,哪些是无效的。
- 我个人认为在非标准端口上运行服务没有任何意义,如今的工具并不愚蠢,不会因为某些东西在端口 22 上运行就认为它一定是 ssh,而不是其他 - 例如 和 的选项
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% 安全 - 这根本不可能 - 所以目标是使其尽可能安全 - 如果破坏你的系统需要付出太大的努力,那就足够了,大多数蹩脚的脚本小子都会转向下一个系统。
iptables
是任何 Linux 系统的必经之路 - 但需要自行配置。
永远不要使用任何不基于开放标准的“安全软件”——它们注定会写得不好,会被黑客攻击(不是“是否”的问题,而是“何时”的问题)。开源和开放协议向公众开放,并逐渐成为成熟可靠的产品;闭源软件主要依赖于作者对产品有多好/多安全的自信他们认为是的 - 即少数眼睛与满地球的眼睛。
希望有帮助:)
答案3
- 禁用 root 登录
- 禁用密码登录(仅允许通过公钥登录)
- 更改 SSH 端口
使用拒绝主机(或类似方法)
编写自己的 iptbles 脚本(这样你就可以精确控制允许的内容,并可以放弃其他所有内容)
强制使用 SSL/TLS 安全通信,并确保拥有有效、未过期且已签名的证书
- 为所有外部服务开启严格的证书验证(例如,在使用另一台机器上的 LDAP 服务器对用户进行身份验证时)
答案4
作为一般的起点,我遵循互联网安全中心,是安全最佳实践的综合汇编。看起来他们的 Debian 基准已经有一段时间没有更新了,但步骤的一般概述如下:
- 应用最新的操作系统补丁/软件包
- 启用系统/内核/进程记帐。
- 启用 MAC(例如 SELinux 或 AppArmor)。
- 启用基于主机的防火墙(iptables)。
- 验证 APT sources.list(密钥正确,来源可信)。
- 最小化网络服务,禁用所有不需要的服务,并使用防火墙。
- 使用 TCPWrappers 进一步限制系统访问。
- 仅使用加密的网络协议,禁用未加密的服务(telnet、ftp 等)。
- 仅配置对 SSH 的远程访问。
- 禁用用户登录密码并要求基于密钥的身份验证。
- 禁用文件系统共享(NFS、SMB)。
- 启用远程/集中系统日志记录(并定期检查日志!)。
- 设置 BIOS/固件级别密码。
- 设置引导加载程序密码。
- 配置系统备份,制定灾难恢复计划并测试备份是否有效,以及人员是否了解灾难恢复程序!
所有这些各种设置都有许多资源,包括在 CISecurity 基准中在系统上实现的特定命令和配置文件。