Anonim

2017年であり、VPNの使用は簡単です。 外部のプライバシーに関する懸念事項と、あなた自身のISPが閲覧履歴を販売できることとの間に、実際に閲覧履歴を使用しない理由はありません。

もちろん、数百のVPNサービスの1つを支払うことができますが、もう一度、データを誰かに頼っています。 現実にはほとんどが素晴らしいですが、完全な制御が必要な場合は、仮想プライベートサーバー(VPS)上に独自のVPNを構築するか、本当にハードコアになりたい場合は独自のプライベートサーバーをレンタルできます。

VPNを構築するために必要なのは、オープンソースのOpenVPNソフトウェアとLinux(またはBSD)だけです。 構成は複雑になる可能性がありますが、基本的なLinuxスキルを持っている人でもUbuntuのようなディストリビューションを手に入れることは不可能ではありません。

このガイドでは、Ubuntuを実行するVPSが必要になります。 DigitalOceanLinodeなどの人から簡単に選択できます。 基本的なセキュリティガイドに従って設定してください。 SSH経由のルートアクセスを許可するなどの基本的な間違いをしないようにしてください。

また、これは、VPSへのSSHを介してコマンドラインでこのセットアップ全体を実行することに注意してください。 Linuxの知識を必要とするものは何もありませんが、クリックする代わりに入力する準備をしてください。

必要なものを入手する

クイックリンク

  • 必要なものを入手する
  • ファイアウォールを設定する
    • インターフェイスを見つける
    • Iptablesの基本
    • ルールを設定する
      • ループバック
      • ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • ロギング
      • その他をすべて拒否
      • NATマスカレーディング
    • IPv4トラフィックを転送する
    • すべてのIPv6接続を停止する
    • Iptablesへのインポートと保存

Ubuntuは、リポジトリにOpenVPNをパッケージ化して配布します。 aptを使用してインストールするだけです。 暗号化キーを生成するためのツールも必要です。 両方をインストールします。

$ sudo apt openvpn easy-rsaをインストールします

ファイアウォールを設定する

次に、ファイアウォールの世話をする必要があります。 これは、VPNを安全に保ち、データ漏洩と不要なアクセスの両方を防ぐための重要な要素です。

IptablesはLinuxのメインファイアウォールであり、Ubuntuのポートへのアクセスを制御するための最良のオプションです。 既にインストールされているので、ファイアウォールルールの設定を開始できます。

インターフェイスを見つける

iptablesにルールを書き始める前に、サーバーがインターネットに接続されているインターフェイスを確認します。 ifconfigを実行して、ネットワークインターフェイスを表示します。 接続しているIPアドレスに一致するinet addr:を持つものが正しいインターフェイスです。

Iptablesの基本

通常、インターネットから端末にランダムにコピーして貼り付けることはお勧めできません。 これは、セキュリティトピックを扱う場合に特に当てはまります。 そのため、ここで時間をかけて、iptablesのルールを入力する前に少し学習してください。

iptablesルールのこの例を見てください。

-A INPUT -i eth0 -p tcp -m state -state ESTABLISHED -sport 443 -j ACCEPT

さて、-Aは新しいルールを追加することを意味します。 INPUTは、サーバーへの入力に関係することを意味します。 OUTPUTもあります。 -iフラグは、iptablesにこのルールの対象となるインターフェースを指示します。 -pを使用して、ルールのプロトコルを指定できます。 このルールはtcpを処理します。 -mは、接続が満たす必要がある条件を指定します。 この場合、指定された状態と一致する必要があります。 もちろん、-stateは状態、この場合はESTABLISHED接続を指定します。 次の部分は、このルールがどのポート用であるかをiptablesに伝えます。 これはHTTPSポートであるポート443です。 最後のフラグは-jです。 これは「ジャンプ」の略で、接続をどう処理するかをiptablesに指示します。 この接続がルールのすべての要件を満たしている場合、iptablesはそれを受け入れます。

ルールを設定する

