トップ > SkyGarden出張所 > ubuntu server ppc > ルーターについて→その2:アドレス変換設定

ルーターについて→その2:アドレス変換設定

いよいよWebサイトを外部に公開します。
外部に公開する前に今一度セキュリティを再確認し、その後ルーターの設定変更とiptablesの設定を変更して外部にWebサイトを公開します。

※自宅サーバーにドメイン名にてアクセスするには、事前にダイナミックDNSの設定が必要です。

外部に公開する前の準備

これまで構築してきた自宅サーバーは、外部からの要求に応じて様々なサービスを提供します。

ネットワーク上に流れるデータは「パケット」と呼ばれ、各パケットには送信元と送信先を示すヘッダーがつけられます。サーバーはその外部からのサービスのリクエスト内容をヘッダーを見て識別します。

今まで構築してきたサーバーのサービスは「TCP/IP」階層モデルというプロトコル階層モデルにおいて、アプリケーション層という階層に属します。アプリケーション層はその下にあるトランスポート層のTCP、UDPパケットのヘッダー部分に埋め込まれている「ポート番号」から、リクエスト元がどのサービスを要求しているのかを判断します。

ですので、外部にサービスを解放する場合は、提供するサービスのポートも同時に開放する必要があります。通常、ポートはファイアウォールにて塞がれています。

今回のサーバー構築においてはファイアウォールを「ルーター」と「iptables」で構築していますので、それぞれの設定においてポートを開放する必要があります。

ポート開放の方針

原則、ポートは全て塞ぎ、必要なポートのみ開放します。ポート開放はサーバーのセキュリティに穴を空けることになりますので、必要最小限のみ開放し、開放したポートに関してはセキュリティチェックを強化するようにします。

ルーターでの設定

まずルーター側でセキュリティ対策を行った後、「ポートフォワーディング」を用いてポートを開放し、自宅サーバーにリクエストを振り向けるようにします。

1.管理画面自体のセキュリティ

市販ルーターでは、ルーターの管理画面にWebブラウザからアクセス出来るものが多いかと思います。

その管理画面にはログイン情報が必要なケースが多いと思いますが、ルーターによっては初期状態ではパスワード保護がされていない場合がありますので、その場合は必ず設定します。

2.PING対策(ICMP パケットフィルタリング)

主に相手のホストが生きているかどうかを使用されるコマンドに「ping」があります。
pingコマンドはICMPパケットを用いてやり取りしますので、今回のような自宅LAN内からのみ管理する場合は、外部からのping応答を行う必要はありませんのでルーターにて応答しないようにします。
※iptablesにおいては、ファイアウォールを構築するの過程においてpingに応答する前提で対策が施されています。

ルーターにおける設定方法はポート開放ナビ様の「メーカ別・ルータ 一覧」をご参照下さい。

3.IP Spoofing対策

外部からの攻撃手法の一つとして「IP Spoofing」と呼ばれるIP偽装による侵入方法があります。

IP Spoofingとは、IPアドレス偽装攻撃とも呼ばれ、基本的な手法の一つです。
これは、自IPアドレスを相手のIPアドレス等に偽装し攻撃を仕掛けたり、 Firewallを突破するという方法です。
単独で利用する場合、相手のホストがIPアドレスで接続先を制限している場合や、 相手のホストに侵入したとき、logなどに自IPアドレスが残されると困る場合などに使用されました。
この手法が考え出されたときには、このような使用がなされていましたが、 現在ではDoS 攻撃に使用するなど、 他の攻撃手法の中で応用されています。

引用元:小規模サイト管理者向け セキュリティ対策マニュアル

ルーターによってはワンクリックであらゆるセキュリティ対策を行えるものがあり、その場合にはIP Spoofing対策も施される場合があります。

ただし、環境によりそのような設定ができないケースも有り、その場合は個別に対策を行います。
※パケットフィルタリングが出来る事が必要です。

IP Spoofingは本来自宅LAN内でしかやり取りされないプライベートIPを用いるものなので、「外部(=WAN側)から内部(=LAN側)にプライベートIPでアクセスする」「内部(=LAN側)から外部(=WAN側)にプライベートIPアドレスを発信する」パケットを全て破棄するようにします。
また、自分自身を示すループバックアドレスも外部から送信されたり、外部に発信したりはしないのでそちらも破棄します。

