このガイドは、現在サポートされているバージョンの macOS を実行している Apple シリコン Mac コンピュータのセキュリティとプライバシーを向上させるためのテクニックをまとめたものです。 Intel CPU を搭載した Mac を使用すると、Apple がパッチを適用できないハードウェア レベルのセキュリティ脆弱性が発生する可能性があります。 Apple シリコン Mac は最低限の推奨事項ですが、原則として、新しいチップの方が常に安全です。
このガイドは、エンタープライズ標準のセキュリティを導入したいパワー ユーザーを対象としていますが、Mac でのプライバシーとセキュリティの向上に関心のある初心者ユーザーにも適しています。
組織のコンピューターを保護している場合は、macOS 用の公式 NIST ガイドラインを使用してください。
システムの安全性は、管理者の能力によって決まります。完璧なコンピュータ セキュリティを保証する単一のテクノロジ、ソフトウェア、テクニックはありません。最新のオペレーティング システムとコンピュータは非常に複雑で、セキュリティとプライバシーの体制を有意義に改善するには、多数の段階的な変更が必要です。
このガイドは、いかなる種類の保証もなく、「現状のまま」で提供されます。このガイドに従って何かを壊したり、何らかのトラブルが発生した場合、責任はあなただけが負います。
改善を提案するには、プル リクエストを送信するか、問題をオープンしてください。
一般的なセキュリティのベスト プラクティスが適用されます。
脅威モデルを作成する
システムとソフトウェアを最新の状態に保つ
softwareupdate
コマンドライン ユーティリティを使用することもできます。どちらも Apple アカウントを登録する必要はありません。機密データを暗号化する
データの可用性を保証する
慎重にクリックしてください
セキュリティとプライバシーに関する最初の最も重要なステップは、脅威モデルを作成することです。敵から身を守るためには、敵を理解する必要があります。人にはそれぞれ独自のニーズがあるため、脅威モデルは人それぞれ異なります。脅威モデルは状況の変化に応じて時間の経過とともに進化する傾向があるため、脅威モデルを定期的に再評価するようにしてください。
これにはおそらく多くのものが含まれます: 携帯電話、ラップトップ、デバイスに保存されているパスワード、インターネット閲覧履歴など。保護すべき最も重要な資産からリストを作成してください。重要度に基づいて、公開、機密、秘密などのカテゴリに分類できます。
誰に対して防御するのかを定義します。まず、彼らがあなたの資産を攻撃する動機を定義することから始めます。たとえば、金銭的利益は多くの攻撃者にとって大きな動機となります。
敵に対抗するには、敵が何ができて何ができないのかを理解する必要があります。敵をまったく単純なものから非常に高度なものまでランク付けします。たとえば、一般的な泥棒はあまり洗練されていません。おそらく、デバイスにパスワードとドライブの暗号化を設定するだけなど、基本的なことで阻止されるでしょう。国家攻撃者のような非常に高度な敵対者は、RAM からキーと長いダイスウェア パスワードをクリアするために、使用していないときはデバイスを完全にオフにする必要がある場合があります。
それぞれの脅威に対抗する最善の方法を決定するのは今です。ルームメイトに見つからないようにパスワードを紙に書き留めたり、泥棒がデータを取得できないようにコンピューター上のドライブを暗号化したりすることを避けることもできます。セキュリティと使いやすさのバランスをとることが重要です。すべての緩和策は、敵の何らかの能力に対抗する必要があります。そうでない場合、ほとんどまたはまったく利益を得ることなく、生活を不便にする可能性があります。敵対者が持つ可能性のあるこれ以上の機能が思いつかず、それらすべてに対する緩和策を実装した場合、作業は完了です。
保護する資産ごとに作成する必要があるテーブルのタイプの例を次に示します。
敵対者 | モチベーション | 能力 | 緩和 |
---|---|---|---|
ルームメイト | プライベートチャットや閲覧履歴を確認する | 近接。画面を表示したり、パスワードを入力するのを監視したりできます | 生体認証を使用し、プライバシー画面を使用し、使用しないときは携帯電話をロックしておきます |
泥棒 | 携帯電話のロックを解除して個人情報を盗み、銀行口座を流出させ、携帯電話を売ってお金を得る | パスワードを確認するために肩をサーフィンし、ログイン中に見ていないときにデバイスを盗みます | 携帯電話を常に目の届くところまたは手元に置く、使用しないときはロックする、公共の場でパスワードを入力しないように生体認証を使用する、盗難されたデバイスを追跡/リモートで無効にするために Find My または同様のサービスを使用する |
犯罪的 | 金融 | ソーシャル エンジニアリング、容易に入手可能なマルウェア、パスワードの再利用、脆弱性の悪用 | サンドボックスを使用し、OS のセキュリティ機能を有効にし、OS とすべてのソフトウェアを最新の状態に保ち、自動更新をオンにします |
株式会社 | ユーザーデータマーケティング | 遠隔測定および行動データの収集 | ネットワーク接続をブロックし、一意の識別子をリセットし、支払いデータの追加を回避します |
国民国家/APT | 標的を絞った監視 | インターネットインフラの受動的監視、パケットの暗号化/分析をクラッキングするための高度なコンピューター | オープンソースの e2ee を使用し、デバイスに強力な diceware パスワードを使用し、安全な暗号化のためのセキュア エレメントを備えたハードウェアを使用し、使用しないときはデバイスをシャットダウンし、ソフトウェア トリップワイヤ/ハニーポット/カナリア トークンを使用します。 |
脅威モデリングの詳細については、こちらをご覧ください。
macOS は、Apple シリコンを搭載した Apple ハードウェア上で実行するのが最も安全です。 Mac は新しければ新しいほど良いです。 Apple は最新バージョンではないバージョンのすべての脆弱性にパッチを適用しているわけではないため、最新の macOS をサポートしていないハッキングや Mac は避けてください。
Mac を購入するときに、Mac が自分にリンクされるのを避けたい場合があります。脅威モデルによっては、オンラインで注文したり、クレジット カード/デビット カードで購入したりするのではなく、直接現金で支払う必要があります。そうすれば、購入に個人情報が関連付けられることはありません。
ワイヤレス キーボード、マウス、ヘッドフォン、またはその他のアクセサリを使用する場合、システムによって自動的に更新されるため、最も安全なオプションは Apple 製です。また、Bluetooth ハードウェア アドレスをランダム化して追跡を防止する BLE プライバシーなどの最新の Bluetooth 機能もサポートしています。サードパーティ製アクセサリの場合、これは保証されません。
macOS をインストールするにはいくつかの方法があります。利用可能なオプションから好みの方法を選択してください。
お使いの Mac と互換性のある最新バージョンの macOS をインストールする必要があります。最新のバージョンには、古いバージョンにはないセキュリティ パッチやその他の改善点が含まれています。
Apple の盗難防止システムの一環として、Apple シリコン Mac は、macOS を再インストールするたびに、盗難された Mac またはアクティベーションロックされた Mac のデータベースと照合するために、Apple のサーバーでアクティベーションを行う必要があります。
このプロセスがどのように機能するかについては、ここで詳しく読むことができます。
macOS を使用する場合、Apple アカウントを作成する必要はありません。 Apple アカウントを作成するには電話番号が必要で、デフォルトで多くのデータが Apple のクラウド ストレージ サービスである iCloud に同期されます。必要に応じて、後で同期を無効にすることも、iCloud データのエンドツーエンド暗号化を有効にすることもできます。
Apple アカウントに関連付けられたデータを管理したり、完全に削除したりできます。
App Store にアクセスし、iCloud、Apple Music などのほとんどの Apple サービスを使用するには、Apple アカウントが必要です。
Mac App Store は、App Sandbox と Hardened Runtime を利用するために必要なソフトウェアの厳選されたリポジトリであり、システムと統合する自動アップデートを提供します。
App Store は、macOS 上のソフトウェアに対して最高のセキュリティ保証を提供しますが、Apple アカウントでログインする必要があり、Apple はダウンロードしたアプリに Apple アカウントをリンクできるようになります。
UTM を使用すると、仮想マシンで macOS をネイティブに簡単に実行できます。サイトからは無料ですが、App Store から購入すると、自動アップデートが適用されます。
ドキュメントに従って、数回クリックするだけで macOS VM をインストールします。
もう 1 つのオプションは VMware Fusion です。 macOS VM のインストール方法については、ドキュメントを参照してください。
macOS が最初に起動すると、セットアップ アシスタントが表示されます。
最初のアカウントを作成するときは、ヒントなしで強力なパスワードを使用してください。
アカウント設定プロセスで本名を入力する場合は、コンピュータの名前とローカル ホスト名がその名前を構成し (例: John Appleseed の MacBook )、ローカル ネットワークやさまざまな環境設定ファイルに表示されることに注意してください。
どちらも、インストール後に[システム設定] > [バージョン情報]で、または次のコマンドを使用して、必要に応じて確認および更新する必要があります。
sudo scutil --set ComputerName MacBook
sudo scutil --set LocalHostName MacBook
最初のユーザー アカウントは常に管理者アカウントです。管理者アカウントは admin グループのメンバーであり、 sudo
にアクセスできるため、他のアカウント、特に root を奪取することができ、システムを効果的に制御できるようになります。管理者が実行するプログラムはすべて同じアクセス権を取得する可能性があり、セキュリティ リスクとなります。
sudo
のようなユーティリティには、プログラムを同時に実行することで悪用される可能性のある弱点があります。
Apple では、日常の作業には別の標準アカウントを使用し、インストールとシステム構成には管理者アカウントを使用することがベスト プラクティスと考えられています。
macOS ログイン画面から管理者アカウントにログインすることは厳密には必要ありません。ターミナル コマンドに管理者特権が必要な場合、システムは認証を求めるプロンプトを表示し、ターミナルはそれらの特権を使用し続けます。そのために、Apple は管理者アカウントとそのホーム ディレクトリを非表示にするための推奨事項をいくつか提供しています。これは、「ゴースト」アカウントが表示されるのを避けるための洗練されたソリューションとなります。
/Applications
(ローカル ディレクトリ) にアプリケーションをインストールできます。 Finder と Installer は、標準ユーザーに認証ダイアログを表示します。代わりに、多くのアプリケーションを~/Applications
にインストールできます (ディレクトリを作成できます)。経験則として、管理者アクセスを必要としないアプリケーション、または/Applications
にインストールされていないことに問題がないアプリケーションはユーザー ディレクトリにインストールし、残りはローカル ディレクトリにインストールする必要があります。 Mac App Store アプリケーションは引き続き/Applications
にインストールされており、追加の認証は必要ありません。sudo
は標準ユーザーのシェルでは使用できないため、 su
使用するか、 login
管理者アカウントのシェルに入る必要があります。これにより、一部の操作が難しくなる可能性があり、コマンドライン インターフェイスの基本的な経験が必要になります。open
ユーティリティを使用して実行する必要がある場合があります。アカウントはシステム環境設定で作成および管理できます。安定したシステムでは、通常、2 番目の管理者アカウントを作成し、最初のアカウントを降格する方が簡単です。これにより、データの移行が回避されます。新しくインストールしたシステムでも、標準アカウントを追加するだけで済みます。
アカウントの降格は、システム環境設定の新しい管理者アカウントから行うか (他のアカウントはログアウトする必要があります)、次のコマンドを実行することによって行うことができます (両方を実行する必要はない場合があります。問題 179 を参照)。
sudo dscl . -delete /Groups/admin GroupMembership <username>
sudo dscl . -delete /Groups/admin GroupMembers <GeneratedUID>
アカウントのGeneratedUID を見つけるには:
dscl . -read /Users/<username> GeneratedUID
macOS がグループ メンバーシップを決定する方法の詳細については、この投稿も参照してください。
OS の改ざんを防ぐために、ファームウェアのセキュリティ設定がフル セキュリティに設定されていることを確認する必要があります。これがデフォルトの設定です。
Apple シリコンを搭載したすべての Mac モデルはデフォルトで暗号化されています。 FileVault を有効にすると、ドライブ上のデータにアクセスするためにパスワードを入力する必要があります。 EFF には、強力だが記憶に残るパスワードを生成するためのガイドがあります。
FileVault パスワードは、それを知らない人が指定された起動ディスク以外から起動したり、リカバリにアクセスしたり、DFU モードで復活したりすることを防ぐファームウェア パスワードとしても機能します。
FileVault は、パスワードを忘れた場合に備えて回復キーを設定するように求めます。このキーは安全な場所に保管してください。 iCloud アカウントを使用してディスクのロックを解除するオプションもあります。ただし、iCloud アカウントにアクセスできる人は誰でもロックを解除できます。
macOS は、OS 全体でいくつかの機能を無効にするセキュリティ機能であるロックダウン モードを提供し、OS を使用可能な状態に保ちながら攻撃者の攻撃対象領域を大幅に削減します。何が無効になっているかを正確に読んで、それが許容できるかどうかを自分で判断できます。
ロックダウン モードがオンになっている場合、信頼できるサイトの Safari でサイトごとにロックダウン モードを無効にすることができます。
macOS で使用できるファイアウォールにはいくつかの種類があります。
受信接続のみをブロックする組み込みの基本的なファイアウォール。このファイアウォールには、発信接続を監視したりブロックしたりする機能はありません。
これは、 [システム設定]の[ネットワーク]の[ファイアウォール]タブ、または次のコマンドで制御できます。
ロギングおよびステルス モードでファイアウォールを有効にします。
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
コンピューター ハッカーはネットワークをスキャンして、攻撃対象のコンピューターを特定しようとします。ステルス モードを使用すると、コンピュータがこれらのスキャンの一部に応答しないようにできます。ステルス モードが有効になっている場合、コンピュータは ICMP ping 要求に応答せず、閉じられた TCP または UDP ポートからの接続試行にも応答しません。これにより、攻撃者がコンピュータを見つけることがより困難になります。
組み込みソフトウェアおよびコード署名されたダウンロード ソフトウェアが自動的にホワイトリストに登録されるのを防ぐには、次の手順を実行します。
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off
有効な認証局によって署名されたアプリケーションは、ユーザーに認証を求めることなく、許可されたアプリのリストに自動的に追加されます。 macOS に含まれるアプリは Apple によって署名されており、この設定が有効になっている場合は受信接続を受信できます。たとえば、iTunes はすでに Apple によって署名されているため、ファイアウォールを介した受信接続の受信が自動的に許可されます。
ファイアウォールのリストに記載されていない署名のないアプリを実行すると、アプリの接続を許可または拒否するオプションを含むダイアログが表示されます。 「許可」を選択すると、macOS はアプリケーションに署名し、ファイアウォール リストに自動的に追加します。 「拒否」を選択すると、macOS はそのアプリをリストに追加しますが、このアプリ向けの受信接続は拒否します。
socketfilterfw
と対話した後、回線ハングアップ信号を送信してプロセスを再起動します。
sudo pkill -HUP socketfilterfw
Little Snitch、Radio Silence、LuLu などのプログラムは、使いやすさとセキュリティのバランスが取れています。
これらのプログラムは、受信および送信のネットワーク接続を監視およびブロックすることができます。ただし、クローズド ソース システム拡張機能の使用が必要になる場合があります。
ネットワーク接続の許可/ブロックの選択肢が多すぎる場合は、接続を許可した状態でサイレント モードを使用し、定期的に設定をチェックしてアプリケーションとその動作を理解してください。
これらのファイアウォールは、 rootとして実行されているプログラムや OS の脆弱性 (pdf) によってバイパスされる可能性があることに注意してください。ただし、それでも使用する価値はあります。ただし、絶対的な保護を期待しないでください。ただし、一部のマルウェアは実際にはそれ自体を削除し、Little Snitch やその他のセキュリティ ソフトウェアがインストールされている場合には実行されません。
高度にカスタマイズ可能で強力だが、最も複雑なファイアウォールがカーネル内に存在します。 pfctl
や各種設定ファイルで制御できます。
pf は Murus などの GUI アプリケーションでも制御できます。
pf ファイアウォールに関する書籍や記事は数多くあります。ここに示すのは、IP アドレスによるトラフィックのブロックの一例にすぎません。
以下をpf.rules
というファイルに追加します。
wifi = "en0"
ether = "en7"
set block-policy drop
set fingerprints "/etc/pf.os"
set ruleset-optimization basic
set skip on lo0
scrub in all no-df
table <blocklist> persist
block in log
block in log quick from no-route to any
block log on $wifi from { <blocklist> } to any
block log on $wifi from any to { <blocklist> }
antispoof quick for { $wifi $ether }
pass out proto tcp from { $wifi $ether } to any keep state
pass out proto udp from { $wifi $ether } to any keep state
pass out proto icmp from $wifi to any keep state
次に、次のコマンドを使用してファイアウォールを操作します。
sudo pfctl -e -f pf.rules
ファイアウォールを有効にし、設定をロードしますsudo pfctl -d
でファイアウォールを無効にしますsudo pfctl -t blocklist -T add 1.2.3.4
て IP アドレスをブロックリストに追加しますsudo pfctl -t blocklist -T show
でブロックリストを表示しますsudo ifconfig pflog0 create
でロギング用のインターフェースを作成しますsudo tcpdump -ni pflog0
パケット フィルタリングにすでに慣れている場合を除き、pf の構成に時間をかけすぎることはお勧めできません。また、Mac がプライベート ホーム ネットワーク上の NAT の背後にある場合も、おそらく不要です。
pf ファイアウォールを使用して、ネットワーク アドレスの範囲全体 (たとえば、組織全体) へのネットワーク アクセスをブロックすることができます。
Facebook などの自律システムによって使用されているネットワークのリストについて、Merit RADb をクエリします。
whois -h whois.radb.net '!gAS32934'
返されたネットワークのリストをコピーして、blocklist コマンドに貼り付けます。
sudo pfctl -t blocklist -T add 31.13.24.0/21 31.13.64.0/24 157.240.0.0/16
アドレスが追加されたことを確認します。
$ sudo pfctl -t blocklist -T show
No ALTQ support in kernel
ALTQ related functions disabled
31.13.24.0/21
31.13.64.0/24
157.240.0.0/16
これらのアドレスへのネットワーク トラフィックがブロックされていることを確認します (DNS リクエストは引き続き機能します)。
$ dig a +short facebook.com
157.240.2.35
$ curl --connect-timeout 5 -I http://facebook.com/
* Trying 157.240.2.35...
* TCP_NODELAY set
* Connection timed out after 5002 milliseconds
* Closing connection 0
curl: (28) Connection timed out after 5002 milliseconds
$ sudo tcpdump -tqni pflog0 ' host 157.240.2.35 '
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.162771 > 157.240.2.35.80: tcp 0
発信 TCP SYN パケットがブロックされるため、TCP 接続は確立されず、Web サイトは実質的に IP 層でブロックされます。
さらにインスピレーションを得たい場合は、drduh/config/scripts/pf-blocklist.sh を参照してください。
macOS 上のサービスはlaunchdによって管理されます。 launchd.infoを参照してください。
システム設定では、ログイン時に実行されるソフトウェアに関する詳細情報を管理および表示できます。インストールされているシステム、Quick Look、Finder、およびその他の拡張機能もシステム設定で確認できます。
launchctl list
使用して実行中のユーザー エージェントを表示するsudo launchctl list
使用して実行中のシステム デーモンを表示するlaunchctl list com.apple.Maps.mapspushd
defaults read
を使用して、 /System/Library/LaunchDaemons
および/System/Library/LaunchAgents
のジョブ plist を検査します。man
とstrings
使用して、エージェント/デーモンの動作について詳しく知るたとえば、システム起動デーモンまたはエージェントの動作を学習するには、次のことから始めます。
defaults read /System/Library/LaunchDaemons/com.apple.apsd.plist
Program
またはProgramArguments
セクションを見て、どのバイナリが実行されているかを確認します (この場合はapsd
。詳細については、 man apsd
の man ページを参照してください。
注:システム サービスは SIP によって保護されています。SIP は macOS のセキュリティに不可欠な部分であるため、システム サービスをいじるだけの目的で SIP を無効にしないでください。システム サービスを無効にすると、破損や動作が不安定になる可能性があります。
サービスのステータスを表示するには:
find /var/db/com.apple.xpc.launchd/ -type f -print -exec defaults read {} ; 2>/dev/null
このリポジトリには、起動デーモンとエージェント、実行されたそれぞれのプログラム、およびプログラムのハッシュ サムの注釈付きリストが含まれています。
launchd と、Apple の Web サイトでログイン項目が見つかる場所について詳しく読んでください。
Apple は、多くの Siri 機能のオンデバイス処理に移行していますが、Siri の提案や Spotlight を使用すると、一部の情報が依然として Apple に送信されます。 Apple のプライバシー ポリシーを読んで、送信される内容とそれを無効にする方法を正確に確認できます。
プログラムが App Store から入手できない場合は、Homebrew の使用を検討できます。
重要! Homebrew では、端末に「アプリ管理」(または「フルディスク アクセス」) 権限を付与するように求められます。これは、再びこれらの攻撃に対して脆弱になるため、悪い考えです。(例) ~/.zshrc に悪意のあるコマンドを追加することで、サンドボックス化されていないアプリケーションは端末の TCC 権限でコードを実行できます。端末に「アプリ管理」または「フルディスクアクセス」を付与することは、TCC を完全に無効にすることと同じであると考えてください。
信頼できる安全なネットワークで定期的にbrew upgrade
実行して、ソフトウェア更新をダウンロードしてインストールしてください。インストール前にパッケージに関する情報を取得するには、 brew info <package>
を実行し、その式をオンラインで確認します。 HOMEBREW_NO_INSECURE_REDIRECT=1
などの追加のセキュリティ オプションを有効にすることもできます。
Homebrew の Anonymous Analytics によると、Homebrew は匿名の分析を収集し、自己ホスト型の InfluxDB インスタンスにレポートします。 Homebrew の分析をオプトアウトするには、環境またはシェル rc ファイルでexport HOMEBREW_NO_ANALYTICS=1
を設定するか、 brew analytics off
使用します。
macOS 11 では、暗号化された DNS を構成し、ドメインをフィルタリングし、DNSSEC を使用するための「DNS 構成プロファイル」が導入されました。
DNS プロファイルは、Quad9、AdGuard、NextDNS などのプロバイダーから作成または取得できます。
hosts ファイルを使用して、既知のマルウェア、広告、その他の不要なドメインをブロックします。
たとえばsudo vi /etc/hosts
を使用して、root としてホスト ファイルを編集します。
A
レコードによってドメインをブロックするには、次のいずれかの行を/etc/hosts
に追加します。
0 example.com
0.0.0.0 example.com
127.0.0.1 example.com
注IPv6 は、 A
レコード タイプではなくAAAA
DNS レコード タイプを使用するため、ここに示すように::1 example.com
エントリも含めることで、これらの接続をブロックすることもできます。
オンラインで入手できるドメインのリストは多数あり、貼り付けることができます。各行が0
、 0.0.0.0
、 127.0.0.1
で始まり、 127.0.0.1 localhost
行が含まれていることを確認してください。
以下に、人気のある便利なホストのリストをいくつか示します。
ホストのリストにtee
を追加します。
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sudo tee -a /etc/hosts
Little Snitch のようなファイアウォールを使用している場合は、leohidalgo/little-snitch---rule-groups リポジトリからルールをインポートする StevenBlack/hosts を使用できます。これらのルールは StevenBlack/hosts リポジトリから 12 時間ごとに更新されます。
DNS トラフィックを暗号化するには、DNSCrypt/dnscrypt-proxy の使用を検討してください。 dnsmasq および DNSSEC と組み合わせて使用すると、DNS トラフィックの整合性が大幅に向上します。
Homebrew から DNSCrypt をインストールし、指示に従ってdnscrypt-proxy
構成して開始します。
brew install dnscrypt-proxy
Dnsmasq と組み合わせて使用する場合は、次のコマンドを実行してhomebrew.mxcl.dnscrypt-proxy.plist
ファイルを見つけます。
brew info dnscrypt-proxy
/usr/local/etc/dnscrypt-proxy.toml
のような場所が表示されます。
テキスト エディタで開き、 listen_addresses =
で始まる行を見つけて、5355 などの 53 以外のポートで DNScrypt を使用するようにその行を編集します。
listen_addresses = ['127.0.0.1:5355', '[::1]:5355']
DNSCrypt を開始します。
sudo brew services restart dnscrypt-proxy
DNSCrypt が実行されていることを確認します。
$ sudo lsof +c 15 -Pni UDP:5355
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnscrypt-proxy 15244 nobody 7u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355
dnscrypt-proxy 15244 nobody 10u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355
dnscrypt-proxy 15244 nobody 12u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355
dnscrypt-proxy 15244 nobody 14u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355
デフォルトでは、dnscrypt-proxy は localhost (127.0.0.1)、ポート 53 で実行され、一連のリゾルバー間でトラフィックのバランスをとります。これらの設定を変更したい場合は、構成ファイル $HOMEBREW_PREFIX/etc/dnscrypt-proxy.toml を編集する必要があります。
注:アプリケーションおよびプログラムは、独自に提供されたサーバーを使用して DNS を解決する場合があります。 dnscrypt-proxy が使用されている場合は、次の pf ルールを使用して、dnscrypt 以外の他のすべての DNS トラフィックを無効にすることができます。
block drop quick on ! lo0 proto udp from any to any port = 53
block drop quick on ! lo0 proto tcp from any to any port = 53
DNS リークとは、および ipv6-test.com も参照してください。
他の機能の中でも、dnsmasq は応答をキャッシュし、修飾されていない名前に対する上流のクエリを防止し、トップレベル ドメイン全体をブロックすることができます。
DNSCrypt と組み合わせて使用すると、DNS トラフィックをさらに暗号化できます。
DNSCrypt を使用したくない場合は、少なくとも ISP が提供していない DNS を使用する必要があります。一般的な代替手段としては、Google DNS と OpenDNS の 2 つがあります。
オプションのDNSSEC は、DNS クライアント (リゾルバー) に DNS データの発信元認証、認証された存在拒否、およびデータの整合性を提供する DNS の拡張機能のセットです。 DNSSEC 保護ゾーンからのすべての回答はデジタル署名されています。署名されたレコードは、DNS ルート ゾーンの検証された公開キーのセットから始まる信頼のチェーンを介して認証されます。現在のルートゾーンのトラストアンカーは、IANA Web サイトからダウンロードできます。 DNSSEC には多数のリソースがありますが、おそらく最も優れているのは dnssec.net Web サイトです。
Dnsmasq をインストールします。
brew install dnsmasq --with-dnssec
drduh/config/dnsmasq.conf またはデフォルトの構成ファイルをダウンロードして編集します。
ドメインによるサービスのブロックに関する追加可能な例については、drduh/config/domains を参照してください。
プログラムをインストールして起動します (特権ポート 53 にバインドするには sudo が必要です)。
sudo brew services start dnsmasq
dnsmasq をローカル DNS サーバーとして設定するには、 [システム環境設定] > [ネットワーク]を開いてアクティブなインターフェイスを選択し、次に[DNS]タブで[+]を選択して127.0.0.1
を追加するか、次のコマンドを使用します。
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
Dnsmasq が構成されていることを確認します。
$ scutil --dns | head
DNS configuration
resolver #1
search domain[0] : whatever
nameserver[0] : 127.0.0.1
flags : Request A records, Request AAAA records
reach : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
$ networksetup -getdnsservers " Wi-Fi "
127.0.0.1
注一部の VPN ソフトウェアは、接続時に DNS 設定を上書きします。第 24 号および drduh/config/scripts/macos-dns.sh を参照してください。
オプション署名付きゾーンの DNSSEC 検証をテストします。応答にはNOERROR
ステータスがあり、 ad
フラグが含まれている必要があります。
$ dig +dnssec icann.org | head
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47039
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
不適切に署名されたゾーンの DNSSEC 検証のテストは失敗します。応答はSERVFAIL
ステータスになるはずです。
$ dig www.dnssec-failed.org | head
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 15190
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
macOS には、Apple、Verisign、Thawte、Digicert などの企業や、中国、日本、オランダ、米国などの政府機関からインストールされた 100 を超えるルート権限証明書が付属しています。これらの認証局 (CA) は、任意のドメインの TLS 証明書、コード署名証明書などを発行できます。Apple は、CA が信頼できないと判明した場合、これらの証明書をブロックします。また、信頼できる CA が満たさなければならない厳しい要件もあります。
詳細については、CA/ブラウザ フォーラムの Web サイトを参照してください。
[システム ルート]タブの[キーチェーン アクセス] でシステム ルート証明書を検査するか、 security
コマンド ライン ツールと/System/Library/Keychains/SystemRootCertificates.keychain
ファイルを使用してシステム ルート証明書を検査します。
キーチェーン アクセスを通じて認証局を手動で無効にするには、認証局を「信頼しない」としてマークし、ウィンドウを閉じます。
警告:これにより、これらの CA によって署名された証明書を使用してサイトにアクセスしたときにブラウザーに警告が表示され、他のソフトウェアが破損する可能性があります。 Apple のルート証明書を信用しないでください。信用しないと、macOS に多くの破損が発生します。
システムによって信頼されている強制または侵害された認証局が偽/不正な TLS 証明書を発行する中間者攻撃のリスクは非常に低いですが、それでも発生する可能性はあります。
Web トラフィックをフィルタリングするローカル プロキシとして Privoxy を使用することを検討してください。
Homebrew を使用して privoxy をインストールして起動します。
brew install privoxy
brew services start privoxy
あるいは、Privoxy の署名付きインストール パッケージを Web サイトまたは Sourceforge から入手できます。署名付きパッケージは Homebrew バージョンよりも安全であり、Privoxy プロジェクトからサポートを受けています。
デフォルトでは、Privoxy はローカル TCP ポート 8118 をリッスンします。
アクティブなネットワーク インターフェイス127.0.0.1
および8118
のシステムHTTPプロキシを設定します。
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118
システムのHTTPSプロキシを設定します。
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118
これは、[システム環境設定] > [ネットワーク] > [詳細設定] > [プロキシ]からも実行できます。
プロキシが設定されていることを確認します。
$ scutil --proxy
<dictionary> {
ExceptionsList : <array> {
0 : *.local
1 : 169.254/16
}
FTPPassive : 1
HTTPEnable : 1
HTTPPort : 8118
HTTPProxy : 127.0.0.1
}
現在、ほとんどの Web トラフィックは暗号化されていますが、Privoxy はドメイン名パターンによるフィルタリングや、安全でない HTTP リクエストのアップグレードに依然として役立ちます。
たとえば、次のルールは、 .net
、 github.com
、およびすべてのapple
ドメインを除くすべてのトラフィックをブロックします。
{ +block{all} }
.
{ -block }
.apple.
.github.com
.net
または、たとえば Facebook ドメインをブロックするだけです。
{ +block{facebook} }
.facebook*.
.fb.
.fbcdn*.
.fbinfra.
.fbsbx.
.fbsv.
.fburl.
.tfbnw.
.thefacebook.
fb*.akamaihd.net
ワイルドカードもサポートされています。
その他の Privoxy の例については、drduh/config/privoxy/config および drduh/config/privoxy/user.action を参照してください。 user.action
フィルター ルールを編集した後に Privoxy を再起動する必要はありません。
トラフィックがブロックまたはリダイレクトされていることを確認するには、curl またはブラウザの http://pp で利用可能な Privoxy インターフェイスを使用します。
ALL_PROXY=127.0.0.1:8118 curl example.com -IL | head
HTTP/1.1 403 Request blocked by Privoxy
Content-Length: 9001
Content-Type: text/html
Cache-Control: no-cache
Pragma: no-cache
ALL_PROXY=127.0.0.1:8118 curl github.com -IL | head
HTTP/1.1 302 Local Redirect from Privoxy
Location: https://github.com/
Content-Length: 0
HTTP/1.1 200 Connection established
HTTP/2 200
server: GitHub.com
注: macOS のプロキシ設定は普遍的なものではありません。アプリやサービスはシステムのプロキシ設定を尊重しない場合があります。プロキシするアプリケーションが正しく構成されていることを確認し、接続が漏洩していないことを確認してください。さらに、特定のポート上のトラフィックを透過的にプロキシするようにpf を設定できます。
Web ブラウザは、信頼できないコードをインターネットからダウンロードして実行することが基本的な役割であるため、セキュリティとプライバシーのリスクが最も大きくなる可能性があります。
最新のブラウザの重要なプロパティは、あるページ上の悪意のあるスクリプトがドキュメント オブジェクト モデル (DOM) を通じて別の Web ページ上の機密データにアクセスすることを防ぐ同一生成元ポリシー (SOP) です。 SOP が侵害されると、ブラウザ全体のセキュリティが侵害されます。
ブラウザーのエクスプロイトの多くは、永続性を獲得する手段としてソーシャル エンジニアリングに基づいています。信頼できないサイトを開かないように常に注意し、新しいソフトウェアをダウンロードする場合は特に注意してください。
ブラウザのセキュリティに関するもう 1 つの重要な考慮事項は、拡張機能です。これは、Firefox と Chrome の両方に影響する問題です。ブラウザ拡張機能の使用は、信頼できる開発者によって公開された非常に必要な拡張機能のみに限定する必要があります。
Mozilla Firefox、Google Chrome、Safari、Tor Browser はすべて、それぞれ独自の個別の目的に推奨されるブラウザです。
Mozilla Firefox は人気のあるオープンソース ブラウザです。 Firefox は、Quantum および Photon プロジェクトの下でインフラストラクチャとコード ベースの主要部分を置き換えました。 Quantum プロジェクトの一部は、C++ コードを Rust に置き換えることです。 Rust は、セキュリティとスレッドの安全性に重点を置いたシステム プログラミング言語です。 Rust の採用により、Firefox の全体的なセキュリティ体制が大幅に改善されることが期待されています。
Firefox は Chrome と同様のセキュリティ モデルを提供しています。Firefox にはバグ報奨金プログラムがありますが、それほど儲かりません。 Firefox は 4 週間のリリース サイクルに従います。
Firefox は、ユーザー指定の構成ファイルをサポートしています。推奨される設定と強化策については、drduh/config/firefox.user.js および arkenfox/user.js を参照してください。選択的なスクリプトのブロックを可能にする拡張機能である NoScript も参照してください。
Firefox はユーザーのプライバシーを重視しています。プライベート ブラウズ モードでの追跡保護をサポートします。追跡保護はデフォルトのアカウントに対して有効にできますが、一部の Web サイトではブラウジング エクスペリエンスが損なわれる可能性があります。厳密な追跡保護モードの Firefox は、基本的な追跡スクリプトを阻止するために指紋をランダム化します。 Firefox は個別のユーザー プロファイルを提供します。マルチアカウント コンテナを使用すると、プロファイル内の閲覧を分離できます。
Firefox は、Chrome によく似た Web Extension API を介して Web Extensions のみをサポートします。 Firefox での Web 拡張機能の提出は無料です。 Firefox の Web 拡張機能はほとんどの場合オープン ソースですが、一部の Web 拡張機能は独自のものです。
Google Chrome は、特定の独自コンポーネントを備えたオープンソースの Chromium プロジェクトに基づいています。
Chromeは、複数のデバイス間でアカウントの同期を提供します。同期データの一部には、Webサイトへの資格情報が含まれています。データはアカウントのパスワードで暗号化されています。
拡張機能用のChromeのWebストアでは、拡張機能を送信するために5米ドルの生涯料金が必要です。低コストにより、使用を通じて収益化を目的としていない多くの高品質のオープンソースWeb拡張機能を開発できます。
Chromeはグローバルな使用法の最大のシェアを持ち、大多数の開発者にとって優先ターゲットプラットフォームです。主要なテクノロジーは、ChromeのV8エンジンとChromiumとNode.jsに基づく電子フレームワークを使用するNode.jsなどのChromeのオープンソースコンポーネントに基づいています。 Chromeの膨大なユーザーベースは、脅威アクターとセキュリティ研究者にとって最も魅力的なターゲットになります。絶え間ない攻撃にもかかわらず、Chromeは長年にわたって印象的なセキュリティ実績を保持してきました。これは小さな偉業ではありません。
Chromeは、個別のプロファイル、堅牢なサンドボックス、頻繁な更新を提供し、印象的な資格情報を提供します。さらに、Googleは、脆弱性を報告するための非常に有利な賞金プログラムと、独自のプロジェクトゼロチームを提供しています。これは、多数の非常に才能のあるやる気のある人々が、クロムコードを常に監査し、確保していることを意味します。
XSSリスクを減らし、Cookie/IDを区別するために、個別のChromeプロファイルを作成します。各プロファイルで、Chrome設定でJavaScriptを無効にし、許可されたオリジンを構成します。また、JavaScriptを使用して攻撃面をさらに削減するサイトのV8オプティマイザーを無効にする必要があります。設定に移動 - >プライバシーとセキュリティ- >セキュリティ- > V8セキュリティの管理- >サイトがV8 Optimizerを使用しないようにしないでください
これを無効にすることの利点については、こちらをご覧ください。
Ublock Origin Liteでトラッカーをブロックできます。
Googleからデフォルトの検索エンジンを変更して、追加の追跡を削減します。
DNSプリフェッチの無効化(DNSプリフェッチとそのプライバシーへの影響(PDF)も参照)。 Chromeは、Googleの8.8.8.8
および8.8.4.4
パブリックネームサーバーを使用してDNSを解決しようとする場合があることに注意してください。
詳細については、Chromium SecurityとChromiumプライバシーをお読みください。 Googleのプライバシーポリシーを読んで、個人情報の収集と使用方法を理解してください。
Safariは、MacOSのデフォルトブラウザです。また、バッテリーの使用を削減するための最も最適化されたブラウザでもあります。 Safariは、Chromeと同様に、オープンソースと独自のコンポーネントの両方を持っています。 Safariは、MacOSエコシステムの中で遍在するオープンソースWebエンジンWebKitに基づいています。 WebKitは、メール、iTunes、iBooks、App StoreなどのAppleアプリで使用されています。 ChromeのBlink EngineはWebKitのフォークであり、両方のエンジンが多くの類似点を共有しています。
Safariは、ユーザーのセキュリティとプライバシーに役立つ特定のユニークな機能をサポートしています。コンテンツブロッカーにより、JavaScriptを使用せずにコンテンツブロッキングルールを作成できます。このルールベースのアプローチにより、メモリの使用、セキュリティ、プライバシーが大幅に改善されます。 Safari 11は、インテリジェントトラッキング防止を導入しました。これは、トラッカーのWebサイトからユーザーが非相互作用した後、Safariに保存された追跡データを削除します。 Safariは指紋をランダム化して追跡を減らすことができます。 Safariは、WebUSBやバッテリーAPIなどの特定の機能を意図的にサポートしていません。 Safariのプライベートタブには、タブを閉じると破壊されるCookieとキャッシュが分離されています。 Safariは、Cookieと閲覧を分離するためのFirefoxのマルチアカウントコンテナに相当するプロファイルもサポートしています。 Safariは、敷地ごとに無効にすることができるロックダウンモードでは大幅に安全にすることができます。 Safariの追跡予防の詳細を読んでください。
Safariは、一部のセキュリティ研究者にバグを報告するための招待のみの賞金プログラムを提供しています。 Bountyプログラムは、Blackhat 2016でのAppleのプレゼンテーションで発表されました。
SafariのWeb拡張機能には、Web拡張機能APIに加えて、Safariのサンドボックス環境でネイティブコードを使用する追加のオプションがあります。 SafariのWeb拡張機能は、AppleのApp Storeを通じて配布されます。 App Storeの提出には、Appleが監査しているWeb拡張コードの追加の利点があります。一方、App Storeの提出には急な費用がかかります。毎年の開発者のサブスクリプション料金は100米ドルの費用がかかります(Chromeの5米ドルの料金とFirefoxの無料提出とは対照的です)。オープンソース開発者の大多数にとって、高いコストは法外なものです。その結果、Safariには選択できる拡張機能がほとんどありません。ただし、拡張機能をインストールするときは、高コストを念頭に置いておく必要があります。ほとんどのWeb拡張機能は、開発者のコストをカバーするために、使用法を収益化する方法を持つことが期待されています。ソースコードが開いていないWeb拡張機能に注意してください。
Safariは、iCloudキーチェーンとユーザーの好みとパスワードを同期します。プレーンテキストで表示するには、ユーザーは現在のデバイスのアカウントパスワードを入力する必要があります。これは、ユーザーがセキュリティを追加してデバイス間でデータを同期できることを意味します。
Safariは、ChromeやFirefoxよりも遅いリリースサイクルに従います(3-4マイナーリリース、1年に1つの主要なリリース)。新しい機能は、安定したチャネルに採用するのが遅くなります。 Safariのセキュリティの更新は、安定したリリーススケジュールとは無関係に処理され、App Storeからインストールされます。
EL1T/UBLOCK-SAFARIも参照して、ハイパーリンク監査ビーコンを無効にします。
多くのクロム由来のブラウザは推奨されません。それらは通常、閉じたソースであり、維持が不十分であり、プライバシーを保護するために疑わしい主張をします。
Braveなどの他のその他のブラウザは、このガイドでは評価されていないため、使用を推奨しておらず、積極的には使用しません。
Webブラウザは、たとえばナビゲーターインターフェイスを介していくつかの方法で情報を明らかにします。これには、ブラウザーバージョン、オペレーティングシステム、サイト許可、デバイスのバッテリーレベルなどの情報が含まれます。また、多くのWebサイトはCanvasフィンガープリントを使用して、セッション全体でユーザーを独自に識別します。
セキュリティ意識の閲覧とブラウザから送信されるデータの詳細については、Howto:Privacy&Security Consisuis Browing、browserLeaks.com、私はユニークですか? EFFはトラックリソースをカバーします。
サードパーティのトラッカーを妨害するには、サードパーティのCookieを完全に無効にすることをお勧めします。 Safari、Firefox、およびChromeはすべて、デフォルトでサードパーティのCookieをブロックします。サードパーティのCookieは、ユーザーが現在表示しているドメインとは異なるドメインによって要求されたファイルに関連付けられたCookieです。ほとんどの場合、サードパーティのCookieは、Web上のユーザーの動きを追跡することにより、閲覧プロファイルを作成するために使用されます。サードパーティのCookieを無効にすると、他のドメインからのHTTP応答とスクリプトがCookieの設定を防ぎます。さらに、Cookieはドキュメントオリジンドメインではないドメインへの要求から削除されるため、Cookieは表示されている現在のサイトにのみ送信されます。
また、webrtcに注意してください。これは、ローカルまたはパブリック(VPNに接続されている場合)IPアドレス(ES)を明らかにする可能性があります。 FirefoxおよびChrome/Chromiumでは、Ublock Originなどの拡張機能で無効にすることができます。ロックダウンモードは、safariでwebrtcを無効にします。
Torは、追加のプライバシーでWebを閲覧するために使用できる匿名ネットワークです。 TORブラウザは、TORネットワークにアクセスするためのプロキシを備えたFirefoxの変更されたバージョンです。
Tor ProjectからTorブラウザをダウンロードしてください。
匿名性を損なう間違いを犯す可能性があるため、他のブラウザやアプリケーションを使用するようにTORを使用するように構成しないでください。
dmg
とasc
両方の署名ファイルの両方をダウンロードし、Disk ImageがTOR開発者によって署名されたことを確認します。
$ cd ~ /Downloads
$ file Tor *
TorBrowser-8.0.4-osx64_en-US.dmg: bzip2 compressed data, block size = 900k
TorBrowser-8.0.4-osx64_en-US.dmg.asc: PGP signature Signature (old)
$ gpg Tor * asc
[...]
gpg: Can't check signature: No public key
$ gpg --recv 0x4E2C6E8793298290
gpg: key 0x4E2C6E8793298290: public key "Tor Browser Developers (signing key) <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
$ gpg --verify Tor * asc
gpg: assuming signed data in 'TorBrowser-8.0.4-osx64_en-US.dmg'
gpg: Signature made Mon Dec 10 07:16:22 2018 PST
gpg: using RSA key 0xEB774491D9FF06E2
gpg: Good signature from "Tor Browser Developers (signing key) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290
Subkey fingerprint: 1107 75B5 D101 FB36 BC6C 911B EB77 4491 D9FF 06E2
Good signature from "Tor Browser Developers (signing key) <[email protected]>"
出力に表示されていることを確認してください。認定されていないキーに関する警告は、まだ信頼が割り当てられていないため、良性です。
TORブラウザの署名を確認するにはどうすればよいですか?詳細については。
TORブラウザのインストールを完了するには、ディスクイメージを開き、アプリケーションフォルダーにドラッグするか、次のようにドラッグします。
hdiutil mount TorBrowser-8.0.4-osx64_en-US.dmg
cp -r /Volumes/Tor Browser/Tor Browser.app/ ~/Applications/
TORアプリケーションのコード署名はspctl -a -v
TORプロジェクトのApple開発者ID Madpsayn6Tを使用して作成されpkgutil --check-signature
ことを確認してください。
$ spctl -a -vv ~ /Applications/Tor Browser.app
/Users/drduh/Applications/Tor Browser.app: accepted
source=Developer ID
origin=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
$ pkgutil --check-signature ~ /Applications/Tor Browser.app
Package "Tor Browser.app":
Status: signed by a certificate trusted by Mac OS X
Certificate Chain:
1. Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
SHA1 fingerprint: 95 80 54 F1 54 66 F3 9C C2 D8 27 7A 29 21 D9 61 11 93 B3 E8
-----------------------------------------------------------------------------
2. Developer ID Certification Authority
SHA1 fingerprint: 3B 16 6C 3B 7D C4 B7 51 C9 FE 2A FA B9 13 56 41 E3 88 E1 86
-----------------------------------------------------------------------------
3. Apple Root CA
SHA1 fingerprint: 61 1E 5B 66 2C 59 3A 08 FF 58 D1 4A E2 24 52 D1 98 DF 6C 60
codesign
コマンドを使用して、アプリケーションのコード署名を調べることもできます。
$ codesign -dvv ~ /Applications/Tor Browser.app
Executable=/Users/drduh/Applications/Tor Browser.app/Contents/MacOS/firefox
Identifier=org.torproject.torbrowser
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=229 flags=0x0(none) hashes=4+3 location=embedded
Library validation warning=OS X SDK version before 10.9 does not support Library Validation
Signature size=4247
Authority=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Signed Time=Dec 10, 2018 at 12:18:45 AM
Info.plist entries=24
TeamIdentifier=MADPSAYN6T
Sealed Resources version=2 rules=12 files=128
Internal requirements count=1 size=188
署名されたアプリケーションの完全な証明書の詳細を表示するには、 codesign
でそれらを抽出し、 openssl
でデコードします。
$ codesign -d --extract-certificates ~ /Applications/Tor Browser.app
Executable=/Users/drduh/Applications/Tor Browser.app/Contents/MacOS/firefox
$ file codesign *
codesign0: data
codesign1: data
codesign2: data
$ openssl x509 -inform der -in codesign0 -subject -issuer -startdate -enddate -noout
subject= /UID=MADPSAYN6T/CN=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)/OU=MADPSAYN6T/O=The Tor Project, Inc/C=US
issuer= /CN=Developer ID Certification Authority/OU=Apple Certification Authority/O=Apple Inc./C=US
notBefore=Apr 12 22:40:13 2016 GMT
notAfter=Apr 13 22:40:13 2021 GMT
$ openssl x509 -inform der -in codesign0 -fingerprint -noout
SHA1 Fingerprint=95:80:54:F1:54:66:F3:9C:C2:D8:27:7A:29:21:D9:61:11:93:B3:E8
$ openssl x509 -inform der -in codesign0 -fingerprint -sha256 -noout
SHA256 Fingerprint=B5:0D:47:F0:3E:CB:42:B6:68:1C:6F:38:06:2B:C2:9F:41:FA:D6:54:F1:29:D3:E4:DD:9C:C7:49:35:FF:F5:D9
TORトラフィックは出口ノードに暗号化されます(つまり、パッシブネットワーク盗聴者では読み取ることはできません)が、TORの使用を識別できます。たとえば、TLSハンドシェイク「ホスト名」はプレーンテキストに表示されます。
$ sudo tcpdump -An " tcp " | grep " www "
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
.............". ...www.odezz26nvv7jeqz1xghzs.com.........
.............#.!...www.bxbko3qi7vacgwyk4ggulh.com.........
.6....m.....>...:.........|../* Z....W....X=..6...C../....................................0...0..0.......'....F./0.. *.H........0%1#0!..U....www.b6zazzahl3h3faf4x2.com0...160402000000Z..170317000000Z0'1%0#..U....www.tm3ddrghe22wgqna5u8g.net0..0..
詳細については、TORプロトコル仕様とTor/Tlshistoryを参照してください。
プラグ可能な輸送を使用して、さらにTORトラフィックを難読化することをお勧めします。
これは、独自のTORリレーをセットアップするか、既存のプライベートまたはパブリックブリッジを見つけて、難読化エントリノードとして機能することで実行できます。
追加のセキュリティには、VirtualBoxまたはVMware Virtualized GNU/LinuxまたはOpenBSDインスタンス内でTORを使用します。
最後に、TORネットワークは匿名性を提供することを忘れないでください。これは必ずしもプライバシーと同義ではありません。 TORネットワークは、交通分析と相関が可能なグローバルオブザーバーに対する保護を保証しません。また、インターネットパノプティコン(PDF)で匿名性を求めることと、現実的な敵(PDF)によるTORのトラフィック相関も参照してください。
また、Invisible Internet Project(I2P)とそのTOR比較も参照してください。
VPNサービスを選択したり、独自のセットアップを設定したりするときは、使用するプロトコル、キー交換アルゴリズム、認証メカニズム、および使用される暗号化の種類を必ず調査してください。 PPTPなどの一部のプロトコルは、Linux VM上または一連のクロスプラットフォームツールでOpenVPNまたはLinuxベースのワイヤーガードを支持して避ける必要があります。
一部のクライアントは、VPNが中断または切断されたときに、次の利用可能なインターフェイスにトラフィックを送信する場合があります。 VPNを超えるトラフィックを許可する方法の例については、SCY/8122924を参照してください。
仮想マシン(hwdsl2/setup-inpec-vpn)またはdockerコンテナ(hwdsl2/docker-inpec-vpn-server)にIPSEC VPNをセットアップするための更新ガイドがあります。
VPNプロバイダーの地理的位置を考慮する価値があるかもしれません。第114号の詳細な説明を参照してください。
また、MacOSビルトインVPN L2TP/IPSECおよびIKEV2クライアントのこの技術的概要も参照してください。
PGPは、データ(特に電子メール)のエンドツーエンドの署名と暗号化の標準であるため、送信者と受信者のみがアクセスできます。
GPG、またはGNUプライバシーガードは、PGP標準に準拠したGPLライセンスのオープンソースプログラムです。
GPGは、ダウンロードおよびインストールするソフトウェアの署名を検証するために使用され、対称的または非対称的にファイルとテキストを暗号化することを検証します。
brew with brew with brew install gnupg
。
グラフィカルアプリケーションを希望する場合は、GPGスイートをダウンロードしてインストールしてください。
drduh/config/gpg.confをダウンロードして、推奨される設定を使用します。
curl -o ~/.gnupg/gpg.conf https://raw.githubusercontent.com/drduh/config/master/gpg.conf
GPGキーを安全に生成および保存するには、drduh/yubikey-guideを参照してください。
オンラインガイドを読んで、自分自身とあなたの友人にメールを暗号化して練習して練習してください。彼らにこのようなものに興味を持ってもらいましょう!
XMPPは、IETFによって開発されたオープン標準であり、クロスプラットフォームフェデレートメッセージングを可能にします。クライアントには多くのオプションがあります。ブラウザベースのクライアントのいずれかを使用して、ブラウザのサンドボックスを活用することを検討してください。
プロバイダーによっては、アカウントを設定するためにユーザー名とパスワード以外のものは必要ない場合があります。
XMPPはデフォルトではE2EEではありません。OMEMO暗号化を使用する必要があるため、クライアントがサポートしていることを確認してください。
Signalは、WhatsApp、Googleメッセージ、Facebook Messengerを含む他の無数のメッセンジャーによってダブルラチェットプロトコルが使用されている高度なE2EEメッセンジャーです。
信号では、サインアップするには電話番号が必要であり、デスクトップで使用する前に最初に電話にインストールする必要があります。
ImessageはAppleの最初のパーティーメッセンジャーです。使用するには、Appleアカウントが必要です。
必ず連絡先のキー検証を有効にし、メッセージを送信する人に確認して、適切な人にメッセージを送っていることを確認してください。
電話番号または電子メールのいずれかでiMessageを使用できます。そのため、連絡先に慣れているものを選択してください。
注:デフォルトでは、iCloudバックアップが有効になっており、E2EEなしでAppleのサーバーにメッセージ暗号化キーのコピーを保存します。 iCloudバックアップを無効にするか、高度なデータ保護を有効にしてこれを防ぎます。また、メッセージングパートナー/sに同じことをするように忘れずに!
野生には、増え続ける量のMacマルウェアがあります。 Macはウイルスや悪意のあるソフトウェアの免疫がありません!
一部のマルウェアには、Java Bundling Ask Toolbarなどの合法的なソフトウェアと、海賊版プログラムにバンドルされたMac.Backdoor.iWormなどの非合法ソフトウェアを含むいくつかのマルウェアにバンドルされています。
Mac OS X(PDF)のマルウェアの持続性の方法とOS X Yosemiteのマルウェアの永続性を参照して、庭の多様性のマルウェアがどのように機能するかを学びます。
現在のMac Security NewsのMalwareBytesブログで更新を購読してください。
また、MACOSのハッキングチームマルウェア:MACOSのルートインストール、MACエージェントのサポートドライバー、MACのRCSエージェントをサポートしてください。これは、ユーザーランド( ps
、 ls
)から隠す機能を備えた高度なマルウェアの良い例です。詳細については、RCSインプラントインストーラーとreverse.put.asの簡単な分析を参照してください。
App StoreまたはAppleによって公証されているプログラムのみを実行すると、マルウェアの緩和に役立ちます。 Appleは、マルウェア用の公証アプリで自動化されたスキャンを実行します。 App Storeアプリは、マルウェアをキャッチするためにレビュープロセスを受けます。
それ以外の場合は、開発者のWebサイトやGitHubから直接、信頼できるソースからプログラムを入手してください。プログラムをダウンロードするときは、常にブラウザ/端末がHTTPSを使用していることを確認してください。
また、多くの許可とサードパーティのクローズドソースプログラムを要求するプログラムを避ける必要があります。オープンソースコードにより、誰でもセキュリティ/プライバシーの問題についてコードを監査して調べることができます。
次のコマンドを実行して、プログラムがアプリサンドボックスを実行する前に使用するかどうかを確認します。
codesign -dvvv --entitlements - <path to your app>
アプリサンドボックスが有効になっている場合、表示されます
[Key] com.apple.security.app-sandbox
[Value]
[Bool] true
または、アクティビティモニターを開いて「サンドボックス」列を追加して、アプリの実行中に確認できます。
すべてのApp Storeアプリは、アプリサンドボックスを使用するために必要です。
注: Google Chromeのようなブラウザは、アプリサンドボックスを使用しないように独自のサンドボックスを使用しています。
次のコマンドを使用して実行する前に、プログラムが硬化したランタイムを使用するかどうかを確認します。
codesign --display --verbose /path/to/bundle.app
硬化ランタイムが有効になっている場合、 flags=0x10000(runtime)
表示されます。 「ランタイム」は、硬化したランタイムが有効になっていることを意味します。他のフラグがあるかもしれませんが、ランタイムフラグはここで探しているものです。
「制限付き」と呼ばれるアクティビティモニターの列を有効にすることができます。これは、MacOSのダイナミックリンカーを介してプログラムがコードを注入できないフラグです。理想的には、これは「はい」と言うはずです。
硬化したランタイムを使用するには、公証されたアプリが必要です。
複数のAV製品でアプリケーションをスキャンしてその動作を調べるには、実行する前にVirustotalにアップロードします。
MacOSには、Xprotectと呼ばれる組み込みAVプログラムが付属しています。 Xprotectはバックグラウンドで自動的に実行され、何もしなければマルウェアを検出するために使用する署名を更新します。すでに実行されているマルウェアが検出された場合、他のAVプログラムと同じように削除および軽減するように機能します。
BlockBlockやMacLaunch.shなどのアプリケーションは、永続的なマルウェアの防止に役立つ場合があります。
ローカルにインストールされているアンチウイルスプログラムは、一般に両刃の剣です。「庭の種類」マルウェアを捕まえる可能性がありますが、特権操作モードのために洗練された敵の攻撃面を増やす可能性があります。また、通常、最新のマルウェアをキャッチするためにサンプルを送信するために家に電話をかけます。これはプライバシーの懸念になる可能性があります。
Sophail:Applied Attacks varsived Atterss(PDF)、ESETの脆弱性の分析と搾取、一般的なセキュリティソフトウェアは容赦ないNSAおよびGCHQ攻撃の下にあり、イスラエルがロシアのハッカーが米国の秘密のために世界を探し回っていることを確認しました。
GateKeeperは、ノタールではないアプリの実行を防ぎます。
公証されていないアプリを実行しようとすると、GateKeeperが警告を発します。これは、プライバシーとセキュリティにアクセスすると、簡単にバイパスできます。下にスクロールして、[アプリを開く]をクリックします。その後、ゲートキーパーはあなたがそれを実行することを許可します。
GateKeeperはすべてのバイナリをカバーするわけではなく、アプリのみが他のファイルタイプを実行するときは注意してください。
SIPが有効になっていることを確認するには、コマンドcsrutil status
を使用しますSystem Integrity Protection status: enabled.
それ以外の場合は、回復モードを介してSIPを有効にします。
MacOSは、 mdls
およびxattr
コマンドで表示できます。
$ ls -l@ ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
-rw-r--r--@ 1 drduh staff 63M Jan 1 12:00 TorBrowser-8.0.4-osx64_en-US.dmg
com.apple.metadata:kMDItemWhereFroms 46B
com.apple.quarantine 57B
$ mdls ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
kMDItemContentCreationDate = 2019-01-01 00:00:00 +0000
kMDItemContentCreationDate_Ranking = 2019-01-01 00:00:00 +0000
kMDItemContentModificationDate = 2019-01-01 00:00:00 +0000
kMDItemContentType = "com.apple.disk-image-udif"
kMDItemContentTypeTree = (
"public.archive",
"public.item",
"public.data",
"public.disk-image",
"com.apple.disk-image",
"com.apple.disk-image-udif"
)
kMDItemDateAdded = 2019-01-01 00:00:00 +0000
kMDItemDateAdded_Ranking = 2019-01-01 00:00:00 +0000
kMDItemDisplayName = "TorBrowser-8.0.4-osx64_en-US.dmg"
kMDItemFSContentChangeDate = 2019-01-01 00:00:00 +0000
kMDItemFSCreationDate = 2019-01-01 00:00:00 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "TorBrowser-8.0.4-osx64_en-US.dmg"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 5000
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 65840402
kMDItemFSTypeCode = ""
kMDItemInterestingDate_Ranking = 2019-01-01 00:00:00 +0000
kMDItemKind = "Disk Image"
kMDItemWhereFroms = (
"https://dist.torproject.org/torbrowser/8.0.4/TorBrowser-8.0.4-osx64_en-US.dmg",
"https://www.torproject.org/projects/torbrowser.html.en"
)
$ xattr -l ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 4D 68 74 |bplist00..._.Mht|
00000010 74 70 73 3A 2F 2F 64 69 73 74 2E 74 6F 72 70 72 |tps://dist.torpr|
00000020 6F 6A 65 63 74 2E 6F 72 67 2F 74 6F 72 62 72 6F |oject.org/torbro|
[...]
com.apple.quarantine: 0081;58519ffa;Google Chrome.app;1F032CAB-F5A1-4D92-84EB-CBECA971B7BC
メタデータの属性は、 -d
フラグを使用して削除することもできます。
xattr -d com.apple.metadata:kMDItemWhereFroms ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
xattr -d com.apple.quarantine ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
xattr -l ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
他のメタデータとアーティファクトは~/Library/Preferences/
、 ~/Library/Containers/<APP>/Data/Library/Preferences
、 /Library/Preferences
などを含むがこれらに限定されないディレクトリにありますが、いくつかは詳細です下に。
~/Library/Preferences/com.apple.sidebarlists.plist
添付のボリュームの履歴リストが含まれています。それをクリアするには、コマンド/usr/libexec/PlistBuddy -c "delete :systemitems:VolumesList" ~/Library/Preferences/com.apple.sidebarlists.plist
/Library/Preferences/com.apple.Bluetooth.plist
は、デバイス履歴を含むBluetoothメタデータが含まれています。 Bluetoothを使用していない場合、メタデータを次のようにクリアできます。
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist DeviceCache
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist IDSPairedDevices
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist PANDevices
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist PANInterfaces
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist SCOAudioDevices
/var/spool/cups
カッププリンタージョブキャッシュが含まれています。それをクリアするには、コマンドを使用してください。
sudo rm -rfv /var/spool/cups/c0*
sudo rm -rfv /var/spool/cups/tmp/*
sudo rm -rfv /var/spool/cups/cache/job.cache*
接続されているiOSデバイスのリストをクリアするには、以下を使用します。
sudo defaults delete /Users/$USER/Library/Preferences/com.apple.iPod.plist "conn:128:Last Connect"
sudo defaults delete /Users/$USER/Library/Preferences/com.apple.iPod.plist Devices
sudo defaults delete /Library/Preferences/com.apple.iPod.plist "conn:128:Last Connect"
sudo defaults delete /Library/Preferences/com.apple.iPod.plist Devices
sudo rm -rfv /var/db/lockdown/*
Quicklookサムネイルデータはqlmanage -r cache
コマンドを使用してクリアできますが、これはQuicklookディレクトリのファイルresetreason
に書き込み、Quicklookキャッシュが手動でクリアされたと述べています。 qlmanage -r disablecache
でサムネイルキャッシュを無効にします
また、 getconf DARWIN_USER_CACHE_DIR
とsudo getconf DARWIN_USER_CACHE_DIR
でディレクトリ名を取得することでクリアできます。
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/exclusive
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-shm
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-wal
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/resetreason
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.data
同様に、ルートユーザーの場合:
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.fraghandler
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/exclusive
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-shm
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-wal
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/resetreason
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.data
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.fraghandler
また、「Quicklook」キャッシュが暗号化されたデータをリークする可能性があることも参照してください。
ファインダーの好みをクリアするには:
defaults delete ~/Library/Preferences/com.apple.finder.plist FXDesktopVolumePositions
defaults delete ~/Library/Preferences/com.apple.finder.plist FXRecentFolders
defaults delete ~/Library/Preferences/com.apple.finder.plist RecentMoveAndCopyDestinations
defaults delete ~/Library/Preferences/com.apple.finder.plist RecentSearches
defaults delete ~/Library/Preferences/com.apple.finder.plist SGTRecentFileSearches
追加の診断ファイルは、次のディレクトリに記載されている場合がありますが、ロギングを破るか、他の問題を引き起こす可能性があるため、削除する前に注意する必要があります。
/var/db/CoreDuet/
/var/db/diagnostics/
/var/db/systemstats/
/var/db/uuidtext/
/var/log/DiagnosticMessages/
MacOSは、NVRAMに優先Wi-Fiデータ(資格情報を含む)を保存しました。それをクリアするには、次のコマンドを使用します。
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:current-network
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-networks
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-count
MacOSは、ユーザーの辞書と提案がオフになっていても、タイプを入力するものに関する機密情報を収集する場合があります。それらを削除し、それらが再び作成されないようにするには、次のコマンドを使用してください。
rm -rfv "~/Library/LanguageModeling/*" "~/Library/Spelling/*" "~/Library/Suggestions/*"
chmod -R 000 ~/Library/LanguageModeling ~/Library/Spelling ~/Library/Suggestions
chflags -R uchg ~/Library/LanguageModeling ~/Library/Spelling ~/Library/Suggestions
QuickLookアプリケーションサポートメタデータは、次のコマンドでクリアおよびロックできます。
rm -rfv "~/Library/Application Support/Quick Look/*"
chmod -R 000 "~/Library/Application Support/Quick Look"
chflags -R uchg "~/Library/Application Support/Quick Look"
ドキュメントリビジョンメタデータは/.DocumentRevisions-V100
に保存され、次のコマンドでクリアしてロックすることができます。これにより、Core Appleアプリケーションが破損する可能性があるため、注意する必要があります。
sudo rm -rfv /.DocumentRevisions-V100/*
sudo chmod -R 000 /.DocumentRevisions-V100
sudo chflags -R uchg /.DocumentRevisions-V100
保存されたアプリケーション状態メタデータは、次のコマンドでクリアされ、ロックされる場合があります。
rm -rfv ~/Library/Saved Application State/*
rm -rfv ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
chmod -R 000 ~/Library/Saved Application State/
chmod -R 000 ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
chflags -R uchg ~/Library/Saved Application State/
chflags -R uchg ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
AutoSaveメタデータは、次のコマンドでクリアしてロックできます。
rm -rfv "~/Library/Containers/<APP>/Data/Library/Autosave Information"
rm -rfv "~/Library/Autosave Information"
chmod -R 000 "~/Library/Containers/<APP>/Data/Library/Autosave Information"
chmod -R 000 "~/Library/Autosave Information"
chflags -R uchg "~/Library/Containers/<APP>/Data/Library/Autosave Information"
chflags -R uchg "~/Library/Autosave Information"
Siri Analyticsデータベースは、SIRI発射エージェントが無効になっている場合でも作成されていますが、次のコマンドでクリアしてロックできます。
rm -rfv ~/Library/Assistant/SiriAnalytics.db
chmod -R 000 ~/Library/Assistant/SiriAnalytics.db
chflags -R uchg ~/Library/Assistant/SiriAnalytics.db
~/Library/Preferences/com.apple.iTunes.plist
にはiTunesメタデータが含まれています。最近のiTunes検索データは、次のコマンドでクリアされる場合があります。
defaults delete ~/Library/Preferences/com.apple.iTunes.plist recentSearches
Appleアカウントにリンクされたサービスを使用しない場合、次のコマンドを使用して、次のキーもクリアできます。
defaults delete ~/Library/Preferences/com.apple.iTunes.plist StoreUserInfo
defaults delete ~/Library/Preferences/com.apple.iTunes.plist WirelessBuddyID
QuickTimeプレーヤーでプレイされたすべてのメディアは、次のように見つけることができます。
~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist
追加のメタデータが次のファイルに存在する可能性があります。
~/Library/Containers/com.apple.appstore/Data/Library/Preferences/com.apple.commerce.knownclients.plist
~/Library/Preferences/com.apple.commerce.plist
~/Library/Preferences/com.apple.QuickTimePlayerX.plist
urandom
とtr
使用して強力なパスワードを生成します。
tr -dc '[:graph:]' < /dev/urandom | fold -w 20 | head -1
キーチェーンアクセスのパスワードアシスタントは、安全な資格情報を生成することもできます。
記憶に残るパスワードにはサイコロを使用することを検討してください。
GNUPGは、パスワードやその他の暗号化されたファイルを管理するためにも使用できます(DRDUH/PurseおよびDRDUH/PWD.SHを参照)。
資格のあるすべてのオンラインアカウントが多要素認証を有効にしていることを確認してください。マルチファクター認証の最も強い形式はWebAuthnで、その後にアプリベースの認証器が続き、SMSベースのコードは最も弱いです。
Yubikeyは、Webauthnサポートを備えた手頃な価格のハードウェアトークンです。また、GNUPG暗号化とSSH認証用の暗号化キーを保存するためにも使用できます。DRDUH/YUBIKEY -GUIDEを参照してください。
ファイルをローカルに暗号化してから、外部メディアやオンラインサービスにバックアップします。
脅威モデルが許可されている場合は、CISAが概説した3-2-1バックアップモデルに従う必要があります。 3つのコピーを保持します:オリジナルと2つのバックアップ。 2つの異なるメディアタイプ、たとえばローカルドライブやクラウドストレージにバックアップを保持します。 1コピーオフサイトを保存します。
タイムマシンは、MacOSのバックアップを処理するための組み込みツールです。外部ドライブまたはネットワークドライブを取得してバックアップにバックアップします。
GNUPGは、静的なパスワードまたは公開キーで使用できます(Yubikeyに保存されている秘密キーを使用)。
パスワードを使用してディレクトリを圧縮および暗号化します。
tar zcvf - ~/Downloads | gpg -c > ~/Desktop/backup-$(date +%F-%H%M).tar.gz.gpg
ディレクトリを復号化および解凍します。
gpg -o ~/Desktop/decrypted-backup.tar.gz -d ~/Desktop/backup-*.tar.gz.gpg
tar zxvf ~/Desktop/decrypted-backup.tar.gz
暗号化されたボリュームは、ディスクユーティリティまたはhdiutil
使用して作成することもできます。
hdiutil create ~/Desktop/encrypted.dmg -encryption -size 50M -volname "secretStuff"
hdiutil mount ~/Desktop/encrypted.dmg
cp -v ~/Documents/passwords.txt /Volumes/secretStuff
hdiutil eject /Volumes/secretStuff
バックアップを提供する追加のアプリケーションとサービスは次のとおりです。
MacOSは、接続しているアクセスポイントを覚えています。すべてのワイヤレスデバイスと同様に、Macは、睡眠から目覚めるときなど、ネットワークを探すたびに、覚えているすべてのアクセスポイント名( myhomenetworkなど)をブロードキャストします。
これはプライバシーのリスクなので、システム設定のリストからネットワークを削除>ネットワーク>不要になったときにAdvancedを削除します。
また、群衆からの信号を参照してください:スマートフォンプローブ(PDF)を介した社会的関係を明らかにします。
保存されたWi-Fi情報(SSID、Last Connectionなど)は/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
にあります。
ネットワークごとに異なるランダムMACアドレスを使用すると、時間とともに回転することができます。これは、ネットワーク全体および同じネットワーク上で時間の経過とともに追跡されないようにするのに役立ちます。
MacOSは、回復モードがインターネットにアクセスするために、NVRAMにWi-Fi SSIDとパスワードを保存します。 NVRAMをクリアするか、AppleアカウントからMacを除去することを確認してください。これにより、Macを渡す前にNVRAMをクリアします。 SMCをリセットすると、NVRAMの一部がクリアされますが、すべてではありません。
最後に、ワイヤレスネットワークのWEP保護は安全ではなく、可能な場合はWPA3保護ネットワークにのみ接続する必要があります。
発信SSH接続の場合、ハードウェアまたはパスワードで保護されたキーを使用し、リモートホストをセットアップし、プライバシーを追加するためにそれらをハッシュすることを検討します。推奨されるクライアントオプションについては、DRDUH/config/ssh_configを参照してください。
SSHを使用して、VPNと同様に、暗号化されたトンネルを作成してトラフィックを通過させることもできます。
たとえば、リモートホストポート8118で実行されているPrivoxyを使用するには:
ssh -C -L 5555:127.0.0.1:8118 [email protected]
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 5555
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 5555
または、SSH接続をソックスプロキシとして使用するには:
ssh -NCD 3000 [email protected]
デフォルトでは、MacOSにはSSHDまたはリモートログインが有効になっていません。
SSHDを有効にし、着信SSH接続を許可するには:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
または、システム設定> [共有]メニューを使用します。
SSHDを有効にする場合は、パスワード認証を無効にし、構成をさらに強化することを検討してください。推奨オプションについては、drduh/config/sshd_configを参照してください。
SSHDが実行されているかどうかを確認してください。
sudo lsof -Pni TCP:22
Macを常に物理的に安全に保ち、公共の場で放置しないでください。
監視されていない物理的アクセスを備えた熟練した攻撃者は、ハードウェアキーロガーをインストールして、すべてのキーストロークを記録することができます。組み込みのキーボードまたはBluetoothキーボードを備えたMacを使用すると、この攻撃の多くの既製のバージョンがUSBキーボードとコンピューターの間に接続されるように設計されているため、これはより困難になります。
使用中に物理的な盗難から保護するために、BuskillやSwiftGuard(グラフィカルユーザーインターフェイスを備えたUSBKILLを更新)などの反豊富なツールを使用できます。すべてがUSBイベントに応答し、デバイスがあなたから物理的に分離されている場合、または許可されていないデバイスが接続されている場合、すぐにコンピューターをシャットダウンできます。
公共の場で使用するためにプライバシー画面/フィルターを購入することを検討してください。
マニキュアと改ざんの証券シールをコンポーネントに適用して、改ざんを検出できます。
MacOSには、強力なOpenBSM(基本セキュリティモジュール)監査機能があります。それを使用して、プロセスの実行、ネットワークアクティビティなどを監視できます。
ログを監査するには、 praudit
ユーティリティを使用します。
$ sudo praudit -l /dev/auditpipe
header,201,11,execve(2),0,Thu Sep 1 12:00:00 2015, + 195 msec,exec arg,/Applications/.evilapp/rootkit,path,/Applications/.evilapp/rootkit,path,/Applications/.evilapp/rootkit,attribute,100755,root,wheel,16777220,986535,0,subject,drduh,root,wheel,root,wheel,412,100005,50511731,0.0.0.0,return,success,0,trailer,201,
header,88,11,connect(2),0,Thu Sep 1 12:00:00 2015, + 238 msec,argument,1,0x5,fd,socket-inet,2,443,173.194.74.104,subject,drduh,root,wheel,root,wheel,326,100005,50331650,0.0.0.0,return,failure : Operation now in progress,4354967105,trailer,88
header,111,11,OpenSSH login,0,Thu Sep 1 12:00:00 2015, + 16 msec,subject_ex,drduh,drduh,staff,drduh,staff,404,404,49271,::1,text,successful login drduh,return,success,0,trailer,111,
/etc/security
のaudit
、 praudit
、 audit_control
、およびその他のファイルについては、マニュアルページを参照してください
man audit
よると、 -s
フラグは監査構成を同期すると述べていますが、変更が有効になるために再起動する必要があるようです。
詳細については、ilostmynotes.blogspot.comおよびderflounder.wordpress.comの記事を参照してください。
メモシステムの整合性保護はDTRACEを妨げるため、SIPを無効にすることなく最近のMacOSバージョンで使用することはできません。
iosnoop
モニターディスクI/oopensnoop
モニターファイルが開きますexecsnoop
プロセスの実行を監視しますerrinfo
モニターに失敗したシステム呼び出しdtruss
すべてのシステム呼び出しを監視します詳細については、 man -k dtrace
参照してください。
ps -ef
すべての実行プロセスに関する情報をリストします。
アクティビティモニターを使用してプロセスを表示することもできます。
launchctl list
とsudo launchctl list
リストのロードおよび実行中のユーザーとシステムの起動デーモンとエージェント。
オープンネットワークファイルのリスト:
sudo lsof -Pni
さまざまなネットワーク関連データ構造の内容をリストします。
sudo netstat -atln
Wiresharkは、 tshark
でコマンドラインから使用できます。
DNSクエリと返信を監視します。
tshark -Y "dns.flags.response == 1" -Tfields
-e frame.time_delta
-e dns.qry.name
-e dns.a
-Eseparator=,
HTTPリクエストと応答を監視してください:
tshark -Y "http.request or http.response" -Tfields
-e ip.dst
-e http.request.full_uri
-e http.request.method
-e http.response.code
-e http.response.phrase
-Eseparator=/s
X509(SSL/TLS)証明書を監視:
tshark -Y "ssl.handshake.certificate" -Tfields
-e ip.src
-e x509sat.uTF8String
-e x509sat.printableString
-e x509sat.universalString
-e x509sat.IA5String
-e x509sat.teletexString
-Eseparator=/s -Equote=d
Google/Santaは、Googleの企業Macintosh艦隊とオープンソースのために開発されたセキュリティソフトウェアです。
サンタは、MacOSのバイナリおよびファイルアクセス認証システムです。これは、実行のために監視するシステム拡張機能、ローカルデータベースのコンテンツに基づいて実行決定を行うデーモン、ブロック決定の場合にユーザーに通知するGUIエージェント、システムを管理するためのコマンドラインユーティリティ、およびデータベースをサーバーと同期する。
サンタはカーネル認証APIを使用して、バイナリをカーネルで実行することを監視および許可/許可します。バイナリは、ユニークなハッシュまたは署名開発者証明書によって白または黒リストに載ることができます。 Santaは、信頼できるコード実行のみを許可するために、またはWindows用のBIT9ソフトウェアと同様に、BlackListの既知のマルウェアがMacで実行されるのを許可します。
注サンタには現在、ルールを管理するためのグラフィカルユーザーインターフェイスがありません。次の手順は、上級ユーザーのみを対象としています!
Santaをインストールするには、リリースページにアクセスして、最新のディスクイメージをダウンロードして、マウントして、含まれているパッケージをインストールします。
hdiutil mount ~/Downloads/santa-0.9.20.dmg
sudo installer -pkg /Volumes/santa-0.9.20/santa-0.9.20.pkg -tgt /
デフォルトでは、Santaは「モニター」モード(つまり、ブロックされていない、ログのみが記録されない)にインストールし、2つのルールが付属しています。1つはAppleバイナリ用、もう1つはSanta Software自体のためです。
サンタが走っていて、カーネルモジュールがロードされていることを確認してください。
$ santactl status
>>> Daemon Info
Mode | Monitor
File Logging | No
Watchdog CPU Events | 0 (Peak: 0.00%)
Watchdog RAM Events | 0 (Peak: 0.00MB)
>>> Kernel Info
Kernel cache count | 0
>>> Database Info
Binary Rules | 0
Certificate Rules | 2
Events Pending Upload | 0
$ ps -ef | grep " [s]anta "
0 786 1 0 10:01AM ?? 0:00.39 /Library/Extensions/santa-driver.kext/Contents/MacOS/santad --syslog
$ kextstat | grep santa
119 0 0xffffff7f822ff000 0x6000 0x6000 com.google.santa-driver (0.9.14) 693D8E4D-3161-30E0-B83D-66A273CAE026 <5 4 3 1>
iTunesの実行を防ぐために、ブラックリストルールを作成します。
$ sudo santactl rule --blacklist --path /Applications/iTunes.app/
Added rule for SHA-256: e1365b51d2cb2c8562e7f1de36bfb3d5248de586f40b23a2ed641af2072225b3.
iTunesを起動してみてください - ブロックされます。
$ open /Applications/iTunes.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/iTunes.app.
ルールを削除するには:
$ sudo santactl rule --remove --path /Applications/iTunes.app/
Removed rule for SHA-256: e1365b51d2cb2c8562e7f1de36bfb3d5248de586f40b23a2ed641af2072225b3.
iTunesを開く:
$ open /Applications/iTunes.app/
[iTunes will open successfully]
新しい例Cプログラムを作成します。
$ cat << EOF > foo.c
> # include <stdio.h>
> main () { printf( " Hello Worldn”); }
> EOF
GCCでプログラムをコンパイルします(Xcodeまたはコマンドラインツールのインストールが必要です):
$ gcc -o foo foo.c
$ file foo
foo: Mach-O 64-bit executable x86_64
$ codesign -d foo
foo: code object is not signed at all
実行:
$ ./foo
Hello World
サンタを「ロックダウン」モードに切り替えます。これにより、許可されたバイナリのみが実行できます。
$ sudo defaults write /var/db/santa/config.plist ClientMode -int 2
符号なしのバイナリを実行してみてください:
$ ./foo
bash: ./foo: Operation not permitted
Santa
The following application has been blocked from executing
because its trustworthiness cannot be determined.
Path: /Users/demouser/foo
Identifier: 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
Parent: bash (701)
バイナリを承認するには、SHA-256の合計を決定します。
$ santactl fileinfo /Users/demouser/foo
Path : /Users/demouser/foo
SHA-256 : 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
SHA-1 : 4506f3a8c0a5abe4cacb98e6267549a4d8734d82
Type : Executable (x86-64)
Code-signed : No
Rule : Blacklisted (Unknown)
新しいルールを追加します:
$ sudo santactl rule --whitelist --sha256 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
Added rule for SHA-256: 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed.
実行:
$ ./foo
Hello World
許可され、機能します!
アプリケーションは、開発者証明書で許可することもできます。たとえば、Google Chromeをダウンロードして実行します - 「ロックダウン」モードでサンタによってブロックされます:
$ curl -sO https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg
$ hdiutil mount googlechrome.dmg
$ cp -r /Volumes/Google Chrome/Google Chrome.app /Applications/
$ open /Applications/Google Chrome.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Google Chrome.app.
開発者証明書(署名チェーンの最初の項目)でアプリケーションを承認します。
$ santactl fileinfo /Applications/Google Chrome.app/
Path : /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
SHA-256 : 0eb08224d427fb1d87d2276d911bbb6c4326ec9f74448a4d9a3cfce0c3413810
SHA-1 : 9213cbc7dfaaf7580f3936a915faa56d40479f6a
Bundle Name : Google Chrome
Bundle Version : 2883.87
Bundle Version Str : 55.0.2883.87
Type : Executable (x86-64)
Code-signed : Yes
Rule : Blacklisted (Unknown)
Signing Chain:
1. SHA-256 : 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
SHA-1 : 85cee8254216185620ddc8851c7a9fc4dfe120ef
Common Name : Developer ID Application: Google Inc.
Organization : Google Inc.
Organizational Unit : EQHXZ8M8AV
Valid From : 2012/04/26 07:10:10 -0700
Valid Until : 2017/04/27 07:10:10 -0700
2. SHA-256 : 7afc9d01a62f03a2de9637936d4afe68090d2de18d03f29c88cfb0b1ba63587f
SHA-1 : 3b166c3b7dc4b751c9fe2afab9135641e388e186
Common Name : Developer ID Certification Authority
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2012/02/01 14:12:15 -0800
Valid Until : 2027/02/01 14:12:15 -0800
3. SHA-256 : b0b1730ecbc7ff4505142c49f1295e6eda6bcaed7e2c68c5be91b5a11001f024
SHA-1 : 611e5b662c593a08ff58d14ae22452d198df6c60
Common Name : Apple Root CA
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2006/04/25 14:40:36 -0700
Valid Until : 2035/02/09 13:40:36 -0800
この場合、 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
、GoogleのApple開発者証明書(Team ID EQHXZ8M8AV)のSHA -256です。
$ sudo santactl rule --whitelist --certificate --sha256 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
Added rule for SHA-256: 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153.
Google Chromeが起動するようになり、コード署名証明書が変更または期限切れにならない限り、アプリケーションの後続の更新は引き続き機能します。
「ロックダウン」モードを無効にするには:
sudo defaults delete /var/db/santa/config.plist ClientMode
/var/log/santa.log
を参照して、許可および拒否の実行決定を監視してください。
Santa用のログおよび構成サーバーは、OsqueryおよびSanta用のオープンソースイベント監視ソリューションとTLSサーバーであるZentralで利用できます。
Zentralは、監視モードとロックダウン動作モードの両方でサンタをサポートします。クライアントは、サンタルールを同期するためにTLS接続を登録する必要があります。エンドポイントからのすべてのサンタイベントは、Zentralに集約され、ログアックされます。サンタイベントは、Zentralフレームワーク内からアクションと通知をトリガーできます。
Python、Bash、およびその他の通訳者は許可されていること(Appleの開発者証明書によって署名されているため)が許可されているため、Santaはそのようなスクリプトの実行をブロックすることはできません。したがって、サンタを無効にする潜在的な非バイナリプログラムは、注目すべき弱点(脆弱性ではなく、脆弱性ではありません)です。
診断と使用データを無効にします。
音楽を再生したり、ビデオを見たりする場合は、MacOSの組み込みメディアプレーヤーであるQuickTime Playerを使用してください。ベースシステムの一部として、アプリのサンドボックス、硬化ランタイム、および署名されたシステムのボリュームからのメリットを使用します。
トレントを使用する場合は、無料でオープンソースのトランスミッションを使用します(注:すべてのソフトウェア、オープンソースプロジェクトと同様に、マルウェアはまだ入っている可能性があります)。また、ブロックリストを使用して、既知の悪いホストでの覗き見を避けることもできます。伝送とJohntyree/3331662に最適なブロックリストをご覧ください。
デフォルトのファイルハンドラーを管理します。
コンソールアプリケーションまたはsyslog -w
または/usr/bin/log stream
コマンドでシステムログを監視します。
スクリーンセーバーが始まるとすぐに画面をロックするように設定します。
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
Finderで非表示ファイルとライブラリフォルダーを公開します。
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library
すべてのファイル名拡張機能を表示します( 'veol.jpg.app "が簡単に覆い隠すことができないように)。
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
icloudにドキュメントを保存することはデフォルトではありません。
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
ターミナルでセキュアなキーボードエントリを有効にします(YubikeyまたはTextExpanderなどのアプリケーションを使用しない限り)。
クラッシュレポーター(アプリケーションがクラッシュした後に表示されるダイアログと問題をAppleに報告するように求めているダイアログ)を無効にします:
defaults write com.apple.CrashReporter DialogType none
Bonjourマルチキャスト広告を無効にする:
警告:これにより、AirPlayとAirprintの問題が発生します!
sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool YES
必要でない場合は、ハンドオフとBluetoothの機能を無効にします。
アプリがアクティビティモニターでサンドボックスされていることを確認してください。
macosには/etc/sudoers
でこのラインが付属しています:
Defaults env_keep += "HOME MAIL"
これにより、Sudoは特権を高めたときに家の変数を変更することを止めます。これは、「sudo zsh」を実行すると、非ルートユーザーのホームディレクトリのzshドットファイルをルートとして実行することを意味します。マルウェアやローカル攻撃者が特権をエスカレートするための潜在的に簡単な方法を避けるために、このラインをコメントアウトすることをお勧めします。
ルートユーザーが非ルートユーザーのホームディレクトリを持っているルートユーザーの利便性を維持したい場合は、/var/root/.zshrcにエクスポートラインを追加できます。
export HOME=/Users/blah
カスタムUMASKを設定します:
sudo launchctl config user umask 077
再起動し、Finderでファイルを作成し、その権限を確認します(MacOSデフォルトにより、「グループ/その他の「読み取りアクセス)を許可します):
$ ls -ld umask *
drwx------ 2 kevin staff 64 Dec 4 12:27 umask_testing_dir
-rw-------@ 1 kevin staff 2026566 Dec 4 12:28 umask_testing_file