Skip to main content

ログ取得ツール

Category: コンピュータ

nginx + WordPressのBrute Force Login対策

このサーバをnginxに移行するまでは、WordPressでBrute Force Login Protection(BFLP)というプラグインを使っていた。これはログイン失敗の履歴を取っていって、一定以上に達すると.htaccessにdenyと書いてくれるというすぐれもの。WordPressは攻撃の標的になりやすい運命を持っているため、こういうプラグインは割と便利に使える。PHPに入る前にApacheの設定で切ってしまうというのも良い。で、実害があるとも思わなかったため、nginxに移行したあともこのプラグインをアンインストールしなかったのです。

「実害」か…実はこれ問題があった。

nginxは.htaccessを見たりはしない。だからBFLPが検出して管理者にメールを送り、.htaccessにdeny行を追加したあとも攻撃者はひたすらログイン試行を続けることができる。このような状況で何が起こるのかというと、私のメールスプールがすごいことになるというわけだ。まじですか。

俺たちがHTTP/2.0対応に四苦八苦している間に奴らは…

Googleは勝手にQUICとか使ってやがるんですよ。ひどい話。UDPだから高速なんだ…っていつの時代の話だよ? このブログのnginxをHTTP/2に対応させました。nginxなんで最初から対応していると思うでしょ? しかしながら、ブラウザ側がALPN必須になったために、ALPNに対応していないOpenSSLバージョンを使っているCentOS7では普通にnginxを入れただけではHTTP/2を使うことができないんです。 src.rpmから少しいじってコンパイルして入れていたんですけど、アップデートがあるたびにHTTP/2対応が消えていく。しょうがないので、毎晩src.rpmをチェックして更新があれば最新のOpenSSLをダウンロードして組み合わせてビルドして更新をかける…といった設定にしました。無駄に手間かけさせやがって。まーこれは、OpenSSLをALPN非対応のまま放っておくCentOS(RHEL)が悪いよね。クソが。 QUICはどうなんでしょうね。とりあえずリバースプロキシ噛ませれば行けるのかな? ざっと眺めると、botはまだHTTP/2を喋らないものが多いようですね。Googlebot/2.1もHTTP/1.1です。これはしばらく人間の選別に使えたりして??

ギガが減らないWi-Fi

最近、「Wi-Fiはギガが減らない」というパワーワードを聞いて衝撃を隠せませんでした。気になる人はググってみてください。日本語の乱れが嘆かわしい? ただ、すごく感じは出てるよねw 自宅の寝室はリビングに隠し置いている無線LANのアクセスポイントから遠く、電波が微弱で不安定でした。それにもめげずにPC作業部屋として寝室をゲットして、有線でつないでいたんですけど、PCもそうだし電話に関しても無線LANがつながったほうが高速で快適。ベッドに寝転がってDAZNを見るのもはかどらないよ。LTE(4G)でも見れるけれども、ギガがねw というわけで、無線の中継機を買ってみました。 買ってみてわかったことには、普通に電源のコンセントに直差しできて設定も物理スイッチポ〜ン(WPS)で楽勝。コンセントから抜いても設定は残るみたいなので、親機の近くでLEDを見ながら物理スイッチをポ〜チポ〜チ操作、つながったら引っこ抜いて別室に刺す…というだけの設定作業ですね。ホントにらくらくですよ。ありがとうWPS。こいつを規格化したやつは偉いぞ。人類に多大な貢献だ。 というわけで電波は劇的に改善したのでクソ配線は撤去してやった。まあ有線も部屋のコンセントまでは来てるから、廊下をまたいだ見苦しい配線はもともとないんだけどね。

いろいろと環境を変えてみたり…

あまり大した理由はないのだが、環境を変えてみた。ちゃんと動くかな?

  • VPSを乗り換えて
  • Apacheやめてnginxにして
    • mod_security外して

…と色々とやってみた。果たして私はどの程度ロックインされていたのか。

全体的には技術進歩の享受を受けるには新しい方が良いわけだし、定期的に乗り換えていくというのは賢いスタイルなのかもしれないね。

  • VPS乗り換えはトラブルもあった
    • 新しい方でIPv6が使えないっぽい感じになったので、もっかい別のVMを契約し直したらそっちは使えた
    • 最初に契約したサーバは速攻で破棄
  • とりあえずnginx + php-fpmにするのは問題なさそうな感じになった
    • 一部PHPのエラーが残っている。日付関係? ページが見えないケースがあると思います
  • HTTP/2への対応は見送り。OpenSSLを上げないとダメ(ALPN対応が必須になったため)
    • 一応http2と書いておいたら電話系のクライアントの中にはHTTP/2でつないでくるものもあるみたい
    • 時間ができたらやる
  • 全く認識していなかったが、CGIを一部使っていた
    • nginxはCGIに非対応。ただしやり方はいくつかある
    • PythonのCGIHTTPServerを使ってローカルに上げたHTTPサーバにreverse proxyすることに
    • CGIHTTPServerは渡さないヘッダがあるみたいで多少トラブルに
      • refererを渡さないみたいなんだが、refererを見るCGIがあったんだよね(mimetex)
      • コンパイルフラグを変えてrpmを作ってrefererを見ないようにしてみた
      • yum updateで上書きされたらまた使えなくなるねー。ignoreに入れておくか?
        • それまでにrefererを渡せる方法を考えよう
  • mod_security外すのはちょっと微妙な感じはある
    • wordpressにプラグインやテーマを割と入れていて、そいつらをあんまり信用していないので

