{{category OpenBSD,nolink}}OpenBSDのサーバ関連の設定 (2010-06-25 4.7 ベースに) !!!起動時のサーバ起動設定 /etc/rc.conf, /etc/rc.conf.local にサービスごと起動の設定を書く。通常は rc.conf.local に記述する。 ※インストール時に ntpd を有効にするようにした場合、rc.conf.local に既に書かれている。 /etc/rc.conf では、sshd, inetd, pf(4.6から) が起動する設定になっている。また、sendmail はローカルのみの受信する設定で起動する。 ## OpenNTPD = Network Time Protocol Daemon ntpd_flags= # for normal use "" ## OpenSSH = Secure Shell Daemon #sshd_flags="" # for normal use: "" # It has already set it by ``/etc/rc.conf '' ## sendmail = Simple Mail Transfer Protocol Daemon # For normal use: "-L sm-mta -bd -q30m", and note there is a cron job #sendmail_flags="-L sm-mta -C/etc/mail/localhost.cf -bd -q30m" ## Apache = Hypertext Transfer Protocol Server # use -u to disable chroot, see httpd(8) # for normal use: "" (or "-DSSL" after reading ssl(8)) #httpd_flags="" *関連 man → [rc(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=rc&sektion=8&arch=i386] , [rc.conf(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=rc.conf&sektion=8&arch=i386] !!!スーパーサーバ(inetd)の設定 '''/etc/inetd.conf''' にサービスごと起動の設定を書く 基本 inetd 経由でサービス起動ぢゃないのですべてコメントアウト。 pop3 でメールを受信する場合は、pop3 を有効にする。 *関連 man → [inetd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=inetd&sektion=8&arch=i386] , [identd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=identd&sektion=8&arch=i386] , [inetd.conf(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=inetd.conf&sektion=5&arch=i386] !!!ログローテート(newsyslog)の設定 '''/etc/newsyslog.conf''' に設定を書く # logfile_name owner:group mode count size when flags /var/cron/log root:wheel 600 3 10 * Z *''logfile_name'' は、対象のファイル名。 *''owner:group'' は、アーカイブしたファイルのオーナとグループ。省略するとログファイルと同じになる *''mode'' は、新しいファイルの属性を指定。 *''count'' は、アーカイブのファイル数 (正確には、0 から count までの count+1 個)。 *''size'' は、このサイズ(KB単位)を超えたときにローテートする。'''*''' の場合はサイズでは行わない。 *''when'' は、この時間・時刻でローテートする。'''*''' の場合は時間では行わない。 *''flags'' は、オプション指定。'''Z''' はアーカイブを圧縮する。'''B''' はバイナリのログファイルとして扱い、新しいログファイルの先頭に newsyslog 自身のログを残さない。 *''pid_file'' は、PIDを含むファイルを絶対パスで指定する。指定があるとそのプロセスに対してSIGHUPを送る。 *関連 man → [newsyslog(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=newsyslog&sektion=8&arch=i386] !!httpd logs 通常はそのままでもよいが、webサーバのログは対象になっていないので必要なら追加する。(下記例は月1で10ヶ月分残す) /var/www/logs/access_log 640 9 * $M1D0 ZB /var/www/logs/httpd.pid /var/www/logs/error_log 640 9 * $M1D0 ZB /var/www/logs/httpd.pid /var/www/logs/ssl_engine_log 640 9 * $M1D0 ZB /var/www/logs/httpd.pid /var/www/logs/ssl_request_log 640 9 * $M1D0 ZB /var/www/logs/httpd.pid /var/log/suexec_log 640 7 * 168 ZB !!!パケットフィルタ(pf)の設定 '''/etc/pf.conf''' に設定を書く ※4.6からデフォルトで起動するように rc.conf が変更されている。 *[PF: The OpenBSD Packet Filter|http://www.openbsd.org/faq/pf/index.html] *関連 man → [pfctl(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=pfctl&sektion=8&arch=i386] , [pflogd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=pflogd&sektion=8&arch=i386] , [pf.conf(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&sektion=5&arch=i386] //!!pf.conf用 IPv4アドレステーブル定義 (メモ) //昔にpfを使った際に調べて使ったIPv4のアドレステーブル (ログとかも含めてpf用のページ作りたいな…) // # private IP address. // table const { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, } // // # loopback IP address. // table const { 127.0.0.0/8, } // // # reserved IP address. // table const { 0.0.0.0/8, 169.254.0.0/16, \ // 192.0.2.0/24, 224.0.0.0/4, } // # 0.0.0.0/8 : Local network. // # 169.254.0.0/16 : Link local address. // # 192.0.2.0/24 : Example address. // # 224.0.0.0/4 : Multicast address. !!pfログ パケットフィルタのログはバイナリ形式なので tcpdump を利用する。 # tcpdump -n -e -ttt -r /var/log/pflog インタフェースを直接監視して、流れるパケットをリアルタイムにチェックする方法 # tcpdump -n -e -ttt -i pflog0 !!!ネットワークタイムサーバ(ntpd)の設定 '''/etc/ntpd.conf''' に設定を書く インストール時に ntpd を有効にして、サーバーを "default" とした場合、[NTP Pool Time Servers|http://ntp.isc.org/bin/view/Servers/NTPPoolServers] が指定されている。そのままでも特に問題ない。 # $OpenBSD: ntpd.conf,v 1.11 2009/05/18 16:13:48 stevesk Exp $ # sample ntpd configuration file, see ntpd.conf(5) # Addresses to listen on (ntpd does not listen by default) #listen on * # sync to a single server #server ntp.example.org # use a random selection of NTP Pool Time Servers # see http://support.ntp.org/bin/view/Servers/NTPPoolServers servers pool.ntp.org # use a specific local timedelta sensor (radio clock, etc) #sensor nmea0 # use all detected timedelta sensors #sensor * ただ、通常NTPではネットワーク的に近い場所と同期するようにすべきなので適に書き換える。 # $OpenBSD: ntpd.conf $ # sample ntpd configuration file, see ntpd.conf(5) #listen on * server 192.168.0.1 また、NTPサーバとしても利用する場合は、「listen on *」も追加する(コメントアウトをやめる)。 ラウンドロビンなど複数のサーバがある場合で servers を指定すると、すべてのサーバと同期を行う。 *関連 man → [ntpd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd&sektion=8&arch=i386] , [ntpd.conf(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf&sektion=5&arch=i386] !!!ターミナルサーバ(telnetd)の設定 (☆) ''telnetd は利用しないので(sshを利用)、設定のメモ書きだけ'' って、削除された?? *関連 man → [telnetd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=telnetd&sektion=8&arch=i386] !!!ファイルサーバ(ftpd)の設定 (☆) ''ftpdは利用しないので(sftpを利用)、設定のメモ書きだけ''' *関連 man → [ftpd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=ftpd&sektion=8&arch=i386] !!起動の設定 ftpd をデーモンとして起動する場合は、/etc/rc.conf.local (/etc/rc.conf) で ftpd_flags="-D" # for non-inetd use: "-D" ftpd を inetd から起動する場合は、/etc/inetd.conf で ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US この時、anonymous FTP を無効にするには、ftpd に '''-n''' オプションを付けて。逆に anonymous FTP のみとする場合は、'''-A''' オプションを付けて起動します。 また、ftp のログを取るには、ftpd に '''-l''' オプションを指定する。'''-l''' の場合は、FTPのセッションを成功・失敗問わず記録する。'''-ll''' とした場合は、さらに操作(get, putなど)とその引数も記録する。 !!Welcome メッセージ '''/etc/ftpwelcome''' に FTP 接続時(認証前)の Welcome メッセージ設定する。ftpサーバへ接続した直後(認証前)に表示するWelcomeメッセージを記述します。このファイルは、初期状態では存在しない。 '''/etc/motd''' に FTP 接続時(認証後)の Welcome メッセージ設定する。ftpサーバへ接続した直後(認証後)に表示するWelcomeメッセージを記述します。 !!chroot機能 '''/etc/ftpchroot''' に chroot されるユーザを列挙する。 # $OpenBSD: ftpchroot,v 1.3 1996/07/18 12:12:47 deraadt Exp $ # # list of users (one per line) given ftp access to a chrooted area. # read by ftpd(8). chrooted-user ftp接続時にchroot機能を使用して、ホームディレクトリをルートディレクトリとするユーザを列挙する。先頭が "#" の行はコメントとなる(途中にあっても以降がコメントにはならないので注意)。 !!接続の拒否リスト '''/etc/ftpusers''' に FTP 接続の拒否リストを設定する。 # $OpenBSD: ftpusers,v 1.40 2010/02/22 15:16:45 claudio Exp $ # # list of users disallowed any ftp access. # read by ftpd(8). root daemon # (中略) disallowed-user !!anonymous FTP アカウントのないユーザ、不特定多数に配布するためなどに利用される匿名のFTPサービス。 アノニマスFTPを利用するには ''ftp'' というユーザアカウントを用意する。そして、ftp ユーザのホームディレクトリに chroot され、そのユーザ権限で読み書きが行われる。 各ディレクトリに '''.message''' ファイルを作成すると、そのディレクトリに移動したときにファイルの内容がクライアントに表示される。 また、chroot後の ''/etc/passwd (/etc/pwd.db)'' と ''/etc/group'' が存在しないと、クライアント側でユーザとグループ名が表示されない。 *OpenBSD FAQ: [10.13 - Setting up Anonymous FTP Services|http://www.openbsd.org/faq/faq10.html#AnonFTP] 1. ftp ユーザの作成。ホームは /var/ftp 、グループは users 、ログイン不可。 # useradd -b /var -s /sbin/nologin -g users -c "anonymous ftp" ftp useradd: Warning: home directory `/var/ftp' doesn't exist, and -m was not specified 2. アノニマスFTPのディレクトリ作成 # mkdir -p /var/ftp # mkdir -p /var/ftp/pub # mkdir -p /var/ftp/etc # chown -R root:wheel /var/ftp # ls -l /var/ftp total 8 drwxr-xr-x 2 root wheel 512 Jul 30 18:48 etc drwxr-xr-x 2 root wheel 512 Jul 30 18:48 pub 3. passwd と group 作成 # cd /var/ftp/etc # grep /etc/master.passwd -e "^root" -e "^ftp" > master.passwd # grep /etc/group -e "^wheel" -e "^users" > group # pwd_mkdb -d . master.passwd # ls -l /var/ftp/etc total 168 -rw-r--r-- 1 root wheel 27 Jul 30 19:12 group -rw------- 1 root wheel 174 Jul 30 19:12 master.passwd -rw-r--r-- 1 root wheel 40960 Jul 30 19:12 pwd.db -rw-r----- 1 root _shadow 40960 Jul 30 19:12 spwd.db # rm master.passwd spwd.db # ls -l /var/ftp/etc total 84 -rw-r--r-- 1 root wheel 27 Jul 30 19:12 group -rw-r--r-- 1 root wheel 40960 Jul 30 19:12 pwd.db !!!セキュアシェルサーバ(sshd)の設定 '''/etc/ssh/sshd_config''' に設定する。詳しくは [[OpenBSD/sshd]] !!!webサーバ(httpd)の設定 '''/var/www/conf/httpd.conf''' に設定する。詳しくは [[OpenBSD/httpd]] !!!mailサーバ(sendmail)の設定 デフォルトではローカルのみ送受信出来るように設定・稼働されている。 (DynDNSでMXレコードが登録されるので)受信専用なSMTPサーバは立てたいな〜。