当前位置:Linux教程 - RedHat - 安全安装REDHAT并介绍Bastille(上)

安全安装REDHAT并介绍Bastille(上)

目录:
准备工作
初始化操作系统安装
安装SSH
Bastille: 介绍,运行,检查和问题
安全工具和系统管理软件
补丁和LOG记录
完整性检查和备份
安装,测试和安全安装应用程序
启动
常规维护
其他注意点


1,准备工作
-使事情尽量简单化:最好的期望是在主机上只运行一或者两个服务。并且把运行
的服务尽量在分散在多台机器,因为这样要比在所有事情都同在一台机器上运行
要安全的多,这样可以方便的隔离应用程序,使其更牢固,更容易查找错误和
升级软硬件。一切运行的规则是你所需服务的最低限度要求。
-硬件部分:如果你有Sun/SPARC硬件,考虑通过串行口控制台(console)来进行
安装,去掉键盘屏幕和帧缓冲区(framebuffer),避免使用X11并是使用熟悉的
命令行进行操作。
-安全地下载:安全过程需要在一个隔离的或者没有路由网络来安装,在这种情
况下,你可以通过控制台以ROOT身份FTP到系统,或者从新的系统中下载。如果
你没有隔离的网络(这通常不推荐),那就改变ROOT的密码以方便的下载文件,
完成后再次改变密码,马上关闭网络系统。这样就减少存在潜在攻击者危险的
机会。
-明确知道系统究竟要干什么和硬件将被怎样配置等等,着重注意一些如要调用
RPC的应用程序。
-理解应用程序是怎样工作是非常重要的一步(他们使用的端口,设备和文件)。
判断使用某些程序有可能所承受的安全风险。

2,安全操作系统

在x86硬件上,屏幕,键盘和鼠标是必须的,从CDROM或者启动软盘启动并选择
安装。
在SPARC硬件上,整个的安装可以不使用屏幕和键盘(称为""headless sever""),
连接串口控制台,开机,通过发送Stop-A(如~#,~%b或者F5,具体是依据你是使用
tip,cu或者vt100终端)出现OK提示符,再开始安装过程:boot cdrom -安装。

REDHAT的安装过程有点不符常理并且安装版本的不同,选项也各有不同:
-理论上""定制安装(custom install)""是用来安装一些需要的模块,但其中有点
不正常,如FTP服务器没有安装(在SPARC版本中,可以使用rpm -i
/mnt/cdrom/RedHat/RPMS/wu-ftpd-2.6.0-1.sparc.rpm)来进行修正。
-Gnome永远是被安装的,即使你选者KDE或者选者不包括GNOME。可以使用startx
来启动GNOME和使用kde来启动KDE
-在所有安装模式中,国际键盘映射对于命令行和GUI没有进行正确的设置。

MANDRAKE 7.0安装中没有这些问题

在此,选择server或者custom安装,设置主机名,IP参数,时区等等。不要激活
任何名字服务如NIS和NFS,选者手工磁盘分区:
-考虑一个独立的,容量较大的/var文件系统作为syslog/web/news/proxy服务
或者防火墙过滤器。
-一些包含很多数据的服务,如WEB,FTP,应该使用独立的磁盘来进行数据处理。
-如果你不想要以只读方式来安装(mount)分区,并且没有LOG记录数据和应用
程序数据,就考虑把整个启动盘放在根目录下。
-对于2G磁盘的分区建议:500MB/(root+var),200MB交换分区,1300MB/usr分区.
-对于1G磁盘的分区建议: 300MB/(root+var),200MB交换分区,500MB/usr分区.
-推荐使用8G大小来作为LOG服务器空间数据:100MB/root,300MB/交换分区,
800MB/usr,6.9G/var
-请查看[9]来获得更多的磁盘分区讨论

为ROOT设置一个强壮的密码(至少8个由字母,数字和标点符号组成),建立一个额外
的test用户,因为你不能通过以ROOT身份来登录网络.""init level""必须设置为3
级(是命令行登录级别),这比设置为5(图形形式登录级别)更安全,如果确实需要
GUI,可以使用startx手工来启动GUI系统.

通过串行端口登录对于安装故障检查和熟悉命令行是很有帮助的.想要在X86硬件
上通过串行口A来进行登录,可以在/etc/inittab增加下面的一行文字:
con:23:respawn:/sbin/getty ttyS0 VC
上面的设置对于SPARC机器是不需要的,因为SPARC机是自动配置好这工作的,如果
要允许通过这个串行口来允许ROOT登录,则必须在/etc/securetty增加ttsS0.

3,安装SSH
安装SSH,对于保护SHELL很有好处.Bastille can do this.但你需要有INTERNET
访问能力,我在SPARC问题上存在问题并且更喜欢知道在编译SSH时到底使用了什么
选项.I had problems with SPARC, and prefer to know exactly what options
are used to compile SSH.

对于Linux中''ssh1''和''OpenSSH''有两个KEY来实施,这里我们使用ssh1来做例子,
OpenSSH在某些方法上更具戏剧性,但ssh1还支持securid,请在[7]这里查看SSH
的具体讨论.

可以使用下载源代码和RPM来获得SSH(可以在[7]下查看网站列表:
1)源代码使用下面的方法来安装:
zcat ssh-1.2.27.tar.gz | tar xf -
cd ssh-1.2.27; ./configure --prefix=/usr --without-none --without-rsh --without-idea
make && make install

2)RPMS使用下面的方法来安装(下面是SPARC的例子):
rpm -i ssh-1.2.27-7i.sparc.rpm ssh-clients-1.2.27-7i.sparc.rpm
rpm -i ssh-extras-1.2.27-7i.sparc.rpm ssh-server-1.2.27-7i.sparc.rpm

