科技行者

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

知识库

知识库 安全导航

至顶网网络频道Unix高级安全设置第三部分-LINUX系列(2)

Unix高级安全设置第三部分-LINUX系列(2)

  • 扫一扫
    分享文章到微信

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

UNIX 已有数十年的历史,在这期间,它的改变即使没有上亿次,也有数百万次了,有成千上万的个人和公司实现了上千种不同的版本,有上百万系统管理员在从微型嵌入式系统到超级 计算机上都安装过它。无可争论,没有两个实际的UNIX操作系统是完全相同的

作者:论坛整理 来源:zdnet网络安全 2008年1月8日

关键字: 安全设置 系统安全 unix

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

TCP_WRAPPERS是由两个文件控制的,依次是:“/etc/hosts.allow”和“/etc/hosts.deny” 。判断是依次进行的,具体的规则如下:

如果在在/etc/hosts.allow文件中有匹配的项(daemon, client),那么允许访问;否则,查看/etc/hosts.deny,如果找到匹配的项,那么访问被禁止;否则,访问被允许。

第一步:编辑hosts.deny文件(vi /etc/hosts.deny)加入下面这些行:

Access is denied by default.
# Deny access to everyone.
ALL: ALL@ALL, PARANOID #Matches any host whose name does not match its address, see bellow.

这样做的意思是:所有的服务、访问位置,如果没有被明确地允许,也就是在“/etc/hosts.allow”中找不到匹配的项,就是被禁止的。

注意:加上“PARANOID”参数之后,如果要在服务器上使用telnet或ftp服务,就要在服务器的“/etc/hosts”文件中加入允许使用telnet和ftp服务的客户端计算机的名字和IP地址。否则,在显示登录提示之前,因为DNS的域名解析,可能要等上几分钟时间。

第二步:编辑“hosts.allow”文件(vi /etc/hosts.allow)。例如,可以加入下面这些行(被授权访问的计算机要被明确地列出来):

sshd: 208.164.186.1 gate.openarch.com

被授权访问的计算机的IP地址是:208.164.186.1,主机名是:gate.openarch.com,允许使用的服务是:sshd。

第三步:tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:[root@cnns]# tcpdchk

3.2.2.4 “/etc/aliases”文件
Aliases文件如果管理错误或管理得太粗心了就会造成安全隐患。例如:很多的软件产商都把“decode”这个别名放在aliases文件里。这样做的目的是为了方便通过email传送二进制文件。在发送邮件的时候,用户把二进制文件用“uuencode”转成ASCII文件,然后把结果发给接收端的“decode”。由这个别名让邮件信息通过“/usr/bin/uuencode”程序把二进制文件重新转换成ASCII文件。如果允许“decode”出现在aliases文件中,可以想象将会有什么样的安全隐患。

把定义“decode”这个别名的行从aliases文件中删除。同样地,每一个会运行程序的别名都要好好查看一下,很有可能要把它们删除掉。要使改动生效,还必须运行:

[root@cnns]# /usr/bin/newaliases

编辑aliases文件(vi /etc/aliases),删除或注释掉下面这些行:

# Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
#games: root ? remove or comment out.
#ingres: root ? remove or comment out.
nobody: root
#system: root ? remove or comment out.
#toor: root ? remove or comment out.

#uucp: root ? remove or comment out.
# Well-known aliases.
#manager: root ? remove or comment out.
#dumper: root ? remove or comment out.
#operator: root ? remove or comment out.
# trap decode to catch security attacks
#decode: root
# Person who should get root\'s mail
#root: marc

别忘了运行“/usr/bin/newaliases”使改变生效。

3.2.2.5 防止sendmail被没有授权的用户滥用
最新版的sendmail(8.9.3)集成了很强大的防止垃圾邮件(anti-spam)的功能,可以防止邮件服务器被没有授权的用户滥用。要实现这个功能可以通过编辑“/etc/sendmail.cf”文件,改变配置文件以阻止那些发垃圾邮件的人。

编辑“sendmail.cf”文件(vi /etc/sendmail.cf),把这一行:
O PrivacyOptions=authwarnings
改为:
O PrivacyOptions=authwarnings,noexpn,novrfy

这些改变可以防止发垃圾邮件的人使用sendmail中的“EXPN”和“VRFY”命令。这些命令经常被没有授权的人使用。参考本书sendmail配置这一节以获得更多这方面的信息。

编辑“sendmail.cf”文件(vi /etc/sendmail.cf),把这一行:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
改为:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b NO UCE C=xx L=xx

