AFTERBOOT(8) OpenBSD 系统管理员手册 AFTERBOOT(8)
名称
[INDENT]afterboot - 系统第一次完全启动后需要检查的事情
[/INDENT]描述
[INDENT]开始
[INDENT]本文档的目的是为安装好OpenBSD系统并第一次重新启动后的系统管理员列出应该检查的项目。旨在让你对系统有一个放心的感觉——没有遗漏的设置项目。我们假设您具备了基本的Unix知识,如果并非这样请输入:
代码: 全选
$ help
这并不提供完整的校正或修改所有项目的帮助信息。因为通过手册(manual pages)和其它方法可以查阅到完整的帮助信息。例如, 要查看 ls(1) 命令的用户手册, 输入:
代码: 全选
$ man 1 ls
管理员们一旦养成了从OpenBSD高质量的用户手册中寻找答案的习惯就会迅速熟悉OpenBSD操作系统。
[/INDENT]勘误
[INDENT]当你完成系统安装时, 极有可能包含于发行版的bugs已经被发现了。所有安全和可靠性的修正都可以在 http://www.openbsd.org/errata.html 找到。我们推荐您经常查看此页面。
[/INDENT]Login
[INDENT]从控制台或通过网络使用ssh(1)来Log in。从安全的角度考虑以root身份登录系统进行常规应用或系统维护不是一个好主意。作为替代方案,我们鼓励管理员创建一个"普通"用户,然后将这个普通用户添加到 ``wheel'' 组内, 然后使用这个用户登录系统,在需要root权限时使用 su(1) 和 sudo(8) 命令。
在安装OpenBSD的过程中也提供了创建一个类似用户账号的选项。如果你在安装时选择了这个选项,系统会自动将这个用户加入``wheel'' 组. 如果你在安装时没有选择这个选项,请参阅下面的段落来添加类似的用户。
要阻止root远程登录, 编辑文件 /etc/ssh/sshd_config,将 PermitRootLogin 设置为``no'' (参看 sshd_config(5))。
[/INDENT]Root password
[INDENT]修改root的password。 (注意,本文档中所提的术语 ``superuser'' 也是指root用户。)
选择一个由数字和特殊字符构成的密码 (不能有空格) ,同时用字母大小写混合的方式。不要用任何语言里的词汇,字典式攻击就是针对这类词汇的。
输入命令
代码: 全选
$ /usr/bin/sudo /usr/bin/passwd root
来修改密码。
我们推荐您在在使用命令 passwd(1), su(1) 和 sudo(8) 时总是给出完整的路径名,因为他可以阻止多数的shell运行被放置在PATH里的不可靠的文件的可能性。而且, superuser的PATH永远不应该包含当前目录 (``.'').
[/INDENT]系统时间
[INDENT]用 date(1) 命令检查系统时间。如果需要,修改日期时间,和/或将 /etc/localtime 的符号链接到 /usr/share/zoneinfo 目录下的正确的时区。
例如:
将日期设置为1999年1月27日下午3:04:
代码: 全选
# date 199901271504
代码: 全选
# ln -fs /usr/share/zoneinfo/Canada/Atlantic /etc/localtime
[/INDENT]检查主机名
使用hostname命令校验机器的主机名是否正确。如果需要修改请参阅 hostname(1) 的用户手册。你还需要编辑文件 /etc/myname 以便下次启动后仍然有效。
要校验网络接口配置
[INDENT]首先要做的是运行一个 ifconfig -a 命令来查看是否所有接口都被正确地配置了。通过编辑相应的 /etc/hostname.interface 文件(这里的interface是指次接口的具体名称, 例如, ``le0'') ,如果你不希望重新启动,可以用 ifconfig(8) 来手动配置次接口。 要想了解 /etc/hostname.interface 文件的详细格式请参阅 hostname.if(5) 用户手册。loopback接口看起来像:
代码: 全选
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 32972
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
一个以太网接口看起来像这样:
代码: 全选
le0: flags=9863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
inet 192.168.4.52 netmask 0xffffff00 broadcast 192.168.4.255
inet6 fe80::5ef0:f0f0%le0 prefixlen 64 scopeid 0x1
而一个 PPP 接口看起来像:
代码: 全选
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST>
inet 203.3.131.108 --> 198.181.0.253 netmask 0xffff0000
参阅 netstart(8) 了解如何配置multicast routing.
参阅 dhcp(8) 了解如何为接口配置DHCP.
[/INDENT]检查路由表
[INDENT]运行 netstat -rn 命令,输出会像这样:
代码: 全选
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Interface
default 192.168.4.254 UGS 0 11098028 - le0
127 127.0.0.1 UGRS 0 0 - lo0
127.0.0.1 127.0.0.1 UH 3 24 - lo0
192.168.4 link#1 UC 0 0 - le0
192.168.4.52 8:0:20:73:b8:4a UHL 1 6707 - le0
192.168.4.254 0:60:3e:99:67:ea UHL 1 0 - le0
Internet6:
Destination Gateway Flags Refs Use Mtu Interface
::/96 ::1 UGRS 0 0 32972 lo0 =>
::1 ::1 UH 4 0 32972 lo0
::ffff:0.0.0.0/96 ::1 UGRS 0 0 32972 lo0
fc80::/10 ::1 UGRS 0 0 32972 lo0
fe80::/10 ::1 UGRS 0 0 32972 lo0
fe80::%le0/64 link#1 UC 0 0 1500 le0
fe80::%lo0/64 fe80::1%lo0 U 0 0 32972 lo0
ff01::/32 ::1 U 0 0 32972 lo0
ff02::%le0/32 link#1 UC 0 0 1500 le0
ff02::%lo0/32 fe80::1%lo0 UC 0 0 32972 lo0
默认的网关地址储存在 /etc/mygate 文件里。如果你需要编辑这个文件, 完成后无痛地重新配置网络的方式就是运行 route flush ,然后运行 sh -x /etc/netstart 命令。或者, 你也许喜欢用一系列 route add 和 route delete 命令来手动配置 (参阅 route(8) )。如果你运行 dhclient(8) 你不得不在刷新路由后通过 pkill dhclient 来杀掉它。
如果你希望在接口之间路由数据包, 在 /etc/sysctl.conf 文件内增加下列法则之一或全部(要看是否需要IPv4或者IPv6路由):
代码: 全选
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
默认情况下不会自动转发数据包, 除非RFC需要。
[/INDENT]检查DNS
[INDENT]用 host(1) 或者 dig(1) 来检查域名解析是否工作正常。
多半情况下, 在安装系统时至少一个域名服务器的IP地址已经被加到了 resolv.conf(5) 文件里。如果使用了 DHCP , 每次 dhclient-script(8) 运行时它将重写 /etc/resolv.conf 文件,不过文件 /etc/resolv.conf.tail 可以被用来添加选项以及额外的域名服务器给动态接受的域名。
hosts(5) 文件可用做系统所需的特殊的域名解析选项。
[/INDENT]检查磁盘挂载
[INDENT]通过与比较 /etc/fstab 文件和 mount(8) 以及 df(1) 命令的输出检查磁盘挂载是否正确。例如:
代码: 全选
# cat /etc/fstab
/dev/sd0a / ffs rw 1 1
/dev/sd0d /usr ffs rw,nodev 1 2
/dev/sd0e /var ffs rw,nodev,nosuid 1 3
/dev/sd0g /tmp ffs rw,nodev,nosuid 1 4
/dev/sd0h /home ffs rw,nodev,nosuid 1 5
代码: 全选
# mount
/dev/sd0a on / type ffs (local)
/dev/sd0d on /usr type ffs (local, nodev)
/dev/sd0e on /var type ffs (local, nodev, nosuid)
/dev/sd0g on /tmp type ffs (local, nodev, nosuid)
/dev/sd0h on /home type ffs (local, nodev, nosuid)
代码: 全选
# df
Filesystem 1024-blocks Used Avail Capacity Mounted on
/dev/sd0a 22311 14589 6606 69% /
/dev/sd0d 203399 150221 43008 78% /usr
/dev/sd0e 10447 682 9242 7% /var
/dev/sd0g 18823 2 17879 0% /tmp
/dev/sd0h 7519 5255 1888 74% /home
代码: 全选
# pstat -s
Device 512-blocks Used Avail Capacity Priority
swap_device 131072 84656 46416 65% 0
编辑 /etc/fatab 文件,然后适当地运行and use the mount(8) 和 umount(8) 命令。 参考上面例子以及 fstab(5) 的信息以确定文件格式。
现在你也可能还想挂载一个 NFS 分区, 不过你也可以稍后再做。
[/INDENT]检查正在运行的系统
[INDENT]你可以使用 ps(1), netstat(1), 和 fstat(1) 来分别查看正在运行的进程, 网络连接和网络文件。
[/INDENT][/INDENT]更多的修改
[INDENT][INDENT]现在的系统应该已经可以使用了, 但是你仍可以进行进一步的定制, 例如添加用户等。如果你不需要使用那个package, 可以跳过下面的很多小节。我们建议你在 /etc 目录里根据需要编辑相关的配置文件。
注意,在每次系统启动时 /etc/rc 脚本会重写该目录里的 /etc/motd 文件。如果要保证所有的定制信息完好无损, 请确保你在最前面加上了两个空行,否则你的信息将被覆盖。
[/INDENT]添加新用户
[INDENT]adduser(8) 脚本用于添加用户。 你也可以用 vipw(8) 在 /etc/passwd 文件里添加用户,然后手动编辑 /etc/group 来添加新的组。 也许你还希望通过编辑 /etc/login.conf 文件来调整 login.conf(5)里相关的文件授权。在su(1) 用户手册里你可以看到如果某些用户需要root访问权限(non-Kerberos),你必须确保已经这些用户其加入到了 `wheel' 组里了,例如:
代码: 全选
wheel:*:0:root,myself
如果需要使用来进行认证请参阅 login_krb5(8)的相关说明。
[/INDENT]系统命令脚本
[INDENT]在每次系统启动时、单用户模式退出后、以及shutdown时,位于 /etc/rc.* 脚本将被调用。整个过程或多或少地被主脚本 /etc/rc 控制,系统管理员不应该修改这个脚本。
/etc/rc 的动作依次由 /etc/rc.conf 文件里的变量来决定。再强调一次,管理员不应该修改这个脚本:
特定的系统修改应该针对文件/etc/rc.conf.local来进行(没有就创建一个)。
任何需要在系统设置自身安全级别前运行的命令都应该在 /etc/rc.securelevel 文件里进行声明, 而且系统设置自身安全级别后运行的命令应该在 /etc/rc.local 里进行声明。而在系统shutdown前需要运行的命令应该在 /etc/rc.shutdown 里进行设定。
要了解更多系统 startup/shutdown 的有关文件, 请参阅 rc(8) , rc.conf(8) , securelevel(7) , 以及rc.shutdown(8) 。
如果你已经安装了 X, 你可能想开启 xdm(1) , 也就是 X 显示管理器。你只需在 /etc/rc.conf.local 文件里对xdm_flags 的值进行修改。
[/INDENT]设定键盘类型
[INDENT]有些构架允许键盘类型控制。你可以使用 kbd(8) 命令来制定键盘编码。 kbd -l 将显示有效地编码类型。 kbd xxx 则是设定为XXX编码。将此编码储存在 /etc/kbdtype 文件内可以确保重新启动后仍旧有效。
[/INDENT]打印机
[INDENT]编辑 /etc/printcap 和 /etc/hosts.lpd 来进行任何打印机的设定。如果需要请参考 lpd(8) 和 printcap(5) 。
[/INDENT]Mail aliases
[INDENT]编辑 /etc/mail/aliases 并设置三个标准的别名,无论用于一个邮件列表或者系统管理员。
代码: 全选
# Well-known aliases -- these should be filled in!
root: sysadm
manager: root
dumper: root
修改后运行 newaliases(8) 。
[/INDENT]Sendmail
[INDENT]OpenBSD上默认的邮件代理是 sendmail(8)。关于如何配置alternative mailer的细节请参阅 mailer.conf(5) 。
OpenBSD为简单安装默认派送了一个 /etc/mail/localhost.cf 文件; 它由位于 /usr/share/sendmail/cf 文件内的 openbsd-localhost.mc 文件生成。请参阅 /usr/share/sendmail/README 文件以便生成你自己的sendmail配置文件。在默认安装的情况下, sendmail被配置为仅接受来自本地主机的连接、而且不接受任何来自外部接口的连接。这使它可以从本地发送邮件,但不从远程服务器那里接收邮件, 这对拥有一台中央邮件接收服务器以及一些客户端的情况来说是很合理的。如果你想让sendmail接收来自外部的连接, 需要在 /etc/rc.conf.local 文件里用到注释里的 /etc/mail/sendmail.cf 文件和修改 sendmail_flags 变量。这个文件由 openbsd-proto.mc 产生。
注意:默认情况下 sendmail 也在端口587上监听。这是为了贯彻 RFC 2476 信息提交协议。你可以在 sendmail .mc 文件里通过设置 no_default_msa 选项来禁用它。请参阅 /usr/share/sendmail/README 文件以获取更多的信息。
[/INDENT]每日, 每周, 每月的脚本
[INDENT]请复习 daily(8) 以了解周期性的系统维护脚本怎样工作以及如何定制它们: 例如, 启用 ROOTBACKUP
或者禁用 VERBOSESTATUS, 或者在 /etc/daily.local, /etc/weekly.local, 或 /etc/monthly.local里添加脚本维护代码。
[/INDENT]加强安全性
[INDENT]安装了 X 后,你可能希望通过编辑 /etc/fbtab 文件来增强系统安全性。你可以通过在 /etc/inetd.conf 里注释掉不需要的选项并且仅开启确实需要的选项来实现。
[/INDENT]在 /etc 里的其它文件
[INDENT]查看 /etc 里的其它文件,并根据自己的需要进行调整。 (请勿编辑以 .db 为后缀的文件 -- 例如 pwd.db, spwd.db, 和 localtime, rmt, 以及所有的目录。)
[/INDENT]Crontab (后台运行进程)
[INDENT]以root的身份运行 crontab -l 来检查什么进程在后台运行,并查看是否有不需要的进程启动了。如果你还需要运行其它的一些后台进程或修改现有的进程请参阅 crontab(5) 。
[/INDENT]隔天清理
[INDENT]当(系统安装后)第一天晚上 security(8) 运行后, 会修改文件、目录、和设备的所有者和权限; root用户可能会收到标题为: "<hostname> daily insecurity output" 的邮件。这封邮件包含了一系列安全建议, 它就像一份这样的清单:
代码: 全选
var/mail:
permissions (0755, 0775)
etc/daily:
user (0, 3)
最稳妥的方式是按部就班地执行清单上的建议。推荐值是圆括号内的第一个值, 而当前的设置值是第二个。这份清单是 mtree(8) 用 /etc/mtree/special 产生的。根据需要使用 chmod(1) , chgrp(1) 和 chown(8) 。
[/INDENT]Daemons
[INDENT]根据需要启用或禁用所有的守护进程。 intro(8) 包含了OpenBSD系统上所有守护进程的指南。
[/INDENT]Packages
[INDENT]安装自己的packages. OpenBSD的ports collection包含了大量的第三方软件。很多port提供了二进制安装包,你可以从 ftp://ftp.openbsd.org 或其它镜像下载, 然后使用 pkg_add(1) 命令安装。 请参阅 ports(7) 和 packages(7) 以获取更多的信息。
直接拷贝软件提供上的二进制包并安装它们。你需要安装所有需要的共享库等。请参阅 compat_* 用户手册以了解怎样安装和使用兼容模式。
还有一些port软件仅以源代码的方式提供, 这可能是它们是尚未port进OpenBSD、或者因为软件许可的限制无法提供二进制安装包。有时候你需要查看邮件列表里对以前别人遇到问题的修正。
[/INDENT]编译内核
[INDENT]有关构建和修改内核的信息包含在config(8) 里。
[/INDENT][/INDENT]也请参阅
[INDENT]ksh(1), man(1), pkg_add(1), ps(1), vi(1), hier(7), config(8), dmesg(8), ifconfig(8), intro(8), sudo(8), sysctl(8)
[/INDENT]HISTORY
This document first appeared in OpenBSD 2.2.
OpenBSD 4.9 February 16, 2011 OpenBSD 4.9