go runすると受信許可のアラートが出る
macのセキュリティによるもの
対応としては下記が考えられた
- docker環境を実行環境とする
- 頑張ってセキュリティを回避
両方やってみたけど、、dockerの方はできそうな気はしたけど放置。
セキュリティ周りの調べ物は他でも知っておいていい気がしたので深掘り、、
macのファイヤーウォールは2つ用意されている。
パケットファイヤーウォールpfとソケットフィルタ(アプリごと)ファイヤーウォールsocketfilterfw
環境設定のやつはソケットフィルタに当たる
- pfはツールを使うと便利に使えるがデフォルトはソケットフィルタのみ有効状態
- ソケットフィルタのオプションでアンロックするとかリムーブするができる。
- pfcl,iceFloor,Murusなどでpfを制御すると便利らしい
os x - 80番ポートで起動させているnginxのWebサーバーに外部からアクセスできない - スタック・オーバーフロー
https://ja.stackoverflow.com/questions/6076/80%E7%95%AA%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%81%A6%E3%81%84%E3%82%8Bnginx%E3%81%AEweb%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E5%A4%96%E9%83%A8%E3%81%8B%E3%82%89%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84
Command Line Firewall Management In OS X 10.10 - krypted.com
http://krypted.com/mac-security/command-line-firewall-management-in-os-x-10-10/
- node.jsの中にはfirewallを迂回するためのスクリプトがツールとして用意されていた
node/macosx-firewall.sh at master · nodejs/node
https://github.com/nodejs/node/blob/master/tools/macosx-firewall.sh
PFとALF
- パケットフィルタならpfcl,iceFloor,Murusなど
- アプリケーションレイヤーフィルタならsocketfilterfw,Vallum(ライセンスによりMurusに含まれる)など
Vallum - macOS Application Firewall
https://vallumfirewall.com/
docker環境でgolang
公式
on-buildは推奨しない的なことがかいてある。
library/golang - Docker Hub
https://hub.docker.com/_/golang/
onbuildを使った場合の実行事例(少々昔の情報)
Goの公式dockerイメージを使ってみた - Qiita
http://qiita.com/jpshadowapps/items/e5de997d70fb8ecae7da
go runしたときのファイルの実体
macだと/privateの下にセキュアな一時フォルダを作っていれるっぽい。
環境によっては/tmpのときもあるのかも??
/private/var/folders/04/xmzz_y854gdhogehoge0gn/T/go-build7hoge9746/command-line-arguments/_obj/exe/main
go-build.../command-line-argumentsに。。
回避方法の検討
go installやgo buildでファイルを作ってから、アプリを許可させて、そのあとで実行すればどうか。
go runのコマンドオプションで実体ファイルのパスを指定できないのか。
プラグインを使う
使って見ればデバッグ情報を吐き出したりとか便利なのかも。firewall迂回をフックさせるとかどうなんだろう。
golang 1.8 pluginを使ってみた - Qiita
http://qiita.com/Blufe/items/39194868444179e36edb
結果
socketfilterfw --add などはsudoしてもうまく動作しなかった(Sierra)
$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove "/hoge/main"
The file path you specified does not exist
環境設定の画面での操作で同じことができるのでそちらで対応した
そのうえでステルスモード(外部からのネットワーキングに対して息をひそめる)をオフにするとアラートが出ずに
go run
できるようになった。ひとまず。しっくりこないけど。
たぶん本当はpfにするのがいい気がする。
追記:後日また同じようにアラートが出始めた