GNU/Linux >> Linux の 問題 >  >> Linux

独自のVPNを作成する方法–詳細な手順

VPN –それは何ですか?

VPNは、デバイスとインターネット接続の間に暗号化されたトンネルを作成する仮想プライベートネットワークです。 2つの異なるVPNサーバーを同時に使用するダブルVPNがあります。 VeePNを使用する場合、すべての着信データと発信データは暗号化されます。 VPNサーバーに接続する場合、すべてのオンラインアクティビティは、プロバイダーではなく、このトンネルを通過します。したがって、トラフィックをスキャンしたいサイバー犯罪者は、あなたが接続している国だけを見ることができ、ソーシャルネットワーク、クレジットカード、または個人情報からパスワードを盗むことはできません。

VPNは、サイバー侵入者と戦うための非常に優れたツールであり、「独自のVPNサーバーをセットアップできますか?」という質問に興味があります。もちろん、独自のVPNまたはVPNチェーンを設定することもできます。 VPNサーバーを作成することで、多くのメリットが得られます。

  • VPNを使用してサーバーとユーザーを制御します。
  • 誰もあなたのデータを所有していないことを確認できます。
  • お住まいの地域でブロックされている多くのリソースにアクセスできます。
  • パブリックWi-Fiネットワークに接続できるようになり、誰もデータを引き継ぐことができなくなります。
  • 特別なサービスからトラフィックを隠すことができます。

LinuxDebianに基づいて独自のVPNサーバーを作成するための手順

以下に、自家製VPNを作成する方法の詳細な手順を示します。結果は手順の正確さに依存するため、すべてのヒントに注意深く従ってください。

AmazonAWSに登録してサーバーに接続

アマゾンウェブサービスには、簡単なサインアッププロセスとプロファイルを作成するためのヒントがあり、このステップを自分で実行できます。登録プロセスが完了したら、Lightsailに移動し、VPNサーバーを作成するジオゾーンを選択します。次に、新しいインスタンスを作成し、次のデータを選択します:「OSのみ」、Debian9.5オペレーティングシステム。次に、インスタンスプランが表示されます。512MBのRAMを備えた最も一般的なプランが適しています。

一部のサイトは、IPアドレスが人気のあるホスティング業者に属している訪問者に対して攻撃的であり、それらをブロックします。彼らの意見では、そのような訪問者はDDOS攻撃に参加しています。ブロックされたり、1つのIPアドレスを他の何千ものAWSマシンと共有したりする必要がないように、ネットワーキングに移動してから、必ず静的IPを割り当ててください。作成したインスタンスに割り当てます。

次に、SSHアクセス用の秘密鍵をダウンロードする必要があります。秘密鍵は、[アカウント]>[SSH鍵]セクションにあります。このキーをダウンロードして、SSHクライアントにアップロードします。 iPadProとTermiusを使用してバリにサーバーをセットアップしました。ただし、別のSSHクライアントを使用できます。たとえば、優れた代替手段は、macOSに組み込まれているTerminal.appです。この手順では、ターミナルについて検討しますが、アルゴリズムは他のSSHクライアントでも同様です。

簡単に始めましょう–ターミナルを開きます。ターミナルには、「ロケール」と呼ばれるすべての既知の問題があります。 Termiusを使用している場合、この問題は発生しません。ロケールの問題を解消するために、ローカルのmacOS.profileファイルに数行の新しい行を追加します。 nanoテキストエディタを使用してこのファイルを編集します。次のようなものがあれば役立ちます:nano〜/.profile。次に、そこに数行挿入する必要があります:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Ctrl+Xコマンドを使用してこのファイルを保存する必要があります。コマンドCmd+Qを使用してターミナルを閉じます。この手順の後、もう一度実行します。

次に、以前にダウンロードしたLightsail秘密鍵をSSH鍵が保存されている特別なディレクトリに移動する必要があります:mv〜/ Downloads / YOUR_DOWNLOADED_KEY.pem〜/.ssh。この手順の後、キーの権限を制限します。そうしないと、macOSはその使用をブロックします。これは、次の暗号を使用して実行できます。

cd ~/ .ssh/
chmod 600 YOUR_DOWNLOADED_KEY.pem

この手順が完了すると、Lightsailマシンに接続できます。特別なフィールドYOUR_LIGHTSAIL_IPが表示されます。その中で、外部静的IPアドレスを指定する必要があります:ssh -i YOUR_DOWNLOADED_KEY.pem admin@YOUR_LIGHTSAIL_IP。すべてを正しく行うと、すべてのデータが記載された特別な碑文が表示されます。

Debianの設定

