从 /etc/rc.d/rc.S 运行的配置脚本首先查找名为 'sentry.conf' 的配置文件,该文件位于软盘上,如果存在,则会被挂载到 /floppy。 为了让用户能够在任何特定环境中使用 Linux 系统,用户必须能够用自己的副本替换系统默认文件。 'sentry.conf' 文件基本上告诉配置脚本应该替换哪些文件以及这些文件在哪里。
在 Sentry 防火墙 CD 的 /SENTRY/scripts/cd-config/ 目录中可以找到 sentry.conf 文件的良好示例。 配置软盘镜像 (1.44M) 也可以在 CD 的 /SENTRY/images/ 中找到。 这些文件也可以在网站 http://www.SentryFirewall.com/ 上找到
系统的主配置文件名为 'sentry.conf'。 它将首先在软盘 (/dev/fd0) 上查找。 该文件接受多个配置指令,其中许多指令将在下面讨论。
一个基本的配置文件如下所示('#' 符号后的所有内容都被解释为注释)
----snip---- ## Basic Sentry Firewall CD config file(sentry.conf) rc.local = /floppy/config1/rc.local fstab = /floppy/config1/fstab passwd = /floppy/config1/passwd shadow = /floppy/config1/shadow # EOF # ----snip----
语法非常简单,默认的 'rc.local' 文件将被位于 '/floppy/config1/' 目录中的用户定义的 'rc.local' 文件替换。 'fstab'、'passwd' 和 'shadow' 文件也是如此。 但重要的是要记住,sentry.conf 文件首先会在 /dev/fd0 上查找,如果找到,则会挂载到 /floppy。 这就是为什么所有这些文件都显示位于 /floppy 目录中,它只是软盘的挂载点。
注意: 从 1.3.0 版本开始,用户现在可以省略 `/floppy' 前缀。 因此,例如,sentry.conf 中说以下内容的行
shadow = config1/shadow
将被假定为表示(在大多数情况下)以下内容
fstab = /floppy/config1/shadow只要 /floppy/config1/shadow 存在。
不幸的是,您不能随意替换文件,例如,以下内容可能无法正确解析
foo.conf = /floppy/config1/foo.conf
配置脚本仅识别一定数量的配置文件,因此它可能不知道如何处理 "foo.conf"。 但是,还有其他非常简单的方法可以将配置文件复制到其正确的位置。 这些方法将在下面讨论。
从 1.0.5 版本开始,识别新的配置指令语法; 带有 "http://" 或 "ftp://" 前缀的指令。 这基本上意味着现在支持以下语法
inetd.conf = ftp://[user:pass@]123.123.123.123/config1/inetd.conf hosts = http://[user:pass@]123.123.123.123/config1/hosts
从 1.3.0 版本开始,也支持 "https://", "scp://", 和 "sftp://" URL。 例如
shadow = scp://<user>:<pass>@123.123.123.123/dir/shadow passwd = sftp://<user>:<pass>@123.123.123.123/dir/passwd fstab = https://[user:pass@]123.123.123.123/dir/fstab
注意: 通过 scp 或 sftp 检索文件时,用户名和密码字段是必需的。 不允许使用空密码。
为了实现这一点,配置脚本需要能够设置以太网接口,并从 sentry.conf 文件中获取名称服务器信息。 完成此操作的语法如下
device{1..10} = <device>:<driver>:<IP address>[|Gateway_IP] or.. device{1..10} = <device>:<driver>:dhcp[|Hostname]
以及设置名称服务器
nameserver = <IP_ADDRESS>
此外,当使用 "http"、"https" 或 "ftp" 检索文件时,您还可以设置代理服务器。 以下指令将允许您这样做(并非所有指令都可能对您的设置是必需的)
http_proxy = http://<hostname>/ ftp_proxy = http://<hostname>/ proxy-user = <PROXY_USER> proxy-passwd = <PROXY_PASSWORD>
也可能需要被动 FTP。 如果是这样,请使用 'passive-ftp' 选项,即
passive-ftp = <on|off> ## Default == off
因此,例如,要设置一个名为 "eth0" 的接口,它使用 "tulip" 驱动程序并且可以从 DHCP 服务器获取其 IP 地址,我们可以使用以下行
device1 = eth0:tulip:dhcp
如您所见,总共允许 10 个设备。 假设我们现在要设置一个接口 "eth1",它使用 "rtl8139" 芯片,并具有静态 IP (192.168.1.2) 和默认网关 (192.168.1.1)
device2 = eth1:8139too:192.168.1.2|192.168.1.1
注意: 重要的是要记住,无论您在配置过程中设置了哪些设备,都将在配置完成后立即关闭。 此设置仅用于您可以通过网络,通过 http(s)/ftp/scp/sftp 检索配置文件。 有关更永久的网络配置,请使用 rc.inet1 文件。
----snip---- ## Basic Sentry Firewall CD config file to retrieve files via HTTP(s)/FTP/SCP/SFTP. device1 = eth0:tulip:192.168.1.2|192.168.1.1 nameserver = 123.123.123.123 ## This should be the IP of your DNS server. rc.M = ftp://user:pass@config.sentry.net/node1/rc.M rc.inet1 = http://user:pass@config.sentry.net/all_nodes/rc.inet1 passwd = scp://user:pass@config.sentry.net/all_nodes/passwd shadow = sftp://user:pass@config.sentry.net/node1/shadow # EOF # ----snip----
将文件 /floppy/someconfig.conf 复制到 /etc/someconfig.conf -
/floppy/someconfig.conf |= /etc/someconfig.conf OR, this does the same thing - /etc/someconfig.conf = /floppy/someconfig.conf and this is also possible(v1.3.0) - /etc/someconfig.conf = ftp://<server>/someconfig.conf
创建一个名为 /etc/someconfig.conf 的符号链接,指向 /etc/otherconfig.conf -
/etc/someconfig.conf => /etc/otherconfig.conf
include 指令。 从另一个位置获取另一个 sentry.conf 文件 -
include = ftp://user:pass@config.sentry.net/node1/sentry.conf
但是请记住,include 指令是最先被解析的指令之一。 从包含的 sentry.conf 文件中解析出的任何与先前解析的 sentry.conf 文件中的指令冲突的配置指令都将覆盖旧的指令。
为了从单个位置管理多个节点,您可以使用位于软盘上的裸 sentry.conf 文件,然后从您的 ftp 或 http 服务器获取文件。
----snip---- ## Basic Sentry Firewall CD config file. device1 = eth0:tulip:dhcp nameserver = <DNS_IP> include = ftp://user:pass@config.sentry.net/node1/sentry.conf ----snip----
然后将解析包含的 sentry.conf 文件,并根据需要通过 http 或 ftp 替换文件。 您现在可以在中心位置编辑您的 sentry.conf 和配置文件。
CD-ROM 上提供了示例配置磁盘镜像。 该磁盘是 ext2 格式化的磁盘,位于 CD 上的 '/SENTRY/images/' 目录中。 磁盘上还有一个非常完整的 sentry.conf 文件,可以帮助澄清许多这些指令。 使用如下命令创建配置磁盘
blah@wherever:~$ dd if=/cdrom/SENTRY/images/ext2-144.img of=/dev/fd0
2880+0 records in
2880+0 records out
磁盘镜像和示例 sentry.conf 文件也可以在网站 http://www.SentryFirewall.com/ 上找到