jail仮想でデバイスフルにするために

FreeBSDのjail環境下でストリーミング配信を行う実験のため、jail仮想環境でデバイスをフルに利用するための設定を行ってみたメモ。

/etc/defaults/devfs.rulesを/etcにコピー

# cp /etc/defaults/devfs.rules /etc

jail仮想ホストのデバイスをフルにするためにコピーした/etc/devfs.rulesを編集

[devfsrules_hide_all=1]
add hide

# Basic devices typically necessary.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_basic=2]
add path log unhide
add path null unhide
add path zero unhide
add path crypto unhide
add path random unhide
add path urandom unhide

# Devices typically needed to support logged-in users.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_login=3]
add path 'ptyp*' unhide
add path 'ptyq*' unhide
add path 'ptyr*' unhide
add path 'ptys*' unhide
add path 'ptyP*' unhide
add path 'ptyQ*' unhide
add path 'ptyR*' unhide
add path 'ptyS*' unhide
add path 'ptyl*' unhide
add path 'ptym*' unhide
add path 'ptyn*' unhide
add path 'ptyo*' unhide
add path 'ptyL*' unhide
add path 'ptyM*' unhide
add path 'ptyN*' unhide
add path 'ptyO*' unhide
add path 'ttyp*' unhide
add path 'ttyq*' unhide
add path 'ttyr*' unhide
add path 'ttys*' unhide
add path 'ttyP*' unhide
add path 'ttyQ*' unhide
add path 'ttyR*' unhide
add path 'ttyS*' unhide
add path 'ttyl*' unhide
add path 'ttym*' unhide
add path 'ttyn*' unhide
add path 'ttyo*' unhide
add path 'ttyL*' unhide
add path 'ttyM*' unhide
add path 'ttyN*' unhide
add path 'ttyO*' unhide
add path ptmx unhide
add path pts unhide
add path 'pts/*' unhide
add path fd unhide
add path 'fd/*' unhide
add path stdin unhide
add path stdout unhide
add path stderr unhide

# Devices usually found in a jail.
#
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide
#
[devfsrules_jail=5]            ← 以下を追加
add path mem unhide
add path kmem unhide

/etc/jail.confを調整

#
##############
# 共通の設定 #
##############
allow.raw_sockets = 0;
allow.set_hostname = 0;
allow.sysvipc = 0;
mount.devfs;
mount += "procfs /jail/${name}/proc procfs rw 0 0";
exec.start += "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
##################
# jail個別の設定 #
##################
jail1 {      # デバイスを規制したjail
        host.hostname = "jail1.hoge.com";
        path = "/jail/jail1";
        ip4.addr += "xxx.xxx.xxx.xxx/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "4"; ← 制限したルール適用
}
jail2 {   # デバイスフルのjail
        host.hostname = "jail2.hoge.com";
        path = "/jail/jail2";
        ip4.addr += "xxx.xxx.xxx.yyy/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "5"; ← 制限無のルール適用
}

ipfw設定

我が家のサーバー、SMTPのPORTを外部に開けているのだが、ずっと不正なアクセスがあり困っていた。
一応、SMTPでリレーは規制かけているのだが、ログに不正アクセスが記録され、気持ちの良いものではない。
ずっと、仕事で疲れていたので、対策をしなければと思いながら手を抜いていた。

で、退職が近づき、時間に余裕が出てきたので、とりあえず、サーバにipfwを機能させることにした。
本来なら、ルータで出来れば良いのだが、安いルータで、その手の機能が充実していないので、サーバー側で行うことに・・・

今回実施したのは、まずはrc.confでipfwを有効に。

firewall_enable="YES"
firewall_type=open
firewall_type="/etc/ipfw.conf"

で、/etc/ipfw.confに以下の記述を

add 200         deny all        from any to 127.0.0.0/8
add 300         deny ip         from 127.0.0.0/8 to any
add 400         deny tcp        from any to any frag

add 500         deny ip         from 59.60.0.0/15 to any
add 500         deny ip         from 114.112.0.0/14 to any
add 500         deny ip         from 173.219.109.0/24 to any
add 500         deny ip         from 195.22.126.0/23 to any

で、以下のコマンドで有効化

# /etc/rc.conf/ipfw start

/var/log/maillogを監視していて、アクセスされていないようで、これでしばらく様子を見、別なIPアドレスからアクセスあれば/etc/ipfw.confに追加して行くことにします。

札幌雪祭り見てきました

札幌に住んでいながら「雪祭り」はしばらく観てなかったので、今日行ってきました。
平日だったのでわりと混雑はしてなくて、スムーズに見て回れました。

決戦!雪のファイナルファンタジー

ゆるキャラが・・・

凱旋門だそうです

ブームなんですね・・・

プロパイダ経由のメール送信

我が家のSMTPはpkgでインストールしたPostfixを使っているが、このままではプロパイダ経由(OP25B)でメールリレーが出来ないようです。
postfixのmain.cfを色々と設定を調整してみたが外に出ていかないようです。
そこで、pkgにあるpostfix-saslに入れ直してみました。
cyrus-saslが依存関係で一緒に入りました。

http://www.postfix-jp.infoを参考に、/usr/local/lib/sasl2/smtpd.confを以下の様に作成。

pwcheck_method: saslauthd
mech_list: plain login

更に/usr/local/etc/postfix/smtpauthを作成。

[mail.so-net.ne.jp]:587 hogehoge@xxx.so-net.ne.jp:password

で、postmap /usr/local/etc/postfix/smtpauth を実行してハッシュ化。
更に/usr/local/etc/postfix/main.cfに以下を追加。

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
relayhost = [mail.so-net.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/smtpauth
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login, cram-md5

postfixを再起動して無事、プロパイダ経由でメールを外部に送信できるようになりました。 🙂

外からwebmail確認で・・・

昨日設定したWebmil(roundcube)、外部から試してみました。

受信メールは正常に確認できました。
で、送信してみると、ローカルへの送信とプロバイダへの送信はOKですが、会社宛へ送信してみるとNGのようです。 (^^;

ネットで調べてみると、我が家のSMTPはPostfixを使っているのですが、「SMTP AUTH」を設定してません。
後、「OP25B」の設定も必要なんですね。

自宅のSMTPはローカル配信でしか使ってなかったので、すっかり忘れてました。

クライアントPCの設定は、受信はローカルのIMAPからで、送信はプロパイダのSMTPにしてたので何も問題なく使えてました。

Webmailで全て可能にするには、Postfixの設定見直しが必要なんですね。 🙂