科技行者

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

知识库

知识库 安全导航

至顶网软件频道Linux系统服务器安装后的安全配置方法 (2)

Linux系统服务器安装后的安全配置方法 (2)

  • 扫一扫
    分享文章到微信

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

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

作者:赛迪网 来源:赛迪网 2007年10月10日

关键字: 配置 安全 服务器 Linux

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

八、"/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。

九、防止源路由

路由和路由协议会导致一些问题。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,等等)的源路径路由包。

十、使TCP SYN Cookie保护生效

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

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

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

十一、特殊的帐号

禁止中不必要的预置帐号(每次升级或安装完都要检查一下)。Linux系统中就提供这样一些你可能不需要的预置帐号。如果确实不需要这些帐号,就把它们删掉。系统中有越多的帐号,就越容易受到攻击。

我们假定你已经在系统中使用shadow口令。如果不是这样,最好在系统中加上shadow口令的支持,因为这样系统会更安全。如果你是按照上一章介绍的方法安装服务器,那么在"安全验证配置"这一步就已经选上"Enable Shaow Passwords"这个选项了。

在系统中删除一个用户可以用这个命令:

[root@deep]# userdel username

在系统中删除一个组可以用这个命令:

[root@deep]# groupdel username

第一步 用下面的命令删除一些不必要的用户:

[root@deep]# userdel adm

[root@deep]# userdel lp

[root@deep]# userdel sync

[root@deep]# userdel shutdown

[root@deep]# userdel halt

[root@deep]# userdel news

[root@deep]# userdel uucp

[root@deep]# userdel operator

[root@deep]# userdel games (如果不用X Window服务器,可以删除这个用户)

[root@deep]# userdel gopher

[root@deep]# userdel ftp (如果没安装匿名ftp服务器,可以删除这个用户)

第二步 输入下面的命令删除一些不必要的组:

[root@deep]# groupdel adm

[root@deep]# groupdel lp

[root@deep]# groupdel news

[root@deep]# groupdel uucp

[root@deep]# groupdel games (delete this group if you don use X Window Server).

[root@deep]# groupdel dip

[root@deep]# groupdel pppusers

[root@deep]# groupdel popusers (delete this group if you don use pop server for email).

[root@deep]# groupdel slipusers

第三步

"不允许改变"位可以用来保护文件使其不被意外地删除或重写,也可以防止有些人创建这个文件的符号连接。删除"/etc/passwd"、 "/etc/shadow"、"/etc/group"或"/etc/gshadow"都是黑客的攻击方法。给口令文件和组文件设置不可改变位,可以用下面的命令:

[root@deep]# chattr i /etc/passwd

[root@deep]# chattr i /etc/shadow

[root@deep]# chattr i /etc/group

[root@deep]# chattr i /etc/gshadow

注意:如果将来要在口令或组文件中增加或删除用户,就必须先清除这些文件的不可改变位,否则就不能做任何改变。如果没有清除这些文件的不可改变位,安装那些会自动在口令文件和组文件中加入新用户的rpm软件包的时候,在安装过程中就会出现出错的提示。

十二、防止任何人都可以用su命令成为root

如果不想任何人都可以用"su"命令成为root或只让某些用户有权使用"su"命令,那么在"/etc/pam.d/su"文件中加入下面两行。建议尽量限制用户通过"su"命令成为root。

第一步

编辑su文件(vi /etc/pam.d/su)在文件的头部加入下面两行:

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=wheel

加入这两行之后,"/etc/pam.d/su"文件变为:

#%PAM-1.0

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=wheel

auth required /lib/security/pam_pwdb.so shadow nullok

account required /lib/security/pam_pwdb.so

password required /lib/security/pam_cracklib.so

password required /lib/security/pam_pwdb.so shadow use_authtok nullok

session required /lib/security/pam_pwdb.so

session optional /lib/security/pam_xauth.so

这两行的意思是只有"wheel"组的成员才能用su命令成为root。注意,"wheel"组是系统中用于这个目的的特殊帐号。不能用别的组名。