パケットの送信方向 宛先IPアドレス 送信元IPアドレス プロトコル 動作
WAN→LAN 全て 10.0.0.0/8 全て 無視又は破棄
WAN→LAN 全て 172.16.0.0/12 全て 無視又は破棄
WAN→LAN 全て 192.168.0.0/16 全て 無視又は破棄
WAN→LAN 全て 127.0.0.1 全て 無視又は破棄
LAN→WAN 10.0.0.0/8 全て 全て 無視又は破棄
LAN→WAN 172.16.0.0/12 全て 全て 無視又は破棄
LAN→WAN 192.168.0.0/16 全て 全て 無視又は破棄
LAN→WAN 127.0.0.1 全て 全て 無視又は破棄

4.ポートフォワーディング

特定のサービス宛のポートを開放し、自宅サーバーに振り向けます。サーバー側にてよく使われるポート番号は以下の通りになります。

プロトコル ポート番号 プロトコル ポート番号
FTP(データ用) TCP/20 POP3 TCP/110
FTP(制御用) TCP/21 POP3s TCP/995
FTP(PASV) TCP/任意
(1025以降)
IMAP TCP/143
SSH TCP/22 IMAPs TCP/993
DNS TCP/53
UDP/53
SMTP TCP/25
HTTP TCP/80 SMTPs TCP/465
HTTPS TCP/443 Submission TCP/587

サービスによってはポート番号を変更出来るものもありますので、セキュリティ対策としてポート番号を変更する手もあります。SSHなどは変更した方がいいかと思います。

今回はHTTPがやり取り出来るよう、TCPの80番ポートをフォワーディングします。

WAN側IPアドレス プロトコル 方向 LAN側IPアドレス LAN側のポート
ルーターの
WAN側IPアドレス
HTTP
(TCP/80)
自宅サーバーの
プライベートIPアドレス
TCP/80

5.iptablesの設定を変更

最後にサーバー側のファイアウォール設定を変更します。

ファイアウォールの設定の記事内のスクリプトにてiptablesを構築している場合、HTTPのコメントを解除します。

sudo nano /etc/network/if-pre-up.d/iptables
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
#上記の行のコメントを解除します
#保存後、networkを再起動します
sudo /etc/init.d/networking restart

ポート開放後のチェック

外部からポートチェックを行えるサービスを利用して、80番ポートが開放されているかどうかチェックします。

また、それ以外のポートが塞がれているかも併せてチェックするといいでしょう。

  • GRC | ShieldsUP! – Internet Vulnerability Profiling
    ※上記ページより「Proceed」ボタンをクリック(2つありますがどちらでもOK)→表示されたページの「All Service Ports」をクリックし、80番ポートのみ赤で、それ以外は青か緑になっていればOKです。

最後に実際にドメイン名をWebブラウザのURL欄に入力して、ホームページが表示されるか確認します。

参考サイト様

<table border=”0″ cellspacing=”2″ cellpadding=”5″>
<tr>
<td align=”center” valign=”middle” bgcolor=”#b3f291″>プロトコル</td>
<td align=”center” valign=”middle” bgcolor=”#b3f291″>ポート番号</td>
<td align=”center” valign=”middle” bgcolor=”#b3f291″>プロトコル</td>
<td align=”center” valign=”middle” bgcolor=”#b3f291″>ポート番号</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>FTP(データ用)</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/20</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>POP3</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/110</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>FTP(制御用)</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/21</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>POP3s</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/995</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>FTP(PASV)</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/任意<br />
(1025以降)</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>IMAP</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/143</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>SSH</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/21</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>IMAPs</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/993</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>DNS</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/53<br />
UDP/53</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>SMTP</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/25</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>HTTP</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/80</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>SMTPs</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/465</td>
</tr>
<tr>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>HTTPS</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/443</td>
<td align=”center” valign=”middle” bgcolor=”#fff1b9″>Submission</td>
<td align=”center” valign=”middle” bgcolor=”#ffdfff”>TCP/587</td>
</tr>
</table>

トラックバックURL

コメント / トラックバック1件

  1. […] ルータに関しては後述する「アドレス変換設定」にて21番およびPASVに使用するポート(上記設定では4000~4029番)を自宅サーバーにフォワーディングして下さい。 […]

コメントをどうぞ

宜しければコメントをどうぞ