それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

中間者攻撃するわ、公衆WiFiを語るのにフィルタリングするわ、これはダメでしょ

とある公衆WiFiにログインしたんですが。

これ、完全に中間者攻撃の状態ですよね。リダイレクトすらしない。WEB技術のマナーも糞もあったもんじゃない。

ログイン画面がこれ

http://t.co のURLに ログイン画面がインジェクション(改竄)されている。

f:id:takuya_1st:20180410011634p:plain

別のログイン画面の結果がこれ。

僕のブログのURLが完全に書き換わっている。

f:id:takuya_1st:20180409202104p:plain

URLそのままでは、通信の改竄に当たる

ドメインそのままで通信内容を書き換えるのは、改竄に値する。通信を提供するサービスとして、あってはならないことだ。

WEBブラウザは、ドメイン単位でセキュリティの権限を管理するSame Origin Policyがあるが、この状態では、同一生成元ポリシーがおかしなことになる。このままでは、パスワードの自動入力が正しく動作しないために、おかしなことになる。

リダイレクトしないから、暗号化通信で中間者攻撃になる。

完全に中間者攻撃としてブラウザに検出されている。

これは、セキュリティ上やっていはいけない感じがある。

f:id:takuya_1st:20180409202209p:plain

なぜだめか?

ドメインの詐称で中間者攻撃を「ただしい」とする仕様はユーザーに間違った知識を植え付ける可能性がある。

とくに、改竄される状態が「正しい」と公式宣言する現状は危うい。

しかも文字コードISO-2022-JP って

いつの時代ですかこれ。。。いまどきUTF-8使わないサイトとか久しぶりに見た。 仮にiOSだとこれどうなるんだろうか。

f:id:takuya_1st:20180409203005p:plain

はてブが止まる。

ニュースの閲覧もダメなんですか。。。

f:id:takuya_1st:20180410004506p:plain

SNSはフィルタリング対象ですか?

f:id:takuya_1st:20180409205050p:plain

HTTPSもIPベースで止めてるんですね。通信エラーにしかみえないのは、問題が多いですよね。フィルタリングしてると明示しないと

f:id:takuya_1st:20180409205200p:plain

f:id:takuya_1st:20180409205515p:plain Google Chromeが通信エラーとして処理するから、画面のキャプチャの状態になりChromeに救われている。

通信エラーによりストップ理由も明示されない。

通信エラーになりストップ理由が閲覧不可能になっている。

ストップされる理由が表示されないはまるで駄目ではないですか?

せめて、ストップされる理由がHTTPSで表示されるようにしてほしいです。

どの通信がストップ対象になるのか明示されないでフィルタリングはありえないと思いませんか。

何処が納入したんですかコレ

どこだよ、この事業者は、と思った。どこの機器ですかね?この辺の業者ですか?フルノ?

この入札要件書いた明石市Wifiをやる市役所職員はなんなのですか?調達要件を書く前に、すこしくらいは他の市町村や公衆無線LANを調べたんですか?

社内(庁内)の無線LANと、公衆WiFiの区別がついてないですよね。

公務員試験の合格者なら

憲法くらいは、ちゃんと勉強してるよね?憲法21条第2項を読み直してください。条文を思い出してほしいです。

利用規約にアレコレ書いたとしてやって良いことと悪いことが在る。とくに一般向けに解放してる公衆WiFiであればなおさらですよ。

盗聴しておいて、「セキュリティは万全です」はちょっと自己矛盾ではないですかね。

関連資料

明石市の職員さんには、以下の資料を読んでいただきたく思います。

日本国憲法第21条 - Wikipedia

Wi-Fi提供者向け手引きの「通信の秘密保護」と「届出義務」について

http://www.soumu.go.jp/main_sosiki/joho_tsusin/security/cmn/wi-fi/Wi-Fi_manual_for_AP.pdf

青少年ではないですから、フィルタリングには同意できないし、同意項目もないですよね。

サービスの提供者と利用条件は市役所や図書館のHPで閲覧できないけどありなの?