したがって、iptablesルールがどのように機能するかについての一般的な考えが必要です。 このセクションの残りの部分では、ルールを1つずつ設定する方法について説明します。

iptablesルールのセットを作成する最良の方法は、それらすべてを含むファイルを作成することです。 その後、すべてを一度にiptablesにインポートできます。 ルールを1つずつ設定すると、特に新しいルールのセットをゼロから開始する場合に混乱を招く可能性があります。

/ tmpディレクトリにファイルを作成して、ルールを作成します。

$ vim / tmp / ipv4

* filterでそのファイルを開始します。 これにより、iptablesに、パケットフィルタリングのルールが続くことがわかります。

ループバック

ルールの最初のセクションは、ループバックインターフェイスをロックダウンします。 それらは、サーバーがループバックインターフェイスで自身からのトラフィックを受け入れる必要があることをiptablesに伝えます。 また、ループバックからではない、それ自体からのトラフィックを拒否する必要があります。

-A INPUT -i lo -j ACCEPT -A INPUT! -i lo -s 127.0.0.0/8 -j拒否-A出力-o lo -j ACCEPT

ping

次に、pingを許可します。 それ以外の方法で到達できない場合に備えて、サーバーをpingしてオンラインであることを確認できる必要があります。 この場合、エコー要求のみが許可され、サーバーはICMP出力の送信を許可します。

-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m state --state ESTABLISHED、RELATED -j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

SSHが必要です。 これが、サーバーにアクセスできる唯一の方法です。 SSHルールはインターネットインターフェースに固有のものであるため、サーバーが実際に使用しているインターフェースをeth0に置き換えてください。

また、ポート22からSSH接続を変更することをお勧めします。これは、潜在的な攻撃者が試みるデフォルトであるためです。 その場合は、iptablesルールでも変更してください。

-A INPUT -i eth0 -p tcp -m state --state NEW、ESTABLISHED --dport 22 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

OpenVPN

この次のピースは、UDPを介したOpenVPNサーバーとのトラフィックを許可します。

-A INPUT -i eth0 -p udp -m state --state NEW、ESTABLISHED --dport 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT

DNS

次に、UDPおよびTCPを介したDNS接続を許可します。 VPNでISPではなくDNSを処理する必要があります。 それが、そもそもVPNをセットアップしている理由の一部です。

-A入力-i eth0 -p udp -m状態--state ESTABLISHED --sport 53 -j ACCEPT -A出力-o eth0 -p udp -m状態--state NEW、ESTABLISHED --dport 53 -j ACCEPT -A入力-i eth0 -p tcp -m状態--state確立済み--sport 53 -j ACCEPT -A出力-o eth0 -p tcp -m状態--state NEW、ESTABLISHED --dport 53 -j ACCEPT

HTTP / S

Ubuntuが自分自身を更新できるようにするには、HTTPおよびHTTPSの発信接続を許可する一連のルールを追加する必要があります。 これらのルールはサーバーがHTTP接続を開始することのみを許可するため、Webサーバーとして使用したり、ポート80またはポート443を介して接続したりすることはできません

-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT -A OUTPUT- o eth0 -p tcp -m state --state NEW、ESTABLISHED --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW、ESTABLISHED --dport 443 -j ACCEPT

NTP

サーバーのクロックを適切に実行し続けるには、NTPが必要になります。 NTPを使用すると、サーバーを世界中のタイムサーバーと同期できます。 サーバーのクロックが正しくない場合、接続の問題が発生する可能性があるため、NTPを実行することをお勧めします。 繰り返しますが、発信接続と既に確立された接続のみを受け入れます。

-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW、ESTABLISHED --dport 123 -j ACCEPT

TUN

OpenVPNがトラフィックのトンネル化に使用するTUNインターフェイスのブロックを解除します。

-A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT

TUNがトラフィックをVPNの通常のインターフェイスに転送できるようにする必要があります。 そのIPアドレスはOpenVPN構成にあります。 構成で変更する場合は、ルールでも変更します。

-A転送-i tun0 -o eth0 -s 10.8.0.0/24 -j受け入れ-A転送-m状態--state確立、関連-j受け入れ

