科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

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

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

三、常见Unix安全设置方案-2.Linux系列

3.2 Linux 系列
3.2.1物理安全
3.2.1.1 BIOS安全,设定引导口令
禁止从软盘启动,并且给BIOS加上密码。每次启动的时候都手工检查一下BIOS,这样可以提高系统的安全性。禁止从软盘启动,可以阻止别人用特殊的软盘启动你的计算机;给BIOS加上密码,可以防止有人改变BIOS的参数,比如:允许从软盘启动或不用输入口令就可以引导计算机。

3.2.1.2 安全策略
有一点很重要而且必须指出的是:如果你不知道要保护什么,那么更本没有办法保证系统的安全。所以必须要有一个安全策略,基于这样的一个策略才可以决定哪些东西允许别人访问,哪些不允许。如何制定一个安全策略完全依赖于你对于安全的定义。下面的这些问题提供一些一般性的指导方针:

1)如何定义保密的和敏感的信息?
2)重点防范
3)远程用户有必要访问你的系统吗?
4)系统中有保密的或敏感的信息吗?
5)如果这些信息被泄露给你的竞争者和外面的人有什么后果?
6)口令和加密能够提供足够的保护吗?
7)你想访问Internet吗?
8)你允许系统在Internet上有多大的访问量?
8) 如果发现系统被黑客入侵了,下一步该怎么做?

这个列表很短,真正的安全策略可能包含比这多得多的内容。可能你要做的第一件是:评估一下自己的偏执程度。任何一个安全策略多少都有一定程度的“偏执”:确定到底在多大程度上相信别人,包括内部的人和外部的人。安全策略必须在允许用户合理地使用可以完成工作所必须的信息和完全禁止用户使用信息之间找到平衡点。这个平衡点就是由系统策略决定的。

3.2.1.3 口令
这章的Linux安全概要就从口令的安全开始讲起。许多人都把所有的东西保存在计算机上,防止别人查看这些信息的方法就是用口令把计算机保护起来。没有什么东西是绝对安全的。与常识相反的是:无法破解的口令是不存在的。只要给足时间和资源,所有的口令都能用社会工程(译者注:原文是social engineering,找不出更好的翻译,大致的意思是用社会和心理学的知识,而不是用纯粹的技术手段)或强行计算的方法猜出来。

通过社会工程或其它方法获得服务器的口令是最简单和最流行的入侵服务器的方法。决大多数的技术支持人员很容易获得其他用户的口令,因为用户的安全意识很差而且很轻易就相信自己的同事,特别是帮助自己解决问题的人。有很多登记在案的成功入侵就是因为一些别有用心的人利用安全管理上的松懈而获得成功的。有时候,在特定的时间在特定的地点,上级或老板对员工喊话就有可能泄露机密,导致可怕的后果。

因为破解口令是一项很耗时间和资源的工作,所以应该使得口令文件难于破解,这样即使黑客获取了口令文件也不能轻易破解。作为一个系统管理员,自己在每个周末运行一下口令破解程序,是保证系统安全的好方法。这有利于尽早地发现和替换那些很容易被猜出来的口令。而且,还要有一个好的口令检查机制,在用户选择新口令或改变旧口令的时候,来排除那些有安全隐患的口令。那些字典里的单词、或者全是大写或全是小写的以及没有包含数字或特殊字符的字符串是不能用来做口令的。我建议用下面的规则选择有效的口令:

口令至少要有6个字符,最好包含一个以上的数字或特殊字符。
口令不能太简单,所谓的简单就是很容易猜出来,也就是用自己的名字,电话号码、生日、职业或者其它个人信息作为口令。
口令必须是有有效期的,在一段时间之后就要更换口令。
口令在这种情况下必须作废或者重新设定:如果发现有人试图猜测你的口令,而且已经试过很多次了。

安装完Linux系统之后默认的最小口令长度为5。这就是说一个新的用户可以访问服务器,那么他的口令必须多于5字符。但是这样是不够安全的,最好口令的长度能够大于8。可以强制用户使用8个字符以上的口令。编辑“/etc/login.defs”文件,把最小口令长度由5改成8。

