「Software」カテゴリーアーカイブ

FreeBSD (Apache2.2)

今日は適当にメモっただけ。後日清書するかも。

/usr/ports/www/apache22

/usr/local/etc/pkgtools.conf

MAKE_ARGS = {
‘www/apache22′ => [
‘WITHOUT_DAV_MODULES=yes’,
‘WITHOUT_PROXY_MODULES=yes’,
‘WITHOUT_IPV6=yes’,
],
}

# portinstall www/apache22

# diff /usr/local/etc/apache22/httpd.conf httpd.conf.org

40c40
< Listen www.xxx.yyy.zzz:80

> Listen 80
132c132
< ServerAdmin www@ほげほげ

> ServerAdmin you@example.com
453,468d452
< < NameVirtualHost *:80
<
<
< ServerAdmin webmaster@ほげほげ
< DocumentRoot /usr/home/www/404
< ServerName 404.ほげほげ
<
< Options Indexes FollowSymLinks
< AllowOverride None
< Order allow,deny
< Allow from all
<
< ErrorLog /var/log/404.ほげほげ-error_log
< CustomLog /var/log/404.ほげほげ-access_log common
<

こうしておけば /usr/local/etc/apache22/Includesで設定していないホストへのアクセスを全部ここに集中できる。

# /usr/bin/openssl genrsa -out /usr/local/etc/apache22/server.key 1024
# /usr/bin/openssl req -new -days 365 -key /usr/local/etc/apache22/server.key -out /usr/local/etc/apache22/server.csr -out /usr/local/etc/apache22/server.csr

なんちゃって自己証明
# /usr/bin/openssl x509 -in /usr/local/etc/apache22/server.csr -out /usr/local/etc/apache22/server.crt -req -signkey /usr/local/etc/apache22/server.key -days 365

# chmod 600 server.*
を忘れずに。
/usr/local/etc/apache22/extra/httpd-ssl.confのDocumentRoot, ServerName, ServerAdminをを適当に書き換えて/usr/local/etc/apache22/Includes/httpd-ssl.confに置く。

あと、必要に応じて /usr/local/etc/apache22/IncludesにVirtual Hostのファイルを作って置けばOK。こんな感じ

# Virtual Hosts
#

ServerAdmin webmaster@へろへろ
DocumentRoot /usr/home/www/http
ServerName www.へろへろ
ServerAlias へろへろ

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

ErrorLog /var/log/www.へろへろ-error_log
CustomLog /var/log/www.へろへろ-access_log common
Apcheの再起動は /usr/local/etc/rc.d/apache22 restart

# /usr/local/etc/rc.d/apache22
Usage: /usr/local/etc/rc.d/apache22 [fast|force|one](start|stop|restart|rcvar|re
load|graceful|gracefulstop|configtest|status|poll)

/usr/local/etc/apache22/Includes/no-accf.confはそのままそっと置いておく。

FreeBSD (sshd & hosts.allow)

サーバーをインタネットに公開するとsshの扉を叩く人がかなりいます。それも手持ちの鍵(idとパスワード)を順番に片っ端から試していく奴が結構沢山。

そこで、Maxloginsを使ってみる。このツールはsyslogでsshアクセス失敗回数を監視し、一定の基準を超えたアクセス禁止のIPアドレスリストを吐き出す。そのリストをhosts.allowに取り込んでsshのアクセスを禁止する仕組み。
ツールの実体はここにある。 テキストファイルだけど、”maxlogins.pl”とかの名前で/usr/local/bin に保存すし、次のようにしてsyslogから実行できるようにしておく。

# chown root:wheel /usr/local/bin/maxlogins.pl
# chmod 750 /usr/local/bin/maxlogins.pl

/etc/syslog.conf に以下を挿入する。

auth.info;authpriv.info /var/log/auth.log # ←この行の次に
auth.info;authpriv.info |exec /usr/local/bin/maxlogins.pl # ←この行を追加

このmaxlogins.pl にはオプションを追加指定できる。

-e: アクセス禁止の解除時間の指定。デフォルトは12時間。

-e=1d, -e=24h, -e=1440m, -e=86400s という感じで指定する。この場合いづれも1日の意味。

-a: IPアドレスがブロックされるまでの最大試行回数。 デフォルトは3回。

-a=5 という風に指定する。

-l: ログレベルの指定。 ログはデフォルトで /var/log/auth.logに記録される。

-l=1: informational (e.g., new blocks)
-l=2: above, plus IP expirations
-l=9: verbose logging

/etc/hosts.allow をいじって「アクセス禁止のIPアドレスリスト」を読み込むようにする。

#ALL : ALL : allow
sshd : 127.0.0.1 : allow
sshd : /var/log/maxlogins : deny
sshd : ALL : allow

ちなみに、これをやったらpopとかimapとかの設定も忘れずに。

ftpd : localhost : allow
ftpd : ALL : allow
ipop3d : ALL : allow
imapd : localhost : allow
imapd : ALL : deny

最後に、 syslog を再起動。

# kill -HUP (syslogのpid)

ブロックされたIPアドレスは /var/log/maxlogins に記録される。

参考リンク: 1

FreeBSD (postfix: smtpd_client_restrictions)

送信元のIPアドレスによる制限」を行う。

/usr/local/etc/postfix/main.cf に下記を追加

###############
# sender restriction
#
smtpd_client_restrictions = permit_mynetworks check_client_access hash:/usr/local/etc/postfix/reject_client

/usr/local/etc/postfix/reject_client を下記のように作成。

IPアドレス1(tab)REJECT
IPアドレス2(tab)REJECT
IPアドレス3(tab)REJECT

DBファイル作成してpostfixを再起動

# postmap /usr/local/etc/postfix/reject_client
# postfix reload

FreeBSD (smtp-auth)

