|  |  |  |  | |||
| First Creation : 2006/11/08 Last Update : 2006/11/08 | ||||||
| Bloody Mary > Technical Notes > Plamo Linux 覚書 2.2 - xinetd | ||||||
| Plamo Linux 覚書 2.2xinetd は、サービス・ポートに要求があったとき、特定の条件をクリアするかどうか判定し、問題なければそのサービスを立ち上げてくれると言う daemon である。この言い回しに自信はないが、だいたいそんなカンジ。 設定ファイルの変更を行ったら、 xinetd の再起動を行わないといけないので注意が必要だろう。 xinetd の設定1. インストールせっかく Plamo を使っているのだから、ソースから最新版をインストールしてみよう。最新版は http://www.xinetd.org/ にある。 % cd /usr/local/src % wget http://www.xinetd.org/xinetd-2.3.14.tar.gz $ tar zxvf xinetd-2.3.14.tar.gz $ cd xinetd-2.3.14 configure するときに --with-libwrap=/usr/lib/libwrap.a は必ずつけること。 でないと TCP WRAPPER の機能が有効にならないようで、 IP アドレスとかホストで 制限かけることができなくなってしまう。 $ ./configure --prefix=/usr --with-libwrap=/usr/lib/libwrap.a $ make もし tcpd.h がないとか怒られたら、一応 root になって、 tcpd.h を /usr/include に移動させる。 $ su root のパスワード入力 ( 以下 root で作業 ) # wget http://www.page.sannet.ne.jp/kanachin/ppp/tcpd.h.gz # gzip -d tcpd.h.gz # mv tcpd.h /usr/include 上の make でエラーが出た人は再度 make する # make もし xinetd が既に立ち上がっている ( バージョンアップしたとか ) ひとは、 一応 xinetd は止めた方がいいかもしれない。 # ps aux | grep xinetd # kill xinetd のプロセス番号 # make install おまじない # cd /usr/sbin # strip -p itox xinetd 2. inetd 自動起動 STOP 、 xinetd 自動起動# vi /etc/rc.d/rc.inet2
以下の部分をコメントアウトして、その下のやつを追加。
コメントアウト
 
# Start the INET superserver.
#if [ -x $NET/inetd ]; then
#    echo -n " inetd"
#    $NET/inetd
#else
#    echo "no INETD found.  INET cancelled!"
#    exit 1
#fi
追加
# Start the XINETD.
if [ -x $NET/xinetd ]; then
    echo -n " xinetd"
    $NET/xinetd -pidfile /var/run/xinetd.pid
else
    echo "no XINETD found.  XINET cancelled!"
    exit 1
fi
シンボリックリンクも張っておく。 # ln -s /usr/local/sbin/xinetd /usr/sbin/xinetd 3. xinetd の設定ファイル設定ファイルがいろいろあって面倒だが、まず /etc/hosts.allow と /etc/hosts.deny からやってしまおう。 # vi /etc/hosts.allow
    # LOCAL からの接続は全て許可する
    ALL : LOCAL
    ALL : 192.168.1.0/255.255.255.0
    # ホスト制限は /etc/xinetd.d/ のファイルで行う
    sshd : ALL
# vi /etc/hosts.deny
    ALL : ALL EXCEPT LOCAL
お次はコンフィグファイル。 # vi /etc/xinetd.conf
    defaults
    {
        instances      = 25
        log_type       = SYSLOG authpriv
        log_on_success = HOST PID
        log_on_failure = HOST
        per_source     = 5
    }
    includedir /etc/xinetd.d
もし、/etc/xinetd.d というディレクトリがなければ、 # mkdir /etc/xinetd.d で作ること。/etc/xinetd.d には、ftp や ssh などの名前でそれぞれのサービスに適した設定ファイルを置く。すると xinetd が起動するときにそれぞれの内容を全部読み込んでくれる。ここに各サービスごとの設定ファイルを置いたほうが、/etc/xinetd.conf にまとめて書くより断然分かりやすい。 さて、いよいよ ssh に特化した xinetd の設定ファイル。 # vi /etc/xinetd.d/sshd
    service ssh
    {
        disable         = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/sshd
        server_args     = -i
        log_on_success += HOST PID
        log_on_failure += HOST
        only_from       = 192.168.1.0/24 .jp .net .com .org
        no_access       = .kr
        nice            = 10
    }
まあこんなカンジで、only_from に接続 OK なドメイン、 no_access に拒否りたいドメインを書いていく。 log_on_success と log_on_failure はこの値にしておいた方が無難。でないとアクセスがもたついてイライラすることになるだろう。 あとは xinetd を再起動すれば、設定が有効になる。 具体的には、 こんな感じだろう。 
 ここまでやっても、インターネット上にサーバとして公開するには安全とはいいがたい。 Plamo Linux 覚書 2.1 - sshd を xinetd 経由で立ち上げる設定で少し触れたが、サーバを公開して、インターネット経由での sshd アクセスを考えているなら iptables によるパケットフィルタをかける必要がある。例えば、 1 分間に同じ IP アドレスから 5 回もアクセスがあれば、辞書攻撃をされていると予想がつく。 xinetd で IP アドレス規制をすることもできるけど、それだとログを見てからの対処となって後手に回ってしまう。 
 | ||||||
|    | ||||||
|  | ||||||