找到PASS_MIN_LEN 5 这一行,改为:PASS_MIN_LEN 8 。“login.defs”是很重要的配置文件。可以在这个文件中设定一些其它的安全策略,比如:口令的有效期。

3.2.1.4 root帐号
“root”帐号是Unix系统中享有特权的帐号。“root”帐号是不受任何限制和制约的。因为系统认为root知道自己在做些什么,而且会按root说的做,不问任何问题。因此,可能会因为敲错了一个命令,导致重要的系统文件被删除。用root帐号的时候,要非常非常小心。因为安全原因,在不是绝对必要的情况下,不要用root帐号登录。特别要注意的是:不在自己的服务器上的时候,千万不要在别的计算机上用“root”登录自己的服务器。这是非常非常
非常糟糕的一件事。

3.2.1.5 加密
加密时要用到密匙,密匙是一个特殊的数字,把密匙和需要加密的信息经过加密算法加密之后,只有知道密匙的人才能把信息读出来。如果所有的计算机主机都在你的控制下,加密当然是一个好方法,但是,如果其中一台“被信任的”主机被黑客控制了,你马上就有危险了。这就不仅仅是用户的帐号和口令有危险了。在通常情况下,加密是用来保证机密信息在系统中传送的安全。如果一台计算机被控制了,那么这些加密信息就会让人知道或是泄密了。

有一个好的安全策略,这种危险的可能性会降到最低,但是如果某台主机的密匙被泄露出去,那么危险始终存在。

3.2.2 安全配置

3.2.2.1 “/etc/exports”文件
如果通过NFS把文件共享出来,那么一定要配置“/etc/exports”文件,使得访问限制尽可能的严。这就是说,不要用通配符,不允许对根目录有写权限,而且尽可能只给只读权限。编辑exports文件(vi /etc/exports)加入。例如:

/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)

“/dir/to/export”是你想共享出来的目录,host.mydomain.com是允许访问这个目录的计算机。代表只读,代表不允许对根目录进行写操作。使这些改变生效,你还要运行“/usr/sbin/exportfs -a”命令。

注意:在服务器上装NFS服务是会有安全隐患的,就我个人而言,不建议你使用NFS。

3.2.2.2 “/etc/inetd.conf”文件
Inetd,也叫作“超级服务器”,根据网络请求装入网络程序。“inetd.conf”文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。把Linux系统放在任何的网络环境中,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。

第一步:把文件的许可权限改成600。

[root@cnns]# chmod 600 /etc/inetd.conf

第二步:确信文件的所有者是root。

[root@cnns]# stat /etc/inetd.conf

这个命令显示出来的信息应该是:

File: \"/etc/inetd.conf\"
Size: 2869 Filetype: Regular File
Mode: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links: 1
Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change: Mon Sep 20 10:22:44 1999(00002.06:12:16)

第三步:编辑“inetd.conf”文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、 telnet、 shell、 login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:

# To re-read this file after changes, just do a \'killall -HUP inetd\'
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
#
# These are standard services.
#
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
#
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as \"boot servers.\" Do not uncomment
# this unless you *need* it.
#
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential \"system crackers.\" Many sites choose to disable
# some or all of these services to improve security.
#
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#
# Authentication
#
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
#
# End of inetd.conf

注意:改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号(killall -HUP inetd)。

[root@cnns /root]# killall -HUP inetd

第四步: 为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:

[root@cnns]# chattr +i /etc/inetd.conf
这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件的连接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:

[root@cnns]# chattr -i /etc/inetd.conf

3.2.2.3 TCP_WRAPPERS
在默认情况下,RedHat Linux允许所有的服务请求。用TCP_WRAPPERS来保护服务器的安全,使其免受外部的攻击,比想象的要简单和轻松得多。在“/etc/hosts.deny”文件中加入“ALL: ALL@ALL, PARANOID”以禁止所有计算机访问你的服务器,然后在“/etc/hosts.allow” 文件中一个一个加入允许访问你的服务器的计算机。这种作法是最安全的。

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

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

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