TCP WRAPPER for Solaris8 |
|
tcp_wrapperは社外からのtelnetを禁止したり、あるネットワークからfingerされたら通知したりする機能を提供します。 サーバに仕掛けるのも簡単で、アクセスし た場合もできなかった場合もログを残してくれるという大変ありがたいプログラムです。 私は以下のところからソースを持ってきました。 ・tcp_wrappers_ipv6-7.6.tar.gz 注意:Solaris8からは今までのものが動作しません。IPv6に対応したバージョンが必要になります。 ここではSolaris8のマシンにバージョン7.6をインストールした。 |
1.適当なディレクトリ(自分のホームディレクトリ)に持ってきたソースを解凍する。
% gzip -dc tcp_wrappers_ipv6-7.6.tar.gz |tar xvf -
2.解凍したディレクトリに移動する。
% cd tcp_wrappers_7.6-ipv6
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/...
以前は以下の部分もコメントをはずしておいたが
Solaris8だと不都合が生じたのでコメントのままにしておく
#KILL_OPT= -DKILL_IP_OPTIONS
Solaris8はIPv6対応なので、以下の部分も修正する。
# IPV6 = -DHAVE_IPV6
IPV6 = -DHAVE_IPV6
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
|
| Copyright 2002 MINTIA.NET All rights reserved. |