あと上流のファイアウォールの設定をAPIでしか変えられないっぽいのでcurlでAPI(openstackのやつかな?)を打って回っていたんだけど、なかなかうまくいかなかった。しょうがないのでWebのUIで変えられる範囲で絞ってみるのだが…sshをport 22で使うと、それだけですごい勢いでアタックされるんだよなー。自分の手元環境を考えるとアクセス元のIPアドレスは絞れないし。

最近Googleアカウントへのログイン行為が…

以前にGoogleアカウントへのログイン時にパスワードを入力する代わりに電話へのダイアログで代用するような設定をした。便利に使っていたのだけど、これが最近使えなくなっている。なんだこりゃ。再設定しようとすると画面ロックの機能があるスマートフォンが必要ですと言われる。使ってるのはNexus 5XのNougat(7.1.1)だぞーん。これ以上Google Friendlyの端末なんてPixelしかないだろ。この程度の機能にそれが必要なの? 一体どういうつもりだろう。

そして、これをこのブログに書いてあげよう、と思っていた。

…と思って今やってみたらできました!

ちょっと前に「アカウントが変更されました」と勝手にログアウトされるという事件があった影響かもしれない。あれは実に怪しかったなぁ。最初は本物のGoogleが出していると思わなかったもんね。これ絶対パスワード入れちゃいかんやつだ、って。じゃあ誰がこれを出してるんだ、という話。

DAZN考察

DAZNに勝手なことを言うのが流行りなのかと思うので便乗していこう。

見てると主要なやりとりである動画データ部分はakamai(=当代最強のコンテンツデリバリ屋)を使っていて、たまに挟まってJSONでメタデータをやりとりしているcws.conviva.comはAWSのELBを使っている。これ、対処した後の状態かもしれないが、問題がある構成とは思えません。

あとweb font(?)を置いているcdn.dazn.comは自前のCDNのようなホスト名だが、これもAWSのCloudFrontでレイテンシは10-20msだから国内だろう。Server: AmazonS3だから、スタティックコンテンツとしてS3にwoffを置いてCloudFrontを噛ませているんじゃないかと。常識的。

だから、アクセス集中に対応しきれないとかいう問題ではないと思う。Jリーグ中継というレベルであれば、akamaiに十分なお金を払えば楽にさばけるデータ量。当然、akamaiからのレスポンスタイムはTTFB(Time To First Byte)で見ても10ms未満で明らかに国内から来ている。気になる部分としては、cws.conviva.comのレイテンシが常に100ms以上かかっているが、これはAWSのus-west-2リージョンを使っているため。小さいデータなので問題なさそうにも思えるが、もしレスポンスタイムが効いてくるなら日本向けにはap-northeast-1(tokyo)を使えば少しは良くなると思う。

gogsのバックアップの罠

GitLab.comでバックアップが機能してなかった事件の話を見て、まあよくある話だよね、と思ったんだ。実際に私の人生においても、周囲にいるベテランのエンジニアが機能しないバックアップによってデータロストをする、という経験が複数回あるんだよね。自分はさすがにそういうポカはやってなくて、それはそもそもバックアップしてなかったからだ、という…基本、手で作ったファイルは全部リポジトリかクラウドサービスに入れるようにしてるからね。

そんな私が、その「リポジトリに入れる」ために自宅内gitサーバとしてgogsをRaspberryPiで動かしているんだけど、gogsはgogs backupというコマンド一発でバックアップすることができる。しかし当然のようにgogs restoreコマンドはない。まあその辺はいざとなったら自分で何とかできるだろう。いつの間にかgogs importコマンドができていた。これでいけるのかな? 試してないけど。

github, gitlab, gogs…

