如何保护你的Ubuntu服务器

  • 来源: 黑吧安全网 作者: 戴九军   2011-05-09/10:08
  • 安全是相对的,使用本文介绍的这些方法不能绝对保证你的服务器是“安全的”,但可以肯定的是它比以前更安全,也比大多数服务器要安全,至少菜鸟级的黑客是无法攻破的;安全是一个持续的过程,它不是一蹴而就的,我们认为,在安全领域是需要一点偏执精神的。

    本文所列举的这些保护措施在Ubuntu Server 10.04(Lucid)和10.10(Maverick)中测试通过,如果你想让你的新Ubuntu服务器变得坚不可摧,你应该仔细阅读本文。

    Ubuntu服务器设计优良,并有定期更新,相对来说是比较安全的,Ubuntu安全团队表示会不断努力,保护Ubuntu的安全,将会定期提供安全更新。

    · 不打开端口

    · 基于角色的管理

    · 无X服务器

    · 安全更新

    · 内核和编译器保护

    在这篇文章中,我们将从不同方向来应对安全挑战,包括:系统分析,修改设置,安装防火墙,扫描rootkit和制定周期性维护制度。

    · 修改设置,增强安全性

    · 实施UFW,简单的防火墙

    · 使用denyhosts自动将攻击者列入黑名单

    · 使用Tiger扫描系统漏洞

    · 使用psad检测入侵尝试行为

    · 安装nmap,扫描系统打开的端口

    · 使用chkrootkit检查系统rootkit

    · 监控日志

    修改设置,增强安全

    保护共享内存

    攻击一个运行中的服务(如httpd)时经常要使用/dev/shm,修改/etc/fstab使其更安全。

    sudo vi /etc/fstab

    添加下面这一行内容:

    tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0

    禁止root通过SSH登录

    Root帐号在Ubuntu中默认是被禁用了的,如果你在Slicehost或Linode上安装Ubuntu,root则是被启用的,无论怎样,禁止root通过SSH登录系统都是一个好主意。

    sudo vi /etc/ssh/sshd_config

    将PermitRootLogin设为no:

    PermitRootLogin no

    当然,如果你通过SSH访问你的服务器,在禁用root使用SSH之前,确保其它用户可以正常使用sudo工作。

    只允许管理用户使用su

    这将有助于预防特权提升,默认情况下,Ubuntu没有提供管理组,因此需要先创建一个管理组。

    sudo groupadd admin

    将你自己加入到管理组:

    sudo usermod -a -G admin andrew

    限制/bin/su的访问权,仅授予管理组成员:

    sudo dpkg-statoverride --update --add root admin 4750 /bin/su

    检查/bin/su的权限:

    ls -lh /bin/su

    看到下面的输出内容:

    -rwsr-x--- 1 root admin 31K 2010-01-26 17:09 /bin/su

    不允许跟踪入站数据包的源路由

    sudo sysctl -w net.ipv4.conf.all.accept_source_route=0

    sudo sysctl w net.ipv4.conf.default.accept_source_route=0

    不允许系统用户访问FTP服务器#p#驱动中国#e#

    只有当你安装了ftpd才需要这么做,只要tiger扫描报告中不出现相关警告即可,SFTP比FTP的安全性要好,如果可能,应尽量使用SFTP。

    Edit /etc/ftpusers:

    sudo vi /etc/ftpusers

    添加系统用户拒绝使用ftpd:

    backup

    bin

    daemon

    games

    gnats

    irc

    libuuid

    list

    lp

    mail

    man

    mysql

    news

    ntp

    postfix

    proxy

    sshd

    sync

    sys

    syslog

    uucp

    www-data

    UFW:简单防火墙

    UFW(Uncomplicated Firewall,简单防火墙)提供了一个易于理解的接口控制iptable(iptable控制Netfilter,Netfilter内置于内核之中),只需要几个简单的命令,你的服务器就可以控制访问,创建状态也很容易。

    UFW是用于配置iptable的一个简单接口。

    安装并启用Uncomplicated Firewall:

    sudo aptitude install -y ufw

    sudo ufw enable

    显示可用的UFW命令:

    sudo ufw show

    显示UFW配置:

    sudo ufw status

    允许SSH和HTTP访问Apache服务器:

    sudo ufw allow ssh

    sudo ufw allow http

    在上面的示例中,OpenSSH和Apache的端口通过服务名(ssh和http)打开,你可以使用端口号替换这里的服务名(如用80替换http)。

    查看服务运行情况:

    查看运行中的服务,便知道应该打开哪些端口:

    sudo ufw app list

    查看UFW使用的服务:

    less /etc/services

    Denyhosts:避免SSH攻击

    项目主页: http://denyhosts.sourceforge.net/

    查看服务器上的/var/log/auth.log,我发现有一连串的SSH攻击,对付这种攻击有很多方法,首先就是denyhosts。

    Denyhosts会周期性地扫描/var/log/auth.log,找出通过SSH反复失败访问系统的行为和来源,然后将它们添加到/etc/hosts.deny中。详细情况请访问项目主页。

    sudo aptitude -y install denyhosts

    要做的就这些,剩下来的都是自动的,你可以使用下面的命令查看添加到/etc/hosts.deny中的IP地址:

    sudo less /etc/hosts.deny

    Tiger:系统安全扫描器

    项目主页: http://www.nongnu.org/tiger/

    通过分析系统上的文件和设置,Tiger创建自动的安全审核,最终以报告的形式列出分析的内容,警告,警报和故障。

    Tiger命令在/var/log/tiger中记录了潜在的安全问题,使用tigexp命令查找结果编码可以获得详细的解释和安全加固建议,tiger认为很严重的问题都标记为Fail。

    安装tiger:

    sudo aptitude -y install tiger

    运行tiger,创建一个安全问题报告:

    sudo tiger

    使用less查看最近的tiger报告:

    sudo -i

    less /var/log/tiger/`ls -t1 /var/log/tiger | head -1`

    exit

    使用tigexp列出Fail代码的解释:

    tigexp dev002f

    当然使用Google搜索一下也可以。

    忽略这些:

    --FAIL-- [dev002f] /dev/fuse has world permissions


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多