a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 108|回复: 1

[红旗认证] 如何提升Nagios服务器安全?

[复制链接]
发表于 2012-8-4 12:16:06 | 显示全部楼层 |阅读模式
  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远程代理的步骤。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:16:07 | 显示全部楼层

如何提升Nagios服务器安全?

  保护远程代理(remote agent)7 y+ F" ]0 H/ m% \4 X# f
  本节我们将研究如何保障NRPE安全的问题。该远程代理用于在远程主机上执行检查程序(检查负载或者磁盘使用等),我们不会希望任何程序或者用户能够在远程机器上执行命令,因此保障NRPE的安全性是非常重要的。
6 r; A" g( ^/ j$ q' s) U  由于NRPE附带有对TCP wrappers的支持,我们可以定义哪些主机允许访问NRPE:
! }! p; T$ z! B+ K1 e; i  /etc/hosts.allow
. k- ^& |3 }. l+ `* _  nrpe:192.168.1.919 [! J' |7 _" u" i8 R0 u
  以上示例中,只有192.168.1.91可以在该主机上使用这个远程代理,你可以将你的Nagios客户端IP地址取代192.168.1.91,请注意应该同时用于你的Nagios服务器和客户端。
& }# d* U# S+ G8 l$ n9 L- l" b- s  d  NRPE绝不能作为root或者任何其他superuser来运行,它只能作为nagios用户组中的nagios用户来运行,可以在/etc/nagios/nrpe.cfg位置查看NRPE是否作为nagios运行:
9 q8 q5 l2 G3 e; G% I0 {6 R  part of /etc/nagios/nrpe.cfg
: Z/ B5 A, R* {8 A+ u% D" l$ e  nrpe_user=nagios
4 [5 I3 J* l, ]  nrpe_group=nagios" i+ O3 }! F6 q! o- N, x1 s
  NRPE的另一部分也可能成为安全漏洞,即允许command arguments。我们当然不希望看到攻击者通过发送恶意arguments攻击我们的系统,确实有时候需要允许Nagios发送command arguments,但如果大部分时候不需要启用此功能,那么一定要禁用。- t% Z8 P# H8 ]2 B
  禁用此功能需要编辑/etc/nagios/nrpe.cfg 并确保你执行下列命令:/ ?9 V7 Q1 f2 w. G4 p) r6 S
  dont_blame_nrpe=0
* D  O* P) G! t/ x4 O: ?+ G7 x. `  用户进行任何配置更改后都必须重新启动nrpe.cfg,想要了解更多关于NRPE安全的信息请阅读数据包源文件中的SECURITY文件。
) u! J$ t. c: L+ l* t  保护通信渠道安全& _" Z; q" y. z7 U) `
  在网络进行通信时,必然要涉及到通信安全问题,这也正是SSL的用武之地。) S. K, ^/ }  r% _, l$ f
  NRPE可以允许你启用SSL功能,但是数据包必须已经配置为–enable-ssl option(启用SSL选项),如果NRPE配置为使用SSL功能,请注意客户端和服务器都必须同时启用。.
: L9 z# [7 k/ ?- E# _! v/ v  下一步我们还需要配置SSL以提高其安全性,这样才不至于发送简单的纯文本web界面密码:
; U3 w8 g1 D" V/ }5 n/ W( S  # openssl genrsa -des3 -out server.3des-key 1024/ _7 \' K) M; M6 q  C4 I
  # openssl rsa -in server.3des-key -out server.key( \( h% ^% e0 O" n' Q
  # openssl req -new -key server.key -x509 -out server.crt -days 365
" L, a; a! |5 L/ e  # chmod 600 server.key
3 g) Q. N$ J# K4 A# n, E) r  # rm server.3des-key
( G8 c+ i( O; L$ a3 E" P, I/ o$ K  # mv server.crt /etc/ssl/
& |0 g4 B) N) }8 W9 h  j  # mv server.key /etc/ssl/private/! b2 c% e, Z1 T# R2 Z$ |, }
  现在我们已经生成了证书,需要告诉Apache来使用这些证书。1 l' O; X7 o" F( N. h; @# `; d* {
  在Apache配置中,需要添加SSLRequireSSL选项,例如:
( |/ W5 V- A) c4 t  SSLRequireSSL
; `% w2 t$ g8 t3 I7 x; e  Options:ExecCGI8 o0 g# D- F3 u! ?  [2 S
  AllowOverride:None. I2 O. `0 W8 q
  Order allow:deny0 w* h4 q8 _  Z, m. [2 b4 I
  Allow from:192.168.4.' z& j' A5 d: B& W! y3 S
  AuthName:"Nagios Access"( b7 `% X6 a6 l* ^% J* W
  AuthType:Digest% c, L- B+ i" b: |% o
  AuthDigestFile:/usr/local/nagios/etc/htpasswd.users& ~3 ]3 Z. J; A1 b0 @
  Require:valid-user9 v) k3 q0 e" M0 p! i* b( l
  请记住重新启动Apache:
9 F* B$ f: y: z1 X  # /etc/init.d/apache2 restart
- ]. g8 ?. \/ x# @" s7 f: U4 N  现在Nagios服务器已经很安全了,下一步就是即使进行安全更新。
+ H' H' w& N. o+ O! J: r5 V; e' ?! r# {  与了解更多Nagios相关资料,可以访问Nagios Documentation
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-3 07:51 , Processed in 0.226723 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表