我工作的公司内部的服务器已经被破坏,为了避免将来发生事故,我想硬化组织中的CentOS机器,所以我一直在阅读关于保护你的CentOS机器的知识,而且我碰到过各种保护您的操作系统的方法。
我们不在域中使用SELinux或IPtables。
我打算做的一件事是通过使用TCP包装(编辑/etc/hosts.allow/和hosts.deny)来限制域内服务器对特定服务的访问。
从CentOS官方文档站点:
使用TCP包装器
TCP包装器可以提供一个快捷方便的方法来控制对链接到它们的应用程序的访问。 TCP Wrapper感知应用程序的示例是sshd和portmap。 下面是一个限制性的例子。 这个例子阻止了一切,但ssh。
回声“ALL:ALL”>> /etc/hosts.deny
echo“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
此外,NRPEconfiguration为在xinetd下工作,而不是手动守护进程
那么我的hosts.allow行会如何呢?
CentOS 5文档对xinetd *有很好的了解。 就像是
hosts.allow文件
xinetd: .example.com
hosts.deny中
xinetd: ALL
应允许example.com中的所有主机,并拒绝访问由xinetd控制的进程的所有其他内容。 顺序是重要的,文件被扫描的顺序允许,否认和第一场比赛胜利。
快速查看ldd /usr/bin/java的输出结果,显示java不是libwrap,因此不能直接使用tcpwrappers。 也许包装在Xinetd将工作。
你一定要考虑内部的防火墙和SELinux,因为这些将有助于在妥协之后限制横向移动。
* 以后的版本可能会有一个,但不太可能有太大的不同