out-server
操作系统版本:OpenBSD 4.4
1 硬件
配置1块网卡,映射到/dev/vmnet9。
2 初始安装
安装除了game和Xwindow之外的全部软件包。
配置网络。IP地址:172.18.0.60/24
打开ssh端口。
参考:OpenBSD 4.4 Installation Guide
3 修改内核时区
OpenBSD假定机器硬件时间为UTC时间,而不是本地时间。调整为东八区:
# config -ef /bsd >>>timezone -480 >>quit # config -ef /bsd.mp >>>timezone -480 >>>quit # reboot
这里同时修改了两种内核。
参考:Why is my clock off by several hours?
4 切换内核(可选)
使用SMP内核替代默认的单CPU内核:
# cd / # cp bsd bsd.sp # cp bsd.mp bsd # reboot
5 安装源代码
安装kernel与userland源代码:
# cd /usr/src # tar xzvf /root/sys.tar.gz # tar xzvf /root/src.tar.gz
参考:Fetching the appropriate source code
6 安装补丁
下载各个补丁,根据补丁指示进行操作。
注意:如果补丁涉及编译内核,在重启之前要进行前面第3步设置时区的操作。
7 建立普通用户
# adduser
用户名:duangw,添加到组wheel。
参考:What is the best way to add and delete users?
8 关闭不需要的网络服务
编辑/etc/inetd.conf,注释掉所有不需要的服务,如time、comsat等。
编辑/etc/rc.conf.local,增加一行:
sendmail_flag=NO
以取消sendmail服务。
参考:How do I start daemons with the system? (Overview of rc(8))
9 配置ftp服务器
首先添加一个ftp用户:
# echo /usr/bin/false >> /etc/shells # adduser
用户名:ftp;shell:false;其它缺省。
建立目录,调整权限:
# cd /home # chown root ftp # chmod 555 ftp # cd ftp # mkdir pub # chmod 555 pub
编辑/etc/rc.conf.local,增加:
ftpd_flags="-DllUSA"
以上配置的是匿名(anonymous)ftp服务。如果要让系统用户也能使用ftp,则编辑/etc/ftpchroot,添加需要使用ftp的用户名。此时用户的ftp是chroot的。
如果让系统用户不在chroot环境下使用ftp,则修改/etc/rc.conf.loal的相应行为:
ftpd_flags="-DllUS"
参考:Setting up Anonymous FTP Services
参考:Confining users to their home directories in ftpd(8)
10 配置http服务器
编辑/etc/rc.conf.local,增加:
httpd_flags=""
此时的apache是chroot的。如果要取消chroot,则改为:
httpd_flags="-u"
如果要打开ssl(443端口),则进行如下步骤:
# openssl genrsa -out /etc/ssl/private/server.key 1024 # openssl req -new -key /etc/ssl/private/server.key \ -out /etc/ssl/private/server.csr # openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \ -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt
编辑/etc/rc.conf.local,调整为:
httpd_flags="-DSSL"
参考:Tell me about this chroot(2) Apache?
参考:Setting up a Secure HTTP server with SSL(8)
11 配置PF防火墙
编辑/etc/rc.conf.local,增加:
pf=YES
在pf.conf配置中的模板基础上进行修改,使用的是server模板pf.conf-server.ref。复制为/etc/pf.conf,编辑:
# don't filter on the loopback interface set skip on lo # scrub incoming packets scrub in # block spoofed packtes antispoof quick for { lo vic0 } # setup a default deny policy block all #enable services: # ping pass in inet proto icmp icmp-type echoreq # ssh pass in proto tcp to port ssh # http(s) pass in proto tcp to port www pass in proto tcp to port https # ftp pass in proto tcp to port ftp pass in proto tcp to port > 49151 pass out proto tcp from port ftp-data
参考:PF: The OpenBSD Packet Filter