拷贝一启动文件(如sshd)到/etc/rc.d/init.d/ssh并且设置连接。

正确配置/etc/ssh_config文件(查看[7]),使只有有""知名公共钥匙""(known public keys)
命名的主机可以访问,并且不启用rhosts认证方式来避免信任方式来访问,只
允许特定的用户和主机来访问SSH。


拒绝守护程序(daemon)帐号访问系统,如确定下面守护程序帐号不能访问系统:
DenyUsers daemon bin sync adm lp shutdown halt mail news uucp nobody
operator sympa, squid, postgres, gopher, postfix, xfs.


-------------------------------------------

4,Bastille

介绍

Bastille是一套开放源代码脚本,设计目的是用来使REDHAT 6.0或者6.1系统安装
更强壮更安全(此脚本将很快支持6.2版本)。第一版本在1999年的12月推出并
作出了一些重大的改进。现在使用的2000年3月15号V1.0.4版本。

那Bastille究竟做什么样的工作呢:不起用不需要的守护程序,起用和改进LOG记
录,提高SUID和文件权限的严格使用性,提高帐号安全问题和甚至为DNS服务提供
chroot环境。但请注意Bastille在其他如SUSE变种的LINUX上不适用,因为各个
LINUX系统变种有自己的运行机制和不同的启动文件。

Bastille启用自动化的和交互的接口,基于文本菜单的交互式安装能非常有帮助的解释
有关的各种选项和生成用来在下一步实际配置收紧系统安全使用的配置文件
(tuigenerated-raw-config)。此配置文件可以编辑和拷贝到其他同样系统中
以用来更快的配置系统安全。

--运行Bastille

1,下载Bastille并展开到/root目录下。
2,在这阶段停止网络接口,如下面所示(接口名字在各个系统中各不相同):
ifconfig eth0 down
3,运行Bastille交互式脚本:
CD /root/run-Bastille; ./InteractiveBastille.pl
注意:在SPARC机器上此交互脚本不能很好的工作,会出现下面的错误提示:
Can''t load ''./Curses.so'' for module Curses: ./Curses.so: ELF file data
encoding not big-endian at /usr/lib/perl5/5.00503/sparc-linux/DynaLoader.pm
line 169.
可以按照下面的方法来进行修补以在SPARC机器上工作:
从CPAN中下载Curses-1.02.tar.gz并按如下方法来进行补丁安装:
perl Makefile.PL; make && make install
在改变至Bastille目录和去掉Curses库:
CD /root/run-Bastille; mv Curses.* /tmp;
在再次运行InteractiveBastille.pl脚本。

InteractiveBastille.pl的运行可以逐步的来更安全的设置,提示那些你系统
需要更加加强哪些不需要,你可以通过提示来关闭不需要的守护程序,起用LOG
记录,加强SUID和文件的权限设置,提高帐号安全和为DNS服务提供chroot环境。

下面的这个脚本默认接受的配置(查看tuigenerated-raw-config):
--SUID:除了ping和Traceroute关闭所有SUID属性工具,启用shadow密码档。
--检查并设置无第二个UID为0的帐号。
--没有LILO密码
--不启用编译器(只有ROOT可以访问)。
--守护程序设置:关闭SENDMAIL服务,并通过cron来运行SENMAIL,下载SSH,
启用Apache,CGI,关闭打印,关闭匿名FTP服务。
--关闭所有RPC服务,即使你需要使用KDE。

回顾你所选择的设置,可以通过view等编辑器来查看tuigenerated-raw-config
配置文件。

4,下面是运行实际的系统安全收紧操作:
./BackEnd.pl < tui-generated-raw-config > screen.log

检查结果

--检查安全收紧操作的LOG记录:/root/bastille-action-log
--重新启动
--以ROOT身份登录并检查进程列表,其结果应该是如下所示:
tests# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 10 17:07 ? 00:00:03 init [3]
root 2 1 0 17:07 ? 00:00:00 [kflushd]
root 3 1 0 17:07 ? 00:00:00 [kupdate]
root 4 1 0 17:07 ? 00:00:00 [kpiod]
root 5 1 0 17:07 ? 00:00:00 [kswapd]
root 6 1 0 17:08 ? 00:00:00 [mdrecoveryd]
root 276 1 1 17:08 ? 00:00:00 syslogd -m 0 -a /home/dns/dev/lo
root 286 1 0 17:08 ? 00:00:00 klogd
root 301 1 0 17:08 ? 00:00:00 crond
root 310 1 3 17:08 ? 00:00:00 /usr/sbin/sshd
root 369 1 0 17:08 ttyS0 00:00:00 login -- root
root 370 1 0 17:08 tty1 00:00:00 /sbin/mingetty tty1
root 371 1 0 17:08 tty2 00:00:00 /sbin/mingetty tty2
root 372 1 0 17:08 tty3 00:00:00 /sbin/mingetty tty3
root 373 1 0 17:08 tty4 00:00:00 /sbin/mingetty tty4
root 374 1 0 17:08 tty5 00:00:00 /sbin/mingetty tty5
root 375 1 0 17:08 tty6 00:00:00 /sbin/mingetty tty6
root 378 369 1 17:08 ttyS0 00:00:00 -bash
root 390 378 0 17:08 ttyS0 00:00:00 Ps -ef

--检查网络连接,如:

# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
raw 0 0 *:icmp *:* 7
raw 0 0 *:tcp *:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 239 /dev/log
UNIX 0 [ ] STREAM CONNECTED 108 @0000000f
UNIX 0 [ ] DGRAM 241 /home/dns/dev/log
UNIX 0 [ ] DGRAM 353
UNIX 0 [ ] DGRAM 282
UNIX 0 [ ] DGRAM 254