
脅威モデリング、ディスク暗号化、ファイアウォール設定、安全な認証、ネットワークの堅牢化に関する実践的な手順をまとめた、厳選されたmacOSセキュリティおよびプライバシーガイド。
一般的なセキュリティのベストプラクティスを適用します:
脅威モデルを作成する
システムとソフトウェアを最新の状態に保つ
softwareupdateコマンドラインユーティリティでインストールできます。どちらもAppleアカウントは必要ありません。機密データを暗号化する
データの可用性を確保する
慎重にクリックする
セキュリティとプライバシーを有意義に向上させるための最も重要なステップは、脅威モデルを作成することです。これは、何を保護したいのか、誰がそれにアクセスしようとするのか、どのようにアクセスできるのか、そしてどのような管理策がユーザビリティのトレードオフに値するのかを一般的に記述したものです。これにより、潜在的な敵対者とその動機を理解することができ、より強力な防御につながります。
資産には、電話、ラップトップ、認証情報、閲覧履歴などの個人情報が含まれます。
保護する価値が最も高いものから順に、重要度順にリストアップします。
誰を防御対象とするかを定義します。まず、各敵対者が重要な資産を攻撃する可能性のある動機を定義することから始めます。例えば、金銭的利益は多くの攻撃者にとって大きな動機です。
各敵対者について、できることとできないことをリストアップし、能力が低い順から高い順にランク付けします。例えば、通りすがりの泥棒は日和見的に行動します。画面ロックや強力なパスワードによる暗号化ストレージなどの基本的な対策でおそらく防げます。より洗練された執拗な敵対者には、デバイスを使用しないときに完全に電源を切ってメモリから認証情報を消去することや、より強力な認証メカニズムが必要になる場合があります。
各脅威に対して最適な緩和策を選択します。例えば、ルームメイトに見つかる可能性があるならパスワードを紙に書かない、盗難に備えてストレージを暗号化してデータを保護するなどです。
セキュリティはユーザビリティとバランスを取る必要があります。すべての緩和策は、何らかの敵対能力に対抗して、不便さを正当化するものでなければなりません。残りのリスクが状況に対して許容できる場合は、防御の追加をやめます。デバイス、データ、旅行、仕事、敵対者が変わったときはモデルを見直します。
次の表は、シンプルな脅威モデルの例です:
脅威モデリングについて詳しく読む。
Appleシリコンハードウェアは、Secure Enclaveベースのキー保護やより強力な起動セキュリティオプションなど、ハードウェアバックアップされたセキュリティ機能を提供します。このガイドで説明する保護には、一般的に推奨されるプラットフォームです。
一部のIntelベースのMac、特に脆弱なT2世代のハードウェアを搭載するモデルは、macOSのアップデートでは完全には修正できないハードウェアの脆弱性の影響を受けます。
Appleはレガシーバージョンのすべての脆弱性にパッチを適用するわけではないため、macOSを実行する非Appleハードウェアや、最新のmacOSリリースをサポートしないシステムは避けてください。
Appleアクセサリは通常、macOS経由でファームウェアアップデートを受け取り、現在のBluetoothセキュリティ機能をサポートします。例えば、Bluetooth Low Energy(BLE)Privacyでは、デバイスアドレスをローテーションして追跡を減らします。サードパーティのアクセサリはこの機能をサポートしない場合があります。
macOSをインストールするにはいくつかの方法があります。
サポートされている最新バージョンのmacOSをインストールします。新しいバージョンのmacOSには、以前のリリースにはないセキュリティ修正やその他の改善が含まれています。
インストール中、Appleシリコン搭載MacはAppleのアクティベーションサービスに接続して、デバイスが紛失または盗難と報告されていないことを確認します。このプロセスの仕組みについてはこちらをご覧ください。
Appleアカウントは基本的なmacOSの使用には任意ですが、App Storeや多くのAppleサービスには必要です。機能を有効にする前に、データプライバシー設定を確認してください。
iCloudでエンドツーエンド暗号化を有効にし、Appleアカウントデータを確認してください。
App Storeは、Appleがアプリケーションをレビューするソフトウェア配布プラットフォームです。
App Storeアプリケーションは、App SandboxとHardened Runtime(アプリができることを制限し、一部の攻撃を困難にするセキュリティ機能)の使用が必須です。また、自動ソフトウェアアップデートも提供されます。
App Storeの利用にはAppleアカウントが必要で、プライバシー上のリスクとなる可能性があります。
仮想化により、別のオペレーティングシステムを隔離された仮想マシン内で実行できます。Appleシリコン上では、macOSは次のようなアプリを使用して、サポートされているmacOSゲストとWindows 11 for ARMを実行できます。
[!WARNING] VMwareは、ダウンロード前にBroadcomアカウントと契約への同意が必要です。 Parallelsはアカウント、支払い情報、その他のデータを必要とします - プライバシー通知を参照してください。
Apple Containerは、macOS上でLinuxコンテナを実行するためのコマンドラインツールです。単一のLinux仮想マシンを共有するコンテナランタイムとは異なり、Apple ContainerはmacOSの仮想化機能を使用して、各コンテナを隔離された軽量な仮想マシンで実行します。これにより、ワークロードとホストオペレーティングシステムの間により強力な分離境界が提供されます。
macOSが初めて起動するとき、セットアップアシスタントはプライマリアカウントの作成を要求します。
長くてユニークなパスワードを設定します。パスワードヒントのフィールドは空白のままにします。
個人を特定できる名前を避けます:コンピュータ名(「John Appleseed's MacBook」など)はローカルネットワークにブロードキャストされ、他のデバイスから見えます。
システム名は、システム設定 > 概要またはscutilコマンドで設定できます:```bash
sudo scutil --set ComputerName MacBook
sudo scutil --set HostName MacBook
sudo scutil --set LocalHostName MacBook
# 管理者アカウントとユーザーアカウント
最初に作成されるアカウントは管理者アカウントです。管理者はシステム全体の設定を変更でき、[sudo](https://en.wikipedia.org/wiki/Sudo) を使用してコマンドを実行できます。sudo は一時的に昇格した権限を付与します。管理者が実行するプログラムも同じ権限を取得する可能性があります。また、sudo には[脆弱性](https://bogner.sh/2014/03/another-mac-os-x-sudo-password-bypass/)が存在する場合もあります。
通常の日常業務には専用の標準アカウントを使用し、管理者アカウントはソフトウェアやシステムのインストール、構成、更新にのみ使用することが[ベストプラクティス](https://help.apple.com/machelp/mac/10.12/index.html#/mh11389)と考えられています。
macOS のログイン画面で管理者アカウントにログインする必要は必ずしもありません。ターミナルコマンドに管理者権限が必要な場合、システムは認証を求め、ターミナルはその権限を使い続けます。そのために、Apple は管理者アカウントとそのホームディレクトリを非表示にするための[推奨事項](https://support.apple.com/102099)を提供しています。
## 注意事項
- システム全体の `/Applications` ディレクトリにアプリケーションをインストールできるのは管理者のみです。Finder とインストーラは、承認が必要な場合に標準ユーザーに管理者の資格情報の入力を求めます。一部のアプリケーションは `~/Applications` にインストールできます。管理者アクセスを必要としないアプリケーションはユーザーディレクトリにインストールする必要があります。App Store のアプリケーションは引き続き `/Applications` にインストールされ、追加の認証は不要です。
- 標準ユーザーは通常、`sudo` を使用する権限がありません。管理者権限が必要な場合、macOS は管理者の資格情報を求めるか、管理者アカウントからタスクを実行できます。
- システム設定といくつかのシステムユーティリティ(例:Wi-Fi 診断)は、完全な機能のために管理者権限を必要とします。一部のシステム設定は、ロックアイコンを選択してロックを解除する必要があります。一部のアプリケーションは、開いたときに認証を求めるだけで、すべての機能にアクセスするには管理者アカウントから直接開く必要があるものもあります(例:コンソール)。
- 一部のサードパーティアプリケーションは、現在のユーザーが管理者であることを前提としており、標準アカウントでは動作しません。
- 追加の考慮事項については、[issue 167](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/167) を参照してください。
## セットアップ
アカウントはシステム設定で作成および管理できます。既存のシステムでは、通常、2 つ目の管理者アカウントを作成し、元のアカウントを管理者アカウントから標準アカウントに変更する方が簡単です。新しくインストールしたシステムでは、セットアップ後に標準アカウントを追加する必要があります。
アカウントの降格は、システム設定の新しい管理者アカウントから行えます。
macOS がグループメンバーシップを決定する方法の詳細については、[この投稿](https://superuser.com/a/395738)も参照してください。
# ファームウェア
システムへの改ざんを防ぐために、ファームウェアセキュリティが[フルセキュリティ](https://support.apple.com/guide/mac-help/mchl768f7291/mac)に設定されていることを確認してください。これはデフォルト設定です。
# FileVault
Apple シリコン Mac は、デフォルトでハードウェアバックアップされたストレージ暗号化を使用します。[FileVault](https://support.apple.com/guide/mac-help/protect-data-on-your-mac-with-filevault-mh11785/mac) はさらに、再起動後に起動ボリュームのロックを解除するために、承認されたユーザーのパスワードを要求します。
Apple シリコンでは、FileVault の承認は[ファームウェア](https://support.apple.com/102384)も保護します。これにより、指定された起動ディスク以外からの起動、[リカバリ](https://support.apple.com/guide/mac-help/macos-recovery-a-mac-apple-silicon-mchl82829c17/15.0/mac/15.0#mchl5abfbb29)へのアクセス、およびデバイスファームウェアアップデート(DFU)モードによる[復元](https://support.apple.com/108900)が防止されます。
FileVault はリカバリキーの設定を求めます。使用する場合は、安全な場所に保管してください。FileVault はリカバリに iCloud を使用するオプションも提供します。
FileVault の状態を確認します。```bash
fdesetup status
ロックダウンモード は、高度な攻撃で悪用されることの多いシステム機能やアプリケーション機能を無効化することで、攻撃対象領域を大幅に削減します。
ロックダウンモードを有効にすると、Safari には信頼する Web サイトを制限から除外するオプションがあります。
macOS ではいくつかの種類のファイアウォールを利用できます。
[!NOTE] マルウェアが管理者権限を取得した場合、ファイアウォールのポリシーを無効化または回避する可能性があります。システム全体の侵害に対する強力な保護として、ローカルファイアウォールに依存しないでください。
内蔵ファイアウォールは基本的な保護を提供し、受信接続のみをブロックします。送信接続を監視またはブロックすることはできません。
これは、システム設定のネットワークにあるファイアウォールタブ、または次のコマンドで制御できます:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
### ステルスモード
攻撃者はしばしばネットワークをスキャンして標的とするシステムを特定します。[ステルスモード](https://support.apple.com/guide/mac-help/use-stealth-mode-to-keep-your-mac-more-secure-mh17133/mac) が有効な場合、クローズされたポートへの接続試行に対して応答が送信されず、システムを検出しにくくなります。
ステルスモードを有効にする:```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
デフォルトでは、ファイアウォールは Apple または特定の開発者によって署名されたソフトウェアの着信接続を許可します。これらのルールを無効にすると、macOS はアプリケーションが着信接続を受け入れる前に確認を求めるようになります:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off
### ファイアウォールの再読み込み
`socketfilterfw` で設定を変更した後、新しい設定を適用するためにファイアウォールサービスを再読み込みします:```bash
sudo pkill -HUP socketfilterfw
ファイアウォールの状態を確認します:```bash
for firewallFlag in
--getglobalstate
--getblockall
--getallowsigned
--getstealthmode
--listapps
do /usr/libexec/ApplicationFirewall/socketfilterfw "$firewallFlag"
done
または、[system profiler](https://ss64.com/mac/system_profiler.html) を使用する:```bash
system_profiler SPFirewallDataType
アプリケーション層ファイアウォールを有効にし、内蔵ソフトウェアの着信接続を無効にすると、AirDrop が機能しなくなります。AirDrop を機能させるには、sharingd と rapportd にファイアウォールの例外を許可します:```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/rapportd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/sharingd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/rapportd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/sharingd
## サードパーティ製ファイアウォール
[Little Snitch](https://www.obdev.at/products/littlesnitch/index.html)、[Radio Silence](https://radiosilenceapp.com/)、[LuLu](https://objective-see.com/products/lulu.html) などのアプリケーションは、使いやすさとセキュリティのバランスを提供します。
これらのプログラムは、受信接続と送信接続の両方を監視してブロックできます。ただし、クローズドソースの[システム拡張機能](https://support.apple.com/HT210999)が必要な場合があります。
許可またはブロックのプロンプトが頻繁に表示されて煩わしい場合は、接続を一時的に許可しながら記録します(Little Snitchの[サイレント許可モード](https://help.obdev.at/littlesnitch6/concepts-opmodes))。設定を確認して、ネットワークアクティビティを理解し制御してください。
## パケットフィルタ
macOSには、コマンドラインから設定するパケットフィルタリングファイアウォールである [pf](https://en.wikipedia.org/wiki/PF_(firewall)) も含まれています。これは強力ですが、組み込みのアプリケーションファイアウォールよりもかなり複雑です。
pfは、[Murus](https://www.murusfirewall.com/) などのグラフィカルアプリケーションでも制御できます。
pfファイアウォールについては、多くの[書籍](https://nostarch.com/book-of-pf-4e)や[ガイド](https://www.openbsd.org/faq/pf/)で解説されています。次の例は、基本的なポリシーを設定する方法を示しています。
### pf設定の例
次のルールを `pf.rules` というファイルに追加します。```console
# Define interface
wifi = "en0"
# Global options
set block-policy drop
set skip on lo0
set state-policy if-bound
set ruleset-optimization basic
# Normalize
scrub in on $wifi all fragment reassemble
# Define tables
table <blocklist> persist
# Deny and log blocked traffic
block log all
block quick from no-route to any
antispoof quick for $wifi
# Enforce blocklist
block log quick on $wifi from <blocklist> to any
block log quick on $wifi from any to <blocklist>
# Allow DHCP
pass out on $wifi proto udp from any port 68 to any port 67 keep state
pass in on $wifi proto udp from any port 67 to any port 68 keep state
# Allow outbound TCP
pass out on $wifi proto tcp from ($wifi) to any flags S/SA keep state
# Allow outbound UDP
pass out on $wifi proto udp from ($wifi) to any keep state
# Allow outbound ICMP (ping)
pass out on $wifi proto icmp from ($wifi) to any keep state
pf の高度な設定例は pf/pf.rules にあります。
ファイアウォールを制御するには:
| Command | Task |
|---|---|
sudo pfctl -e -f pf.rules | 設定ファイルでファイアウォールを有効にする |
sudo pfctl -t blocklist -T add 1.2.3.4 | IPv4 アドレスをブロックリストテーブルに追加する |
sudo pfctl -d | ファイアウォールを無効にする |
ファイアウォールを監視するには:
pf はネットワークアドレスの範囲をブロックできます。たとえば、組織全体をブロックできます。Merit RADb に問い合わせて、自律システム(単一の組織が運用する大規模ネットワーク)が使用しているネットワークのリストを取得します。例: Facebook:```bash whois -h whois.radb.net '!gAS32934'
返されたネットワークのリストをブロックリストに追加します:```bash
sudo pfctl -t blocklist -T add $(whois -h whois.radb.net '!gAS32934' | sed -n '2p')
アドレスが追加されたことを確認します:```console $ 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リクエストは引き続き機能します):```console
$ dig a +short facebook.com
157.240.2.35
$ curl --connect-timeout 5 -I https://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.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
ファイアウォールは TCP接続 の開始に必要な最初のパケットを破棄するため、接続はタイムアウトします。
詳しくは drduh/config/scripts/pf-blocklist.sh を参照してください。
多くのシステムおよびユーザーのバックグラウンドサービスは launchd によって管理されています。
管理者アカウントは、システム設定 でサービスと拡張機能を変更できます。
サービス設定を読み取るには:```bash defaults read /System/Library/LaunchAgents/com.apple.Finder
> [!IMPORTANT]
> システムサービスは [SIP](https://github.com/drduh/macOS-Security-and-Privacy-Guide#system-integrity-protection) によって保護されています。SIP を無効にしてシステムサービスを変更すると、セキュリティが損なわれ、システムが不安定になる可能性があります。
サービスのステータスを表示するには:```bash
find /var/db/com.apple.xpc.launchd \
-type f -print -exec defaults read {} \; 2>/dev/null
script management with launchd および launchd.info を参照してください。
Siri の提案と Spotlight は、有効にしている機能によっては、一部のクエリや使用情報を Apple に送信することがあります。システム設定で Siri と Spotlight を検索し、オンラインでの提案を無効にし、インデックス作成や提案から除外するカテゴリを設定してください。詳細は Apple の 検索とプライバシー ポリシーを確認してください。
App Store で入手できないプログラムについては、Homebrew の使用を検討してください。
[!IMPORTANT] Homebrew のインストールや管理のワークフローによっては、App Management または フルディスクアクセス を要求されることがあります。これらの権限は、十分に理解し、必要と判断した場合にのみ付与してください。
信頼できる安全なネットワーク上で定期的に brew upgrade を実行し、ソフトウェアの更新をインストールしてください。インストール前にパッケージの情報を確認するには、brew info <package> を実行し、オンラインでフォーミュラを確認してください。HOMEBREW_NO_INSECURE_REDIRECT=1 などの追加のセキュリティオプションを有効にしてください。
Homebrew の匿名アナリティクス によると、Homebrew は匿名の使用状況アナリティクスを収集し、セルフホストの InfluxDB インスタンスに報告します。
Homebrew のアナリティクスをオプトアウトするには、brew analytics off を実行するか、シェル起動ファイルで HOMEBREW_NO_ANALYTICS=1 を設定してください。
macOS には、暗号化 DNS、フィルタリング、DNSSEC を設定するための「DNS 構成プロファイル」機能があります。
DNS プロファイルは、作成するか、Quad9、AdGuard、NextDNS などのプロバイダーから入手できます。
hosts ファイル を使用して、マルウェア、広告、その他の不要なサービスに関連するドメインをブロックします。
A レコード でドメインをブロックするには、次のいずれかの行を /etc/hosts に追加します。```
0 example.com
0.0.0.0 example.com
127.0.0.1 example.com
> [!NOTE]
> IPv6はAレコードではなくAAAAレコードを使用します: `::1 example.com` エントリを含めることでIPv6接続をブロックします。
多くのドメインリストがオンラインで入手できます。`/etc/hosts` に追加する前に、各エントリが `0`、`0.0.0.0`、または `127.0.0.1` で始まることを確認し、`127.0.0.1 localhost` エントリを保持してください。
一般的なホストリストには以下があります:
- [StevenBlack/hosts](https://github.com/StevenBlack/hosts)
- [Sinfonietta/hostfiles](https://github.com/Sinfonietta/hostfiles)
- [someonewhocares.org](https://someonewhocares.org/hosts/zero/hosts)
ホストファイルにリストをダウンロードして追加するには、[tee](https://man7.org/linux/man-pages/man1/tee.1.html) コマンドを使用します:```bash
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts |
sudo tee -a /etc/hosts
Little Snitch は ブロックリスト にも対応しています。
DNS トラフィックを暗号化するには、DNSCrypt/dnscrypt-proxy を検討してください。信頼できるリゾルバーを設定すると、DNSCrypt は DNS クエリを暗号化します。さらに、DNSSEC は、サポートされている場合、署名済みの DNS レスポンスを検証できます。
Homebrew から DNSCrypt をインストールし、指示に従って dnscrypt-proxy を設定して起動します:```bash
brew install dnscrypt-proxy
DNSCryptをDnsmasqと一緒に使用する場合、次のコマンドを実行してDNSCrypt設定ファイルを特定します:```bash
brew info dnscrypt-proxy | grep dnscrypt-proxy.toml | head -1
このコマンドは、/opt/homebrew/etc/dnscrypt-proxy.toml のようなパスを表示するはずです。
デフォルトでは、dnscrypt-proxy は 127.0.0.1:53 で待ち受け、設定された 1 つ以上の DNS プロバイダーにクエリを送信します。設定を編集し、listen_addresses を 53 以外のポート(例: 5355)に変更してください:```toml
listen_addresses = ['127.0.0.1:5355', '[::1]:5355']
DNSCrypt を開始:```bash
sudo brew services restart dnscrypt-proxy
DNSCrypt が実行されていることを確認してください:```console $ 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
さらに、これらのpfルールは、ループバックインターフェイス外のポート53への通常のDNSトラフィックをブロックし、[DNSリーク](https://dnsleaktest.com/)のリスクを低減します:```console
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
dnsmasq は、応答をキャッシュし、未修飾名に対するアップストリームクエリを防ぎ、トップレベルドメイン全体をブロックできます。
DNSCrypt と組み合わせて使用すると、DNS トラフィックを暗号化できます。
DNSCrypt を使用しない場合は、少なくとも ISP が提供するもの以外の DNS リゾルバーを選択してください。一般的な代替手段としては、Google DNS と OpenDNS があります。
Dnsmasq をインストール:```bash brew install dnsmasq
[drduh/config/dnsmasq.conf](https://github.com/drduh/config/blob/main/dnsmasq.conf) またはデフォルトの設定ファイルをダウンロードして編集します。
特定の宛先をブロックするために追加できるドメインリストの例については、[drduh/config/domains](https://github.com/drduh/config/tree/main/domains) を参照してください。
プログラムをインストールして起動します([特権ポート](https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the-root-user-only) 53にバインドするには sudo が必要です):```bash
sudo brew services start dnsmasq
ローカルDNSサーバーとしてdnsmasqを設定するには、システム設定 > ネットワーク を開き、現在使用中のネットワーク接続(Wi-Fiなど)を選択して、DNSタブを開き、+ を選択して 127.0.0.1 を追加します。または、次を使用します:```bash
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
Dnsmasq が設定されていることを確認してください:```console
$ 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
[!NOTE] 一部のVPNアプリケーションは接続時にDNS設定を上書きします。issue 24 と drduh/config/scripts/macos-dns.sh を参照してください。
macOSには、世界中の企業、政府、その他の組織によって運営される信頼されたルート証明機関(CA)のセットが含まれています。信頼されたCAは、macOSとブラウザがHTTPS接続に対して受け入れる可能性のある証明書を発行できるため、ルートCAストアはシステムの信頼境界の重要な部分となっています。
Appleが提供する信頼されたルートストアを理解するには、キーチェーンアクセス または security コマンドラインツールと /System/Library/Keychains/SystemRootCertificates.keychain ファイルを使用して システムルート を検査します。キーチェーンアクセスは次のコマンドでも起動できます:```bash
open "/System/Library/CoreServices/Applications/Keychain Access.app"
また、**ログイン**、**ローカル項目**、**システム**キーチェーン内に、ユーザー、管理者、VPNクライアント、セキュリティ製品、またはモバイルデバイス管理アプリケーションによって追加された可能性のある証明書も確認してください。
選択した証明書を無効にするには、その信頼設定を**信頼しない**に変更し、確認のためにウィンドウを閉じます。これにより、詐欺的な証明書を使用して暗号化トラフィックを[サイレントに傍受](https://en.wikipedia.org/wiki/DigiNotar#Issuance_of_fraudulent_certificates)する[MITM](https://wikipedia.org/wiki/Man-in-the-middle_attack)攻撃のリスクを軽減できる可能性があります。
> [!WARNING]
> 証明機関の信頼設定を削除または変更すると、Webサイト、ソフトウェアアップデート、エンタープライズネットワーク、VPN、キャプティブポータル、その他のサービスが壊れる可能性があります。
現在のトラストストア情報については、Appleの[利用可能な信頼済み証明書](https://support.apple.com/103723)および[ブロック済み証明書](https://support.apple.com/103247#blocked)のリストを参照してください。
# Privoxy
Webトラフィックをフィルタリングするためのローカルプロキシとして[Privoxy](https://www.privoxy.org/)の使用を検討してください。
Homebrewを使用してPrivoxyをインストールして起動します:```bash
brew install privoxy
brew services start privoxy
あるいは、Privoxy用の署名付きインストールパッケージは、公式サイトまたはSourceforgeから入手できます。署名付きパッケージはHomebrew版よりも安全で、Privoxyプロジェクトからサポートを受けています。
デフォルトでは、PrivoxyはローカルのTCPポート8118で待ち受けます。
アクティブなネットワークインターフェースのシステムHTTPプロキシを127.0.0.1、ポート8118に設定します:```bash
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118
システムの**HTTPS**プロキシを設定します:```bash
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118
プロキシは システム設定 > ネットワーク > 詳細 > プロキシ でも設定できます。
プロキシが設定されていることを確認してください:```console $ scutil --proxy { ExceptionsList : { 0 : *.local 1 : 169.254/16 } FTPPassive : 1 HTTPEnable : 1 HTTPPort : 8118 HTTPProxy : 127.0.0.1 HTTPSEnable : 1 HTTPSPort : 8118 HTTPSProxy : 127.0.0.1 }
ほとんどのWebトラフィックは暗号化されていますが、Privoxyはホスト名でリクエストをフィルタリングできます。たとえば、次のルールは、.net、github.com、およびAppleドメインへのトラフィックを除くすべてのトラフィックをブロックします。```console
{ +block{all} }
.
{ -block }
.apple.
.github.com
.net
Facebookドメインをブロックするには:```console { +block{facebook} } .cdninstagram. .facebook*. .fb. .fbcdn*. .fbinfra. .fbsbx. .fbstatic*. .fbsv. .fburl. .instagr.am .tfbnw. .thefacebook. fb*.akamaihd.net
追加の Privoxy の例については、[drduh/config/privoxy/config](https://github.com/drduh/config/blob/main/privoxy/config) と [drduh/config/privoxy/user.action](https://github.com/drduh/config/blob/main/privoxy/user.action) を参照してください。Privoxy は、フィルタールールを編集した後に再起動する**必要はありません**。
トラフィックがブロックまたはリダイレクトされていることを確認するには、[curl](https://en.wikipedia.org/wiki/CURL) を使用するか、ブラウザで <http://p.p> の Privoxy インターフェースを開いてください:```console
$ 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
content-type: text/html; charset=utf-8
[!NOTE] アプリケーションやサービスはプロキシ設定を無視できます。pf は各アプリケーションを個別に設定しなくても、トラフィックをプロキシ経由でリダイレクトできます。
ウェブブラウザは、信頼できないインターネットコンテンツをダウンロードして実行するため、重大なセキュリティとプライバシーのリスクをもたらします。
ブラウザのセキュリティ境界として重要なのが同一オリジンポリシー (SOP) です。これは、あるウェブサイトが別のウェブサイトのデータを読み取ることを防ぎます。バイパスされると、同じブラウザプロファイル内の他のサイトのデータや操作が露出する可能性があります。
一部のブラウザ攻撃は、ユーザーにソフトウェアのインストール、権限の付与、悪意のある拡張機能の使用を説得することに依存しています。予期しないダウンロード、拡張機能のプロンプト、ターミナルでのコマンド実行要求には特に注意してください。
ブラウザ拡張機能も重大なセキュリティリスクをもたらします。悪意のある、または質の低い拡張機能は、ブラウザ内のすべて(資格情報を含む)を危険にさらす可能性があります。ブラウザ拡張機能の使用は、信頼できる開発者が公開した必要不可欠なものに限定するべきです。
異なるアイデンティティや目的に応じて、ブラウザプロファイルを分けて使用してください。可能であれば、JavaScript を無効にし、ブラウザのサイト権限を使用して信頼できるサイトでのみ許可してください。
Mozilla Firefox、Google Chrome、Safari、Tor Browser は人気のあるブラウザで、それぞれ独自の機能と目的を持っています。
Firefox は、Quantum と Photon プロジェクトを通じて、コードベースの主要部分を近代化しました。Quantum には、一部のコンポーネントを C++ から Rust に移行することが含まれます。Rust は、メモリ安全性と並行性安全性を向上させるように設計されたプログラミング言語です。
Firefox は、脆弱性の責任ある開示のためのバグ報奨金プログラムを含め、Chrome に匹敵するセキュリティモデルを提供しています。Firefox は4週間のリリースサイクルを採用しています。
推奨設定については、drduh/config/firefox.user.js と arkenfox/user.js を参照してください。また、スクリプトを選択的にブロックできる拡張機能である NoScript も参照してください。
Firefox はユーザーのプライバシーに重点を置いています。プライベートブラウジングモードでトラッキング保護をサポートしています。トラッキング保護はデフォルトのアカウントで有効にできますが、一部のウェブサイトではブラウジング体験が損なわれる可能性があります。Firefox の厳格なトラッキング保護モードでは、トラッキングに対抗するためにフィンガープリントをランダム化します。Firefox は個別のユーザープロファイルを提供します。ブラウジングはマルチアカウントコンテナで区切ることもできます。
Firefox は、WebExtension API を通じてのみ Web 拡張機能をサポートしています。この API は Chrome と非常によく似ています。Firefox での Web 拡張機能の提出は無料です。Firefox の Web 拡張機能はほとんどの場合オープンソースですが、一部の Web 拡張機能はプロプライエタリです。
Google Chrome は、オープンソースの Chromium プロジェクトに基づいています。Chrome には、プロプライエタリなコンポーネント、自動更新、PDF ビューアー、メディアコーデックのサポート、クラッシュレポート、Google アカウントの統合が含まれています。詳細については、Chrome のプライバシー設定と Google のプライバシーポリシーを確認してください。
Chrome は、資格情報を含む複数のデバイス間でのアカウント同期を提供します。データはアカウントのパスワードで暗号化されます。
Chrome は世界で最も高いシェアを誇り、大多数の開発者にとって優先的なターゲットプラットフォームとなっています。主要なテクノロジーは Chrome のオープンソースコンポーネントに基づいています。たとえば、Chrome の V8 エンジンを使用する node.js、Chromium と node.js に基づく Electron フレームワークなどです。Chrome の膨大なユーザーベースは、脅威アクターとセキュリティ研究者にとって最も魅力的なターゲットとなっています。絶え間ない攻撃にもかかわらず、Chrome は長年にわたって印象的なセキュリティ実績を維持してきました。これは小さな偉業ではありません。
Chrome は個別のプロファイル、堅牢なサンドボックス、頻繁なアップデートを提供し、印象的な実績を持っています。さらに、Google は脆弱性報告に対して非常に高額な報奨金プログラムを提供しており、独自の Project Zero チームも擁しています。つまり、非常に才能があり意欲的な多数の人々が、常に Chrome のコードを監査し、セキュリティを強化しているということです。
ブラウザ設定で V8 最適化(JavaScript エンジンのパフォーマンス機能)を無効にすることを検討してください。セキュリティ上のトレードオフについてはこの解説を参照してください。
uBlock Origin Lite でトラッカーをブロックしてください。
DNS プリフェッチを無効にしてください(DNS プリフェッチとそのプライバシーへの影響を参照)。Chrome は Google のパブリックネームサーバー 8.8.8.8 と 8.8.4.4 を使用して DNS を解決しようとする可能性があります。
詳細については、Chromium Security と Chromium Privacy を参照してください。個人情報がどのように収集・使用されるかを理解するには、Google のプライバシーポリシーをお読みください。
Safari は Apple の標準ブラウザであり、macOS に統合されており、Apple 製ハードウェアでのバッテリー効率の改善を提供します。
Safari にはオープンソースとプロプライエタリの両方のコンポーネントがあります。Safari は、macOS エコシステムで広く使われているオープンソースの Web エンジン WebKit に基づいています。WebKit は、メール、ブックス、App Store などの Apple アプリで使用されています。Chrome の Blink エンジンは WebKit のフォークであり、両エンジンには多くの類似点があります。
Safari は、ユーザーのセキュリティとプライバシーに役立つ特定の独自機能をサポートしています。コンテンツブロッカーは、JavaScript を使用せずにコンテンツブロッキングルールを作成できるようにします。このルールベースのアプローチにより、メモリ使用量、セキュリティ、プライバシーが大幅に向上します。Safari 11 では、インテリジェントトラッキング防止が導入されました。これは、トラッカーのウェブサイトからユーザーが一定期間操作しないと、Safari に保存されたトラッキングデータを削除します。Safari はトラッキングを減らすためにブラウザフィンガープリントをランダム化できます。Safari は、セキュリティとプライバシーの理由から、WebUSB や Battery API などの特定の機能を意図的にサポートしていません。Safari のプライベートタブには分離された Cookie とキャッシュがあり、タブを閉じると破棄されます。Safari は、Cookie とブラウジングを分離するための Firefox のマルチアカウントコンテナに相当するプロファイルもサポートしています。Safari は、サイトごとに無効化できるロックダウンモードを使用すると、大幅にセキュリティを強化できます。Safari のトラッキング防止について詳しくは、こちらを参照してください。
Safari の Web 拡張機能には、Web Extension API に加えて、Safari のサンドボックス環境でネイティブコードを使用するオプションもあります。Safari の Web 拡張機能は、Apple App Store を通じて配布されます。App Store への提出には、Web 拡張機能のコードが Apple によって監査されるという追加の利点があります。一方、App Store への提出には高額なコストがかかります。年間の開発者サブスクリプション料金は 100 USD です(Chrome の 5 USD、Firefox の無料提出とは対照的です)。この高額なコストは、大多数のオープンソース開発者にとって障壁となります。その結果、Safari には選択できる拡張機能が非常に少ないのが現状です。ただし、拡張機能をインストールする際は、この高額なコストを念頭に置いてください。ほとんどの Web 拡張機能には、開発コストを賄うための何らかの収益化手段があると予想されます。レビュー用のオープンソースコードが利用できない Web 拡張機能は避けてください。
Safari は、ユーザー設定とパスワードを iCloud キーチェーンと同期します。保存されたパスワードを表示するには、現在のデバイスのアカウントパスワードまたは別の設定済み認証方法による認証が必要です。
Safari は新しい Web 機能の実装が Chrome や Firefox より遅いですが、セキュリティパッチはシステムアップデートを通じて迅速に提供されます。
ハイパーリンク監査ビーコンを無効にするには、el1t/uBlock-Safari も参照してください。
ウェブサイトは、設定、フォント、画面サイズ、言語、IP アドレス、ブラウザの動作から、ブラウザとデバイスに関する情報を推測します。この情報はブラウザフィンガープリンティングに寄与します。
セキュリティを意識したブラウジングと、ブラウザが送信するデータについての詳細は、HowTo: プライバシーとセキュリティを意識したブラウジング、browserleaks.com、Am I Unique?、EFF Cover Your Tracks のリソースを参照してください。
クロスサイトトラッキングを減らすには、サードパーティ Cookie をブロックしてください。
また、ローカルまたは(VPN に接続している場合は)パブリックな IP アドレスを漏えいする可能性がある WebRTC にも注意してください。Firefox と Chrome/Chromium では、この機能は uBlock Origin で無効にできます。ロックダウンモードは Safari でも WebRTC を無効化します。
Tor は、ブラウジング中に追加のプライバシーを提供できる匿名性ネットワークです。Tor Browser は、Tor ネットワークを使用するように設定された、Firefox ベースの改変ブラウザです。
Tor Project から Tor Browser をダウンロードしてください。検証のための dmg ファイルと asc ファイルの両方を取得してください:```console
$ cd ~/Downloads
$ file tor-browser-macos-* tor-browser-macos-15.0.17.dmg: XZ compressed data, checksum NONE tor-browser-macos-15.0.17.dmg.asc: PGP signature Signature (old)
$ gpg --verify tor-browser-macos-*.asc [...] gpg: Can't check signature: No public key
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected] gpg: key 0x4E2C6E8793298290: public key "Tor Browser Developers (signing key) [email protected]" imported gpg: Total number processed: 1 gpg: imported: 1 pub rsa4096/0x4E2C6E8793298290 2014-12-15 [C] [expires: 2027-07-15] Key fingerprint = EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 uid [ unknown] Tor Browser Developers (signing key) [email protected] sub rsa4096/0x157432CF78A65729 2024-07-15 [S] [expires: 2026-10-26] Key fingerprint = CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729
$ gpg --verify tor-browser-macos-*.asc gpg: assuming signed data in 'tor-browser-macos-15.0.17.dmg' gpg: Signature made Sun Jun 28 15:35:20 2026 PDT gpg: using RSA key CAAE408AEBE2288E96FC5D5E157432CF78A65729 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: CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729
出力に `Good signature from "Tor Browser Developers (signing key) <[email protected]>"` が表示されていることを確認してください。キーが個人検証されておらず、信頼できるキーリングに追加されていないため、警告が表示されるのは想定どおりです。
詳細については、[Tor Browser の署名を検証するにはどうすればよいですか?](https://support.torproject.org/tbb/how-to-verify-signature/) を参照してください。
Tor Browser のインストールを完了するには、ディスクイメージを開いて Applications フォルダにドラッグするか、次のコマンドを使用します:```bash
hdiutil mount tor-browser-macos-15.0.17.dmg
cp -r /Volumes/Tor\ Browser/Tor\ Browser.app/ ~/Applications/
アプリケーションがThe Tor ProjectのApple Developer ID (MADPSAYN6T)によって署名されていることを確認してください:```console
$ spctl --assess -vv ~/Applications/Tor\ Browser.app
/Users/user1/Applications/Tor Browser.app: accepted
source=Notarized 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 macOS Certificate Chain: 1. Developer ID Application: The Tor Project, Inc (MADPSAYN6T) Expires: 2028-10-11 17:57:46 +0000 SHA256 Fingerprint: 76 3C 89 02 ED CB AD 8E 59 86 1E 93 D3 05 5B 28 F9 04 0C 96 03 8B 16 28 9F 38 64 ED 53 45 B4 DA ------------------------------------------------------------------------ 2. Developer ID Certification Authority Expires: 2031-09-17 00:00:00 +0000 SHA256 Fingerprint: F1 6C D3 C5 4C 7F 83 CE A4 BF 1A 3E 6A 08 19 C8 AA A8 E4 A1 52 8F D1 44 71 5F 35 06 43 D2 DF 3A ------------------------------------------------------------------------ 3. Apple Root CA Expires: 2035-02-09 21:40:36 +0000 SHA256 Fingerprint: B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C 68 C5 BE 91 B5 A1 10 01 F0 24
`codesign` コマンドを使用して、アプリケーションのコード署名を調べることもできます:```console
$ codesign -dvv ~/Applications/Tor\ Browser.app
Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox
Identifier=org.torproject.torbrowser
Format=app bundle with Mach-O universal (x86_64 arm64)
CodeDirectory v=20500 size=805 flags=0x10000(runtime) hashes=14+7 location=embedded
Signature size=9054
Authority=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 28, 2026 at 14:01:57
Notarization Ticket=stapled
Info.plist entries=27
TeamIdentifier=MADPSAYN6T
Runtime Version=15.5.0
Sealed Resources version=2 rules=13 files=208
Internal requirements count=1 size=188
署名されたアプリケーションの完全な証明書詳細を表示するには、codesign で抽出し、openssl でデコードします:```console
$ codesign -d --extract-certificates ~/Applications/Tor\ Browser.app
Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox
$ file codesign* codesign0: Certificate, Version=3 codesign1: Certificate, Version=3 codesign2: Certificate, Version=3 Certificate, Version=02
$ 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=G2/O=Apple Inc./C=US notBefore=Oct 11 17:57:47 2023 GMT notAfter=Oct 11 17:57:46 2028 GMT
$ openssl x509 -inform der -in codesign0 -fingerprint -noout SHA256 Fingerprint=76:3C:89:02:ED:CB:AD:8E:59:86:1E:93:D3:05:5B:28:F9:04:0C:96:03:8B:16:28:9F:38:64:ED:53:45:B4:DA
Tor Browserは、トラフィックを識別またはブロックしにくくするための、[プラガブル・トランスポート](https://support.torproject.org/tor-browser/circumvention/)と呼ばれる特別な接続方法を使用できます。これは、[リレー](https://support.torproject.org/relays/)を設定するか、既存の[ブリッジ](https://bridges.torproject.org/)を使用することで実現できます。
Torネットワークは[匿名性](https://www.privateinternetaccess.com/blog/2013/10/how-does-privacy-differ-from-anonymity-and-why-are-both-important/)を提供しますが、これは必ずしもプライバシーと同じではありません。このネットワークは、トラフィック分析と関連付けが可能なグローバルな観察者に対して防御するものではありません。また、[Seeking Anonymity in an Internet Panopticon](https://bford.info/pub/net/panopticon-cacm.pdf)と[Traffic Correlation on Tor by Realistic Adversaries](https://www.ohmygodel.com/publications/usersrouted-ccs13.pdf)も参照してください。
詳細については、[Torプロトコル仕様](https://spec.torproject.org/tor-spec/)を参照してください。
また、[Invisible Internet Project (I2P)](https://geti2p.net/en/about/intro)とその[Torとの比較](https://geti2p.net/en/comparison/tor)も参照してください。
# VPN
文書化された最新のプロトコルと十分に監査済みのクライアントを備えたVPNプロバイダーまたはセルフホスト型セットアップを選択してください。[PPTP](https://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol#Security)のような古いプロトコルは避け、[OpenVPN](https://en.wikipedia.org/wiki/OpenVPN)または[WireGuard](https://www.wireguard.com/)を[Linux VM上で](https://github.com/mrash/Wireguard-macOS-LinuxVM)、または[クロスプラットフォームツール](https://www.wireguard.com/xplatform/)のセットを介して使用してください。
一部のVPNクライアントは、接続が中断または切断されたときに、次に利用可能なネットワークインターフェースを介してトラフィックを送信する場合があります。VPN経由でのみトラフィックを許可する方法の例については、[scy/8122924](https://gist.github.com/scy/8122924)を参照してください。
仮想マシン([hwdsl2/setup-ipsec-vpn](https://github.com/hwdsl2/setup-ipsec-vpn))またはDockerコンテナ([hwdsl2/docker-ipsec-vpn-server](https://github.com/hwdsl2/docker-ipsec-vpn-server))上で[IPsec](https://en.wikipedia.org/wiki/Ipsec) VPNをセットアップするためのガイドを参照してください。
VPNプロバイダーの地理的な位置を考慮することは価値があるかもしれません。さらなる議論については、[issue 114](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/114)を参照してください。
また、macOS内蔵のVPN L2TP/IPsecと[IKEv2](https://en.wikipedia.org/wiki/IKEv2)クライアントに関するこの[技術概要](https://blog.timac.org/2018/0717-macos-vpn-architecture/)も参照してください。
# PGP/GPG
PGPは、特に電子メールにおけるデータの暗号化と署名のための標準規格です。鍵を正しく交換および検証した通信者間のメッセージ内容を保護できますが、電子メールの受信者や件名などのメタデータは保護しません。
GPG(GNU Privacy Guard)は、PGP標準に準拠したGPLライセンスのオープンソースプログラムです。ソフトウェア署名を検証し、[対称鍵暗号](https://en.wikipedia.org/wiki/Symmetric-key_algorithm)または[公開鍵](https://en.wikipedia.org/wiki/Public-key_cryptography)を使用してファイルを暗号化できます。
GnuPGはHomebrewでインストール(`brew install gnupg`)するか、[GPG Suite](https://gpgtools.org/)をインストールしてください。
推奨設定を使用するには、[gpg.conf](https://github.com/drduh/YubiKey-Guide/blob/main/config/gpg.conf)をダウンロードしてください:```bash
curl -o ~/.gnupg/gpg.conf \
https://raw.githubusercontent.com/drduh/YubiKey-Guide/main/config/gpg.conf
drduh/YubiKey-Guide を参照して、認証情報を生成・管理してください。
メールは、既定では強力なプライバシーを提供するようには設計されていません。メッセージの内容は、サービスプロバイダーによって保持されたり、受信者のメールボックスにコピーされたり、転送されたり、アカウントの侵害によって公開されたりする可能性があります。メタデータ(受信者、件名、タイムスタンプ、メールサーバー情報など)は、メッセージの内容が暗号化されている場合でも、一般的に表示されたままになります。
Thunderbird は、標準の IMAP、POP、CalDAV、CardDAV をサポートする、無料かつオープンソースのメールクライアントです。プロバイダーのリモートサーバーだけに依存するのではなく、メールにアクセスしてローカルコピーを保持するための適切な選択肢です。
Thunderbird は OpenPGP によるメール暗号化をサポートしており、メッセージの内容を保護し、暗号学的な 署名 を提供できます。機密性の高い通信で鍵に依存する前に、必ず独立したチャネルを通じて公開鍵のフィンガープリントを検証してください。
メッセージのアーカイブ機能 を使用すると、メッセージをリモートメールサーバーから ローカルフォルダ に移動できるため、プライバシーが向上します。
XMPP は、IETF によって開発された オープンプロトコル であり、クロスプラットフォームのフェデレーテッドメッセージングをサポートします。クライアントの選択肢 は多数あります。ブラウザのサンドボックスを活用するには、ブラウザベースのクライアントのいずれかの使用を検討してください。
プロバイダーによっては、アカウントの設定にユーザー名とパスワード以外は不要な場合もあります。
XMPP は既定ではエンドツーエンド暗号化(E2EE)されていません。互換性のあるクライアントで OMEMO を使用してください。
Signal は人気のある E2EE メッセンジャーであり、その ダブルラチェット プロトコルは WhatsApp、Google メッセージ、Facebook Messenger など多くの他のアプリケーションで使用されています。
Signal デスクトップアプリを使用するには、まずスマートフォンに Signal をインストールする必要があります。
追加のガイダンスについては、EFF の Signal ガイド を参照してください。
iMessage は Apple 純正のメッセンジャーです。使用するには Apple Account が必要です。
連絡先キー検証 を有効にして、連絡先を検証してください。
iMessage は、電話番号またはメールアドレス のどちらでも使用できます。
[!WARNING] 既定では iCloud バックアップが有効になっており、E2EE なしでメッセージの暗号化キーのコピーが Apple のサーバー に保存されます。これを防ぐには、iCloud バックアップを無効にする か、高度なデータ保護 を有効にしてください。メッセージの受信者にも同じ設定を行うよう促してください。
一般的な macOS マルウェアがどのように永続化するかを学ぶには、Mac OS X におけるマルウェアの永続化手法 と OS X Yosemite におけるマルウェアの永続化 を参照してください。
高度な macOS マルウェア機能の例については、Hacking Team の資料 を参照してください。さらなる分析については、MacOS 向け root インストール、Mac Agent 用サポートドライバ、RCS Agent for Mac を参照してください。
また、RCS インプラントインストーラの簡単な分析 と reverse.put.as も参照してください。
App Store のアプリケーション、または Apple によって公証(ノータリゼーション)された アプリケーションはマルウェアのリスクを軽減する可能性がありますが、どちらのプロセスも安全性を保証するものではありません。Apple は公証されたアプリに対して自動チェックを実行し、App Store のアプリは 審査 を受けます。それ以外の場合は、開発者が公式のものとして特定したソースからソフトウェアを入手し、Web サイトまたはコマンドラインでのダウンロードが HTTPS を使用していることを確認してください。
アプリが App Sandbox を使用しているかどうかを確認してください:```bash
codesign --display --entitlements -
/System/Applications/Calculator.app 2>&1 |
grep -A2 com.apple.security.app-sandbox
App Sandbox を有効にすると、出力は次のようになります:```console
[Key] com.apple.security.app-sandbox
[Value]
[Bool] true
Activity Monitor では、"Sandbox" 列を表示することで、有効かどうかを示すこともできます:```bash
defaults write com.apple.ActivityMonitor "UserColumnsPerTab v6.0"
-dict-add 0 '(Command, CPUUsage, CPUTime, Threads, IdleWakeUps, Architecture, GPUUsage, GPUTime, PID, UID, Sandbox, restricted)'
App Store のソフトウェアは App Sandbox を使用する必要があります。Google Chrome などのアプリケーションは独自の [sandbox](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md) を使用しており、App Sandbox を使用しない場合もあります。
> [!NOTE]
> サンドボックス化はアプリケーションのデフォルトのアクセスを制限しますが、エンタイトルメントとユーザーが付与した権限によってアクセスを拡張できます。
## Hardened Runtime
アプリケーションが [Hardened Runtime](https://developer.apple.com/documentation/security/hardened_runtime) を使用しているか確認します:```bash
codesign --display --verbose /path/to/application.app
ハードンドランタイム(Hardened Runtime)が有効な場合、出力に flags=0x10000(runtime) が表示されます。
この機能が有効なすべてのアプリケーションを一覧表示します:```bash for app in /Applications/.app /System/Applications/.app; do if codesign -dvv "$app" 2>&1 | grep -q 'flags=0x10000(runtime)'; then echo "$app" fi done
**アクティビティモニタ**には「制限」列を表示するオプションがあり、プログラムがmacOSの[動的リンカ](https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html)を介したコードインジェクションを制限されていることを示します。
Hardened Runtimeは、配布アプリの公証を受けるための前提条件です。
## アンチウイルス
ファイルやアプリケーションをスキャンするには、[VirusTotal](https://www.virustotal.com/gui/home/upload)へのアップロードを検討してください。ただし、これにより公開表示されることに注意してください。
macOSには[XProtect](https://support.apple.com/guide/security/protecting-against-malware-sec469d47bd8)と呼ばれるウイルス対策ソフトウェアが組み込まれており、バックグラウンドで実行され、マルウェア検出に使用するシグネチャを自動的に更新します。マルウェアが検出された場合、XProtectはそれを削除して隔離しようとします。
XProtectの更新状況を確認:```bash
xprotect version
BlockBlock や hazcod/maclaunch のようなアプリケーションは、持続的なマルウェアの防止や検出に役立つ可能性があります。
アンチウイルスソフトウェアは一般的なマルウェアの検出に役立ちますが、多くの場合、広範なシステム特権で実行されるため、攻撃対象領域を増やす可能性もあります。一部の製品は、ベンダーにテレメトリやサンプルを送信することもあります。
Sophail: Applied attacks against Antivirus、Analysis and Exploitation of an ESET Vulnerability、Popular Security Software Came Under Relentless NSA and GCHQ Attacks、How Israel Caught Russian Hackers Scouring the World for U.S. Secrets を参照してください。
Gatekeeper は、ソフトウェアの公証と来歴を検証します。
Gatekeeper は、公証されていないアプリケーションを開こうとすると警告を表示します。失敗した試行後、システム設定 > プライバシーとセキュリティ に表示されるアプリケーションを選択することで、これを回避できます。
Gatekeeper が有効かどうかを確認します:```bash spctl --status --verbose
# System Integrity Protection
System Integrity Protection が有効になっていることを確認するには、`csrutil status` コマンドを使用します。このコマンドは `System Integrity Protection status: enabled.` を返すはずです。それ以外の場合は、[リカバリモード](https://support.apple.com/102518) を使用して [SIP を有効化](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) してください。
# メタデータとアーティファクト
macOS はファイルにメタデータ([APFS 拡張属性](https://en.wikipedia.org/wiki/Extended_file_attributes#macOS))を付加します。
一部のメタデータ属性は、[`mdls`](https://ss64.com/mac/mdls.html) コマンドと [`xattr`](https://ss64.com/mac/xattr.html) コマンドで表示および削除できます。設定(`plist`)ファイルは、[`defaults`](https://ss64.com/mac/defaults.html) コマンドで読み取りおよび変更できます。
システムおよびアプリケーションのメタデータは、次の場所にあります:
- `~/Library/Preferences/`
- `~/Library/Containers/<APP>/Data/Library/Preferences`
- `/Library/Preferences`
Bluetooth 情報:
- `/Library/Preferences/com.apple.Bluetooth.plist`
プリンタジョブのキャッシュ:
- `/var/spool/cups`
以前接続した iOS デバイス:
- `/Users/$USER/Library/Preferences/com.apple.iPod.plist`
- `/Library/Preferences/com.apple.iPod.plist`
Finder の環境設定:
- `~/Library/Preferences/com.apple.finder.plist`
- `~/Library/Preferences/com.apple.sidebarlists.plist`
診断データ:
- `/var/db/CoreDuet`
- `/var/db/diagnostics`
- `/var/db/systemstats`
- `/var/db/uuidtext`
- `/var/log/DiagnosticMessages`
スペルと言語の候補:
- `~/Library/LanguageModeling`
- `~/Library/Spelling`
- `~/Library/Suggestions`
アプリケーションの状態:
- `~/Library/Saved\ Application\ State`
- `~/Library/Containers/<APPNAME>/Data/Library/Saved\ Application\ State`
自動保存メタデータ:
- `~/Library/Containers/<APP>/Data/Library/Autosave\ Information`
- `~/Library/Autosave\ Information`
Siri の分析:
- `~/Library/Assistant/SiriAnalytics.db`
QuickTime Player の履歴:
- `~/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`
# 認証
[Passwords](https://support.apple.com/guide/passwords/the-passwords-app-mchl901b1b95/mac) アプリは [安全な認証情報](https://support.apple.com/guide/security/automatic-strong-passwords-secc84c811c4/web) を作成します。また、[パスキー](https://fidoalliance.org/passkeys/) に対応しています。パスキーは、互換性のあるサービスで使用するとフィッシングに耐性を持つように設計された認証情報です。
[KeePassXC](https://keepassxc.org/) は、検討に値するオープンソースのクロスプラットフォーム対応パスワードマネージャーです。互換性のあるハードウェアトークンによる強力な認証と、認証情報を自動入力するブラウザ拡張機能をサポートしています。
覚えやすいパスワードは [Diceware](https://secure.research.vt.edu/diceware/) で作成できます。
オンラインアカウントで [多要素認証](https://en.wikipedia.org/wiki/Multi-factor_authentication) を有効にしてください。対応サービスでは、ハードウェアトークンやパスキーなど、フィッシング耐性のある認証を優先してください。認証アプリは SMS コードよりも望ましいですが、パスワードのみの認証よりは、どのような MFA でも優れています。
[YubiKey](https://www.yubico.com/products/) は人気のあるハードウェア認証トークンです。暗号化、署名、認証タスク用の鍵も保存できます - [drduh/YubiKey-Guide](https://github.com/drduh/YubiKey-Guide) を参照してください。
GnuPG はパスワードやその他の暗号化ファイルの管理にも使用できます - [drduh/Purse](https://github.com/drduh/Purse) と [drduh/pwd.sh](https://github.com/drduh/pwd.sh) を参照してください。
# バックアップ
ファイルを外部メディアやオンラインサービスにバックアップする前に、ローカルで暗号化してください。
[3-2-1 バックアップモデル](https://www.cisa.gov/sites/default/files/publications/data_backup_options.pdf) に従ってください。重要なデータのコピーを 3 つ保持し、少なくとも 2 種類の異なるメディアに保存し、少なくとも 1 つは別の物理的な場所に保管します。
## Time Machine
[Time Machine](https://support.apple.com/104984) は macOS でバックアップを処理するための組み込みツールです。外付けドライブまたはネットワークストレージを使用して、[暗号化された](https://support.apple.com/guide/mac-help/keep-your-time-machine-backup-disk-secure-mh21241) バックアップを作成してください。
## GnuPG
[GnuPG](https://www.gnupg.org/) はパスワードまたは公開鍵とともに使用でき、秘密鍵は [YubiKey](https://github.com/drduh/YubiKey-Guide) に保存されます。
パスワードを使用してディレクトリを圧縮および暗号化する:```bash
tar zcvf - ~/Downloads |
gpg -c > ~/Downloads/backup-$(date +%F-%H%M%S).tar.gz.gpg
ディレクトリを復号化して解凍する:```bash gpg -o ~/Downloads/decrypted-backup.tar.gz -d ~/Downloads/backup-*.tar.gz.gpg tar zxvf ~/Downloads/decrypted-backup.tar.gz
## Disk Utility
暗号化ボリュームは、[ディスクユーティリティ](https://support.apple.com/guide/disk-utility/toc) または `hdiutil` を使用して作成できます:```bash
hdiutil create ~/Downloads/encrypted.dmg -encryption -size 50M -volname "secretStuff"
hdiutil mount ~/Downloads/encrypted.dmg
cp -v ~/Documents/passwords.txt /Volumes/secretStuff
hdiutil eject /Volumes/secretStuff
SSID と呼ばれる Wi-Fi ネットワーク名とデバイスのプローブ動作は、近隣や以前使用したネットワークに関する情報を明らかにする可能性があります。非表示ネットワークは意味のあるプライバシーを提供せず、デバイスがそれらを積極的にプローブする原因となることがあります。
プライベート Wi-Fi アドレスを設定して、ネットワーク追跡を減らします。
ワイヤレスネットワークのセキュリティを WPA3 に設定します。Apple のガイダンスに従って、ルーターとアクセスポイントの推奨設定を行います。
リモート SSH 接続には、パスフレーズまたはハードウェアトークンで保護された一意の SSH キーを使用し、サーバーのホストキーを検証し、パスワードベースの認証を避けます。推奨クライアントオプションについては drduh/config/ssh_config を参照してください。
SSH トンネルは、VPN と同様に、別のコンピュータを介してトラフィックを安全にルーティングできます。リモートホストのポート 8118 で実行されている Privoxy を使用するには:```bash 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接続を[SOCKSプロキシ](https://www.mikeash.com/ssh_socks.html)として使用するには:```bash
ssh -NCD 3000 [email protected]
By default, macOS does not have Remote Login (SSH server) enabled.
To enable SSH and allow incoming connections, use System Settings > General > Sharing or the command:```bash sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
パスワード認証を無効にし、SSHサーバー設定のさらなる[堅牢化](https://stribika.github.io/2015/01/04/secure-secure-shell.html)を検討してください。推奨オプションについては [drduh/config/sshd_config](https://github.com/drduh/config/blob/main/sshd_config) を参照してください。
SSHサーバーが稼働していることを確認してください:```bash
sudo lsof -Pni TCP:22
安全でない場所にコンピュータを放置しないでください。監視のない物理的アクセスを許された熟練した攻撃者は、ハードウェアキーロガーをインストールして、パスワードを含むキーストロークを記録する可能性があります。内蔵キーボードまたはBluetoothキーボードを備えたMacを使用すると、この種の攻撃の市販品の多くはUSBキーボードとコンピュータの間に挿入するように設計されているため、この攻撃をより困難にできます。
Mac使用中の盗難の影響を軽減するには、buskill/buskill-appまたはLennolium/swiftGuardの使用を検討してください。
公共の場での使用には、プライバシースクリーン/フィルターの購入を検討してください。
マニキュアや開封防止シールをコンポーネントに貼り付けて、改ざんを検出できます。
Consoleまたはlog streamコマンドでシステムログを監視します。
過去5分間のすべてのシステムログをクラシックなsyslog形式で出力します:```bash log show --last 5m --style syslog
JSON配列として出力:```bash
log show --last 5m --style json
改行区切りのJSON(1行に1つのJSONオブジェクト)を出力します。jq で使用するために必要です:```bash log show --last 5m --style ndjson
サブシステムでメッセージをフィルタリングします。例えば `com.apple.SoftwareUpdate` から:```bash
log show --last 1h --style json \
--predicate 'subsystem == "com.apple.SoftwareUpdate"'
メッセージをコンテンツでフィルタリングします。例えば、failed を含むメッセージ:```bash
log show --last 1h --predicate 'eventMessage CONTAINS "failed"'
大文字と小文字を区別しないメッセージフィルタリング:```bash
log show --last 1h --predicate 'eventMessage CONTAINS[c] "error"'
jqで異なるエラーメッセージをカウント:```bash
log show --last 1h --style ndjson
--predicate 'eventMessage CONTAINS[c] "error"' |
jq -r '.eventMessage' | sort | uniq -c | sort -nr | head -100
ログをアーカイブにエクスポートします。これはConsoleで開くことができます:```bash
log collect --last 1h --output ~/Downloads/logs-$(date +%F-%H%M).logarchive
システム整合性保護はDTraceの動作を妨げるため、使用前に一部無効化する必要があります。
iosnoop はディスクI/Oを監視しますopensnoop はファイルオープンを監視しますexecsnoop はプロセスを監視しますerrinfo は失敗したシステムコールを監視しますdtruss はすべてのシステムコールを監視します詳細は man -k dtrace を参照してください。
アクティビティモニタまたは ps コマンドで実行中のプロセスを一覧表示します。
開いているネットワーク接続を一覧表示します。```bash sudo lsof -Pni
さまざまなネットワーク関連データ構造の内容を一覧表示します:```bash
sudo netstat -n -p tcp
sudo netstat -n -p udp | sort | uniq
Wireshark はコマンドラインから tshark を使用して利用できます。
en0 は、networksetup -listallhardwareports で表示されるアクティブなインターフェースに置き換えてください。
[!IMPORTANT] 監視する権限があるネットワークとシステムでのみトラフィックをキャプチャしてください。
DNS の監視:```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-Y "dns.flags.response == 1" -Tfields
-e frame.time_delta
-e dns.qry.name
-e dns.a
-Eseparator=,
HTTPの監視:```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0 \
-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
TLS証明書を監視する:```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-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
# その他
## スクリーンセーバー
スクリーンセーバーが起動したらすぐに画面をロックするように設定します:```bash
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
診断と使用状況データ を無効にします。
クラッシュレポーター(アプリがクラッシュした後に表示され、問題をAppleに報告するよう促すダイアログ)を無効にします:```bash defaults write com.apple.CrashReporter DialogType none
## メディアプレイヤー
音楽ファイルやビデオファイルの再生には、内蔵メディアアプリケーションである [QuickTime Player](https://en.wikipedia.org/wiki/Quicktime_player) を使用します。これは [App Sandbox](https://developer.apple.com/documentation/security/app_sandbox/protecting_user_data_with_app_sandbox) と [Hardened Runtime](https://developer.apple.com/documentation/xcode/configuring-the-hardened-runtime) を利用し、基本システムの一部として [Signed System Volume](https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web) の利点も受けられます。
## ファイルハンドラ
[既定のファイルハンドラ](https://support.apple.com/guide/mac-help/choose-an-app-to-open-a-file-on-mac-mh35597) を管理して、特定のファイルタイプを開く際のリスクを軽減します。
スクリプトファイルの既定のアプリを変更して、開いたときに実行せず内容を表示するようにします。
Finder で任意の .sh ファイルを見つけて選択し、右クリックして「情報を見る」を選ぶか、<kbd>Command</kbd> + <kbd>I</kbd> を押します。「このアプリケーションで開く」セクションで、ドロップダウンメニューから TextEdit を選択します。一覧にない場合は、「その他...」を選択し、アプリケーション > TextEdit.app を選択します。「すべて変更...」を選択し、「続ける」を選択して確認します。
## Finder オプション
Finder で隠しファイルとライブラリフォルダを表示する:```bash
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library
すべてのファイル名拡張子を表示:```bash defaults write NSGlobalDomain AppleShowAllExtensions -bool true
Do not default to saving documents to iCloud:```bash
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
カスタム umask を設定します:```bash sudo launchctl config user umask 077
再起動し、ファイル/ディレクトリを作成して、パーミッションを確認します(macOSのデフォルトでは「グループ/その他」の読み取りアクセスが許可されます):```console
$ ls -ld umask*
drwx------@ 2 user1 staff 64 Jul 26 12:00 umask.dir
-rw-------@ 1 user1 staff 32 Jul 26 12:00 umask.txt
Terminal で セキュアキーボード入力 を有効にします(これは TextExpander などのアプリケーションに干渉する可能性があります)。
Bonjourマルチキャストアドバタイズメント を無効にします(これにより AirPlay および AirPrint 機能も無効になります):```bash
sudo defaults write /Library/Preferences/com.apple.mDNSResponder
NoMulticastAdvertisements -bool YES
[Handoffを無効にする](https://support.apple.com/guide/mac-help/change-airdrop-handoff-settings-mchl6a407f99)機能と[Bluetooth](https://support.apple.com/guide/mac-help/turn-bluetooth-on-or-off-blth1008)機能。
## Sudoers
macOSの`/etc/sudoers`には次の行が含まれています:```bash
Defaults env_keep += "HOME MAIL"
これにより、sudo は権限昇格時に HOME を変更しなくなります。その結果、sudo で実行されるプログラムは、呼び出し元ユーザーのホームディレクトリにある設定ファイルを使用する可能性があります。この動作が特に必要な場合を除き、env_keep から HOME を削除することを検討してください。
root ユーザーが非 root ユーザーのホームディレクトリを使用できる利便性を維持するには、/var/root/.zshrc に export 行を追加します。例:```bash
export HOME=/Users/user1
# 関連ソフトウェア
ソフトウェア | カテゴリ | 説明
:-: | :-: | :-
[lynis](https://github.com/CISOfy/lynis) | 監査スキャナ | システム構成をチェックし、堅牢化の改善案を提案するクロスプラットフォームのセキュリティ監査ツール。
[zentral](https://github.com/zentralopensource/zentral) | 監視・構成管理プラットフォーム | macOSエンドポイント向けのフリート管理サーバー。インベントリ、イベント、監査、osqueryの結果を収集する。管理された環境に最適。
[osquery](https://github.com/osquery/osquery) | 監視エンジン | オペレーティングシステムの状態をSQLテーブルとして公開し、プロセス、ユーザー、起動項目、ネットワーク接続などを繰り返しチェックできるようにする。
[pareto-mac](https://github.com/paretoSecurity/pareto-mac) | 監査スキャナ | Macを一般的なベースラインセキュリティ推奨事項に照らしてチェックするメニューバーアプリ。
# 追加リソース
- [iCloudのセキュリティとプライバシーの概要](https://support.apple.com/102651)
- [EFF監視セルフディフェンスガイド](https://ssd.eff.org/)
- [beerisgood/macOS_Hardening](https://github.com/beerisgood/macOS_Hardening)
- [macOSリバースエンジニアリングブログ](https://reverse.put.as/)
- [リバースエンジニアリングリソース](http://samdmarshall.com/re.html)
- [Malwarebytesブログ](https://www.malwarebytes.com/blog)
- [Objective-Seeのブログ](https://objective-see.com/blog.html)
- [CISベンチマーク](https://www.cisecurity.org/benchmark/apple_os/)
- [Appleオープンソース](https://opensource.apple.com/)
- [iOS、macOSの未来、自由、セキュリティ、そしてますます敵対的なグローバル環境におけるプライバシー](https://gist.github.com/iosecure/357e724811fe04167332ef54e736670d)
| 敵対者 | 動機 | 能力 | 緩和策 |
|---|
| ルームメイト | プライベートなチャットや閲覧履歴を見る | 至近距離で接近可能;画面を見たり、認証情報を観察できる | 生体認証(指紋または顔)を使用し、プライバシーフィルムを使用し、使用しないときは電話をロックする |
| 泥棒 | 電話をロック解除して個人情報を盗み、銀行口座を引き出し、電話を現金化する | パスワード入力の覗き見、放置されたログイン済みデバイスの窃取 | 常にデバイスを物理的に管理し、使用しないときはデバイスをロックし、人前でのパスワード入力を避け、Find Myなどのサービスを使用して盗難デバイスを追跡またはリモートで無効化する |
| 犯罪者 | 金銭的利益 | ソーシャルエンジニアリング(情報を漏らしたり安全でない行動を取らせたりするためにユーザーを騙す)、容易に入手できるマルウェア、パスワードの再利用、脆弱性の悪用 | ソフトウェアをサンドボックス化し、OSのセキュリティ機能を有効にし、ソフトウェアのアップデートを自動的に維持する |
| 企業 | ユーザーデータに基づくマーケティング | テレメトリと行動データの収集 | ネットワーク接続をブロックし、デバイス固有の識別子をリセットし、支払いデータを追加しない |
| 国家/APT | 標的型監視 | インターネットインフラの受動的監視、高度な暗号解析 | オープンソースソフトウェア、強力なダイスウェア認証情報、セキュアエレメントを備えたハードウェアを使用し、使用しないときはデバイスの電源を切り、tripwire / honeypot / カナリアトークンアラートを利用する |
| Command | Task |
|---|
sudo pfctl -t blocklist -T show | ブロックリストを表示する |
sudo pfctl -s rules | アクティブなルールを表示する |
sudo pfctl -s states | ステートテーブルを表示する |
sudo ifconfig pflog0 create | パケットログインターフェイスを作成する |
sudo tcpdump -ni pflog0 | ブロックされたパケットを監視する |
| コマンド | タスク |
|---|
launchctl list | ユーザージョブを表示 |
sudo launchctl list | システムジョブを表示 |
launchctl list com.apple.Finder | サービスを調べる |
systemextensionsctl list | システム拡張機能を一覧表示 |
ls /System/Library/LaunchDaemons | システムデーモンを一覧表示 |
ls /System/Library/LaunchAgents | システムエージェントを一覧表示 |