rootユーザーの下で実行する必要のある後続のすべてのステップ。したがって、sudosuを指定します。次に、リポジトリ内のパッケージのインデックスを更新します。おそらく、更新があることを自分で確認できます:apt-getupdate。今、あなたの仕事はこれらのアップデートをインストールすることです:apt-getupgrade。

strongSwanをインストールする

特別な暗号を使用して、strongSwanをインストールします:apt-getinstallstrongswan。 strongSwanの設定方法については後で説明します。現時点で最も重要なことは、デバイスがVPNを使用できるように証明書を作成することです。

アクセス証明書を生成する

このガイドでは、チームのみがVPNサーバーを使用するため、自己署名証明書を使用します。証明書を作成するには、strongswan-pkiパッケージが必要です。インストールする:strongswan-pkiをパッケージ化します。

これで、証明書の作成を開始できます。最初のステップは、ルート証明書を作成することです。とりわけ、CA(認証局)として知られています。この証明書は、必要な他の証明書を発行します。 ca.pemファイルで証明書を作成できます:

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem

VPNサーバーの証明書を作成するには、debian.pemファイルが必要です。

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem

デバイスの証明書を作成するには、me.pemファイルが必要です:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem 
ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem

ca.pemファイルはもう必要ないので、セキュリティと信頼性のために、rm/etc/ipsec.d/private/ca.pemから削除してください。証明書の作成プロセスが完了しました–おめでとうございます。もうすぐ終わりです!

証明書に時間がかかりすぎる場合はどうすればよいですか?

時間が長すぎるとはどういう意味ですか?たとえば、証明書は5秒以上生成されます。これらのデータは、エントロピーの量が少ないことを示しています。エントロピーの量が少ないため、証明書の作成には40〜60分かかる場合がありますが、これは作業にはあまり適していません。したがって、エントロピーの量を確認するには、次のタブで別のセッションを開始できます。

上記のコマンドを使用すると、リクエスト時のエントロピーの量が表示されます。エントロピーをリアルタイムで制御する場合は、次のコマンドを使用できます:watch -n 0.25 cat / proc / sys / kernel / random/entropy_avail。

結果が200未満のエントロピーを示している場合は、ホスティングプロバイダーを変更することをお勧めします。また、多くの専門家は、エントロピーを生成することをタスクとする、hagedパッケージのインストールをアドバイスしています。ただし、このパッケージの有用性は証明されていないため、さらに、すべてがあなたに依存します。 Amazon Lightsailを使用すると、これらの問題は発生せず、キーをすばやく生成できます。リクエストを終了するには、Ctrl+Zキーを使用する必要があります。

strongSwanを構成する

strongSwanを適切に構成するには、デフォルトのstrongSwan構成をクリアする必要があります。次のコマンドを使用します:>/etc/ipsec.conf。次に、nanoテキストエディタで独自のものを作成できます:nano/etc/ipsec.conf。

YOUR_LIGHTSAIL_IPフィールドが表示されます。タスクは、このフィールドをAWSLightsailのマシンの外部IPアドレスに置き換えることです。これで、次のようなテキストを挿入できます:

include /var/lib/strongswan/ipsec.conf.inc

config setup
    	uniqueids=never
    	charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    	keyexchange=ikev2
    	ike=aes128gcm16-sha2_256-prfsha256-ecp256!
    	esp=aes128gcm16-sha2_256-ecp256!
    	fragmentation=yes
    	rekey=no
    	compress=yes
    	dpdaction=clear
    	left=%any
    	leftauth=pubkey
    	leftsourceip=YOUR_LIGHTSAIL_IP
    	leftid=YOUR_LIGHTSAIL_IP
    	leftcert=debian.pem
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0
    	right=%any
    	rightauth=pubkey
    	rightsourceip=10.10.10.0/24
    	rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
    	auto=add

重要! strongSwanは、構成内のすべてのインデントについて非常に厳密です。したがって、コマンドを入力するときは、Tabキーを使用して構成の各セクションを区切ります。この例では、これがどのように見えるかを指定しました。モデルを使用することも、インデントを1つだけ実行することもできます。そうしないと、strongSwanは機能しません。

Ctrl+Xキーを使用して作成したファイルを保存します。証明書と認証キーへのすべての参照を格納するipsec.secretsファイルで、サーバー証明書への特別なポインターを追加します。

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc

: RSA debian.pem

すべての手順を実行すると、Strongswanのセットアップが完了します。サービスを再起動すると便利です:ipsecrestart。すべてのコマンドを正しく入力すると、サーバーは次のメッセージで起動します。

strongSwan 5.5.1IPsec[スターター]を開始しています…

