VyOSでWebプロキシー

自宅内のネットワークというか、サーバの用途変更を色々やっている中で、ルータとしている VyOS マシンで Web プロキシーを動かしてみたので、それに関して得られた知見など、メモとしてまとめておく。
なお、使用している VyOS のバージョンは 1.1.8 です。

VyOS で Web プロキシーを有効化

単純に動作させるだけだったら、

set service webproxy listen-address 172.16.0.1
commit

と、プロキシーを利用させたいクライアンが繋がっている側のインターフェースの IP アドレスを指定すれば、設定が完了して、Squid が動作を開始。

この状態では、透過プロキシーとして動作しているので、クライアント側の設定を変える必要もなく、導入自体はお手軽、なのだけど、これがちょっと曲者といえば曲者だったのよね…。

我が家のネットワーク構成

ここで、簡単に我が家のネットワーク構成を說明しておく。

我が家のネットワーク構成概要 2017/12/16版

自宅内には、サーバが 2 台。1 台は SMTP サーバがメイン用途で、もう 1 台(図中の内部サーバ)はローカルネット内で DNS キャッシュ兼プロキシー兼仮想環境による実験用として使用。
あと、さくらの VPS に Web サーバ、DB サーバの VPS が 1 台づつ。

実際には、各サーバ複数の用途で使っているので、 自宅側の SMTP サーバは DNS のセカンダリ兼務だし、 Web サーバは DNS 権威サーバであり、 SMTP のセカンダリでもある、いう感じ。

ちょっと前までは、 SMTP サーバに IP Masquerade 設定して外部とローカルネットのゲートウェイにしてて、更にそこに Squid でプロキシー立ててたんだけど、新しくサーバを手に入れたのを契機に用途見直ししたので、現状では上の図のようになっています。

んで、今回内部サーバ上のプロキシーの上位プロキシーとして VyOS 上で動作するプロキシーを指定したところ、ちょっとハマったというわけ…。

エレコム マウスアシスタントでの設定内容を常時有効化する(但し、コレも暫定)

HUGE のボタンへの機能割り当ては、

Macで、エレコムマウスアシスタントをインストール後、
「画面アプリが正常に起動しませんでした。Machintoshを再起動してください」 と出て終了する。

[From 【マウスアシスタント】【Mac】マウスアシスタントで「画面アプリが正常...]

を参考にすれば出来るようになってはいたのだけど、これ実際には Mac を再起動してしまうとクリアされちゃうというものでして

ただ、この方法、あくまでも一時的な対処策で Mac 自体を再起動してしまうと元に戻ってしAutomatorまうんで、ちゃんと対策を早めに講じて欲しいところ…。

