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 アドレス規制をすることもできるけど、それだとログを見てからの対処となって後手に回ってしまう。
|
||||||