Linuxサーバ運用マニュアル
前回,ファイアウォールの基本設定とメールの転送について解説しました。しかし,それだけでは,ほとんどアクセスができませんので,ゲートウェイでデータを中継することによって,アクセスができるようにします。
この中継機能は,ゲートウェイが代理で通信することから,プロキシ機能とも呼びます。必要なデータだけを選択して転送することができるため,ファイアウォールの運用には欠かせないものです。
データの転送には,いろいろな段階があります。
ゲートウェイ上のプロキシで,これを中継するわけですが。どのレベル(階層)で中継するかによって,サーキットレベル・ゲートウェイ,アプリケーションレベル・ゲートウェイなどがあります。
TCP/IPレベルで中継するもの。動作が速いが,データはそのまま中継するだけ。
アプリケーションに依存しない。
アプリケーションレベルで中継するもの。動作は重くなるが,データ内容による動作など,いろいろ複雑な中継処理が可能になる。
アプリケーションに毎に中継プログラムが必要。
ここでは,サーキットレベル・ゲートウェイとしてsocks5,アプリケーションレベル・ゲートウェイとしてDelegateについて,起動時の設定や起動方法などを中心に解説していきます。
SOCKS5とは,米NEC社で開発されたもので,TCP/IPレベルでデータの中継を行うものです。
ICQなどのツールをファイアウォール越しに動作させる場合などに必要になります。
また,VPN(Virtual Private Network)という機能で,インターネット越しに,仮想的なプライベートネットワークを構築することも可能です。
ここでは,参考程度にとどめておきます。
# # socks5.conf 1998.11.26 # set SOCKS5_BINDPORT 1080 auth - - - route 10.0.1. - eth1 route - - eth0 permit - - 10.0.1. - - - |
これは,1080ポートでsocks5を動かす設定で,eth1をローカルネットに,eth0をインターネットに割り当てています。permit行で,ローカルネットからのアクセスを許可しています。
Delegateは電総研が開発した多機能プロキシです。ローカルネットからインターネットにアクセスするためのプロキシサーバ機能と,ローカルネットのデータをインターネットに公開するためのマウント機能があります。対応しているプロトコルには,HTTP, Gopher, Whois, FTP, Telnet, NNTP, SMTP, POPなどがあり,TCP/IPのほとんどの中継処理をこれで行うことができます。また,httpデータのキャッシュ機能や,各アクセスに対してアクセス制限機能や,ログの採取機能があります。
Delegateは起動時のオプションでこれらの機能を設定します。
オプション | 内容 |
---|---|
-P | delegatedがコマンドラインから起動する場合のポート番号(inetdから起動する場合は無効) |
-vv | デバッグ情報を出力して実行 |
-Fkill | delegatedを終了させる(killコマンドとして動作させる) |
以下のオプションは,識別名=値の形式で設定します。MOUNT PERMIT EXPIREなどのオプションは,繰り返し指定することができます。
識別名 | 値の書式 | 内容 |
---|---|---|
SERVER | proto://host:port | 中継するプロトコルの種類とサーバ指定 |
PROXY | host:port | プロキシサーバとそのポート番号 |
DELEGATE | host:port | delegatedの動作するホスト名とポート番号 |
RESOLV | {sys,cache,file,dns} | ホスト名解決の順序 |
SOCKS | socks-host | 利用するSOCKSホスト |
MOUNT | "path URL opt" | //${DELEGATE}/pathにマウントするURL |
PERMIT | Prot:Dst:Src | アクセス制御方法 プロトコル:サーバ:クライアント |
ACTDIR | dir-name | 一時データ格納ディレクトリ |
VARDIR | dir-name | 可変データ格納ディレクトリ |
CACHEDIR | dir-name | キャッシュ格納ディレクトリ |
EXPIRE | {days,hours,secs} | キャッシュの有効期間 |
LOGDIR | dir-name | ログ・データ格納ディレクトリ |
LOGFILE | file-name | ログファイル名 |
PROTOLOG | file-name | プロトコルログ格納ファイル名 "${PORT}.${PROTO}" |
OWNER | user-name | delegatedを起動するユーザ名 |
AUTH | "forward:*:" | 認証指定(クライアント・アドレスの通知) |
PERMITの形式
PERMIT=Proto1:Dst1:Src1
PERMIT=Proto1,Proto2:Dst1,Dst2:Src1,Src2
PERMITを複数指定した場合は,いずれかに適合した場合に,許可されます。
ホストおよびネットワークは,以下の例のように指定します。
記述 | 許可するホスト |
---|---|
* | すべてのホスト |
*.jp | 日本のすべてのホスト |
!*.jp | 海外のすべてのホスト |
*.ash.or.jp | ASH内のすべてのホスト |
www.ash.or.jp | 特定のサーバのみ |
210.154.87.16/255.255.255.240 | ASH内のすべてのIP(ネットワーク指定) |
210.154.87.[16-31] | ASH内のすべてのIP(ホスト範囲指定) |
210.154.87.18 | 特定のIPのみ |
次にローカルネットからインターネットへのhttp中継と,インターネットからローカルネットへのhttp中継を例にして,具体的な設定を解説します。
/usr/local/sbin/delegated -P8080 SERVER='http' OWNER=wmaster PERMIT='*:*:*.lo.ash.or.jp' AUTH="forward:*:" ACTDIR=/usr/local/etc/delegate VARDIR=/usr/local/etc/delegate LOGFILE="" |
これは,8080ポートでhttpの中継を行う設定です。ローカルネットから,インターネットのブラウジングをするために使用しています。
PERMIT='*:*:*.lo.ash.or.jp'という設定により,ローカルネット内のクライアントからのみ,自由なサーバにアクセスすることを許可しています。PERMITによってクライアントの限定を行っていないと,自由な場所からアクセスできるようになり,悪用される可能性があるので注意しましょう。
(編注:許可/不許可するホストの指定はIPアドレスで行う方が,多少安全度が増します)
/usr/local/sbin/delegated -P80 SERVER='http://sv01.lo.ash.or.jp/' OWNER=wmaster PERMIT='*:sv01.lo.ash.or.jp:*' AUTH="forward:*:" ACTDIR=/usr/local/etc/delegate VARDIR=/usr/local/etc/delegate LOGFILE="" PROTOLOG="${PORT}.${PROTO}" |
これは,80ポートでhttpの中継を行う設定です。ローカルのWWWサーバのデータを公開するのに使用しています。PERMIT='*:sv01.lo.ash.or.jp:*'という設定により,インターネット上の自由なクライアントから,ローカルネット内のWWWサーバにのみ,アクセスを許可しています。
次にDelegateの起動方法について触れておきます
Delegateは,デーモンとして起動しておく場合と,inetdで起動する場合があります。httpなどの使用頻度の高いものはデーモン起動,外部からのtelnetやftpなどの使用頻度が低いものについてはinetd起動にするのがいいでしょう。実際の運用形態に合わせて調整してください。
デーモン起動する場合は,それぞれのDelegeteを1つのスクリプトから起動できるようにしておき,etc/rc.d/rc.localに,そのスクリプトを実行するコマンドを追加します。inetd起動の場合は,それぞれのDelegateについて起動するためのスクリプトを作り,inetd.confに,それぞれの起動設定を追加します。
以下はinetd.confの記述例です。
delegate-ftp stream tcp nowait root /usr/sbin/tcpd ftpgate delegate-telnet stream tcp nowait root /usr/sbin/tcpd telnetgate |
delegate-ftp delegate-telnetは,中継用のポート番号として,/etc/servicesで定義したものです。ftpgate telnetgateは,Delegate起動用のシェル・スクリプトの名前です。
ファイアウォールを構築した場合。ローカルネットから直接インターネットにアクセスすることはできなくなります。
クライアント・マシンも,前回触れたプライベートアドレスに設定しなおします。また,クライアントのアプリケーションで,プロキシを使用する設定をする必要があります。ゲートウェイのIPアドレス(プライベート・アドレス)をプロキシサーバに指定し,プロキシが動作しているポート(上記の例では,httpは8080ポート)を,プロキシのポートに指定します
次回は,「障害時の構成を考えよう!」です。
環境構築方法に関しては,今回のファイアウォールの構築方法の紹介まで程度にとどめることにします。次回は,障害対策の運用方法の概要となるわけですが,今回ゲートウェイを構築したことで2台となったサーバを有効活用した運用方法について,説明していきたいと思います。
(ASHマルチメディア研究会/joe,はしもと)