sasl2を入れてsmtp-authを有効にするために/usr/local/etc/postfix/main.cfに以下を追加。

####################
# SMTP AUTH w/SALS2
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

/usr/local/lib/sasl2/smtpd.confを作る。

# cat /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login

/etc/sasldb2を用意しておく。

# touch /etc/sasldb2
# chown postfix:postfix /etc/sasldb2

smtp-authのユーザーを作る。

#  saslpasswd2 -c -u `postconf -h myhostname` username

パスワードを二回訊いてくるので入力する。

ユーザーのパスワードの変更

#  saslpasswd2 -u `postconf -h myhostname` username

同じくパスワードを二回訊いてくるので入力する。

ユーザーの削除

#  saslpasswd2 -u `postconf -h myhostname` -d username

ユーザーの確認

#  sasldblistusers2

参考リンク) 1, 2, 3

FreeBSD (imap-uw)

/usr/ports/mail/imap-uw


# portinstall mail/imap-uw

で一発。imapとpop3を使いたいので、/etc/inetd.conf を


pop3 stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
imap4 stream tcp nowait root /usr/local/libexec/imapd imapd

に変更。 kill HUP (inetd のpid) を忘れずに。

APOPでメールを取るので/etc/cram-md5.pwdを作成。こんな感じ。


username1    password1(平文)
username2    password2(平文)
username3    password3(平文)

パスワードを平文で入れなければいけないので当然 chmod 600 として他のユーザーから見えないようにしておく必要あり。 にしてもrootからは全部パスワードが見えるのであまりいい感じではない。自前サーバーならではということで目をつぶることにしている。

FreeBSD (postfix)

/usr/ports/mail/postfix のインストール

# portinstall mail/postfix

で一発。オプションはPCREとSASL2とTLSを指定。

Added group “postfix”.
Added group “maildrop”.
Added user “postfix”.
You need user “postfix” added to group “mail”.
Would you like me to add it [y]?

と訊いてくるところはそのままエンター(y)。

Would you like to activate Postfix in /etc/mail/mailer.conf [n]?

ここはsendmailではなくpostfixを有効にしたいので”y”。

postfix-2.3.4,1
cyrus-sasl-2.1.22
pcre-6.7

がインストールされました。
あとの設定は、/etc/rc.confで

postfix_enable=”YES”

sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”

/usr/local/etc/postfix にmain.cfがあるので、cp -p main.cf main.cf.orgでバックアップしてから編集。

myhostname = virtual.domain.tld
mydomain = domain.tld
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

rehash かけたあと、newaliasesしておけば一応OK。

FreeBSD (PPPoE)

今回のサーバーの回線は友人宅の関西系のBフレッツファミリー100。フレッツスクエアを使っていないので余ったセッションを使わせてもらうという 作戦。他人のルーターいじくるのはお互い面倒な目に遭うといやなので光ONUと既設ルーターの間にハブをかませてそこからサーバーへ分岐。サーバーから勝 手にPPPoEで二つ目のセッションを掴みます。

/etc/ppp/ppp.conf

注:行頭の”_”は半角スペースに読み替えること。(誰か行頭にスペースを入れる方法教えて~)

#####################
# PPP Configuration File
#####################
default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)
 set device PPPoE:bge0
 set speed sync
 set ctsrts off
 set timeout 0  set MRU 1454
 set MTU 1454 # accept CHAP #flets HIKARI PREMIUM
 accept PAP                   #B flets
 add default HISADDR    #add a (sticky) default route
 enable tcpmssfix
 disable deflate
 disable pred1
pppoe:
 set authname ほげほげ@ほげほげ
 set authkey へろへろ

/etc/rc.conf


:
ifconfig_bge0="up"
:
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="pppoe"
ppp_nat="NO"

:

あとは/etc/resolv.confを適当に。

これでインターネットにつながったらあとは基本的にはリモートでメンテなのでsshを立ち上げておきます。あらかじめ/etc/ssh/sshd_configの設定をしておくと吉。

FreeBSD (インストール)

#最近、トラックバックスパムが多い。
#コメントやトラックバックは許可制にしてるのでいいんだけど。

サーバーを某所で立ち上げ中。 作業メモ代わりにここに書いていきます。

FreeBSDのCDを入手。

ftp://ftp.jp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/6.2/

ここで “6.2-BETA1-i386-disc1.iso”を落としてきてCDに焼いてCDブートでX関係は入れないでちゃきちゃきと。

結果的にSATAの250GBのHDDにインストール。

こんな感じでスライス切りました。

/          512MB
Swap    2GB
/tmp     2GB
/var      128GB
/usr      108GB

メールを溜め込んだりDB使ったりとかあるので/varは多目に取りました。メモリーは1GB積んでいるのでその二倍が目安?最初にインストーラーにお任せでスライス切らせてみたらやっぱり2GBだったからその法則を採用しているのでしょう。

レスキュー

夏の終わりに自宅サーバーの一台がHDD異音を発生させて死にました。

20061014-085758.jpg

サーバーと言っても4年近く前に買ったデスクトップPCなのですが開けて見ると電解コンが一個破裂してました。そこは致命的な場所では無いのでまあ いいとして(良くない!)、サーバーが死んだ原因はやはりHDD。カコカコ言ってブートしません。このHDDのデーターのサルベージはあきらめてもう一台 のデーターバックアップ用に増設してあったHDDのデーターをどこかに吸い上げることにしました。

今回はCDブートでKNOPPIXを立ち上げて作業することにしました。

FreeBSDなので、ルートシェルに降りて

# mount -r -t ufs -o ufstype=44bsd /dev/hda1 /mnt/hda1

とかやってR/Oでマウント。

どうにかこちらのHDDはアクセスできました。めでたしめでたし。