プログラムがエラーをスローしていることに気付いた場合は、システムログを読んで、問題が何であるかを判断してください。このコマンドは、ログの最後の50行を表示します:tail -n 50> / var / log/syslog。

ネットワークカーネル設定の構成

/etc/sysctl.confファイルに、いくつかの変更を加える必要があります:nano/etc/sysctl.conf。 Ctrl + Wの2つのキーを使用して、ファイル内で次の変数を見つけ、そこで変更を加えます。

  • このオプションのコメントを解除して、パケット転送を有効にします:net.ipv4.ip_forward =1
  • MITM攻撃を防ぐために、このパラメータのコメントを解除します:net.ipv4.conf.all.accept_redirects =0
  • このパラメータのコメントを解除して、ICMPリダイレクトの送信を無効にします:net.ipv4.conf.all.send_redirects =0
  • このパラメータをファイルの任意の場所の新しい行に追加して、PMTU検索を無効にします:net.ipv4.ip_no_pmtu_disc =1

新しく取得した値をロードします:sysctl-p。カーネルネットワークパラメータの設定が完了しました。

iptablesを構成する

iptablesは、Linuxに組み込まれているnetfilterファイアウォールを管理および制御する特別なツールです。 iptables-persistentパッケージをインストールします。これにより、iptablesルールをファイルに保存し、システムを起動するたびにロードできます:apt-getinstalliptables-persistent。

このパッケージをインストールした後、システムは現在のIPv4およびIPv6ルールを維持するように要求します。新しいシステムがあり、保存するデータがないため、「いいえ」を指定する必要があります。

次に、iptablesルールの作成を開始します。安全性と信頼性を確保するために、すべてのチェーンをクリアしてください:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

システムへのアクセスを失わないようにするには、ポート22でSSH接続を許可します。

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

次のステップは、ループバックインターフェイスでの接続を許可することです。iptables-A INPUT -i lo-jACCEPT。次に、UDPポート500および4500での着信IPSec接続を許可します。

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

ESPトラフィック転送を許可する:

iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

VPNサーバーは、インターネットとVPNクライアント間のスレッドのようなものであるため、トラフィックマスキングを構成する必要があります。

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

最大パケットセグメントサイズを設定します:

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360

次のコマンドを使用して、サーバーへのすべてのサードパーティ接続を拒否します。

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

作成したルールを保存して、再起動するたびに存在するようにします。

netfilter-persistent save
netfilter-persistent reload

システムを再起動します。再起動し、作成したルールが機能しているかどうかを確認します。

Lightsailファイアウォールでの接続を許可する

AWS Lightsailは、システムを保護するためにファイアウォールを作成しました。インスタンスを選択し、[ネットワーク]に移動して、UDPポート500と4500での接続を許可します。同時にポート80を削除します。これは必要ありません。

iPhone、iPad、Mac用の.mobileconfigを作成

お使いのデバイスはiPhone、iPad、およびMacであるため、1つのVPNプロファイル.mobileconfigを使用できます。オンデマンド構成を作成した場合に役立ちます。サービスまたはアプリケーションがオフラインになろうとすると、VPN接続は引き続き自動的に機能します。 VPN接続を確立するためにハンマーで叩き、トラフィックがプロバイダーを通過したときの状況を回避できます。この構成を生成するスクリプトを使用してください:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

スクリプトが正しく機能するようにzshパッケージをインストールします:apt-getinstallzsh。アイデアに基づいてサーバー名を編集し、証明書の作成時に以前に指定したLightsailマシンの外部IPアドレスを書き込みます。

nano mobileconfig.sh
SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"

次に、スクリプトを実行して、iphone.mobileconfigファイルを取得します。

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig.

このファイルをTransmitまたはCyber​​duckに接続してサーバーから削除し、Airdrop経由ですべてのデバイスに送信します。デバイスへの構成のインストールを確認します。 VPNサーバーへの接続を自動的に確立します。

必ず後片付けをしてください:

rm mobileconfig.sh
rm iphone.mobileconfig

Linux
  1. Terraformを使用してAWSでIAMロールを作成する方法

  2. CentOS/RedHatで独自のスクリプト用のRPMを作成する方法

  3. Pleskサイトを作成する方法

  1. Wireguardを使用してUbuntu20.04でVPNを作成する方法

  2. LVMを使用してLinuxで物理ボリュームを作成する方法

  3. Ansibleを使用してLinuxユーザーを作成する方法

  1. Ubuntu18.04LTSでJitsiMeetを使用して独自のビデオ会議サーバーを作成する方法

  2. UbuntuでYoctoを使用して独自のLinuxディストリビューションを作成する方法

  3. AWSでPythonBoto3を使用してS3バケットを作成する方法