自宅サーバ構築時のメモ(ポート設定編)

やっとこさルータのポート設定。以前のエントリの通り、必要なポートだけ空けてそれ以外のポートは閉じることとします。■とはいえ必要な…

やっとこさルータのポート設定。以前のエントリの通り、必要なポートだけ空けてそれ以外のポートは閉じることとします。

■とはいえ

必要なポートだけを空けるってのは実は難しいです。なぜなら、自分が意識しないところで動いているサービスが通信のためにポートを使ってるかもしれないからです。ということで、ここは自分で調べるのをあきらめて先人の知恵を借りる事にします。

■結果

参考になりそうなページがいろいろ見つかりました。

BA8000の設定例

必要なポートだけ開放してそれ以外は遮断という設定を実践しています。それに加えて危険なポートを明示的に遮断しているのが特徴ですね。それぞれのポートの意味は以下のページに書いてあります。

ポートスキャン対策
OSのセキュリティ設定・不要ポートの停止|Windows2000とApache2

これらのポートは特に狙われやすい箇所なので、何かの間違いで開放してしまわないように設定しておくんですね。へー。

これ以外のポートが狙われないとはかぎらないけど、怪しいポートが見つかり次第防いでいけばいいんじゃないかな。それにセキュリティなんてほとんど気にしなくて良い!ってどこかの誰かが言ってたし!(開きなおり)

■ip-tablesの設定

これもルータと同じ設定…にしてはいけません。自宅からサーバ管理するときはVPN経由ではなく直接サーバにアクセスするので、使用するアプリのポートは空けておく必要があります。

具体的な設定はLinux/iptablesでルータを作る – Dream-Seed -Wiki版-iptables・設定・ファイアウォール・セキュリティを見てもらえばOK。前者は設定をシェルスクリプトを作成して一気に適用、後者はコンソールから1つずつ適用しています。単純な設定なら後者で十分ですが、作業記録を残すという意味でも前者の方がいいでしょう。

設定が終われば

/etc/rc.d/init.d/iptables save

で保存すると、/etc/sysconfig/iptablesという設定ファイルが生成されます。これを直接編集してもいいのですが、iptablesコマンド1つで消えてしまう可能性があるのでやめた方が無難だと判断します。

iptablesも匠の域に達すればNAPTからネットワーク負荷分散までいろいろ設定できるらしいんですけどね…。まぁ必要ない機能を勉強しても身につかないので今回はスルーします。

その他参考リンク

  • iptables(5つのチェインの説明が図で書かれていて分かりやすい)
  • Manpage of IPTABLES(man iptablesの説明文)

自宅サーバ構築時のメモ(OpenVPN編)

自宅サーバ構築時のメモ続き。OpenVPN編はなぜセキュアなのか?編です。単純に構築だけするなら以下のエントリを参照してください。CentOS5.0でOpen…

自宅サーバ構築時のメモ続き。OpenVPN編はなぜセキュアなのか?編です。単純に構築だけするなら以下のエントリを参照してください。

CentOS5.0でOpenVPNを構築してみる。

■「なぜOpenVPNはセキュアなのか」の前に

セキュアじゃないVPNソフトはあるのか?って話になります。世間ではPPTPがアンセキュアとか言われてるけど、いまいち実感がわかないんですけどね。えーっとなんか認証部分が微妙とかそういう話だっけ?(←なげやり)

お、このページによれば

  • NATとの相性が悪い
  • トンネルに対する認証がない(? DoS攻撃)
  • 暗号化に若干の脆弱性(プロトコルの脆弱性ではなく、実装の脆弱性)

だって。NATとの相性が悪いのはIPSecも同じなので、やっぱ認証の問題が大きいんですかね。暗号化の脆弱性ってのはWindowsのPPTPの問題っぽいです→参考リンク

ここらへんは本を読んで一度は理解したんですが、技術から離れると忘れちゃいますねー。うん。詳しくロジック知りたければこの本を買うといいよ!

ネットワークマガジン編集部
アスキー (2007/03/15)
売り上げランキング: 90146

一冊まるまるVPNづくし、しかもイラスト多いのでかなり分かりしやすいですよ。僕も新人の頃はお世話になりました(今じゃ忘れました)

■なぜOpenVPNはセキュアなのか

OpenVPNがセキュアな理由。それはOpenVPNが公開鍵基盤(PKI)を使ったサーバ-クライアント構成だからです。これならVPNの事を知らない人でも分かると思うし、僕レベルの知識でもセキュアであることを説明できます。OpenVPN構築時のサーバ-クライアントの持ち物は以下の通りです。

  • サーバ側
    • CA証明書
    • サーバ証明書(サーバ公開鍵付き)
    • サーバ秘密鍵
    • DH鍵
  • クライアント側
    • CA証明書
    • クライアント証明書(クライアント公開鍵付き)
    • クライアント秘密鍵

クライアントの証明書と秘密鍵はサーバで生成して安全な経路(フロッピーとか)でクライアントに移したものとします。通信の手順は以下の通り。PKIのルールに基づいています。

  1. まずクライアントがクライアント証明書をサーバに送ります。
  2. サーバはクライアント証明書を確認した後、クライアント証明書に付属しているクライアント公開鍵を使って通信内容を暗号化してクライアントに返します。
  3. クライアントはクライアント秘密鍵を使ってサーバからの通信を解読します。この時、OpenVPNではパスワードの入力を必要とします。仮にクライアント秘密鍵が漏れてもパスワードが分からないと使えない仕組みです。
  4. クライアント→サーバに通信するときも同じ事を行います。
  5. サーバ-クライアント間でセキュアな経路が確立できたのでOK。

つうかまんまPKIの説明ですけどね。僕の知識ではこれ以上踏み込めないので…。その代わりといっちゃなんですが、参考文献を挙げておきますね。

5分で絶対に分かるPKI
一番簡単と思われるPKIについての説明。本当に分かりやすい。

OpenVPN 2.0 HOWTO Japanese Translation
OpenVPN本家の説明文の日本語訳。詳しく勉強したいのならこれ。デフォルト設定以上にセキュリティを強化する方法も掲載されています。

Open Tech Press | SSL VPN と OpenVPN:多くの嘘とわずかな真実
OpenVPNがいかにセキュアかを説明した記事。

という話でした。詳しいことが分からなくても「PKIと同じだよー」ということが理解できれば、安心感が得られると思って書きました!

自宅サーバ構築時のメモいろいろ(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を使います。

CentOS5.0でOpenVPNを構築してみる。

最近家でLinuxをいじってるので、リモートからGUIで安全にアクセスするためVPNを構築することにしました。

最近家でLinuxをいじってるので、リモートからGUIで安全にアクセスするためVPNを構築することにしました。


“CentOS5.0でOpenVPNを構築してみる。” の続きを読む