ロギング

iptablesによって拒否されたすべてのもののログを保持することをお勧めします。 この場合、これらのルールのいずれにも当てはまらないものを意味します。 ログを使用すると、悪意のあるアクティビティがあるかどうか、またはサーバーに対して悪意のある操作を試みているかどうかを確認できます。

-A INPUT -m limit –limit 3 / min -j LOG –log-prefix“ iptables_INPUT_denied:” –log-level 4
-A FORWARD -m limit –limit 3 / min -j LOG –log-prefix“ iptables_FORWARD_denied:” –log-level 4
-A OUTPUT -m limit –limit 3 / min -j LOG –log-prefix“ iptables_OUTPUT_denied:” –log-level 4

その他をすべて拒否

最後に、ルールに適合しないものはすべてブロックする必要があります。 それがそもそもファイアウォールを持つことの目的です。

-A入力-j拒否-A転送-j拒否-A出力-j拒否

COMMITでファイルを閉じて、iptablesにすべてのルールをコミットするように指示します。

NATマスカレーディング

VPNからの接続は、サーバー自体から来ているように見える必要があります。 このピースは別のテーブルを使用するため、通常のiptablesファイルに含めることはできません。 しかし、それは大丈夫です、それはたった1行です。

$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

IPv4トラフィックを転送する

IPv4トラフィックの転送を有効にする必要があります。これにより、VPNとサーバーの実際のネットワークインターフェースの間を通過できます。 sudoで/etc/sysctl.d/99-sysctl.confを開きます。

以下の行を見つけて、#を削除してコメントを外します。

net.ipv4.ip_forward = 1

すべてのIPv6接続を停止する

申し訳ありませんが、まだiptablesの使用は完了していません。 すべてのIPv6トラフィックをブロックする必要があります。 このOpenVPNサーバーはIPv4のみをサポートしますが、IPv6が必要な状況に陥ることはないため、これは問題ありません。 その結果、IPv6接続は潜在的に情報を漏洩する可能性があります。これは、VPNを使用するときに必要な情報とは正反対です。

iptablesのルールを設定する前に、システム上の他の場所でIPv6を無効にする必要があります。

/etc/sysctl.d/99-sysctl.confに次の行を追加します。 前のセクションで閉じた場合は、sudoで再度開きます。

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1

変更を有効にします。

$ sudo sysctl -p

/ etc / hostsのすべてのIPv6行をコメント化します。 ここでもsudoが必要になります。

#:: 1 ip6-localhost ip6-loopback#fe00 :: 0 ip6-localnet#ff00 :: 0 ip6-mcastprefix#ff02 :: 1 ip6-allnodes#ff02 :: 2 ip6-allrouters

最後に、IPv6 iptablesルールを作成できます。 それらのファイルを/ tmp / ipv6に作成します。

* filter -A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT

ほら、シンプルだ。 すべてを拒否します。

Iptablesへのインポートと保存

ルールをインポートするには、ルールをインポートする必要があります。 だから、今がその時です。

そこにある他のすべてをクリアすることから始めます。 古いルールが邪魔になるのは望ましくありません。

$ sudo iptables -F && sudo iptables -X

IPv4ルールとIPv6ルールの両方をインポートします。

$ sudo iptables-restore </ tmp / ipv4 $ sudo ip6tables-restore </ tmp / ipv6

おそらく二度とやりたくないでしょう。 したがって、ルールを永続的に保存するには、新しいパッケージが必要になります。

$ sudo apt install iptables-persistent

インストール中に、パッケージは既存のルールを保存するよう要求します。 「はい」と答えます。

後で変更する場合は、保存した構成も更新できます。

$ sudoサービスnetfilter-persistent保存

しばらく時間がかかりましたが、ファイアウォールの準備が整いました。 次のページでは、必要な暗号化キーの作成に取り組んでいきます。

ここをクリック:次のページ

VPNについて:OpenVPNで独自のVPNをセットアップする方法(パート3)