github.com, github enterprise, gitlab, gogsをそれぞれ使っているので、それぞれの感想。

  • github.com
    • 公開できる
    • 公開されているプロジェクトが多い
    • プライベートリポジトリも作れる(有料)が、いまいち使いどころが…
      • 隠したいならそもそもgithub.comには出さない
      • そうじゃないならパブリックにするでしょ
    • 新しい(github enterprise=社内の人が計画立ててメンテ、と比べてメンテナンス頻度が高い)
    • GFMとかPRとか何かと使いやすい
  • github enterprise
    • 中でgithubで開発するときは必須
    • GFMの扱いが完璧
    • これでgithubに慣れられるという教育的効果もあるんじゃないかと
  • gitlab
    • issueとPR(merge request)はgithubよりも使いやすいと思う
      • issueのページでボタンを押すだけでブランチを作れる。そのままそこにcommitしていける
      • githubだとissueに対応するブランチをgit checkout -b issue_Nで作ってPRにするときにhubコマンドでhub pull-request -i N
      • (追記) merge requestやっぱり使いにくいかも…WIPの付け外しが簡単なのはいいけどもissueをmerge requestに変換できない! githubみたいにissueとPRの番号が共通じゃないので原理的にできないっぽい!!
    • git-lfsに完全対応
    • githubに慣れているとmarkdownの描画の行間スペースに違和感がある
    • アイコンが気持ち悪い
    • プロジェクトページが見にくい
  • gogs
    • 基本機能はだいたいカバーしている
      • webhookにも対応してる
    • 多少の不便はある
      • git-lfsに対応していない
      • PRをマージしてからブランチを削除するボタンが出てこない
      • gogs dumpはあるけどrestoreがない
    • デプロイが簡単
    • 動作が軽い
    • UIの多言語対応。日本語も完璧に翻訳されている

今のところは、、、

ブックマーク問題

del.icio.us(旧delicious.com)の運営状況が本格的にダメな感じになっているので乗り換え検討。私には気になったURLを記録してタグとコメントをつけてブログのサイドバーに貼り付けたい、という欲望があるわけですよ。どうするべきか。あとdel.icio.usに貯めたURLとタグはどうしてくれようか。 とりあえずexportは動いたのでデータは抜き出した。どっかに持っていくか? del.icio.usはimportが動いてなかったなそう言えば…ダメだなこいつらホント。 それとも自分で書くか? DBの定義はURL/title/descriptionのテーブルとタグのテーブルとN:Mのリレーションのテーブルだろ? そしてクエリはleft outer joinしてgroup byとgroup_concat(tag.name)/string_agg(tag.name, “,")でviewを作るか。 個人用なら.mhtとか.webarchiveのデータもDBに突っ込んで後で見られるようにもしたいなぁ。スクリーンショットの.png(or .pdf)と.mhtを両方持っておくのがいいのかも。スクリーンショットはphantomjsで撮ろう。.mhtはどうやって取得しようかな。 ブックマークってrailsとかでも最初のサンプルアプリの題材ですよね。さすがに自分で書くのは馬鹿らしい気もする。モバイル対応とかも思えば、ownCloudのブックマークプラグイン? AndroidのshareとかChromeのボタンとかでサクッと登録したいんだよなぁ。del.icio.usはブックマークレットも不安定だし、モバイルアプリもここ数年ちゃんと動いてないという印象(もうずっとモバイル環境ではdel.icio.usを使ってないから分からない)。

Nougat

ルヴァンってプレミアムの後継(?)のクラシカルは割と売ってるんだけど、リッツの後継の無印ルヴァンはスーパーにあんまり売ってないですよね。リッツの後継のほうの味を確認しておきたいんだけどー。 というわけでNougatが落ちてきたのでNexus5Xに入れてみました。入れてみたはいいけど、何が不快かって、FBReaderが遅くなったこと。EPUBでダウンロードした論文を電車の中で読んだりすることがあるんだけど、なんか動きが遅い。設定の問題か、と思って設定を少しいじったりするんだけど、設定のダイアログから文章の表示に戻るのが遅い。図を拡大して吟味した後で文章の表示に戻るのも遅い。これは耐えられない遅さ。要点をメモする気も失せる。以前はFBReaderで読みつつGoogle Keepにメモするというのが割と快適だったんだけど。なんとかならないかな。他のEPUBリーダーを試そうか、それともEPUBをもうちょっと小さいやつに分割したら軽くなるのかな。今は全部を1つのファイルにまとめたやつを読み込んでるんだよね。それとも久々にKoboを引っ張り出してそっちを使うか… 他はまあ普通。利用感覚はだいぶ変わった。全体的には悪くない。画面分割も対応アプリがもっと増えてくればかなり使えそう。ちょっと重くなったと感じる部分は他にもあるんだけどね。 一番問題なのは、Marshmallowの時はこいつは「マーロウ」だと思えて確かにハードボイルドな感じだったんだけど、「ヌガー」はかなり間抜け…というどうでもいい話も。