そういえば、地方公共団体には届出義務があったはずだけど、165条の通信事業者がフィルタリングや改竄するってありなの?(今度調べる

特定のサイトを閲覧できないようにしていた公衆無線 LAN に行政指導

Wisprについて

調達要件にwisprの文言を入れときゃよかったのに・・・

WISPr について - eggshell blue

ChromeのデフォルトがHTTPSになったので再調査

ChromeがHTTPを「保護されてない通信」としてマーキングするようになったので、再調査。

f:id:takuya_1st:20180727165459p:plain

全然更新されないの。完全に中間者攻撃状態。

図書館の運営をしてるのはドコなんですかね。 そろそろガチでバトったほうがいいか

図書館の自由に関する宣言について

なぜ、わざわざ晒し者にしてるのか、

理由はというと「図書館の自由に関する宣言」にある。 「知る権利」を提供する図書館で、こんないい加減なフィルタリングが行われているから、ムカついたので記述することにした。

図書館の自由に関する宣言

  • 第3 図書館は利用者の秘密を守る
  • 第4 図書館はすべての検閲に反対する

一般向けの公衆無線LANは職員向けの庁内LANと似てるけど同じではないでしょ。

2018-07-27 追記

ぜんぜん更新されないので追記

nginxのサイト毎の設定が面倒なのでワイルドカードでディレクトリの有無で設定する

nginx のサイト毎の設定が面倒くさい。

サイトが追加されるたびに、ドメインとファイルを追加するのは面倒なので、ワイルドカードで設定したい。

Apacheだとワイルドカード的なことを割と面倒くさい感じで rewrite 組合せたり、virtualhost 設定をしたりだったけど、

nginx だと 正規表現と名前付き後方参照パターンマッチングで済む。

設定例

upstream php-fpm {
  server unix:/var/run/php/php-fpm.sock;
}


server {
        listen 81 ;

  server_name "~^(?<domain>.+)$";

        root /var/www/virtualhosts/$domain/www-data;

        # Add index.php to the list if you are using PHP
        index /_h5ai/public/index.php ;

        server_name $domain;

        location / {
    autoindex on;
                try_files $uri $uri/ =404;
        }

  location ~ \.(php)$ {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
    fastcgi_pass php-fpm;
  }
}

設定のポイント

これで、正規表現のパターンマッチングをして、 domain という名前で後方参照出来るようにする。

  server_name "~^(?<domain>.+)$";

これで、domain にマッチさせる。

        root /var/www/virtualhosts/$domain/www-data;

応用編

サイトのサブドメイン毎に設定したいときも同じ

  server_name "~^(?<subdomain>.+).example.com$";

こうすれば、サブドメインごとのマッチングも簡単に。

   root /var/www/example.com/$subdomain/www-data;

設定するメリット

ドメインディレクトリを作ればサブドメインドメイン毎のサイト公開ができるようになる。

この手順だと誰でも設定できるようになるので、あとはwordpressの中身をコピペすれば動くようになる。

docker で wordpressを作らなくても良くなるのは便利だよ。

参考資料

http://nginx.org/en/docs/http/server_names.html

関連資料

ワイルドカードでApacheのVirtualHost-はてなブログでやってるあれ - それマグで!

WEBサーバー(nginx/apache)で、ディレクトリをオシャレに共有する

ディレクトリのインデックス機能をオシャレにする。

ファイルをネットワーク共有する一番手っ取り早い方法は、HTTPサーバーで共有することだと思いません?

認証を入れればアクセスログが残るし、どのファイルが何処にあるか解るし、Slackに貼って渡すのも便利だし。

h5ai でオシャレする。

h5ai をつかうと、わりとエクスプローラーっぽくなって、html5 auto index の略かな?

インストールした結果は

ためしに、うちのサーバーに入れてみた結果がこれ

f:id:takuya_1st:20180408013031p:plain

インストールと設定

公式のリリース zip を取ってくる

zip を取ってくる。

 curl -LJO https://release.larsjung.de/h5ai/h5ai-0.29.0.zip

公開ディレクトリにインストールする。

cd /var/www/example.com/html

ここで展開する。

 unar h5ai-0.29.0.zip

php の設定をするんだけど、一番手っ取り早い手段があって。それは、Directory Index に設定するだけ

upstream php-fpm {
  server unix:/var/run/php/php-fpm.sock;
}

server{
   ## 略

   index  /_h5ai/public/index.php ;

  location ~ \.(php)$ {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
    fastcgi_pass php-fpm;
  }

apacheのとき

DrectoryIndex  /_h5ai/public/index.php ;

apache の場合のphp設定は、は mod_phpphp-fpm で設定が大きく異なるので割愛。

あとは、サーバーをリロード(再起動)すれば、ディレクトリ表示が盛れる!

認証に関してはいろいろ手法が在るのでコレは別のエントリに記述する。

参考資料

h5ai · modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee · larsjung.de

Indexページは盛れる! | 技術情報ブログ | マネージドホスティングのディーネット