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

