/etc/pppディレクトリのfirewall-masqファイルは次のようになっている。
|
1:#!/bin/sh 2:# 3:# firewall-masqThis script sets up firewall rules for a machine 4:# acting as a masquerading gateway 5:# 6:# Copyright (C) 2000 Roaring Penguin Software Inc.This software may 7:# be distributed under the terms of the GNU General Public License, version 8:# 2 or any later version. 9: 10:# Interface to Internet 11:EXTIF=ppp+ 12: 13:ANY=0.0.0.0/0 14: 15:ipchains -P input ACCEPT 16:ipchains -P output ACCEPT 17:ipchains -P forward DENY 18: 19:ipchains -F forward 20:ipchains -F input 21:ipchains -F output 22: 23:# Deny TCP and UDP packets to privileged ports 24:ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY 25:ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY 26: 27:# Deny TCP connection attempts 28:ipchains -A input -l -i $EXTIF -p tcp -y -j DENY 29: 30:# Deny ICMP echo-requests 31:ipchains -A input -l -i $EXTIF -s $ANY echo-request -p icmp -j DENY 32: 33:# Do masquerading 34:ipchains -A forward -j MASQ 35:echo 1 > /proc/sys/net/ipv4/ip_forward ※先頭の行番号は説明のために入れたものであり,実際のfirewall-masqファイルには記載されない。 |
標準設定では,IPマスカレード機能を利用してクライアント(Windowsマシンなど)からの中継(ゲートウェイ)を許可するようになっている。LinuxサーバのLAN側に接続されたクライアントが,ADSL回線を使ってインターネットに接続するようにするだけという目的であれば,この設定のままでよい。
しかしこの設定は比較的高いセキュリティ設定になっており,クライアントからサーバへの接続はすべて許すものの,ADSL回線(ppp0インタフェース)を通じたインターネットからサーバへの接続を許可していない。そのため,インターネット上からはこのサーバ上で動作しているサービスは利用できない。
そこで前回説明したのと同様に,ipcahinsコマンドを適時加えて,公開したいサービスのポートに穴を開ける必要がある。
具体的には,firewall-masqファイルの22行目の部分に次のようなipchainsコマンドを挿入する。
| ipchains -A input -i $EXTIF -d $ANY ポート番号 -p プロトコル -j ACCEPT |
|
まず何よりもポートを開放する必要があるのは,DNSが使用する番号だ。標準の「firewall-masq」ファイルでは,DNSさえも透過されておらず,DNSを利用したドメイン名参照ができない。そこで,22行目に次のようなipchainsコマンドを追加しよう。
| ipchains -A input -i $EXTIF -d $ANY 53 -p udp -j ACCEPT |
あとは随時,サーバ上で公開したいサービスのポートを開けるためのipchainsコマンドを,やはり22行目の部分に追加していけばよい。たとえば,httpサービスを公開したいのであれば,次の行を追加すればよい。
| ipchains -A input -i $EXTIF -d $ANY 80 -p tcp -j ACCEPT |
もしそれ以外にも公開したいサービスがあれば,適時ipchainsコマンドを追加してほしい。
|
||||||
| 6/8 |
