步骤1

编辑 hosts.deny 文件(/etc/hosts.deny),加入如下行:

# Deny access to everyone.

ALL: ALL@ALL, PARANOID

语句的意思是,除非在 allow 文件中说明允许访问,所有服务、所有主机都被拒绝。

步骤2

编辑 hosts.allow 文件(/etc/hosts.allow),例如在文件中添加如下行:

ftp: 202.54.15.99 foo.com

对于你的客户机来说:202.54.15.99为IP地址,foo.com为允许使用ftp的一个客户机。

步骤3

tcpdchk 程序是tcpd wrapper配置的检查程序。它对tcpd wrapper的配置进行检查,并报告所发现的潜在的和实际存在的问题。配置完成后,运行tcpdchk 程序:

[Root@kapil /]# tcpdchk

不要显示系统发行文件

当别人远程登录时,不应该显示系统发行文件。做法是在“/etc/inetd.conf”文件中更改telnet选项:

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

改为:

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

在末尾加“-h”标记使后台程序不显示任何系统信息,而只给用户提供一个 login: 提示符。

更改“/etc/host.conf”文件

“/etc/host.conf”文件用来指定如何解析名称的方法。编辑 host.conf 文件(/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

第一个选项首先通过DNS解析主机名称,然后解析主机文件。multi 选项用于确定“/etc/hosts”文件中的主机是否有多个IP地址(多接口以太网)。

nospoof 选项指明该机器不允许假信息。

为“/etc/services”文件免疫

必须为“/etc/services”文件进行磁盘免疫,以避免对文件未经授权的删除或添加。使用如下命令:

[root@kapil /]# chattr i /etc/services

不接受从不同控制台的根用户登录

“/etc/securetty”文件可以指定“root”用户允许从哪个TTY设备登录。编辑“/etc/securetty”文件,在不需要的tty前面加“#”,禁用这些设备。

禁止任何人使用su命令

su命令(Substitute User,替代用户)可以使你成为系统的现有用户。如果不希望别人使用su进入根帐户,或者对某些用户限制使用“su”命令,则在“/etc/pam.d/”目录的“su”配置文件顶部加上下文中给出的两行代码。

编辑su文件(/etc/pam.d/su),在文件顶部添加如下两行:

auth sufficient /lib/security/pam_rootok.so debug

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

意思是,只有“wheel”组的成员可以用su命令;其中还包括了日志。你可以在wheel组中添加允许使用该命令的用户。

shell日志

shell可存储500个旧命令在“~/.bash_history”文件中(其中“~/”代表主目录),这样可以便于重复前面的长命令。系统中的每个帐号用户在各自的主目录中都有这个“.bash_history”文件。为安全起见,应使shell存储较少的命令,并在注销用户时将其删除。

步骤1

“/etc/profile”文件中的 HISTFILESIZE 和 HISTSIZE 行决定了系统中所有用户的“.bash_history”文件可容纳的旧命令个数。建议将“/etc/profile”文件中的 HISTFILESIZE 和 HISTSIZE 设为比较小的数,比如30。

编辑 profile 文件(/etc/profile),并更改:

HISTFILESIZE=30

HISTSIZE=30

步骤2

系统管理员还应在“/etc/skel/.bash_logout”文件中加进“rm -f $HOME/.bash_history”行,这样就可以在每次用户退出时删除“.bash_history”文件。

编辑 .bash_logout 文件(/etc/skel/.bash_logout),并添加如下行:

rm -f $HOME/.bash_history

禁用Control-Alt-Delete键盘关机命令

只要在该行前面加“#”,改为注释行。在“/etc/inittab”文件中找到:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

改为:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

然后,为使更改生效,在提示符下输入:

[root@kapil /]# /sbin/init q

修正脚本文件在“/etc/rc.d/init.d”目录下的权限

对脚本文件的权限进行修正,脚本文件用以决定启动时需要运行的所有正常过程的开启和停止。添加:

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

这句指的是,只有根用户允许在该目录下使用 Read、Write,和 Execute 脚本文件。

隐藏系统信息

默认情况下,当用户登录到 Linux 中时,会显示 Linux 发行名称、版本、内核版本,以及服务器名称。这些已经足够让黑客获取服务器的信息了。正确的做法是只为用户显示“Login: ”提示符。

步骤1

编辑“/etc/rc.d/rc.local” 文件,并将“#”标在下列行的前面:

QUOTE:

# 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

步骤2

然后在“/etc”目录下删除“issue.net”和“issue”文件:

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

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

禁用通常不用的SUID/SGID程序

如果设为 SUID 根用户,普通用户也可以作为根用户运行程序。系统管理员应该减少 SUID/GUID 程序的使用,并禁用那些不需要的程序。

步骤1

要从根用户的程序中搜索所有包含“s”字符的文件,使用命令:

[root@kapil]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ;

要在搜索到的程序中禁用 suid 程序,键入如下命令:

[root@kapil /]# chmod a-s [program]

按照上述的一些安全指南,系统管理员就可以达到基本的系统安全要求。上述的一些操作是一个连续的过程。系统管理员必须保持它们的连续性,才能使系统真正安全。


相关内容