自宅サーバ構築時のメモいろいろ(VPNの利点編)

思うところあって自宅サーバを立てる事にしました。

一応僕はサーバ屋なのでサーバの仕組みやネットワークの基礎は分かってます。が、仕事で立てるサーバはイントラ用がほとんど。DMZ(インターネットと直接繋がる危険な場所)は他社に任せてセキュアな環境の中でサーバ構築するのでセキュリティの事はあんまり意識しないんですよね(ポートもフルオープンだし)。

ということで、このエントリではセキュリティの話を中心にメモしていきます。

■超簡単なネットワーク図

internet━━【ルータ】━┳━【サーバ(Linux)】
            ┃
            ┗━【クライアント(Windows)】

こんなかんじ。取りあえずルータで不正なパケットをブロックすればOKです。

■ポートを閉じる

サーバを外部に公開する時には、不必要なポートを閉じる必要があります。ポートを開放すればするほど、攻撃に使える入口が増えるからです。1つしか扉がない家と100個扉がある家。後者なら1つくらい鍵を閉め忘れてる扉があるかもしれないですよね?ポートを閉める=扉を壁にすることです。

が、なんでもかんでもポートを閉じると目的の機能まで使えなくなってしまいます。よって

  1. サーバが提供するサービスを決め、そのサービスに対応するポートを開放する
  2. それ以外のポートを閉じる

この手順でポートの設定を行えばOKです。

で、サーバが"外部"に提供するサービスですが…

  • HTTP
  • VPN

この2つだけとします。そりゃ外部からSSHとかVNCとかFTPとか使ってサーバ管理したいですよ。けどポートを空けるとリスクが高くなるのでこれらは閉じます。その代わりにVPNを使ってサーバ⇔クライアント間でVPNセッションを確立させます。VPNセッションを確立すると全ての通信がVPN上の通信として扱われるので、VPN用のポートを開放するだけでどんな通信でも許可されることになります。

■なぜVPNを使うのか

一般的にはSSHを使ってサーバ管理、その他のアンセキュアなサービスを使うならSSHポートフォワーディングを使ってセキュアな通信にするって所ですが、この方法では使いたいサービスが増えるごとにルータのポートとSSHポートフォワーディングを設定する必要があります。めんどい。VPNをつかえば前述の通りどんなサービスもセキュアな経路を使ってやりとりされるのでOK。らくちん。

ただしVPNソフトウェアによってVPNの実装方法が違うので、なるべくセキュアなVPN通信を確立したい。そのためにOpenVPNを使います。