よもぎのメモ帳

備忘録的な感じで技術的なことをストックしていきます。

AWSのEC2でプロキシサーバをたててみた話

f:id:y0m0g1:20190529194514p:plain
社畜ちゃん台詞メーカーより

こんにちは、よもぎです٩(๑òωó๑)۶

最近は卒業研究をゆっくり進めつつも、院試勉強やらないと院死しちゃうなぁとぼんやりと物思いにふける日々です。 健康の重要性! みたいなかんじでちょっと運動したり*1遊んだりしてます。*2平日はラボにインできているので、及第点と私の中で勝手に思っています。

今回はとある事情で「あっ! プロキシサーバが欲しい」となったのですが、自宅にサーバは置いていないし、どこかのレンタルサーバをもとから利用しているわけではありませんでした。 そこで、以前🍯をたてる際に利用したAWSのEC2を用いて、プロキシサーバをたててみようと思いました。

y0m0g1.hatenablog.com

この機会に🍯用のEC2インスタンスを終了させてしまいました。*3R.I.P. → 🍯✞


プロキシサーバを立てる前の話


プロキシサーバって?

((今回に関して言えばという話なので、一般的な話じゃないです(´ . .̫ . `)))

接続元IPアドレスやそこからわかる接続元の地域を、直接 相手に知られたくない! なんてこと一度や二度思ったことあったりしませんか? ないですか。

今回は、 間に一つサーバを挟むことによって、接続先にはあたかも(間にある)サーバからアクセスしてきたみたいに見せようと思うのです。

こういった役割の持つサーバをプロキシサーバと言って、日本では串と言ったりすることもあるみたいです。


どんな環境でやるの?

だいたいこんな感じ

項目 利用したもの 備考
AWS EC2 リージョンは北カルフォルニア
OS Amazon Linux 2 試しにと思って使ってみる
インスタンスタイプ t2.micro 無料枠で使えるので
ストレージ 10GB まあプロキシサーバとしてしか
使わないつもりなので
プロキシソフト squid マルチプラットホーム!

f:id:y0m0g1:20190529212118p:plain
5年間のサポート受けられるっぽい


立ててみる


squid のインストール

とりあえずキーペアをダウンロードして、 chmod 400 しちゃいます。 そしてsshでつないじゃいます。

$sudo chmod 400 example.pem   
$ssh -i example.pem ec2-user@xxx.xxx.xxx.xxx
 

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
1 package(s) needed for security, out of 1 available
Run "sudo yum update" to apply all updates.
[ec2-user@example ~]$ 

インストールしようとしたら、

[ec2-user@example ~]$ sudo yum install squid

# 中略

exiting because "Download Only" specified


squid is available in Amazon Linux Extra topic "squid4"

To use, run
# sudo amazon-linux-extras install squid4

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

と言われてしまったので sudo amazon-linux-extras install squid4 してみます。 amazon linux 2ではパッケージ管理にamazon-linux-extrasを使うみたいな感じなのでしょうか。

[ec2-user@example ~]$ sudo amazon-linux-extras install squid4
Installing squid
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-squid4
10 個の metadata ファイルを削除しました
4 個の sqlite ファイルを削除しました
0 個の metadata ファイルを削除しました
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                        | 2.4 kB  00:00:00     
amzn2extra-docker                                                                 | 1.3 kB  00:00:00     
amzn2extra-squid4                                                                 | 1.3 kB  00:00:00     
(1/5): amzn2-core/2/x86_64/group_gz                                               | 2.4 kB  00:00:00     
(2/5): amzn2-core/2/x86_64/updateinfo                                             | 107 kB  00:00:00     
(3/5): amzn2extra-docker/2/x86_64/primary_db                                      |  51 kB  00:00:00     
(4/5): amzn2extra-squid4/2/x86_64/primary_db                                      | 5.1 kB  00:00:00     
(5/5): amzn2-core/2/x86_64/primary_db                                             |  29 MB  00:00:00     
依存性の解決をしています

# 中略

--> 依存性解決を終了しました。

依存性を解決しました

=========================================================================================================
 Package                        アーキテクチャー
                                              バージョン                  リポジトリー              容量
=========================================================================================================
インストール中:
 squid                          x86_64        7:4.4-4.amzn2.0.4           amzn2extra-squid4        3.4 M
依存性関連でのインストールをします:
 libatomic                      x86_64        7.3.1-5.amzn2.0.2           amzn2-core                40 k
 libecap                        x86_64        1.0.0-1.amzn2.0.2           amzn2-core                21 k
 libtool-ltdl                   x86_64        2.4.2-22.2.amzn2.0.2        amzn2-core                49 k
 perl-Business-ISBN             noarch        2.06-2.amzn2                amzn2-core                25 k
 perl-Business-ISBN-Data        noarch        20120719.001-2.amzn2        amzn2-core                24 k
 perl-Compress-Raw-Bzip2        x86_64        2.061-3.amzn2.0.2           amzn2-core                32 k
 perl-Compress-Raw-Zlib         x86_64        1:2.061-4.amzn2.0.2         amzn2-core                58 k
 perl-DBI                       x86_64        1.627-4.amzn2.0.2           amzn2-core               804 k
 perl-Data-Dumper               x86_64        2.145-3.amzn2.0.2           amzn2-core                48 k
 perl-Digest                    noarch        1.17-245.amzn2              amzn2-core                23 k
 perl-Digest-MD5                x86_64        2.52-3.amzn2.0.2            amzn2-core                30 k
 perl-Digest-SHA                x86_64        1:5.85-4.amzn2.0.2          amzn2-core                59 k
 perl-IO-Compress               noarch        2.061-2.amzn2               amzn2-core               260 k
 perl-Net-Daemon                noarch        0.48-5.amzn2                amzn2-core                51 k
 perl-PlRPC                     noarch        0.2020-14.amzn2             amzn2-core                36 k
 perl-URI                       noarch        1.60-9.amzn2                amzn2-core               107 k

トランザクションの要約
=========================================================================================================
インストール  1 パッケージ (+16 個の依存関係のパッケージ)

合計容量: 5.0 M
総ダウンロード容量: 3.6 M
インストール容量: 15 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): perl-Business-ISBN-2.06-2.amzn2.noarch.rpm                                 |  25 kB  00:00:00     
(2/6): libatomic-7.3.1-5.amzn2.0.2.x86_64.rpm                                     |  40 kB  00:00:00     
(3/6): perl-Business-ISBN-Data-20120719.001-2.amzn2.noarch.rpm                    |  24 kB  00:00:00     
(4/6): perl-Digest-SHA-5.85-4.amzn2.0.2.x86_64.rpm                                |  59 kB  00:00:00     
(5/6): perl-URI-1.60-9.amzn2.noarch.rpm                                           | 107 kB  00:00:00     
(6/6): squid-4.4-4.amzn2.0.4.x86_64.rpm                                           | 3.4 MB  00:00:00     
---------------------------------------------------------------------------------------------------------
合計                                                                     8.2 MB/s | 3.6 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : perl-Data-Dumper-2.145-3.amzn2.0.2.x86_64                               1/17 

# 中略

  検証中                  : 1:perl-Digest-SHA-5.85-4.amzn2.0.2.x86_64                              17/17 

インストール:
  squid.x86_64 7:4.4-4.amzn2.0.4                                                                         

依存性関連をインストールしました:
  libatomic.x86_64 0:7.3.1-5.amzn2.0.2                                                                   
  libecap.x86_64 0:1.0.0-1.amzn2.0.2                                                                     
  libtool-ltdl.x86_64 0:2.4.2-22.2.amzn2.0.2                                                             
  perl-Business-ISBN.noarch 0:2.06-2.amzn2                                                               
  perl-Business-ISBN-Data.noarch 0:20120719.001-2.amzn2                                                  
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.amzn2.0.2                                                     
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.amzn2.0.2                                                      
  perl-DBI.x86_64 0:1.627-4.amzn2.0.2                                                                    
  perl-Data-Dumper.x86_64 0:2.145-3.amzn2.0.2                                                            
  perl-Digest.noarch 0:1.17-245.amzn2                                                                    
  perl-Digest-MD5.x86_64 0:2.52-3.amzn2.0.2                                                              
  perl-Digest-SHA.x86_64 1:5.85-4.amzn2.0.2                                                              
  perl-IO-Compress.noarch 0:2.061-2.amzn2                                                                
  perl-Net-Daemon.noarch 0:0.48-5.amzn2                                                                  
  perl-PlRPC.noarch 0:0.2020-14.amzn2                                                                    
  perl-URI.noarch 0:1.60-9.amzn2                                                                         

完了しました!
  0  ansible2                 available    [ =2.4.2  =2.4.6 ]
  2  httpd_modules            available    [ =1.0 ]
  3  memcached1.5             available    [ =1.5.1 ]
  4  nginx1.12                available    [ =1.12.2 ]
  5  postgresql9.6            available    [ =9.6.6  =9.6.8 ]
  6  postgresql10             available    [ =10 ]
  8  redis4.0                 available    [ =4.0.5  =4.0.10 ]
  9  R3.4                     available    [ =3.4.3 ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0 ]
 11  vim                      available    [ =8.0 ]
 13  ruby2.4                  available    [ =2.4.2  =2.4.4 ]
 15  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16 ]
 16  php7.1                   available    \
        [ =7.1.22  =7.1.25  =7.1.27 ]
 17  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16 ]
 18  libreoffice              available    [ =5.0.6.2_15  =5.3.6.1 ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1 ]
 21  mate-desktop1.x          available    [ =1.19.0  =1.20.0 ]
 22  GraphicsMagick1.3        available    [ =1.3.29 ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38 ]
 24  epel                     available    [ =7.11 ]
 25  testing                  available    [ =1.0 ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    [ =1.8.0_192  =1.8.0_202 ]
 28  firecracker              available    [ =0.11 ]
 29  golang1.11               available    [ =1.11.3 ]
 30  squid4=latest            enabled      [ =4 ]
 31  php7.3                   available    [ =7.3.2  =7.3.3 ]
 32  lustre2.10               available    [ =2.10.5 ]
 33  java-openjdk11           available    [ =11 ]
 34  lynis                    available    [ =stable ]

ながながと貼り付けてしまいましたが、こんな感じでインストールできました。


squidの設定〜動かす

あとは、このsquidの設定ファイル squid.conf をいじいじします

# 略

# And finally deny all other access to this proxy
# http_access deny all
# ここは#をつけてコメントアウト

#以降は追記

acl myacl src all
http_access allow myacl
http_access deny all

forwarded_for off

request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

最後に

[ec2-user@example ~]$ sudo service squid start
Redirecting to /bin/systemctl start squid.service
[ec2-user@example ~]$ sudo chkconfig squid on
情報:'systemctl enable squid.service'へ転送しています。
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.

おそらくこれで動きます。


サーバへのアクセス制御

AWSのEC2管理画面からセキュリティグループのインバウンド設定を編集して、それでいいやってな。りました

なので、インスタンスiptablesとかufwとかは触ってません。


動いた(๑•̀ㅂ•́)و✧

f:id:y0m0g1:20190529213822p:plain
firefoxで試してみた


終わりに

squidの設定でいろいろ頭抱えたけれども、なんとか動きました。 これで安心してやばめなサイトとかにアクセスできますね(/・ω・)/

hayashier.com

こちらのサイト様を参考にさせていただきました。 この場を借りてお礼申し上げます

*1:構内のジム的なやつに。ここ数年運動してなかったのでヤバなんです。

*2:ちょっと……?

*3:あまり監視している余裕がないので