Linuxサーバ運用マニュアル
ファイアウォールとは,ローカルのネットワークをインターネットなど他のネットワークを経由した攻撃から防ぐ目的で設置する,文字通り「防火壁」です。専用のハードウエアなどもありますが,高価なものが多いのが難点です(最近では安価なものも出てきてはいます)。そこで,Linuxとフリーソフトを用いてファイアウォールを構築してみましょう。フリーソフトでも,一定レベルの安全性を求めることは十分に可能です。
ファイアウォールを構築するには,インターネットとローカルネットを論理的に切り離し,直接アクセスを出来なくする必要があります。そして,データを中継するゲートウェイ・マシンにファイアウォールを構築して,必要なデータ以外を排除することで,セキュリティ上問題のあるデータを食いとめるのです。
ここでは,SOCKS5とDelegateとsendmailというフリーソフトを使って,ファイアウォールを構築する方法について解説しています。
ファイアウォールを構築するためには,まず,セキュリティの基本方針を決めなければなりません。各サーバに対するアクセスと,ゲートウェイの中継について,方針を決定します。
また,方針を立てる際の前提を「インターネットには悪人がいっぱい」,「ローカルネットは善人ばかり」とします。この前提では,インターネット側からの攻撃は防ぎますが,ローカルネットからの攻撃に対しては無防備ということになります。一般的に,SOHOレベルの小規模ネットワークでは,見ず知らずの人物がローカルネットを使用することはほぼなく,ローカルネットからの攻撃はまずありえないと考えられるので,これで問題はないでしょう。
また,telnetについては,rootでの直接アクセスは禁止し,各ユーザーでログインした後で,suコマンドによって,管理者となるようにします。
インターネットとローカルネットは切り離されたネットワークですが,運用に際して,データのやりとりは必須です。そこで,インターネットとローカルネットの間にゲートウェイを構築して,データを中継する必要があります。
なお,ファイアウォールとしてセキュリティを高めるため,サーバ運用に必要なデータ以外は中継してはいけません。中継が必要なものについても,ユーザーやアクセス元などで細かく制限をかけ,不要な中継を禁止します。
プロトコル | インターネットからローカルネット | ローカルネットからインターネット |
---|---|---|
WWW(http) | WWWサーバのみ可 | 可 |
ftp | ftpサーバのみ可/ユーザー,アクセス元限定 | 可 |
telnet | WWWサーバのみ可/ユーザー,アクセス元限定 | 不可 |
Mail(smtp/pop) | Mailサーバのみ可/ユーザー,アクセス元限定 | 不可 |
インターネットで割り当てられているIPアドレス(グローバル・アドレス)とは異なるIPアドレスをローカルネット用に決定します。
10.0.0.0〜10.255.255.255 172.16.0.0〜172.31.255.255 192.168.0.0〜192.168.255.255 |
これらの範囲のアドレスが,プライベート・アドレスとして予約されているので,このうちのどれかを選択するのがいいでしょう。これらのIPアドレスは,インターネット上でルーティングされない(ことになっている)ので,誤って流出しても問題が起こりにくいのです。
ゲートウェイ・マシンは,通常のサーバと異なり,外部(インターネット側)用と内部(ローカルネット側)用の,2枚のLANカードが必要になります。
まず,LANカードを2枚認識させます。
lilo(Linux Loader)起動時に,2枚目のLANカードを認識させる必要があるので /etc/lilo.conf に
append = "ether=0,0,eth1" |
という行を追加します。次に
Linux> /sbin/lilo |
というコマンドを実行して,liloの設定変更を有効にした後,マシンを再起動します。
起動画面をチェックして,2枚のLANカードがeth0とeth1と認識されていることを確認します。なお,dmesgコマンドで,起動後にメッセージを確認することもできます。
【注意】
2枚目のLANカードのドライバがカーネルに組み込まれていない場合,カーネルの再構築の必要があります。
IRQが重なっていると認識しないため,BIOSでのIRQの設定やプラグ&プレイの設定などを確認してみてください。
eth0にグローバル・アドレス,eth1にプライベート・アドレスを割り当てることにします。
ifconfigコマンドによってIPを割り当て,routeコマンドによって経路制御情報をカーネルに教えます。
Linux> /sbin/ifconfig eth0 210.154.87.18 netmask 255.255.255.240 broadcast 210.154.87.31 Linux> /sbin/ifconfig eth1 10.0.1.254 netmask 255.255.255.0 broadcast 10.0.1.255 Linux> /sbin/route add -net 210.154.87.16 netmask 255.255.255.240 eth0 Linux> /sbin/route add -net 10.0.1.0 netmask 255.255.255.0 eth1 |
これらは,起動時に/etc/rc.d/rc.inet1で設定されますので,上記の例を参考に書き換え,再起動します。
確認方法は,ifconfigコマンドを引数無しで実行し,IPアドレス,ネットマスクなどの値を確認します。
Linux> /sbin/ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 eth0 Link encap:Ethernet HWaddr 00:40:33:56:7D:D4 inet addr:210.154.87.18 Bcast:210.154.87.31 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr 00:40:33:A0:E4:95 inet addr:10.0.1.254 Bcast:10.0.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 |
また,netstatコマンドに-rnオプションをつけて実行することで,経路情報を確認できます。localhost(127.0.0.0)と,デフォルト・ゲートウェイのほかに,ifconfigコマンドで設定したアドレスが確認できます。
Linux> netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 210.154.87.16 0.0.0.0 255.255.255.240 U 1500 0 0 eth0 10.0.1.0 0.0.0.0 255.255.255.0 U 1500 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo 0.0.0.0 210.154.87.17 0.0.0.0 UG 1500 0 0 eth0 |
メールについてはsendmailで中継することにしましょう。まずメールの送受信を簡単に図解します。
このような中継を実現するための設定例を以下に解説します。
sendmailの設定ファイルsendmail.cfは,CFを使用して作ると簡単です。ここではsendmail.cfの元になる設定ファイルsendmail.defを例にしています。
sendmail.defの設定のうち,メールの中継に関連する部分をピックアップして説明します。
GW smtp: mail.lo.ash.or.jp DOM ash.or.jp |
sendmail.defの設定のうち,メール転送に関連する部分をピックアップして説明します。
確認方法は,テスト・メールを送信し,メール・ヘッダーを確認することで,ちゃんとゲートウェイが転送してることを確認します。メールサーバから,外部のメール・アドレスにメールを出し,外部からのメールを受け取れることを確認します。
【注意】
ゲートウェイは外部と直接つながる場所なので,sendmailは必ず最新のものを利用しましょう。また,SPAMメールの中継などをしないように,外部から外部へのメール転送は禁止するようにしましょう。
次回は,「フリーソフトでファイアウォールを作ろう!(後編)」です。
DelegeteとSOCKS5の,具体的な設定方法を中心に,プロキシサーバの設定について解説します。
(ASHマルチメディア研究会/joe,はしもと)