WordPress

Macのファイアウォールをオンにしても、MAMPは止めることにした。署名済みアプリは自動で通るかも

公開 約4分で読めます

TL;DRこの記事の要点

  • 自分のMacでは、MAMPのApacheが同じネットワークから届く設定で、PHPも古かった
  • ファイアウォールはオンでも、署名済みアプリは自動で許可する設定だった
  • MAMPのApacheもMAMP社の署名つきなので、ファイアウォールだけでは止まらないかもしれない
  • なので、MAMPは使うときだけ動かして、止めたら待ち受けをlsofで確かめる
目次6項目
  1. きっかけは、PHPの緊急修正の夜
  2. 設定画面はオンなのに、コマンドは「オフ」
  3. オンでも、署名済みのアプリは自動で通ることがある
  4. だから、MAMPは使うときだけ動かす
  5. まとめ
  6. 出典

Macのファイアウォールをオンにしたのに、コマンドで見ると「オフ」と出ました。
しかも調べていくと、オンでもMAMPは通ってしまうかもしれない設定でした。

🎥 この記事の内容は動画でも解説しています。

先に結論です。

  • 自分のMacでは、MAMPのApacheがMac以外からの接続も受ける設定で、同じネットワーク(LAN)のほかの機器から届く可能性があった
  • 自分のMacのファイアウォールは「署名済みのアプリは自動で許可」がオンで、MAMPのApacheも署名つきだった
  • なので、ファイアウォールだけに頼らず、MAMPは使うときだけ動かして、終わったら止める運用にした

きっかけは、PHPの緊急修正の夜

10月21日の夜、PHPに深刻な穴(PHP2Shell)が見つかって、修正版が出ました。
ブログ本番のサーバーをどうするかと一緒に、手元のMacも見てもらいました。
見たのはCodexで、自分は指示を出していただけです。

分かったのは、この3つです。

  • MAMPのApacheが*:8888、MySQLが*:8889で待ち受けていた(*は、Mac以外からの接続も受けるという意味)
  • MAMPのPHPは8.3.14で、修正版の8.3.36より古い
  • Macのファイアウォールはオフ

同じWi-Fiにいる機器から、古いPHPで動いているローカルのWordPressに届くかもしれない状態でした。
家のルーターの外(インターネット)から届くかは、ルーターの設定を見ていないので分かりません。

その夜は、MAMPを止めました。
翌朝、自分でシステム設定からファイアウォールをオンにしました。

設定画面はオンなのに、コマンドは「オフ」

オンにしたあと、Codexに確かめてもらいました。
システム設定の画面ではオン。
なのに、コマンドで見ると「オフ」と出ました。

/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

2回見て、2回ともオフでした。
原因は分かっていません。

1週間後の10月29日に、同じコマンドをもう一度見てもらうと、今度はオンでした。

Firewall is enabled. (State = 1)

なので、どちらか片方だけ見て「オフだ」「オンだ」と決めないほうがいいです。
画面とコマンドの両方を見て、合わなければ時間をおいてもう一度見る。
自分はそうすることにしました。

オンでも、署名済みのアプリは自動で通ることがある

本題はここからです。
ファイアウォールの設定を、ターミナルのコマンドで見てもらいました。

/usr/libexec/ApplicationFirewall/socketfilterfw --getallowsigned
Automatically allow built-in signed software ENABLED.
Automatically allow downloaded signed software ENABLED.

自分のMacでは、「Macに入っている署名済みアプリ」と「ダウンロードした署名済みアプリ」を、自動で許可する設定でした。
Appleのヘルプにも、一覧にないアプリでも、ほかのアプリから自動で開かれる署名済みアプリなどは、ファイアウォールを通ることがあると書かれています。
実際、ファイアウォールの許可の一覧(--listapps)に、MAMPのApacheは載っていませんでした。

では、MAMPのApacheは署名されているのか。

codesign -dv --verbose=2 /Applications/MAMP/Library/bin/httpd
Authority=Developer ID Application: MAMP GmbH (5KCB5KHK77)

MAMPの会社の署名つきでした。
つまり、ファイアウォールをオンにしても、MAMPのApacheは自動で通る可能性があります。
ほかの機器から実際に届くかまでは、試していません。

だから、MAMPは使うときだけ動かす

自分には、ファイアウォールの設定をいじるより、使わないときは止めておくほうが確実に思えました。
今は、ブログの記事を入れるときだけMAMPを動かして、終わったら止めています。

/Applications/MAMP/bin/start.sh
/Applications/MAMP/bin/stop.sh

止めたあとは、待ち受けが消えたかをコマンドで見ます。

lsof -nP -iTCP -sTCP:LISTEN | grep -E ":8888|:8889|:33060"

何も出なければ、この3つのポート(8888・8889・33060)で待ち受けているものはありません。
ポートは自分のMAMPの設定に合わせてください。

ただ、止める運用は「使っていない間に待ち受けをなくす」対策です。
動かしている間は古いPHPのままなので、その間は気をつける必要があります。

Apacheの設定(/Applications/MAMP/conf/apache/httpd.conf)にはListen 8888と書かれていて、Mac以外からの接続も受ける形でした。
Apacheの一般的な書き方なら、Listen 127.0.0.1:8888にすると自分のMacからだけ受ける形になりますが、自分はまだ試していません。

まとめ

ファイアウォールをオンにして安心していたら、署名済みのアプリは自動で通る設定でした。
MAMPのApacheも署名つきなので、ファイアウォールだけでは止まらないかもしれません。

ローカル環境は、使うときだけ動かして、終わったら止める。
止めたら、待ち受けが消えたかをコマンドで見る。
MAMPを入れっぱなしにしている人は、一度lsofで待ち受けを見てみてください。

出典

この記事が参考になったら、応援クリックをお願いします

Cat's Handこの記事を書いた人

Web制作歴10年以上。WordPressのテーマカスタマイズやコーディングを中心に、副業・本業ともにweb制作に携わっています。このブログでは、実際に手を動かして分かったことを書いています。