我所在公司的一个内部服务器已被入侵,我想加强组织中的 CentOS 机器,以避免将来发生任何事故,因此我一直在阅读有关保护 CentOS 机器的信息,并且我遇到了各种保护操作系统的方法。
我们不在域内使用 SELinux 或 IPtables。
我计划做的一件事是使用 TCP 包装器(编辑 /etc/hosts.allow/ 和 hosts.deny)将域内服务器的访问限制为特定服务。
从CentOS 官方文档地点:
使用 TCP 包装器
TCP 包装器可以提供一种快速简便的方法来控制与其链接的应用程序的访问。TCP 包装器感知应用程序的示例包括 sshd 和 portmap。下面是一个限制性示例。此示例阻止除 ssh 之外的所有内容。
回显“ALL:ALL”>> /etc/hosts.deny
回显“sshd:ALL”>> /etc/hosts.allow
我的问题是:
我需要服务器能够处理端口上的请求:
1099 (Java RMI)
5666 (NRPE)
22 (SSH)
Java RMI 是手动启动的,而不是由守护进程启动的,并且在以下位置正确指定/etc/services
:
[root@srv4 scripts]# grep 1099 /etc/services
rmiregistry 1099/tcp # RMI Registry
此外,NRPE 配置为在 xinetd 下工作,而不是手动守护进程
那么我的hosts.allow
线条看起来会是什么样子呢?
答案1
CentOS 5 文档对以下内容进行了很好的介绍xinetd*。 就像是
主机允许
xinetd: .example.com
主机拒绝
xinetd: ALL
应允许 example.com 中的所有主机并拒绝 xinetd 控制的进程对其他所有主机的访问。顺序很重要,文件按允许、拒绝的顺序扫描,第一个匹配的获胜。
快速查看一下输出,ldd /usr/bin/java
就会发现 java 不支持 libwrap,因此无法直接使用 tcpwrappers。也许将其包装在 xinetd 中会有效。
您绝对应该考虑内部防火墙和 SELinux,因为它们将有助于限制受到攻击后的横向移动。
*后续版本可能也会有,但差别不大