第二步

在"/etc/pam.d/su"配置文件中定义有"wheel"组,现在介绍一下怎样让一些用户可以用"su"命令成为"root"。下面是一个例子,让admin用户成为"wheel"组的成员,这样就可以用"su"命令成为"root":

[root@deep]# usermod -G10 admin

"G"是表示用户所在的其它组。"10"是"wheel"组的ID值,"admin"是我们加到"wheel"组的用户。用同样的命令可以让其他的用户可以用su命令成为root。

十三、 把rpm程序转移到一个安全的地方,并改变默认的访问许可

一旦在上用rpm命令安装完所有需要的软件,最好把rpm程序转移到一个安全的地方,如:软盘或其它你认为安全的地方。因为如果有人入侵了你的服务器,他就不能用rpm命令安装那些有害的软件。当然,如果将来要用rpm安装新的软件,你就要把rpm程序拷回原来的目录。把rpm程序移到软盘上,用下面的命令:

[root@deep]# mount /dev/fd0 /mnt/floppy/

[root@deep]# mv /bin/rpm /mnt/floppy/

[root@deep]# umount /mnt/floppy

注意:千万不要把rpm程序从系统中卸载掉,否则以后就不能重新安装它,因为安装rpm程序或其它软件包本身就要用rpm命令。

还有一点要注意的是,把rpm命令的访问许可从默认的755改成700。这样非root用户就不能使用rpm命令了。特别是考虑到万一在安装完新软件之后忘了把rpm程序移到一个安全的地方,这样做就更有必要了。

改变"/bin/rpm"默认的访问权限,用下面这个命令:

[root@deep]# chmod 700 /bin/rpm

十四、登录shell

为了方便重复输入很长的命令,bash shell可以在"~/.bash_history"文件("~/"是家目录,每个用户都是不一样的)中存500个曾经输入过的命令。每一个有自己帐号的用户,在自己的家目录中,都会有".bash_history"文件。可能会有这种情况,用户在不该输入口令的地方输入了口令,而输入的口令会在 ".bash_history"文件中保存下来。而且".bash_history"文件越大这种可能性也越大。

在"/etc/profile"文件中HISTFILESIZE和HISTSIZE这两行决定了系统中所有用户的 ".bash_history"文件可以保存多少命令。我建议把"/etc/profile"文件中的HISTFILESIZE和HISTSIZE都设成一个比较小的值,如:20。

编辑profile文件(vi /etc/profile),把这些行改成:

HISTFILESIZE=20

HISTSIZE=20

这样每个用户家目录下的".bash_history"就最多只能存20个命令。如果黑客试图在用户的"~/.bash_history"文件中发现一些口令,他就没有什么机会了。

十五、改变"/etc/rc.d/init.d/"目录下的脚本文件的访问许可

改变启动和停止daemon的脚本文件的权限。

[root@deep]# chmod -R 700 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。我想一般用户没有什么必要知道脚本文件的内容。

注意:如果你安装或升级了一个程序,要用到"/etc/rc.d/init.d/"中system V脚本,不要忘记再检查一下改变和检查这个脚本文件的许可。

十六、"/etc/rc.d/rc.local"文件

在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个"Login:"的提示信息。

第一步

编辑"/ect/rc.d/rc.local"文件,在下面这些行的前面加上"#":

--

# This will overwrite /etc/issue at every boot. So, make any changes you

# want to make to /etc/issue here or you will lose them when you reboot.

#echo "" > /etc/issue

#echo "$R" >> /etc/issue

#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue

#

#cp -f /etc/issue /etc/issue.net

#echo >> /etc/issue

--

第二步

删除"/etc"目录下的"issue.net"和"issue"文件:

[root@deep]# rm -f /etc/issue

[root@deep]# rm -f /etc/issue.net

注意:"/etc/issue.net"文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在"/etc"目录下还有一个"issue"文件,是用户从本地登录时看到的提示。这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把 "/etc/rc.d/rc.local"脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。

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

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

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