■ 序章 ■
ウチではインターネットとの境界となるゲートウェイをPCで構築している。最近ではブロードバンドルーターとかいう名前のものがかなり安くなっている(現時点で1万円をきるものもアタリマエ)が、ひと昔前まではネットワーク機器は高額であり、「家庭内LANでのルータ=PCで構築」は貧乏人の常套手段であった。
と、まあ必要に迫られてやむなく、という感もあったが、その中にそれなりの楽しみを見つけていったりしてきた。たとえば大量のログ整理やらパケットの解析やらセキュアな環境作りやら。ルータ専任であれば安全ではあるがツマラナイ。しかし、いろいろとやらせるとセキュアでなくなる、この間をフラフラするのもまた楽し、というわけだ。我が家にはいろんな鯖ホストがあるが、運用の楽しさはそれらの比ではない。緊張感もあるが...。
■ OSはどれがヨイのか? ■
先代のルーターは LASER5 6.4 で構築していた。これは半年ほど稼動した。このOSはデスクトップとして評判がいいようだが(自分はデスクトップでも使っているが、たしかにヨイ)ルーターとしても使いやすいと思う。しかし、ディストリビューターのサポート体制がヨクナイ。これは鯖やルーターのようにセキュリティに気を遣わなければならないモノに対しては致命的である。どうやらこのディストリビューターは製品版ユーザー以外にはまったく無関心のようだ。パッケージのアップデート情報のページはここ数ヶ月更新されていない。赤帽のRPMをいじったり、ソースからコンパイルして維持してきたが、最後は LASER5 という実体が分からないようになってしまった。7.1J も出たことだし、ますます放置されるだろう。しかし、何といっても決定的だったのはカーネルで、2.2 系の現在の安定板は 2.2.19 だが、LASER 5 用はいまだに 2.2.17 までしか提供されていない。この辺は主にセキュリティホール関連のフィックスでアップグレードしているので、ちゃんと用意してくれないと困るのである。今回 LASER5 に見切りをつけたのはこれが原因だったのである。赤帽の 2.2.19 カーネルパッケージはあっさりとは入らなかったので、ソースをコンパイルしたのだが、どうしても nfs まわりがうまくいかなかったのでゴマカしつつ運用していた。現在は「お試し」的な意味もあって、赤帽7.1 で構築している。
(追記 : 2002.03.09)未だに 7.1 で維持しているが、すでに rpm はほとんど使われておらず、原形は留めていない。カーネルだけは常に最新で怪しげなパッチだらけである(これでホントにセキュアなのか?)。
ではわかる範囲で独断でコメントしておく。各バージョンは現在の安定板である。
- LASER5 Linux 7.1J.....少なくともルーターには向かないと思われる。
- LASER5 Linux 7.2.....やはりルーターには向かないと思われる。(追記 : 2002.03.09)
-
Red Hat 7.1.....2.4 系カーネルを使いたいなら(それが何をもたらすかは後述)、この選択しかない。
(追記 : 2002.03.09)ただし、いまでは Debian も選択肢として充分だが、サーバー用途としてはあの流儀は苦手なのでルーターには使っていない。
-
Red Hat 7.2.....2.4 系カーネルを使いたいのでこれを使っている(追記 : 2002.03.09)。
-
Plamo Linux 2.2.....もっとも無難に向いていると思うし、管理も楽だが、最近では SysV しか使ったことのないヒトが多いので、そういうヒトにはかえって危険かも。
(追記 : 2002.03.09)もうiptablesがないと生きていけない体になってしまったので、選択肢から消えた。純粋なルーターとしてなら軽いので最適。
-
Slackware8.0.....Plamo ねえ、と興味を持った人で、英語が恐くないなら、こっちのほうが楽です。つーか英語だから楽なのです。
Linux にこだわらないなら BSD のほうが向いていると思う。ただし、ファイアウォールも兼ねるならば plamo と同様で問題外。ipfw とかでは弱すぎる。
-
OpenBSD 2.9.....ルーター、ブリッジに向いていると思う。が、怪しげな3枚の NIC を搭載したわがルーター用マシンでは使えない。 3Com や Intel とか「正しい」ものだけで固められる財力のあるヒトにはよい。インストールも実は結構簡単だ。(追記 : 2002.03.09)バージョンは上がったが似たようなもの。
-
FreeBSD 4.3.....総合的に判断すると、自分的にはこれに最高点を与える。インストールが楽、使いやすい、安定している。ただし、環境の開発サイクルが早いので、常に情報に気を配る必要がある。ヒマなヒト、PCと寝食を共にしてもいいというヒト向き。でもノートなら絶対これだ。(追記 : 2002.03.09)いま4.5-stableで一つ動いている。
■ RedHat 7.1 での構築(他OSでも基本的な「考え方」は同じ) ■
◎構築するもの
毎度実際に構築しているのは3つのネットワークインターフェースを持ち、ADSL接続機能を持たせたPCルーター。これをインターネットとLANの境界に置くと、スクリーンドブランチネット構造のLANを構築できるが、このマニュアルでは一般的な NIC 2枚挿しの場合で説明する。この場合はスクリーンドホスト構造(ハブと組み合わせていわゆる市販のブロードバンドルーターと同等以上の機能となる)、あるいはルーターをもう一つ導入すればスクリーンドサブネット構造にもできる。
-
マシンを用意
マシンはかなりボロくてもかまわない(限度はあるぞ)。i386 マシンならどうにでもなるだろう。ここで紹介するのは MMX Pentium 166MHz, RAM 64MB, HDD 1.6GB というマシンへの導入をもとにした流れだが、これでもハイスペック過ぎてもったいないのである。スペックははどうでもいのだが、NIC はできる限り良いものを用意しよう(オマエが言うな(笑))。最近では安いのもたいがい動くが、不具合の報告も多少ある。えーと、あと当然マウスは要らない。
-
OSインストール
インストールするパッケージは「カスタム」から選ぶ。以前 6.2 のときはたしか「ネットワークドワークステーション」とかいうのにしたが、今回は「ネットワーク管理ワークステーション」(正確には忘れた)とかいうのにしてみた。他はとりあえずいらない。カーネルソースはあとで最新のものを入れる。ADSL接続に必要なppp関係など足りないものも多少あるが、あとで入れればよい。ルーター構築時のインストールのコツはなるべく最小インストールを目指すということである。当然 X も使わないので初心者のヒトはその辺間違えないように。
◎注意点
-
ネットワークインターフェースの設定はインストール後にしっかりやるので、適当なものを入力しておけばよい。また、eth0 の設定しか現れなくても、心配はない。
-
ファイアーウォールの設定はしない。あとで自分で構築します。
あとは普通のインストールでよい。
そういえば / には最低 250MB とらないとイカン!と怒られた。そんなん 50MB もあれば釣りがくると思うのだが...。まあ、ルーターだとはいえ、/usr は大きくしておこう。ちなみに自分の場合、/ 250MB /home 50MB /var 100MB /usr 1GB swap 100MB てなカンジ。ヒトによっては /var はもっとあってもよい。自分の場合ログはログ採集専用ホストに飛ばしているのと、ツールはすべて /usr に入れる方針なので、/var はこれで十分。
(追記 : 2002.03.09)赤帽7.2系ではもっと怒られた気がする。
-
インストール後のOS設定
-
スタートアップの設定
起動時は以下のみ開始する。
apmd
crond
keytable
network
syslog
赤帽だから ntsysv で設定しよう。
(追記 : 2002.03.09)ipchains, iptables などはここでは起動せずにあとでまとめたほうが扱いやすいかもしれない。
-
一般的な設定
ルーターでなくともやらねばならない設定については省略。GUIツールがないとできない!なんて言わないように。某MLとかで linuxconf がバグってるー!と大騒ぎしているヒトが多いので心配。そんなヒトはこれを機に覚えてしまいましょう。
-
ルーター固有の設定
/etc/sysconfig/network
----------
NETWORKING=yes
HOSTNAME=gw.hoge.com
DOMAINNAME=hoge.com
GATEWAY=
GATEWAYDEV=
FORWARD_IPV4=yes
上記で、 GATEWAY, GATEWAYDEV に値を設定していないことに注意!ここに値を設定してはいけません。
/etc/sysctl.conf
----------
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq=0
以前は net.ipv4.ip_always_defrag という項があったのだが、なくなった。これについては後述。
- ネットワークの設定
LAN内は静的プライベートアドレスを持たせます。あとで設定しますが、IPマスカレードするのです。
NIC が認識されていれば /etc/sysconfig/network-scripts/ に ifcfg-ethX というファイルができています。これがなければ残念ながら認識していません。その場合は初心者のヒトには面倒です。そうなってしまった場合は掲示板にでも書いてくれれば対処法を教えますが、おそらくその NIC をあきらめるのが近道です。認識に関しては昔みたく、lilo に append 項を加えなくても大丈夫になったみたいです。ますますブラックボックスとなってちょっといやーんな気もしますが...。
まずは参考までにウチの NIC 3枚挿しの設定
/etc/sysconfig/network-scripts/ifcfg-eth0
----------
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1
----------
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.2.255
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth2
----------
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
つまり2枚挿しの場合、
/etc/sysconfig/network-scripts/ifcfg-eth0
----------
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1
----------
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
でいいです。
- その他のオススメ設定
日本語ディストリビューションでは表示が日本語、英語とまちまちでウザイ。また自分の場合、スクリプトなどによる自動管理上の問題もあるので、日本語は使用しないようにしている。
/etc/sysconfig/i18n の記述で、LANG=C とすればOS起動時に設定される。
- パケットフィルタリングとIPマスカレードの設定
カーネル 2.4 では iptables というツールが標準ですが、なんだかまだ安定していないようです。よって、2.2 で慣れ親しんだ ipchains を使います(iptables については別ページ参照(追記:2001/11/15))。標準ではないですが、デフォルトのカーネルにも含まれています。再構築時には忘れずにモジュールにしておきましょう。
さて、実はとんでもないことをインストール後に知ったのです。
カーネル 2.4 では ipchains で使用できる ip_masq_* 系のモジュールがサポートされていないのでした。これが意味する所は「ipchains を用いてIPマスカレードした場合、FTPやIRCその他のサービスに制限が発生する」ということです。FTPについて言えばパッシブモードしか使えなくなります。
「以前は net.ipv4.ip_always_defrag という項があったのだが、なくなった。」
この理由はここにあったのです。FTPについて言えば最近はパッシブモードが本流なので、問題ないといえばないかもしれませんが...。まあ、いろいろと問題ありなのです。これを回避する方法がなくはないのですが、面倒なのでここでは省略します。ただしこの辺は頭に入れておいてください。
このサンプルではIPマスカレードを実現し、LAN内のホストはクライアントとして標準的なほぼすべてのサービスを使用できます。このままでは外部公開鯖は置けません(細工すれば置けます)。シェルスクリプトとして書いてありますので、容易に構築・破壊できます。実行すればルーティング開始というわけです。静的ルーティングがあったり、モジュールが必要だったり、全てこの中に追加していけばよいでしょう。
と、いうわけで以前は ipchains のスクリプトサンプルを公開していましたが、
現在は iptables への移行を推奨していますので、続編の「iptables 編」の方を参照してください。サンプルもあります(2001/11/21)。
(追記 : 2002.03.09)さて、とかなんとか書いていましたが、私は既に iptables の虜となっています。ほぼ安定しましたし、iptables に切り替えることを全面的にお勧めします。なんだか宗教の勧誘みたいだな。
-
最新パッケージに更新
CDからのインストールだと、すでにいくつかのパッケージは古くなっているかもしれません。セキュリティホールがあるものは必ず更新しなくてはなりません。赤帽サイトで確認し、最新のものにしてください。それから、カーネルも最新にしておいたほうが、あとあとよいので、最新のカーネルソースをとってきましょう。運用テストして一段落ついたら再構築し、パフォーマンスを上げましょう。
-
ルーティングテーブルの作成(必要なら)
これでなんとか下地ができました。あとは route コマンド等でルーティングを追加するなりしてください。
-
ADSL接続ツールの導入(ブロードバンドルーター的に使用する場合)
まず最新のppp パッケージを赤帽サイトからとってきてインストールしておいてください。そして Roaring Penguin さんちの rp-pppoe というツールをダウンロードしてきてインストールします。rpm -ivh でインストール後、/user/sbin/adsl-setup でアカウント、パスワードなどの設定をすればOKです。
rpm でインストールすると、たぶん /etc/rc.d/init.d/adsl とかできて、ntsysv 等で起動時実行できるようになると思いますが、これはオフにしておいたほうがよい気がします。失敗することがあるからです。失敗してもしつこくリトライしますが、あまり気持ちよくありません。私はうまくいくまで手動で動かしています(他のツールとのカラミがあるからだが)。
(追記 : 2002.03.09)7.2系列では最初から入っているそうな.....。
-
その他のおすすめツール導入
このサイト内にいろいろと書いてるので参考にしてください。snort は特におすすめです。
-
セキュリティチェックなど
ps aux でプロセスを確認してください。鯖が動いていたりしてませんね?
nmap などのポートスキャニングツールで、このルーターに向かって外部からポートスキャンをかましてください。不要なポートは全てふさがっていますね?
◎最後に
設定はよく確認してください。ミスをすると穴だらけ、大変なことになります。
上記の設定では最低限のセキュリティが保証されるだけです。ここから先は使い方やポリシーの問題ですので、ご自分で勉強して構築してください。工夫次第で「楽しい」ルーター運用ができると思います。
記憶をたどって書いてるので抜けがあるかもしれません。不明点は掲示板へ。
|