TCP WRAPPER |
tcp_wrapperは社外からのtelnetを禁止したり、あるネットワークからfingerされたら通知したりする機能を提供します。 サーバに仕掛けるのも簡単で、アクセスし た場合もできなかった場合もログを残してくれるという大変ありがたいプログラムです。 私は以下のところからソースを持ってきました。 ftp://ftp.chiba-u.ac.jp/pub/security/tools/tcp_wrapper/ ・tcp_wrappers_7.6.tar.gz ここではSolaris2.6のマシンにバージョン7.6をインストールした。 |
1.適当なディレクトリ(自分のホームディレクトリ)に持ってきたソースを解凍する。 % gzip -dc tcp_wrappers_7.6.tar.gz |tar xvf - 2.解凍したディレクトリに移動する。 % cd tcp_wrappers_7.6 3.Makefileの編集その1(一般的な編集) まず「REAL_DAEMON_DIR」の部分を書きかえる。 ここではtelnetd、ftpdなどがあるディレクトリを指定しているものを選ぶ。 今回はSolaris2.6にインストールするので、 # SysV.4 Solaris 2.x OSF AIX #REAL_DAEMON_DIR=/usr/sbin この部分を以下のようにviで修正する。 # SysV.4 Solaris 2.x OSF AIX REAL_DAEMON_DIR=/usr/sbin これと同じような記述があるが、これは気にしなくていいらしい。 # SysV.4 Solaris 2.x OSF AIX #REAL_DAEMON_DIR=/usr/sbin/... また以下の部分もコメントをはずしておく。 KILL_OPT= -DKILL_IP_OPTIONS 4.Makefileの編集その2(ログの指定) tcp_wrapperのログを独立してほしい場合にはFACILITYの記述を書き換える必要がある。 #FACILITY= LOG_MAIL # LOG_MAIL is what most sendmail daemons use <---これを FACILITY= LOG_LOCAL5 # LOG_MAIL is what most sendmail daemons use <---このように書きかえる 5.コンパイル make + OS名で実行します。SunOS 5.x なら make sunos5、linuxなら make linuxというように実行。 % make sunos5 エラーが発生したら % make clean をして原因を追求してみてください。私はここでエラーが発生しましたが 以下のようにしたらコンパイル成功しました。 % make CC=gcc sunos5 6.バイナリのコピー コンパイルで作成されたtcpd,tcpdchk,tcpdmatch,try-from,safe-fingerの5つのバイナリを /usr/sbinにルートになってコピーする。 # cp tcpd tcpdchk tcpdmatch try-from safe_finger /usr/sbin # chmod 700 /usr/sbin/tcpd # chmod 711 /usr/sbin/tcpdchk /usr/sbin/tcpdmatch 7.アクセス制御(hosts.allow,hosts.deny)の作成 8./etc/inetd.confの編集 もとからあったものにすぐ戻せるようにコメントアウトしておくと便利だと思います。 # # Ftp and telnet are standard Internet services. # ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd #ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd #telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd # # Shell, login, exec, comsat and talk are BSD protocols. # shell stream tcp nowait root /usr/sbin/tcpd in.rshd login stream tcp nowait root /usr/sbin/tcpd in.rlogind exec stream tcp nowait root /usr/sbin/tcpd in.rexecd comsat dgram udp wait root /usr/sbin/tcpd in.comsat talk dgram udp wait root /usr/sbin/tcpd in.talkd #shell stream tcp nowait root /usr/sbin/in.rshd in.rshd #login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind #exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd #comsat dgram udp wait root /usr/sbin/in.comsat in.comsat #talk dgram udp wait root /usr/sbin/in.talkd in.talkd 9./usr/sbin/tcpdchkで間違いがないかチェック 設定したhosts.allow,hosts.denyにおかしなとこがないかチェックする。 私の場合には以下のようなメッセージが表示されてしまった。 # /usr/sbin/tcpdchk warning: /etc/inet/inetd.conf, line 149: /usr/openwin/bin/Xaserver : not found: No such file or directory ここでの対応としてはこの表示にあるように、/etc/inetd.confの149行目をコメントアウトしてあげたら なにもエラーが表示されなくなりました。 またこの時に、「tcpdchk -v」というオプション付きで実行するとより詳しい表示がされます。 10./usr/sbin/tcpdmatchで設定ルールの検証 サーバプログラム名とIPアドレスを引数で渡してやり、 それが設定ファイルによりどのように扱われるかをチェックしてあげる。 実行例を以下に載せます。 # /usr/sbin/tcpdmatch in.telnetd 172.21.172.23 client: address 172.21.172.23 server: process in.telnetd matched: /etc/hosts.allow line 2 access: granted 11./etc/syslog.confの編集 ファイルに以下の行を追加してあげる。 # tcp_wrapper local5.info /var/log/tcpd.log (なぜかここのスペースをtabにしないとログが作成されなかった。) 12.inetdの再起動 # ps -ef |grep inetd root 141 1 0 2月 26 ? 0:06 /usr/sbin/inetd -s # kill -HUP 141 13.syslogdの再起動 # ps -ef |grep syslogd root 167 1 0 2月 26 ? 104:35 /usr/sbin/syslogd -n -z 12 # kill -HUP 167 14.あとはいろいろなことを試してみてください。 |
Copyright 2002 MINTIA.NET All rights reserved. |