AWSの上でVPSを使っているファイアウォールを迂回する方法
あなたが学校で閲覧したり、仕事をする場合は、おそらくいくつかの問題は、特定のウェブサイトで閲覧したり、特定のアプリケーションを使用して経験している.仕事や学校の環境でインターネット上のいくつかの種類のブロックをブロックするために一般的な練習は、彼らはtorrent、アダルトコンテンツなどのトラフィックの別の種類をブロックしたり、彼らはちょうどあなたが承認されていないサイトを閲覧する必要はありませんウェブトラフィック、あなたの学校や仕事を許可します.
ファイアウォールの種類
Webページの特定の種類で閲覧したい そのような奔流をブロックされている特定のアプリケーションを使用したい ファイアウォールの背後にある学校や職場環境にアクセスする必要性 使用方法に応じてファイアウォールをバイパスする方法が異なります.ブロックされたウェブサイトで閲覧するだけのユーザーの最初の種類のために、方法はVPNまたはプロキシでありえました.特定の非Webアプリケーションを使いたいユーザのために、このメソッドはVPNであるかもしれません.ユーザーの最後の種類は、学校や職場で実行しているSSHサーバのようなファイアウォールの背後に実行しているいくつかのサービスを公開したい、このユーザーのためのメソッドは、サーバー側でのポート転送をSSHポート転送またはVPNすることができます.
免責事項
ポート80/TCPのSQUIDプロキシ ポート22/tcp上のSSHサーバ ポート443/TCP上のOpenVPN ポート53/UDPの上のwireguard VPN これらのサービスのそれぞれに利点と欠点があり、SSHのトンネルとしてSSHトンネルを使用することができます特定の目的を提供し、SSHポート転送を使用してSSHトンネルを介して転送ポートが有用ですが、いくつかのアプリケーションとモバイルデバイスでは、このメソッドは十分ではありません.プロキシを使用すると、ブロックされたWebページで閲覧したい場合に非常に便利です.VPNは、制限なしにナビゲートするのに最適なソリューションですが、それはデスクトップとモバイルデバイスで動作する場合は、クライアントからインターネットへのトラフィックを転送することができますまたはプライベートサブネットは、ゲートウェイデバイスを使用してVPSサーバーを介してクライアントにクライアントを接続するようにラズベリーパイ.このチュートリアルでは、2つのVPN、wireguardとOpenVPNは、私の個人的な意見のwivguardのセットアップでは、OpenVPNよりも優れていますが、WreguardはTCPプロトコルでは動作しませんので、私はWikiGuardを53/UDPとOpenVPNで443/TCPで設定する理由ですOpenVPNのTCP 1つの利点は、キー交換のためのSSL/TLSを利用しているので、パケット分析はHTTPSトラフィックのように表示されますプロトコルです.
のVPSの設定
私の場合はeth 0でIPv 4アドレスを使います.172.31.14.144 パブリックIPv 4アドレスを設定する プロトコル: TCP ポート443 DNS:1.1.1.1 構成は以下のイメージで示されます
クライアントの設定ファイルは
結論
ファイアウォールの種類
ファイアウォールのブロックの特定のレベルがあり、最も簡単なのは、Webページの特定の種類のブロックに基づいています.他のタイプのファイアウォールブロッキングはプロトコルに基づいています、そして、彼らはちょうどウェブトラフィック、SSH、DNSなどの特定の種類のトラフィックを許します.
誰がファイアウォールをバイパスしたいですか?
さまざまな理由でファイアウォールを迂回したいユーザがいくつかあります.
さまざまな理由でファイアウォールを迂回したいユーザがいくつかあります.
免責事項
このチュートリアルは、情報と教育目的のためだけに行われました.私は与えられた情報の不正使用の責任を負うことはできません.あなたが違法な目的のために情報を使う予定であるならば、現在、このチュートリアルを残してください.
始める前に
このチュートリアルでは、ファイアウォールをバイパスするためにVPNサーバ、プロキシサーバ、およびSSHサーバを設定するつもりです.通常、一部のサービスは、HTTP、HTTPS、SSH、DNSのようなファイアウォールによってブロックされません.
このチュートリアルでは、ファイアウォールをバイパスするためにVPNサーバ、プロキシサーバ、およびSSHサーバを設定するつもりです.通常、一部のサービスは、HTTP、HTTPS、SSH、DNSのようなファイアウォールによってブロックされません.
のVPSの設定
私たちが仮想プライベートサーバ(VPS)を必要とするすべてのサービスのために、このVPSはどんなパブリッククラウドプロバイダーでもセットアップでありえました.
最初のステップはAWSのアカウントを作成し、VPSを作成し、キーペアとセキュリティグループを設定します.私は次の設定でubuntu 20.04を選びます.
VPSを再起動するとき、私は静的IPアドレスを関連付けることを推薦するとき、変化OS IPを避けるために、これは以下のイメージに示されるように、弾性IPオプションでセットされることができます
VPSへのアクセス
我々は、以前の手順を作成し、移動するキーペアをダウンロードする必要があります~/.ssh
ディレクトリ
$ mv ~/Downloads/aws.pem ~/.ssh/
ファイルのパーミッションを変更する
$ chmod 400 ~/.ssh/aws.pem
リモートVPSへのアクセス
$ ssh -i ~/.ssh/aws.pem ubuntu@<public_ip_address>
システムを更新する
$ apt-get update && apt-get upgrade -y
パッケージのインストール
$ apt-get install wireguard squid fail2ban qrencode apache2-utils -y
FAIL 2 BANを設定する
FAIL 2 BANは、インターネットに公開されたサービスで自動化されたブルートフォース攻撃を防ぐのを助けるツールです.
SSHD刑務所を加える/etc/fail2ban/jail.d/sshd-jail.conf
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8
リロード失敗サービス
$ systemctl restart fail2ban
チェックSSHD刑務所
$ fail2ban-client status sshd
サーバの設定
SSHポート転送を設定するには、/etc/ssh/sshd_config
TCPフォワーディングとゲートウェイポートを許可する
AllowTcpForwarding yes
GatewayPorts yes
SSHサーバの再読み込み
$ systemctl restart sshd
これでSSHトンネルを経由してポートフォワーディングを設定できますthis SSHトンネルでSystemIDサービスを作成するチュートリアル.
のプロキシを設定する
SQUIDはHTTPプロキシ、それはファイアウォールをバイパスするポート80で設定することができます.
Squidプロキシを設定するポート80と基本的なユーザー認証を聞いてください.
ユーザーとパスワードを作成
$ htpasswd -c /etc/squid/passwd client1
configファイルを生成します
$ mv /etc/squid/squid.conf /etc/squid/squid.conf.bk
設定ファイルを生成する/etc/squid/squid.conf
$ cat <<EOF > /etc/squid/squid.conf
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*
http_access allow localhost
http_access deny all
http_port 80
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
EOF
SQUIDサービスの再起動
$ systemctl restart squid
今すぐあなたのブラウザ、システムや電話でプロキシを構成することができます.
で53 / UDPを設定する
WireGuardは、カーネル側で動作する近代的なVPNプロトコルは、残念ながら、UDPポート上でのみ動作し、ファイアウォールのほとんどは、いくつかのサービスを除いて、UDP接続を出て、53/UDPのようなDNSのようなDNSのように、我々は53/UDPで聞くためにwireguardを設定します.
まず最初に、我々はIP推進を可能にする必要があります
$ sysctl -w net.ipv4.ip_forward=1
変更を永続化するnet.ipv4.ip_forward=1
イン/etc/syctl.conf
$ sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf
systemdベースのdistrosのほとんどはシステムの解決を使用してDNSクエリを解決するために使用していますが、これは問題を解決します.
$ ss -ulpn4
以下のイメージで見ることができるように、ポート53/UDPを聞くプロセスはシステム解決です
無効にする
$ systemctl disable --now systemd-resolved
この行を追加する/etc/resolv.conf
nameserver 1.1.1.1
nameserver 1.0.0.1
これでポート53/UDPを使用していることを確認できます
$ ss -ulpn4
この点では、wireguardサーバ用の設定ファイルを生成する必要があります.
configファイルを作成する前に、あなたのインターフェース名に従って、私のケースのデフォルトインターフェースはeth 0です
$ ip -o -4 route show to default | cut -d ' ' -f 5
の設定ファイルを作成する/etc/wireguard/wgserver.conf
[Interface]
Address = 10.20.0.1/24
ListenPort = 53
PrivateKey = <your_private_key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
SaveConfig = true
秘密のキーを生成する/etc/wireguard/wgserver.conf
$ sed -i "s/<your_private_key>/$(wg genkey)/" /etc/wireguard/wgserver.conf
有効にする
$ sudo systemctl enable --now wg-quick@wgserver
クライアントテンプレートの生成~/wgclients/template.conf
[Interface]
PrivateKey = <private_key>
Address = 10.20.0.xxx/32
[Peer]
PublicKey = <server_public_key>
Endpoint = <public_ip_address>:53
AllowedIPs = 0.0.0.0/0, ::/0
サーバ公開鍵を取得します<server_public_key>
イン~/wgclients/template.conf
ファイル
$ wg show wgserver | awk '/public key:/{print $3}'
サーバのIPアドレスを設定する~/wgclients/template.conf
$ sed -i "s/<public_ip_address>/$(curl -s ifconfig.me/ip)/" ~/wgclients/template.conf
クライアントとコピーテンプレートの生成
$ mkdir -p ~/wgcliets/client1
$ cp ~/wgclients/template.conf ~/wgcliets/client1/client1.conf
クライアントキーの生成
$ cd ~/wgclients/client1
$ wg genkey | tee private-key | wg pubkey > public-key
プライベートキーと貼り付けをコピー~/wgclients/client1.conf
ファイルとIPアドレスを設定します.クライアント公開キーを追加する/etc/wireguard/wgserver.conf
トンネルIPアドレス
[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.20.0.10/32
オンザフライで再ロード設定
$ su -c "wg addconf wgserver <(wg-quick strip wgserver)"
Wireguard接続をチェックするには、プレイストアでWreguard Androidアプリをダウンロードしてください.クライアントの設定ファイルからのQRコードを生成し、wireguardアプリでインポートします.
$ qrencode -t ansiutf8 < ~/wgclients/client1/client1.conf
今、あなたは接続タイピングをチェックすることができますifconfig.me
モバイルWebブラウザでは、サーバーのパブリックIPアドレスが表示されます
のOpenVPNの設定
OpenVPNは、すべてのWebサイトがSSL/TSLを使用しているので、ファイアウォールがそのポートを塞ぐことができないので、それがHTTPSポートでセットされることができたように、鍵交換のためにSSL/TLSを利用するカスタムセキュリティプロトコルを使用するVPNです.
OpenVPNを自動スクリプトでインストールする
$ git clone https://github.com/Nyr/openvpn-install.git
$ cd openvpn-install
$ bash openvpn-install.sh
次のパラメータを使用して設定します.
$ mv ~/Downloads/aws.pem ~/.ssh/
$ chmod 400 ~/.ssh/aws.pem
$ ssh -i ~/.ssh/aws.pem ubuntu@<public_ip_address>
$ apt-get update && apt-get upgrade -y
$ apt-get install wireguard squid fail2ban qrencode apache2-utils -y
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8
$ systemctl restart fail2ban
$ fail2ban-client status sshd
AllowTcpForwarding yes
GatewayPorts yes
$ systemctl restart sshd
$ htpasswd -c /etc/squid/passwd client1
$ mv /etc/squid/squid.conf /etc/squid/squid.conf.bk
$ cat <<EOF > /etc/squid/squid.conf
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*
http_access allow localhost
http_access deny all
http_port 80
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
EOF
$ systemctl restart squid
$ sysctl -w net.ipv4.ip_forward=1
$ sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf
$ ss -ulpn4
$ systemctl disable --now systemd-resolved
nameserver 1.1.1.1
nameserver 1.0.0.1
$ ss -ulpn4
$ ip -o -4 route show to default | cut -d ' ' -f 5
[Interface]
Address = 10.20.0.1/24
ListenPort = 53
PrivateKey = <your_private_key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
SaveConfig = true
$ sed -i "s/<your_private_key>/$(wg genkey)/" /etc/wireguard/wgserver.conf
$ sudo systemctl enable --now wg-quick@wgserver
[Interface]
PrivateKey = <private_key>
Address = 10.20.0.xxx/32
[Peer]
PublicKey = <server_public_key>
Endpoint = <public_ip_address>:53
AllowedIPs = 0.0.0.0/0, ::/0
$ wg show wgserver | awk '/public key:/{print $3}'
$ sed -i "s/<public_ip_address>/$(curl -s ifconfig.me/ip)/" ~/wgclients/template.conf
$ mkdir -p ~/wgcliets/client1
$ cp ~/wgclients/template.conf ~/wgcliets/client1/client1.conf
$ cd ~/wgclients/client1
$ wg genkey | tee private-key | wg pubkey > public-key
[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.20.0.10/32
$ su -c "wg addconf wgserver <(wg-quick strip wgserver)"
$ qrencode -t ansiutf8 < ~/wgclients/client1/client1.conf
$ git clone https://github.com/Nyr/openvpn-install.git
$ cd openvpn-install
$ bash openvpn-install.sh
クライアントの設定ファイルは
/root
ディレクトリ、コピー$ mkdir ~/ovpnclients
$ mv /root/client1.ovpn /home/ubuntu/ovpnclients/
$ chown ubuntu:ubuntu ~/ovpnclients/client1.ovpn
ダウンロードしてPCに設定ファイルとAndroidアプリに転送$ scp -i ~/.ssh/aws.pem ubuntu@<public_ip_address>:~/ovpnclients/client1.ovpn ~/ovpnclients
Androidアプリでのファイルのインポートと接続ifconfig.me
サーバのパブリックIPアドレスが表示されます.結論
これらのメソッドは、ほとんどすべてのシナリオで動作します.これらのメソッドは、作業環境でセキュリティ違反を開くことができますので、独自のリスクでそれらを使用してください.
Reference
この問題について(AWSの上でVPSを使っているファイアウォールを迂回する方法), 我々は、より多くの情報をここで見つけました
https://dev.to/ivanmoreno/how-to-bypass-firewall-at-work-or-school-1-2-4oh2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(AWSの上でVPSを使っているファイアウォールを迂回する方法), 我々は、より多くの情報をここで見つけました https://dev.to/ivanmoreno/how-to-bypass-firewall-at-work-or-school-1-2-4oh2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol