Nagios是一种监控软件,能够帮助用户迅速了解主机和互联网上出现的问题,并且可以将其配置为在任何网络使用。在任何版本的Linux操作系统上安装Nagios服务器都是非常快速的过程,不过安全的安装则要花费一些功夫。本文将重点探讨如何提高Nagios的安全性问题,而不会讲解如何安装Nagios的问题,因为已经太多类似文章。
/ e L+ Z, H8 W+ h 你可能会疑惑为什么需要考虑Nagios服务器的安全问题?因为如果Nagios受到攻击的话,黑客将获取大量信息。下文的示例都是在Ubuntu环境进行的,不过这些示例能够帮助任何环境下的用户提高Nagios服务器的安全性,因为基本概念是一致的。
3 W& `2 S9 ]* o+ ?: @6 S8 P! C Web界面
1 E+ Y" ~3 X3 U, w 如果你按照互联网上提供的快速安装指南安装Nagios,很可能只是安装了web界面,因为Nagios使用Apache显示出很多其他安全选项。
! i4 n& q1 M) g3 U) e0 m. w 下面是Nagios web界面的apache配置的例子:' m7 h, S& n3 y) _$ Q
Options:ExecCGI
: n0 {; `1 a. \) X5 n$ A7 k AllowOverride:None' x% C' G1 s6 Y0 r8 ~+ J
Order allow:deny8 d5 i8 o- y) Z# y# |
Allow from:all
1 S" h6 {+ H. i! ~, z; i2 C AuthName:"Nagios Access"" B- J, l- C0 ]( j+ x
AuthType:Basic( s1 p8 j. K! S
AuthUserFile:/usr/local/nagios/etc/htpasswd.users
5 C/ m9 s$ h1 H! ~ Require:valid-user
4 | H: n0 Q& e9 s “Allow from”选项是用来明确只能向某些IP地址和/或网络提供访问权限的,上面例子中允许所有IP地址访问该web界面。其他安全选项是用于身份验证的,“AuthType”定义了使用哪种身份验证类型,只有两种类型可供选择Basic或者Digest,基本验证(Basic)会将用户密码和用户名作为纯文本提交,而Digest验证的密码则会作为MD5 digest提交,很明显后者更加安全。% O: H& w; _' o2 U
为了提高安全性我们需要进行如下修改:
, F8 i5 p2 O9 w+ ?0 H Options:ExecCGI
' R5 H& i/ R1 N6 G3 W AllowOverride:None
2 |* s# ^1 G! W$ g1 p Order allow:deny" z0 W$ Y1 [3 D& Z8 I, V
Allow from:192.168.4.+ m; D5 _6 m3 ]6 f# _( t. v, r1 a/ q- i
AuthName:"Nagios Access"
6 \7 [7 }: R9 V# ? AuthType:Digest
8 p; w0 g: n9 {- v) U* h+ w AuthDigestFile:/usr/local/nagios/etc/htpasswd.users$ \( O- M5 k3 \0 `0 g
Require:valid-user& q" A: ?1 q# w( `1 P6 I1 o# \
这个配置中,只有192.168.4.0网络的电脑可以访问该web界面,并且我们现在使用Digest验证取代了不安全的基本验证方法。& z% Q/ F! t1 e* x/ s
现在我们需要添加允许访问web网络的用户以及密码,使用下列命令来为digest验证添加新用户:$ Q8 N" f" A+ X4 n' _% l% R; ^
# htdigest -c /usr/local/nagios/etc/htpasswd.users realm username
& @: Y# \3 K; |( b Digest验证确实比Basic验证更加安全,不过保护用户名和密码安全最好的方法还是使用SSL。6 Q0 N1 S0 e5 F" k
进行任何配置更改后都必须重新启动apache,命令如下:.
8 I) r+ a# u2 b- A/ C # /etc/init.d/apache2 restart
3 M( h) y1 v7 N/ n 最佳做法$ H! X! f) A9 k( j8 M
本节将列举出一些安装Nagios服务器的最佳安全做法,具体如下:' k, T% ~* N1 U( E; b
· 不要以root身份运行Nagios。需要有一个名为nagios的普通用户,如果Nagios作为root运行,那么当Nagios受到攻击时,攻击者就能够对用户系统为所欲为了。.
( {# ]. F- X8 W2 b1 u0 A, c+ l · 锁定Check Result Directory。 确保只有nagios用户拥有对check result directory的读取/写入权限,否则攻击者将可能发送伪造的主机和服务检查结果,该目录通常位于这个位置:/usr/local/nagios/var/spool/checkresults。
L4 P; a9 D, A9 K, X$ [ · 在Command Definitions中使用完整路径。当定义命令时,请明确完整的路径,而不是与正在执行的任何脚本或者二进制相关的路径。
% k9 o1 W, R% c, `! u0 R% ] · 保护远程代理安全。远程代理包括NRPE,、NSClient以及SNMP等,下文中我们将介绍保护NRPE远程代理的步骤。 |