web-dev-qa-db-ja.com

Mac OS XファイアウォールでiOSアプリを永続的に許可するにはどうすればよいですか?

私は、とりわけtelnetサーバーとして機能するiOSアプリを書いています。当然、開始と同時に接続の待ち受けを開始します。

シミュレーターでアプリを実行すると、Mac OS X(たまたま10.7.3になっている)から、着信ネットワーク接続を受け入れるようにアプリケーションを許可または拒否するように求められます。これは、Mac OS Xがすべての署名されていないネットワークアプリケーションに使用する標準のファイアウォールメッセージです。

1日50回以上[許可]をクリックすることに飽き飽きしているので、ファイアウォールの許可されたアプリのリストに自分のアプリを永続的に追加する方法を探しています。

私は以下を試しました。

  1. アプリの実行中にアクティビティモニターを開きます。
  2. アプリを選択します。 「検査」をクリックします。
  3. [開いているファイルとポート]タブに移動します。最初の行の1つは、私のアプリへの正確なパスです。このパスをコピーして貼り付けます。
  4. ファイアウォール...詳細設定を開きます。
  5. +(追加)ボタンをクリックします。
  6. アプリケーションパスを参照して選択し、着信接続が許可されているアプリケーションのリストに追加します。

最後のステップで重要な決定があります。 .appアプリケーションパッケージまたはそのパッケージにコンテンツを表示のいずれかを追加して、その中に「Unix実行可能ファイル」を追加できます。私は両方のアプローチを試しました。

興味深いことに、ファイアウォールは実際にアプリに関する警告を停止します—しばらくの間ただし、数回実行した後、実際にどのイベントがこの変更を引き起こしたかはわかりませんが、半分以内に発生します私にとって1時間ほど、一般的に言えば、ファイアウォールはアプリについて再び警告を開始します。

ファイアウォールを設定してiOSアプリを永続的に許可するにはどうすればよいですか?

もちろん、Mac OS Xファイアウォールを無効にすることで、この問題全体を回避することができました。私はまた、それを切り刻むことにより、二度と足に破片が入るのを避けることができました。これらの行動方針のどちらも私に自分自身を推薦しません。

何を提案しますか?

34
OldPeculier

これをしばらく試してみた後、実行可能ファイル自体をファイアウォールの「許可」リストに手動で追加すると、望ましい結果が得られることがわかりました。 .appを追加するのではなく、.appのコンテンツフォルダー内の「Unix」実行可能ファイルを追加します。以前はこのファイルを試したが成功しなかったと思いましたが、現在は機能しています。

13
OldPeculier

したがって、次のダイアログを抑制したい

アプリケーション「NNN.app」で着信ネットワーク接続を受け入れますか?

これは、Xcode iOSシミュレータをアクティブ化するたびに表示されます。その解決策は今あると思います。私の答えは this ブログに基づいています。

ターミナルウィンドウで次のコマンドを実行するだけです。

#temporarily shut firewall off:
Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

#put Xcode as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/MacOS/Xcode

#put iOS Simulator as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator

#re-enable firewall:
Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

私にとってはうまくいきました。シミュレーターのアドレスはXcode 8に従っていることに注意してください。

26
ishahak

最善の解決策は、アプリをファイアウォールに許可するプロセスをスクリプト化することかもしれません。

私が正しく思い出せば、最新のOSXファイアウォールは実際にアプリを識別し、許可されたバイナリをフィンガープリントすることに優れています。これにより、マルウェアに「system32.exe」&cという名前を付けるだけでファイアウォールを回避するという驚くほど効果的な戦術が阻止されます。その場合、アプリは問題のないバイナリではないため(正しく)ブロックされ、実際には回避策はありません。

ファイアウォールの許可プロセスをスクリプト化して、ビルドプロセスに組み込んでみてください。

3
blahdiblah

ファイアウォールの許可リストに実行ファイルを手動で追加することはできませんでした。 自動化されたマウスクリックを使用したソリューションは次のとおりです。

  1. ダウンロード CLIclick 。 (カーステン、ありがとう。)
  2. 適切な場所に置きます。たとえば、/usr/local/bin
  3. Allowボタンの画面座標を取得するには 4。 (私の例では、これらはx:750、y:600です。)
  4. この内容のスクリプトを作成します(w:は待ち時間(ミリ秒)です:

    /usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
    

    (同じ場所に「移動」せずにCLIclickを動作させることはできませんでした(m:+0,+0部分)と同じ場所でc:.。)

  5. XcodeのPreferences / Behaviorsと上記のスクリプトを追加します。 enter image description here
  6. 楽しい!
1
Blaz