如何确保Linux服务器安全?

日期: 2010-06-07 来源:TechTarget中国

  一、首先要保证自己的服务器的绝对安全,root密码我一般设置为28位以上,而且某些重要的服务器必须只有几个人知道root密码,这个根据公司权限来设置,如果有公司的系统管理员离职,root密码一定要更改;玩linux久了的人都应该知道,更改root密码不会影响linux的crontab计划任务,而windows2003就不一样了,如果随意更改administrator密码,会直接影响其计划任务运行。

   二、我的Nagios外网监控服务器,刚开始测试时取的密码是redhat,放进公网一天就被人改了,郁闷死了;后来环境部署成熟以后发现仍然有不少外网ip在扫描和试探,看来不用点工具不行啊;呵呵,DenyHosts是用Python2.3写的一个程序,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

   1、检查安装条件

   1)首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持)

  # ldd /usr/sbin/sshd
  libwrap.so.0 => /usr/lib/libwrap.so.0 (0x0046e000)

  2)判断默认安装的Python版本

  # python-V
  Python 2.3.4

  2、已安装Python2.3以上版本的情况

  1)安装DenyHosts

  # cd /usr/local/src
  # wget http://jaist.dl.sourceforge.net/
  sourceforge/denyhosts/DenyHosts-2.6.tar.gz
  # tar zxf DenyHosts-2.6.tar.gz
  # cd DenyHosts-2.6
  # python setup.py install

  程序脚本自动安装到/usr/share/denyhosts

  库文件自动安装到/usr/lib/python2.3/site-packages/DenyHosts

  denyhosts.py自动安装到/usr/bin

  2)设置启动脚本

  # cd /usr/share/denyhosts/
  # cp daemon-control-dist daemon-control
  # chown root daemon-control
  # chmod 700 daemon-control# grep -v “^
  #” denyhosts.cfg-dist > denyhosts.cfg
  # vi denyhosts.cfg

  根据自己需要进行相应的修改

  —————-denyhosts.cfg————————
  SECURE_LOG = /var/log/secure
  #RedHat/Fedora Core分析该日志文件
  #其它版本linux根据denyhosts.cfg-dist内提示选择。
  PURGE_DENY = 30m
  #过多久后清除
  DENY_THRESHOLD_INVALID = 1
  #允许无效用户(/etc/passwd未列出)登录失败的次数
  DENY_THRESHOLD_VALID = 5
  #允许有效(普通)用户登录失败的次数
  DENY_THRESHOLD_ROOT = 3
  #允许root登录失败的次数
  HOSTNAME_LOOKUP=NO
  #是否做域名反解
  —————-denyhosts.cfg————————

  如果需要DenyHosts随系统重启而自动启动,还需做如下设置:

  # vi /etc/rc.local

  加入下面这条命令

  /usr/share/denyhosts/daemon-control start

  3)启动

  # /usr/share/denyhosts/daemon-control start

  如果要使DenyHosts每次重起后自动启动还需做如下设置:

  # cd /etc/init.d
  # ln -s /usr/share/denyhosts/daemon-control denyhosts
  # chkconfig –add denyhosts
  # chkconfig –level 345 denyhosts on

  然后就可以启动了:

  service denyhosts start

  DenyHosts配置文件:

  vi /etc/denyhosts.cfg

  SECURE_LOG = /var/log/secure #ssh 日志文件,它是根据这个文件来判断的。

  HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件

  PURGE_DENY = 5m#过多久后清除已经禁止的

  BLOCK_SERVICE   = sshd#禁止的服务名

  DENY_THRESHOLD_INVALID = 1#允许无效用户失败的次数

  DENY_THRESHOLD_VALID = 10#允许普通用户登陆失败的次数

  DENY_THRESHOLD_ROOT = 5#允许root登陆失败的次数

  HOSTNAME_LOOKUP=NO#是否做域名反解

  DAEMON_LOG = /var/log/denyhosts#自己的日志文件

  ADMIN_EMAIL = yuhongchun027@163.com#管理员邮件地址,它会给管理员发邮件

  三、服务器上除root外,Linux用户越少越好;如果非要添加授权用户,请给他的登陆shell为nologin;终止未授权用户,定期检查系统有无多余的用户都是很必要的工作。

  四、分析系统的日志文件,寻找入侵者曾经试图入侵系统的蛛丝马迹。last命令是另外一个可以用来查找非授权用户登录事件的工具

  lyychee pts/2 54.107.130.61.di Mon May 22 14:14 still logged in
  lyychee pts/2 51.107.130.61.di Thu May 18 18:36 – 18:42 (00:05)
  lyychee pts/2 61.130.107.51 Tue May 16 14:21 – 14:39 (00:18)
  root pts/2 61.130.107.58 Sat May 13 15:40 – 15:43 (00:02)
  lyychee pts/2 210.32.178.253 Fri May 12 00:53 – 01:16 (00:23)
  root pts/2 58.107.130.61.di Wed May 10 15:33 – 15:35 (00:01)
  root pts/2 61.130.107.58 Tue May 9 14:58 – 15:07 (00:08)
  root pts/2 59.78.34.62 Sun May 7 07:40 – 07:45 (00:05)
  lyychee pts/2 59.78.34.62 Sat May 6 23:50 – 00:27 (00:37)
  lyychee pts/2 222.64.24.144 Sat May 6 10:56 – 10:56 (00:00)
  root pts/2 192.168.0.111 Sat May 6 00:01 – 00:02 (00:01)
  lyychee pts/2 222.64.22.144 Thu May 4 12:41 – 12:43 (00:00)
  root pts/2 59.78.34.62 Tue May 2 06:59 – 07:00 (00:00)

 
  以下是一台机器上的演示图:

  last命令输入的信息来自/var/log/wtmp。这个文件详细地记录着每个系统用户的访问活动。但是有经验的入侵者往往会删掉/var/log/wtmp以清除自己非法行为的证据,但是这种清除行为还是会露出蛛丝马迹:在日志文件里留下一个没有退出操作与之对应的登录操作(因为在你删除wtmp的时候,你的登录记录就没有了,但是你待会儿登出,系统还是会把你记下来),不过再高明一点就用at或者cron等自己登出之后再删文件。(但是这种方法也还是可以查,总之linux没有一种操作是最强的,强到没有纰漏。就像古龙的小说一样,没有一个人是天下第一。这样看起来才有劲)

  五、另外,可以用命令 grep error /var/log/messages检查自己的服务器是否存在着硬件损坏的情况。

  六、尝试使用Chkrootkit应用程序对rootkit的踪迹和特进行查找,从它的报告中分析你的服务器否已经感染木马。

  七、尝试使用AIDE来检查文件系统的完整性。

  八、推荐使用Snort自动检测入侵,它集成了同类软件中最先进行技术,并且是开放源码的。

  九、以自己的邮件服务器举例说明,由于这是一个独立的服务器,所以前端并没放置硬件防火墙及Web防火墙,所以一定要开启iptables来防护,其/root/firewall.sh内容如下:

  #/bin/bashiptables -F
  iptables -F -t nat
  iptables -X
  iptables -P INPUT DROP
  iptables -P OUTPUT ACCEPT
  iptables -P FORWARD ACCEP
  #load connection-tracking modules
  modeprobe ip_conntrack
  modprobe iptable_nat
  modprobe ip_conntrack_ftp
  modprobe ip_nat_ftp
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
  iptables -A INPUT -p tcp -m multiport 
  –dport80,443,25,465,110,995,143,993,587,465,22 -j ACCEPT

 
  在另一台机器上用扫描之王nmap进行扫描

  [root@mail postfix]# nmap -P0 -sS 211.143.6.X
  Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-   03_29 16:21 CST
  Interesting ports on 211.143.6.X:
  Not shown: 1668 closed ports
  PORT     STATE SERVICE
  22/tcp open   ssh
  25/tcp open   smtp
  80/tcp open   http
  110/tcp   open   pop3
  111/tcp   open   rpcbind
  143/tcp   open   imap
  443/tcp   open   https
  465/tcp   open   smtps
  587/tcp   open   submission
  993/tcp   open   imaps
  995/tcp   open   pop3s
  1014/tcp open   unknown

  lsof -i:1014,发现又是rpc.statd,这东东,每次用的端口都不一样啊;它不能正确处理SIGPID信号,远程攻击者可利用这个漏洞关闭进程,进行拒绝服务攻击;发现rpc.statd是由服务nfslock开启,关闭它即可

  service nfslock stopchk
  config nfslock off

  十、停掉一些系统不必要的服务,强化内核;多关注下服务器的内核漏洞,现在linux很多攻击都是针对内核的,保证内核版本为2.6.9以上(不含2.6.9)。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