科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何保护互联网上的Linux系统机器 (2)

如何保护互联网上的Linux系统机器 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

互联网上有许多企业公司和组织采用Linux作为服务器平台。当这些服务器与互联网连接以提供应用服务时,不可避免地会成为攻击目标。本文讨论Linux系统安全配置的一些基本知识,以帮助你保护Linux系统。

作者:yuanshan 来源:赛迪网技术社区 2007年10月21日

关键字: 操作系统 Linux 互联网 保护

  • 评论
  • 分享微博
  • 分享邮件
 

关闭服务

一旦安装完系统的安装包、补丁,重启后,我们现在就可以开始对操作系统进行安全增强配置了。安全增强配置主要包括关闭服务、增加日志、调整几个文件和配置TCP Wrappers.首先从关闭服务开始。

缺省情况下,Solaris是一个提供许多有用服务的高性能操作系统。然而,对于防火墙来说,其中的大多数服务是不需要,且可能是安全风险。首先需要修改/etc/inetd.conf文件。这个文件定义了由/usr/sbin/inetd超级守护进程需要监听的服务。缺省情况下,/etc/inetd.conf会启动35个服务,然而最多仅需要两项:ftp和telnet.其余服务都不是必需的,可以将它们注释(关闭)。这是很重要的,因为inetd监听的许多服务存在严重的安全威胁,例如popd、imapd和rsh.以下命令列出inetd守护进程会监听的服务,请确认将其中不必要的服务的所在行注释(行首加"#"号):

grep -v "^#" /etc/inetd.conf

下一步要修改的是/etc/rc2.d和/etc/rc3.d目录下的文件。在这里你能够找到被init进程执行的启动脚本。其中也有许多是不需要的。要取消在启动过程中执行一个脚本,只需将对应文件名的起始大写S改为小写s即可。此外,Red Hat系统中带有一个好工具用以关闭服务。只要在命令行输入"/usr/sbin/setup",然后选择"System Services",接着再选择在系统启动时需要执行的脚本。另外还有一种方法就是在大多数发行版本中都带有的chkconfig工具。以下启动脚本是系统缺省安装,但通常却不是必需的。如果确定不需要它们,应该将禁止其启动。注意其中的数字用于决定执行的顺序,在不同的发行版本中可能会有所变化。以大写K开始的脚本用于kill已经在运行中的服务。

S05apmd (仅有笔记本电脑才需要)S10xntpd (网络时间协议)S11portmap (如果运行RPC服务则必需打开)S15sound (保存声卡设置)S15netfs (NFS客户端,用于从NFS服务器安装文件系统)S20rstatd (向远程用户泄露过多信息)S20rusersd S20rwhod S20rwalld S20bootparamd (用于无盘客户端,通常都不需要)S25squid (代理服务器)S34yppasswdd (如果系统运行NIS服务器,则必需此服务)S35ypserv (如果系统运行NIS服务器,则必需此服务)S35dhcpd (启动DHCP服务器守护进程)S40atd (at服务,类似cron服务,但系统通常不需要)S45pcmcia (仅有笔记本电脑才需要)S50snmpd (SNMP守护进程,向远程用户泄露过多信息)S55named (DNS服务器。如果需要运行DNS,请升级到最新版本)S55routed (RIP,仅在必需时才应该启动)S60lpd (打印服务)S60mars-nwe (Netware文件和打印服务器)S60nfs (用于NFS服务器。除非必须,此服务不应运行)S72amd (AutoMount守护进程,用于自动安装远程文件系统)S75gated (用于运行其它路由协议,例如OSPF)S80sendmail (如果不需要接收或转发电子邮件应关闭。此时仍可发送电子邮件)S85httpd (Apache服务器,建议升级到最新版本)S87ypbind (仅有NIS客户端才需要)S90xfs (X Windows系统字体服务器S95innd (News服务器)S99linuxconf (通过浏览器远程配置Linux系统)

要想在修改启动脚本前了解有多少服务正在运行,输入:

ps aux | wc -l

然后修改启动脚本后,重启系统,再次输入上面的命令,就可计算出减少了多少项服务。越少服务在运行,安全性就越好。另外运行以下命令可以了解还有多少服务在运行:

netstat -na ——ip

日志和系统调整

在尽可能多地取消服务后,下一步就是配置系统日志了。所有的系统日志存放在/var/log目录下。缺省时,Linux有不错的日志设置,除了ftp.有两种方法记录ftp的日志,配置/etc/ftpaccess文件或编辑/etc/inetd.conf.建议采用相对简单的编辑/etc/inetd.conf文件的方法。通过编辑/etc/inetd.conf文件如下,可以记录所有FTP会话的所有日志。

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

以下选自ftp手册页:

如果指定-l参数,syslog会记录每一个ftp会话。如果指定-L参数,缺省时一旦ftp服务器被调用,命令日志就会激活。这将使服务器记录下所有的USER命令。注意,此时如果一个用户偶然性地在用户名输入时输入了口令,该口令会被syslog记录下来!如果指定-i参数,ftpd服务器接收到的文件都会被记录到xferlog.如果指定-o参数,ftpd服务器发送的文件都会被记录到xferlog.

snip snip

下一步配置是系统调整。这包括了多个文件的管理。第一件事情是确保/etc/passwd文件的安全。首先要确认系统使用了/etc/shadow文件,此保存了所有用户口令密文的文件仅允许root根用户访问,这可以阻止用户口令轻易地被访问和破解。Red Hat 6.0缺省时使用了shadow口令系统,但务必要检查确定。只要运行以下命令,就会将口令系统自动转换到/etc/shadow口令系统:

pwconv

第二步是删除/etc/passwd文件中许多缺省的系统帐号。Linux提供这些帐号主要是用于许多其实极少需要的系统操作。如果不需要这些帐号,删除它们。帐号越多,系统被入侵的可能性就越大。例如"news"帐号,如果不运行nntp新闻组服务器,就不需要该帐号(注意要更新/etc/cron.hourly文件,因为脚本中涉及到了"news"用户)。另外,一定要删除"ftp"帐号,因为该帐号仅用于匿名FTP访问。

我们还要修改/etc/ftpusers文件。任何被列入该文件的帐号将不能ftp到本系统。通常用于限制系统帐号,例如root和bin等,禁止这些帐号的FTP会话。缺省时Linux已创建了该文件。一定要确保root根用户被包含在该文件中,以禁止root与系统的ftp会话。检查并确认需要FTP到该防火墙的所有帐号**不**在/etc/ftpusers文件中。

另外,确保根用户root不能telnet到系统。这强迫用户用其普通帐号登录到系统,然后再su成为root./etc/securetty文件列出了root所能连接的tty终端。将tty1、tty2等列入该文件中,使root用户只能从本地登录到系统中。ttyp1、ttyp2等是pseudo(虚拟)终端,它们允许root远程telnet到系统中。

最后,创建/etc/issue文件。该ASCII文本文件用于在所有telnet登录时显示的信息。当试图登录到系统中时,该文件中的警告信息将被显示。在Linux系统中要修改/etc/rc.d/init.d/S99local脚本文件,以生成固定的/etc/issue文件。因为缺省时Linux在每次启动时都生成新的/etc/issue文件。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章