如何远程提升Linux服务器安全技术应用

2009-08-05    来源:IT专家网    
Liunux的安全特性使其成为首选的服务器系统平台,但要最大程度地提升其安全还需要我们进行精心设置。本文将从本地授权、远程控制两个方面谈谈如何加强Linux服务器的安全。 1.限制

      Liunux的安全特性使其成为首选的服务器系统平台,但要最大程度地提升其安全还需要我们进行精心设置。本文将从本地授权、远程控制两个方面谈谈如何加强Linux服务器的安全。

  1.限制Root权限

  所谓Linux服务器的本地授权主要是指对Root的授权。因为Root作为系统最高权限,任何基于Root的操作都会面临着风险。因此,建议大家尽量不要用Root登录服务器,只在进行必须使用Root进行服务器管理和维护时才使用su命令切换到Root实施操作,一旦操作完毕应立刻退出。在实际操作中,我们可以从加强密码策略、SU限制和Root分权三个方面来实施。

  (1).加强密码策略

  密码是最重要的系统安全凭据,虽然Linunx的密码策略是非常严格,但在实际使用中,我们常常需要根据特殊的安全需求创建更加严格的密码策略。和大家分享一下我们的Linux服务器的密码策略实现方法。

  密码策略:

  拒绝用户使用过短的密码,密码必须由8个及以上的字符组成。

  禁止使用已经被使用过的或者与以往用过的密码相似的新密码。

  禁止新密码所用的字符与以前用过的相同,只是改变了字符的大小写,例如以前的密码是LinUx,禁止使用iiNuX这类的新密码。

  拒绝使用只改变了旧密码字符之间顺序的新密码,例如以前的密码是linuxfans,

  新密码是fanslinux。

  规定只允许重复输入密码三次。

  强迫用户在新密码中综合使用大小写字母、特殊字符(如@、#、%等)以及阿拉伯数字,并且规定新密码中至少有4个数字、2个大写字母、2个特殊字符和任意数量的字母。

  实现方法:

  对于如上所述的密码策略,我们使用PAM来实现。PAM即可插入式认证模块(Pluggabte Authentication Modules,简称PAM),它是Linux系统中独立于程序之外的一种功能强大的验证方式。

  我们首先要做的就是用vi编辑器打开/etc/pam.d/password文件,然后在其中添加一条引用Pam_cracklib.SO验证模块的规则:“Password reqUired pam_cracklib.SO retry=3 minlen=8 dcredit=-4 ucredit=-2 ocredit=-2 lcredit=0”为了确保传统的验证方式在验证过程中不会再次提示输入密码,而直接强制使用Pam_cracklib来验证,还必须在其后再加上一条规则:“Passw ord required pam_unix.SO use_authtok”在Pam_unix验证模块后加上Use_authtok,就可以防止传统验证方式提示输入密码,确保只用Pam_cracklib模块来验证密码。(图1)

  提升Linux服务器安全

      另外,为了增加Linux系统的安全性,先在这些PAM配置文件的开头使用Pam_deny模块禁止对它的所有操作,用Pam_warn给管理员发送相应警报信息,然后再根据需要在其后依次添加验证规则项,是一个不错的习惯。

  上述例子只是个特例,可能不适合你们的密码策略。不过,只要大家掌握了方法就可以用类似的方法首先制定密码策略,然后在/etc/pam.d/password配置文件中添加相应的规则来部署密码策略。
 

      (2).su限制

  我们知道在Linux系统中有个su命令,利用该命令只要知道Root用户的密码,默认情况下任何人都可以切换到Root用户中进行操作。例如,一个属于users组的普通用户test可以通过su命令切换到Root用户中。

  因此,我们需要对SU进行限制,只允许特定组的用户才能SU到Root用户。使用的方法还是通过PAM认证模块来实现。我们先前控制ssh服务,是使用/etc/pam.d/sshd文件,当然控制用户使用su命令就需要对/etc/pam.d/su文件进行修改。直接打开该文件进行修改,或者在终端命令窗口输入命令vi /etc/pam.d/su,然后去掉其中#auth required pam_wheel.so use_uid的注释即可。(图2)

提升Linux服务器安全

      其含义是,使用pam_wheel.so文件来检查当前用户的UID,如果不是whell组的用户就直接拒绝。现在我们通过test用户登录系统,然后su到Root可以看到被拒绝。当然,要使其可以su到Root需要将其加入了wheel组才可以。

     (3).Root分权

  由于Root具有最高的权限,用root用户来管理系统会给系统带来一定的安全隐患。比如,一条无意识输入的破坏性的命令有可能会给系统带来毁灭性的打击。另外,如果系统被植入了嗅探工具,如果用root登录会造成root口令被窃取。因此我们要消减Root的权限,可以让其它用户来完成Root的一些工作,避免过多地使用Root用户。

  如何为Root分权,要根据服务器的性质来确定。比如一个Linux平台的apache服务器,作为管理员经常使用的命令应该是诸如/usr/local/apache2/bin/apachect1 start/stop/restart这样的是启动/重启/停止服务器的命令。我们可以为此创建一个用户test来管理apache服务器,我们知道普通用户是没有权限来启动apache服务器的。这里要用到sudo命令,通过它为test用户加入扩展权限使其可以管理apache服务器。

  利用Vi或者直接进入/etc/pam.d打开sudo文件,然后在其中添加一行test ALL=(ALL) /usr/local/apache2/bin/apachectl命令就可以了。该命令分成四个字段,依次为用户名、作用对象、以谁的身份运行以及运行的命令。当然,我们也可以加入test localhost=(root) /usr/local/apache2/bin/apachectl start,这样过滤更严格一些。最后保存退出后,使用test用户登录系统就可以运行/usr/local/apache2/bin/apachectl start命令了。上面只是举例,大家可以根据自己的需要在sudo文件中添加相应的命令行。不过,需要说明的是命令一定要严格过滤,不要赋权过大。 (图3)

   提升Linux服务器安全

    2.安全地远程登录

  远程登录是对于服务器实施维护和管理的重要方式,我们知道在Linux(例如RHEL)系统中,默认是允许Root用户直接远程登录的。假若攻击者获取了Root的密码,然后进行远程登录,那整个服务器就沦陷了。因此,我们要做好Root的权限限制,拒绝其远程登录。这样,就算攻击者获取了Root密码,也不能通过远程登录控制服务器。限制Root远程登录的方法有很多种,笔者向大家推荐两种。

  (1).SSH限制

  我们知道SSH是Linux系统中用于远程维护管理的一个服务,类似于Windows系统中的Telnet或者远程桌面3389。通过SSH限制Root远程登录,我们需要做的就是修改SSH的配置文件。找/etc/ssh/sshd_config文件,在其中添加PermitRootLogin no。需要注意的是Linux系统是大小写敏感的,不要输错。输入完毕后,保存并退出,然后输入命令service sshd restart重启SSH服务使修改生效。这样当通过Root远程连接Linux服务器时,就会拒绝连接。(图4)

   提升Linux服务器安全

     (2).PAM认证

  我们还可以使用PAM认证模块来拒绝Root用户直接登录系统,可通过下面的操作来实现。打开/etc/pam.d/sshd文件,在第一行加入auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshduser onerr=succeed这条语句。其含义是,在登录时认证帐户和密码是否有效,只有认证通过才能登录系统,否则结束认证拒绝登录。它的认证模块是/lib/security/pam_listfile.so,认证的用户是用户(user),当然也可以是组(group),认证的方式是拒绝(deny),认证文件是/etc/sshduser,文件名及目录随意,如果认证成功就返回(succeed)。

  然后我们创建一个认证文件,可以在终端中运行命令echo "root" > /etc/sshduser来创建,当然我们也可以使用vi打开sshduser文件来加入用户。需要说明的是,当有多个用户时,每个用户占用一行。添加完成后,再使用Root直接登录服务器就可以看到登录被拒绝了。

  总结:做好了本地和远程的权限控制,Linux服务器的安全性就会得到极大的提升。当然,Linux是一个非常灵活的服务器系统,大家完全可以根据实际的安全需求进行相应的安全部署。最后,希望笔者的经验能够帮助到大家。
 

 

 

1
3