这将改变sendmail接受连接时所显示的提示信息。你要把“C=xx L=xx”中的“xx”改成你所在的国家和地区编码。例如:我是这样写的“C=CN L=JL”,代表中国,吉林。这个改变不会对sendmail有什么影响,但是news.admin.net-abuse.email新闻组的人建议这么做,主要是为了预防法律上的问题。

3.2.2.6 不要显示系统提示信息
如果你不想让远程登录的用户看到系统的提示信息,你可以改变“/etc/inetd.conf”文件中的telnet设置:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

在末尾加上“-h”参数可以让daemon不显示任何系统信息,只显示登录提示。当然,只有在服务器上装了telnet服务器才有这样做的必要。

3.2.2.7 “/etc/host.conf”文件
Linux用解析器(resolver)库把主机名翻译成IP地址。“/etc/host.conf”文件定义主机名是怎样解析的。“/etc/host.conf”文件中的项告诉解析器库用什么服务,以什么顺序解析主机名。

编辑“host.conf”文件(vi /etc/host.conf)加入下面这些行:

# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on

order选项指明的是选择服务的顺序。上面“order bind, hosts”说的是解析器库解析文件名的时候先查询域名服务器,然后再查看“/etc/hosts”文件。因为性能和安全上的原因,最好将解析器库的查找顺序设成先查域名服务器(bind)。当然也要先安装了DNS/BIND软件,否则这样配置根本没有任何作用。

multi选项决定在“/etc/hosts”文件中出现的主机能不能有多个IP地址(多个网络界面)。具有多个IP网络界面的主机被称为具有多个网络界面(multiomed),因为同时有多个IP地址也就意味着这台主机有多个网络界面。例如:网关服务器就有多个IP地址,必须把这个选项设成ON。

nospoof选项指明不允许IP伪装。IP伪装是把自己伪装成别的计算机去欺骗其它的计算机,获得它的信任。这种攻击方法把自己伪装成别的服务器,并且与其它客户机、服务器和大型数据存储系统建立网络连接或其它类型的网络活动。不管对任何类型的服务器,这个选项都要设成ON。

3.2.2.8 路由协议
路由和路由协议会导致一些问题。IP原路径路由(IP source routing),也就是IP包包含到达底目的地址的详细路径信息,是非常危险的,因为根据RFC 1122规定目的主机必须按原路径返回这样的IP包。如果黑客能够伪造原路径路由的信息包,那么它就能截取返回的信息包,并且欺骗你的计算机,让它觉得正在和它交换信息的是可以信任的主机。我强烈建议你禁止IP原路径路由以避免这个安全漏洞。

用下面的命令在你的服务器上禁止IP原路径路由:

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

把上面的命令加到“/etc/rc.d/rc.local”文件中去,你就不用在系统重新启动之后再把这些命令敲一遍。注意,上面的命令将禁止所有的网络界面(lo、ethN、pppN,等等)的原路径路由包。如果你打算安装书中介绍的IPCHAINS防火墙,就不必用这些命令了,因为在防火墙的脚本文件中已经包含这些命令了。

3.2.2.9 使TCP SYN Cookie保护生效
“SYN Attack”是一种拒绝服务(DoS)的攻击方式,会消耗掉系统中的所有资源,迫使服务器重新启动。拒绝服务(这种攻击方式用巨大的信息流来消耗系统的资源,以至于服务器不能够响应正常的连接请求)是很容易被黑客利用的。在2.1系列的内核中,“syn cookie”只是一个可选项,并没有使其生效。想要使其生效必须用下面的命令:

[root@cnns]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

把这个命令加入“/etc/rc.d/rc.local”文件中,等下次系统重新启动的时候就不必重新敲一遍了。如果打算安装IPCHAINS防火墙,你就没有必要用这个命令,因为它已经包含在防火墙的脚本文件里了。

3.2.2.10 防火墙
安全问题的另一个解决方案是把计算机主机和内部计算机间的信息传送同外部的网络隔离开,只让内部网络与外部网络之间的信息交流,通过一个安全的网关进行。这样一个网关叫做防火墙,在下面的一些章节我们会用很大的篇幅介绍防火墙。

3.2.2.11 “/etc/services”文件
端口号和标准服务之间的对应关系在RFC 1700 “Assigned Numbers”中有详细的定义。“ /etc/services”文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是“/etc/services”。只有“root”用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:

[root@cnns]# chattr +i /etc/services

3.2.2.12 “/etc/securetty”文件
“/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许root登录的。

注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。
编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行:

tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8

上面这样做的意思是只允许root在tty1上登录。我建议只允许root在一个tty设备上登录,如果从其它tty上登录,用“su”命令把身份转成“root”。

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

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

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