[From HUGE をマウスアシスタントでカスタマイズ出来るようになった(但し、暫定) - Soukaku's HENA-CHOKO Blog]

再起動のたびに、パッケージの内容の表示から指定されたアプリを起動するのも面倒くさい。

ということで、ちょいと調べてみた結果、以下を参考にして macOS を再起動してもマウスアシスタントで設定したキー割り当てが有効になるように出来たので、その経過をまとめておく。

ま、ようするに、えれさぽのページで説明されている方法を Automator でアプリケーション化して、それをシステム環境設定 → ユーザとグループの中でログイン項目として登録するということなんですがね。

AppArmor に蹴躓く

11 月末ぐらいから、 bind9 のログが出力できないとか統計情報のファイルが作れないという状況になっていたのですが…。
ログに関しては syslog 経由で出すように設定変えて凌いだんですが、統計情報( rndc stats で出力されるやつ)が出力できないのが正常にならなくて、「 bind の設定いじってないのに、なんででなくなった?」と悩んでいたわけです。

で、今日。ふと思い立って出力ファイル名である named.stats をキーにして、/varlog/syslog に grep を実行してみたところ…。

Dec  6 10:20:14 nexus01 kernel: [927197.495080] audit: type=1400 audit(1512523214.458:3455): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/var/log/bind9/named.stats" pid=13306 comm="named" requested_mask="ac" denied_mask="ac" fsuid=109 ouid=109
Dec 6 10:25:01 nexus01 kernel: [927484.822757] audit: type=1400 audit(1512523501.782:3456): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/var/log/bind9/named.stats" pid=13306 comm="named" requested_mask="ac" denied_mask="ac" fsuid=109 ouid=109

apparmor って、コレかよ、原因は…。 orz

「何かの依存関係で、インストールされてたなぁ…」というのは、微かに記憶の片隅にあったのだけど、これが原因になっていたとは、予想だにせず。
パッケージのインストールログ( /var/log/aptitude )を漁ってみたら、確かにインストールしてるし、bind のログ出力周りがおかしくなったタイミングとインストールした日時が、ほぼ合致しているので、間違いなく AppArmor をインストールしたことの影響だったようです。

Aptitude 0.8.10: log report
Fri, Nov 24 2017 14:42:09 +0900

IMPORTANT: this log only lists intended actions; actions which fail
due to dpkg problems may not be completed.

Will install 8 packages, and remove 0 packages.
252 MB of disk space will be used
========================================
[HOLD, DEPENDENCIES] openssl:amd64 1.1.0f-5
[HOLD] libssl1.1:amd64 1.1.0f-3
[INSTALL] apparmor:amd64 2.11.1-3
[INSTALL] linux-compiler-gcc-7-x86:amd64 4.14-1~exp1
[INSTALL] linux-headers-4.14.0-trunk-amd64:amd64 4.14-1~exp1
[INSTALL] linux-headers-4.14.0-trunk-common:amd64 4.14-1~exp1
[INSTALL] linux-image-4.14.0-trunk-amd64:amd64 4.14-1~exp1
[INSTALL] linux-kbuild-4.14:amd64 4.14-1~exp1
[UPGRADE] libmariadbclient18:amd64 1:10.1.29-5 -> 1:10.1.29-6
[UPGRADE] mariadb-common:amd64 1:10.1.29-5 -> 1:10.1.29-6
========================================

Log complete.

===============================================================================

# bind9 側に何か変更があった?と思って調べてたんだけど、そちらは全部ハズレだったよ。

Rspamd の設定を細かくやってみる - 力技で正規表現フィルタリング

正規表現でのフィルタリング、「一応」出来るようになったので、メモとして残しておく。

modules.d ディレクトリの中を見ると、 SpamAssassin と連携するための spammassassin.conf や メールヘッダや本文中の文字列を正規表現で引っ掛けるための regexp.conf といったものがあるので、このあたりを使いこなせれば更に検知精度が上げられそうです。正規表現での検知は、実際には Rspamd デフォルトのものが有効化されているので、使われていないわけではないんですけど。

[From Rspamd の設定を細かくやってみる - Soukaku's HENA-CHOKO Blog]

但し、「正しい」方法ではないので、参考にしたいという方は、その点自己責任でお願いします。

本来の「正しい」設定方法

/etc/rspamd/local.d/regexp.conf というファイルを作って、そこにブロックしたいメールのヘッダ情報から、フィルタしたい条件を正規表現で記述します。

nexus01:/etc/rspamd# more local.d/regexp.conf
--
config['regexp']['RECEIVED_worldstream'] = {
re = 'Received=/ customer\\.worldstream\\.nl/i',
score = 2.5,
group = 'header'
}

--
config['regexp']['RECEIVED_93034net'] = {
re = 'Reveived=/\\.93034\\.net/i',
score = 2.5,
group ='header'
}

それが終わったら、rspamadm コマンド使って、フィルタしたい内容が認識されているところ確認して〜、と書きたいところなんですが、これが上手くいかない。
ドキュメント通りに設定書いてるのに、local.d/regexp.conf の記述内容が反映されない…。反映されなので、正しく記述できているのかもわからないという困った状況に陥ってしまいました。

最近、微妙に肩が張ると思ったら…

HUGE 使い始めて、3週間ほどになるんですが、

まだ使いはじめて間もないので、いまいちマウスとの使い勝手の違いに戸惑っていたりするわけですが、

[From 大玉トラックボールの ELECOM HUGE に乗り換えたよ! - Soukaku's HENA-CHOKO Blog]

微妙に肩に力が入っている感が強くて、どうしたら楽に使えるようになるかなぁ、と思って試しに HUGE の手前にリストレストを置くようにして手首を載せるようにしてみたら、かなり楽に操作できるように…。
HUGE を操作する時に無意識のうちに前腕部を浮かすようにしていたようで、そのせいで肩に力が入っていた模様。

リストレスト自体は、暫く前から使っていたのだけど、サイズがキーボードの幅に合わせたものだったので、それをずらして使うことも考えたんだけど、そうすると今度は左手側が窮屈になる、ということで幅の短いパームレストを調達して並べることに。

結果、こんな感じになっています。

HUGE の手前にリストレストを置いた、の図

これで、手首をガッツリ乗せておけるので、楽になりました。

Rspamd の設定を細かくやってみる

先日、前々からやろうと思っていた、自宅内のサーバの用途変更作業をやったんですが、

ということで、自宅内のサーバの役割変更をしていくことになるわけですが、今回入手した 5800/53Xg が仮想環境用とするのであれば、HA8000 を現在自宅内でメールサーバとして動いている Express5800/110Ge の後継に据えて、 5800/110Ge は退役ということにしようかと…。

[From Express5800/53Xg を手に入れたので、色々配置替え中 - Soukaku's HENA-CHOKO Blog]

その際に色々手順をしくじったために、サーバの設定ファイル一式を固めていたバックアップデータの最新のものをふっ飛ばしてしまい、その復旧でアタフタしていたんですが、メール部分だけがなかなかうまく復旧できなかったので、思い切って Rspamd を利用することに…。

いやホントに秘伝のタレ状態になってて、自分でもどー設定したのかを思い出せない部分がチラホラあったんですよ…。

ということで、心機一転。
Rspamd でスパム対策の一切合財をやってしまおう、ということで、実際に設定した内容をまとめておきます。

で、Rspamd を設定する上でのお作法というか、注意点というか、基本的な設定ファイルは /etc/rspamd ディレクトリとその配下にある /etc/rspamd/modules.d ディレクトリに配置されていますが、直接それらはいじらず、基本的な動作や個別に設定を変えたいモジュールの設定ファイルを /etc/rspamd/local.d ディレクトリに配置する形になります。

設定がどうなっているのか、変更した内容がどう反映されるのかは、rspamadm コマンド使ってモジュール単位で確認することが出来るので、ファイル書き換えた後のチェックに使えます。

# rspamadm configdump phishing
*** Section phishing ***
symbol = "PHISHING";
openphish_enabled = true;
openphish_premium = false;
openphish_map = "https://www.openphish.com/feed.txt";
phishtank_enabled = true;
phishtank_map = "https://rspamd.com/phishtank/online-valid.json.zst";
redirector_domains [
"/etc/rspamd/redirectors.inc:REDIRECTOR_FALSE",
"/etc/rspamd/local.d/redirectors.inc:LOCAL_REDIRECTOR_FALSE",
]

*** End of section phishing ***

サイバーセキュリティ財団の ZERO DAY を読んでみた

「大手書店、コンビニで発売中」と謳っているにも関わらず、東京だと Amazon 以外での入手経路のないサイバーセキュリティ財団の ZERO DAY 。遅ればせながら入手したんで、読んでみて感じたことなど。

自分的に気になったのは、Capter03 で取り上げられている WordPress の脆弱性について。
WordPress のインストールから、実際にページの不正な書き換え手法についてまでが書かれているわけですが、そのパートの最後のほうに


また、このグループ名で検索するとまだ書き換えられたことに気づかず放置されているサイトが見受けられます。被害サイトは日本のサイトもまだ多く含まれます。

とか、対応策として

WordPressのバージョンを最新のバージョンへアップデートを行ってください。

という記述があるんですがね…。
財団メンバーのサイトが、記事に記載されている手法でと思われる改竄被害を受けていた上に、

未対策なままサイトが再公開されて、再び改竄されるという被害を受けていたのを見つけてしまった自分としては、「ZERO DAY に書いたことすら、財団メンバーのサイトで実践出来てないのかよ…。」と微妙な気持ちになるわけですが…。(ちなみに、 Capter03 を書いたのは、財団理事の一人である田口氏…。)

HUGE をマウスアシスタントでカスタマイズ出来るようになった(但し、暫定)

さて、一昨日の続き。

マウスアシスタントをインストールしても、正常起動してくれない件ですけど

ただパッケージから出して繋いだだけだと、右クリック、左クリック、ホイールクリックしかボタンが使えないので、他のボタンに機能を割りするには、エレコムが提供しているマウスアシスタントをインストールする必要があるんですが、それインストールしても起動するとエラーダイアログを表示して、そこから先に進めない状況。

[From 大玉トラックボールの ELECOM HUGE に乗り換えたよ! - Soukaku's HENA-CHOKO Blog]

えれさぽにあるチャット機能を使って状況を伝えたところ、以下の QA 情報が提示されてきたので試してみたら、

Macで、エレコムマウスアシスタントをインストール後、
「画面アプリが正常に起動しませんでした。Machintoshを再起動してください」 と出て終了する。

[From 【マウスアシスタント】【Mac】マウスアシスタントで「画面アプリが正常...]

マウスアシスタントを起動させることは出来るようになり、ボタンへの機能割り当ても出来るようになりました。
ただ、この方法、あくまでも一時的な対処策で Mac 自体を再起動してしまうと元に戻ってしまうんで、ちゃんと対策を早めに講じて欲しいところ…。

大玉トラックボールの ELECOM HUGE に乗り換えたよ!

自宅では Logicool の ワイヤレスマウス M510 を使っていたんですが、 Mac mini を High Sierra にアップデートしたら、認識しなくなってしまった( Logicool Control Center で再認識させてもすぐ見失う)ので、マウスそのものを新調することに。
マウス本体側面のラバーが擦れてしまって、地の部分のプラスチックが見えてきてたというのも、新調しようという動機の一つではありました。

エルゴミクスデザインのやつもいいなぁ、とは考えていたんですが、色々悩んだ結果、今回はトラックボールにすることに。
タイミング的には、Logicool から MX ERGO って新しいモデルのトラックボールが出たところではあったんですけど、店頭で見たエレコムの HUGE のインパクトにヤラれたという感じもあって、結局それにした次第。(あと、ワイヤレスも避けたかったというのもあるので…。)

むか〜し使っていた PowerBook 180c や Let's Nore CF-M32 はトラックボールだっだんだよね。ということで、実に 20 年にトラックボールを本気で使う状況に戻ってきたということになっていたりします。


apache2 を mpm_worker + php-fpm で動かすために、色々イジったのでメモ

今回やりたいこと

しばらく前から、自分のところは HTTP/2 対応が完了していたんですが、apache2 パッケージを 2.4.27-* にアップデートすることに伴って HTTP/2 が無効化されてしまうのを回避する、というのが今回のお題目。
mpm-prefork を使わなければ、 HTTP/2 が使えている状況をデクレードせずに済むというのなら、 mpm-prefork 使わない設定に変えますよ、ということで

  • mpm-prefork + mod_php7.0

となっていた構成を、これを HTTP/2 も有効なまま動かすことの出来る

  • mpm-worker + php-fpm


の構成へ変更していく手順をまとめておきます。
#このエントリ書くために、mpm-prefork + mod_php7.0 に一旦戻しましたとも…。

少し前に書いたエントリー

今回は、 prefork から worker に変更したんですが、それに合わせて FastCGI 対応と PHP7.0 の fpm 対応をして(この辺、作業メモ取り忘れてた…)、さぁ Apache 再起動! と思ったら

[From HTTP/2 が、いつの間にか無効状態になっていまして… - Soukaku's HENA-CHOKO Blog]

の落ち穂拾いでもあります。