$theTitle=wp_title(" - ", false); if($theTitle != "") { ?>
サーバーをインタネットに公開すると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
「送信元の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
sasl2を入れてsmtp-authを有効にするために/usr/local/etc/postfix/main.cfに以下を追加。
[code]
####################
# 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
[/code]
/usr/local/lib/sasl2/smtpd.confを作る。
[code]
# cat /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login
[/code]
/etc/sasldb2を用意しておく。
[code]
# touch /etc/sasldb2
# chown postfix:postfix /etc/sasldb2
[/code]
smtp-authのユーザーを作る。
[code]
# saslpasswd2 -c -u `postconf -h myhostname` username
[/code]
パスワードを二回訊いてくるので入力する。
ユーザーのパスワードの変更
[code]
# saslpasswd2 -u `postconf -h myhostname` username
[/code]
同じくパスワードを二回訊いてくるので入力する。
ユーザーの削除
[code]
# saslpasswd2 -u `postconf -h myhostname` -d username
[/code]
ユーザーの確認
[code]
# sasldblistusers2
[/code]
/usr/ports/mail/imap-uw
[code]
# portinstall mail/imap-uw
[/code]
で一発。imapとpop3を使いたいので、/etc/inetd.conf を
[code]
pop3 stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
imap4 stream tcp nowait root /usr/local/libexec/imapd imapd
[/code]
に変更。 kill HUP (inetd のpid) を忘れずに。
APOPでメールを取るので/etc/cram-md5.pwdを作成。こんな感じ。
[code]
username1 password1(平文)
username2 password2(平文)
username3 password3(平文)
[/code]
パスワードを平文で入れなければいけないので当然 chmod 600 として他のユーザーから見えないようにしておく必要あり。 にしてもrootからは全部パスワードが見えるのであまりいい感じではない。自前サーバーならではということで目をつぶることにしている。
/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。
今回のサーバーの回線は友人宅の関西系のBフレッツファミリー100。フレッツスクエアを使っていないので余ったセッションを使わせてもらうという 作戦。他人のルーターいじくるのはお互い面倒な目に遭うといやなので光ONUと既設ルーターの間にハブをかませてそこからサーバーへ分岐。サーバーから勝 手にPPPoEで二つ目のセッションを掴みます。
/etc/ppp/ppp.conf
注:行頭の”_”は半角スペースに読み替えること。(誰か行頭にスペースを入れる方法教えて~)
[code] ##################### # 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 へろへろ [/code]
/etc/rc.conf
[code] : ifconfig_bge0="up" : ppp_enable="YES" ppp_mode="ddial" ppp_profile="pppoe" ppp_nat="NO" : [/code]
あとは/etc/resolv.confを適当に。
これでインターネットにつながったらあとは基本的にはリモートでメンテなのでsshを立ち上げておきます。あらかじめ/etc/ssh/sshd_configの設定をしておくと吉。
2006-11-23 (木曜日) In: FreeBSD(847 views)
#最近、トラックバックスパムが多い。
#コメントやトラックバックは許可制にしてるのでいいんだけど。
サーバーを某所で立ち上げ中。 作業メモ代わりにここに書いていきます。
FreeBSDのCDを入手。
ここで “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だったからその法則を採用しているのでしょう。
日々の四方山話を徒然と・・・
いらっしゃいませ。このブログはオーストラリアの生活に関する話題とFreeBSDに関連する話題を主に色々と書き綴っています。
Sorry, This site consists of Japanese contents only. If you are interested in my blog, feel free to leave your comments in English or Japanese. Thank you.