
Guia selecionado de segurança e privacidade para macOS com instruções práticas para modelagem de ameaças, criptografia de disco, configuração de firewall, autenticação segura e endurecimento de rede.
Este guia é uma coleção de técnicas para melhorar a segurança e a privacidade de Macs com Apple silicon. É direcionado a usuários experientes que desejam práticas de segurança comumente usadas por organizações, mas também é adequado para usuários iniciantes com interesse em privacidade e segurança.
Para Macs gerenciados por organizações, consulte o macOS Security Compliance Project, mantido pelo Instituto Nacional de Padrões e Tecnologia dos EUA.
Este guia é fornecido "como está" - sem garantias de qualquer tipo. Você é o único responsável por qualquer consequência de segui-lo.
Aplique as melhores práticas gerais de segurança:
Crie um modelo de ameaça
Mantenha o sistema e o software atualizados
softwareupdate. Nenhum deles exige uma Conta Apple.Criptografe dados confidenciais
Garanta a disponibilidade dos dados
Clique com cuidado
O passo mais importante para melhorar significativamente a segurança e a privacidade é criar um modelo de ameaça: uma descrição geral do que você deseja proteger, quem pode tentar acessá-lo, como eles poderiam fazer isso e quais controles valem a pena em termos de concessões de usabilidade. Isso cria uma compreensão dos possíveis adversários e suas motivações, o que leva a defesas mais fortes.
Os ativos podem incluir um telefone, notebook, credenciais e informações pessoais, como histórico de navegação.
Liste-os em ordem de importância, começando pelos que mais merecem proteção.
Defina contra quem você está se defendendo. Comece definindo a motivação que cada adversário pode ter para atacar ativos importantes. O ganho financeiro é um grande motivador para muitos atacantes, por exemplo.
Para cada adversário, liste o que eles podem e não podem fazer, classificando-os do menos ao mais capaz. Por exemplo, um ladrão ocasional age de forma oportunista: provavelmente será derrotado por controles básicos, como bloqueio de tela e armazenamento criptografado com senhas fortes. Um adversário mais sofisticado e determinado pode exigir desligar completamente o dispositivo quando não estiver em uso para limpar credenciais da memória e mecanismos de autenticação mais fortes.
Escolha a melhor mitigação para cada ameaça. Por exemplo, evite escrever senhas em papel se um colega de quarto puder encontrá-las, ou criptografe o armazenamento para proteger seus dados se ele for roubado.
A segurança deve ser equilibrada com a usabilidade: cada mitigação deve neutralizar alguma capacidade do adversário para justificar qualquer inconveniência. Pare de adicionar defesas quando os riscos restantes forem aceitáveis para uma situação. Revise o modelo quando dispositivos, dados, viagens, trabalho ou adversários mudarem.
A tabela a seguir é um exemplo de um modelo de ameaça simples:
Leia mais sobre modelagem de ameaças.
Os hardwares Apple silicon fornecem recursos de segurança baseados em hardware, incluindo proteção de chaves baseada no Secure Enclave e opções mais robustas de segurança de inicialização. Eles geralmente são a plataforma preferida para as proteções discutidas neste guia.
Alguns Macs baseados em Intel, especialmente modelos com hardware vulnerável da era T2, são afetados por vulnerabilidades de hardware que não podem ser totalmente corrigidas por uma atualização do macOS.
Evite hardware não Apple executando macOS e sistemas que não suportam a versão mais recente do macOS, pois a Apple não corrige todas as vulnerabilidades em versões legadas.
Os acessórios da Apple geralmente recebem atualizações de firmware por meio do macOS e suportam os recursos de segurança Bluetooth atuais. Por exemplo, a Privacidade do Bluetooth Low Energy (BLE) usa endereços de dispositivo rotativos para reduzir o rastreamento; acessórios de terceiros podem não suportar esse recurso.
Existem várias maneiras de instalar o macOS.
Instale a versão mais recente suportada do macOS; versões mais novas do macOS incluem correções de segurança e outras melhorias não disponíveis em versões anteriores.
Durante a instalação, os Macs com Apple silicon entram em contato com o serviço de ativação da Apple para confirmar que o dispositivo não foi registrado como perdido ou roubado. Leia sobre como esse processo funciona.
Uma Conta Apple é opcional para o uso básico do macOS, mas é necessária para a App Store e muitos serviços da Apple. Revise as configurações de privacidade de dados antes de ativar recursos.
Ative a criptografia de ponta a ponta para o iCloud e revise os dados da Conta Apple.
A App Store é uma plataforma de distribuição de software onde os aplicativos são analisados pela Apple.
Os aplicativos da App Store são obrigados a usar App Sandbox e Hardened Runtime (recursos de segurança que restringem o que os aplicativos podem fazer, dificultando alguns ataques). Ela também oferece atualizações automáticas de software.
Usar a App Store exige uma Conta Apple, o que pode representar um risco à privacidade.
A virtualização permite que outro sistema operacional seja executado em uma máquina virtual isolada. No Apple silicon, o macOS pode executar convidados macOS suportados e o Windows 11 para ARM usando aplicativos como os seguintes:
[!WARNING] O VMware exige uma conta Broadcom e aceitação dos termos antes do download. O Parallels exige uma conta, dados de pagamento e outros dados - consulte o aviso de privacidade.
Apple Container é uma ferramenta de linha de comando para executar contêineres Linux no macOS. Diferente de runtimes de contêineres que compartilham uma única máquina virtual Linux, o Apple Container executa cada contêiner em uma máquina virtual isolada e leve, usando os recursos de virtualização do macOS. Isso fornece um limite de isolamento mais forte entre as cargas de trabalho e o sistema operacional host.
Quando o macOS é iniciado pela primeira vez, o Assistente de Configuração exige a criação de uma conta primária.
Defina uma senha longa e única. Deixe o campo de dica de senha em branco.
Evite nomes pessoalmente identificáveis: o nome do computador (como "MacBook do John Appleseed") é transmitido pela rede local e visível para outros dispositivos.
O nome do sistema pode ser configurado em Ajustes do Sistema > Sobre ou com comandos do scutil:```bash
sudo scutil --set ComputerName MacBook
sudo scutil --set HostName MacBook
sudo scutil --set LocalHostName MacBook
# Contas de administrador e de usuário
A primeira conta criada é uma conta de administrador. Os administradores podem alterar configurações de todo o sistema e executar comandos com [sudo](https://en.wikipedia.org/wiki/Sudo), que concede temporariamente privilégios elevados. Qualquer programa que o administrador execute pode obter o mesmo acesso; o sudo também pode ter [vulnerabilidades](https://bogner.sh/2014/03/another-mac-os-x-sudo-password-bypass/).
É considerada uma [prática recomendada](https://help.apple.com/machelp/mac/10.12/index.html#/mh11389) usar uma conta padrão dedicada para o trabalho diário regular e usar a conta de administrador somente para instalação, configuração e atualização de software e sistema.
Não é necessário fazer login com a conta de administrador pela tela de login do macOS. Quando um comando do Terminal exigir privilégios de administrador, o sistema solicitará autenticação e o Terminal continuará usando esses privilégios. Para isso, a Apple fornece [recomendações](https://support.apple.com/102099) para ocultar a conta de administrador e seu diretório inicial.
## Ressalvas
- Somente administradores podem instalar aplicativos no diretório `/Applications` de todo o sistema. O Finder e o Installer pedem que um usuário padrão insira as credenciais de um administrador quando a aprovação for necessária. Alguns aplicativos podem, em vez disso, ser instalados em `~/Applications`; aplicativos que não exigem acesso de administrador devem ser instalados no diretório do usuário. Os aplicativos da App Store ainda são instalados em `/Applications` e não exigem autenticação adicional.
- Um usuário padrão geralmente não está autorizado a usar `sudo`. Quando privilégios de administrador forem necessários, o macOS solicita as credenciais de um administrador, ou a tarefa pode ser executada a partir de uma conta de administrador.
- System Settings e vários utilitários do sistema (por exemplo, Wi-Fi Diagnostics) exigem permissão de administrador para funcionar por completo. Algumas opções do System Settings precisam ser desbloqueadas selecionando o ícone de cadeado. Alguns aplicativos simplesmente solicitarão autenticação ao abrir; outros devem ser abertos diretamente por uma conta de administrador para acessar todas as funções (por exemplo, Console).
- Alguns aplicativos de terceiros presumem que o usuário atual é um administrador e não funcionarão a partir de uma conta padrão.
- Consulte a [issue 167](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/167) para considerações adicionais.
## Configuração
As contas podem ser criadas e gerenciadas no System Settings. Em sistemas existentes, geralmente é mais fácil criar uma segunda conta de administrador e depois alterar a conta original de uma conta de administrador para uma conta padrão. Sistemas recém-instalados devem, em vez disso, adicionar uma conta padrão após a configuração.
É possível rebaixar uma conta a partir da nova conta de administrador no System Settings.
Veja também [esta publicação](https://superuser.com/a/395738) para mais informações sobre como o macOS determina a associação a grupos.
# Firmware
Verifique se a segurança do firmware está definida como [Segurança Total](https://support.apple.com/guide/mac-help/mchl768f7291/mac) para impedir a adulteração do sistema. Essa é a configuração padrão.
# FileVault
Macs com Apple silicon usam criptografia de armazenamento baseada em hardware por padrão. O [FileVault](https://support.apple.com/guide/mac-help/protect-data-on-your-mac-with-filevault-mh11785/mac) exige adicionalmente a senha de um usuário autorizado para desbloquear o volume de inicialização após a reinicialização.
No Apple silicon, a autorização do FileVault também protege o [firmware](https://support.apple.com/102384), o que impede inicializar a partir de qualquer coisa que não seja o disco de inicialização designado, acessar a [Recuperação](https://support.apple.com/guide/mac-help/macos-recovery-a-mac-apple-silicon-mchl82829c17/15.0/mac/15.0#mchl5abfbb29) e revivê-lo com o modo de atualização de firmware do dispositivo (DFU).
O FileVault solicitará a definição de uma chave de recuperação, que deve ser armazenada em um local seguro, caso seja usada. O FileVault também oferece a opção de usar o iCloud para recuperação.
Confirme o estado do FileVault:```bash
fdesetup status
Lockdown Mode reduz significativamente a superfície de ataque ao desativar recursos do sistema e de aplicativos comumente explorados em ataques sofisticados.
Quando o Lockdown Mode está ativado, o Safari tem uma opção para excluir sites confiáveis das restrições.
Existem vários tipos de firewalls disponíveis para macOS.
[!NOTE] Se um malware obtiver controle de administrador, ele pode desativar ou contornar as políticas de firewall; não dependa de um firewall local como proteção forte contra um comprometimento total do sistema.
O firewall integrado fornece proteção básica e bloqueia apenas conexões de entrada. Ele não pode monitorar nem bloquear conexões de saída.
Ele pode ser controlado pela aba Firewall de Rede em Ajustes do Sistema, ou com o seguinte comando:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
### Modo furtivo
Os atacantes frequentemente varrem redes para identificar sistemas a atacar. Quando o [modo furtivo](https://support.apple.com/guide/mac-help/use-stealth-mode-to-keep-your-mac-more-secure-mh17133/mac) está ativado, respostas não são enviadas a tentativas de conexão em portas fechadas, tornando o sistema mais difícil de detectar.
Ative o modo furtivo:```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
Por padrão, o firewall permite conexões de entrada para software assinado pela Apple ou por um desenvolvedor identificado. Desativar essas regras faz o macOS perguntar antes de permitir que um aplicativo aceite conexões de entrada:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off
### Recarregar o firewall
Após alterar as configurações com `socketfilterfw`, recarregue o serviço de firewall para aplicar a nova configuração:```bash
sudo pkill -HUP socketfilterfw
Confirmar o estado do firewall:```bash
for firewallFlag in
--getglobalstate
--getblockall
--getallowsigned
--getstealthmode
--listapps
do /usr/libexec/ApplicationFirewall/socketfilterfw "$firewallFlag"
done
Ou usando [system profiler](https://ss64.com/mac/system_profiler.html):```bash
system_profiler SPFirewallDataType
Ativar a firewall da camada de aplicação e desativar conexões de entrada para o software integrado impede que o AirDrop funcione. Para que o AirDrop funcione, conceda exceções na firewall para sharingd e 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
## Firewalls de terceiros
Aplicativos como [Little Snitch](https://www.obdev.at/products/littlesnitch/index.html), [Radio Silence](https://radiosilenceapp.com/) e [LuLu](https://objective-see.com/products/lulu.html) oferecem um equilíbrio entre usabilidade e segurança.
Esses programas são capazes de monitorar e bloquear conexões de entrada e saída. No entanto, eles podem exigir uma [extensão do sistema](https://support.apple.com/HT210999) de código fechado.
Se os avisos frequentes de permitir ou bloquear forem excessivos, permita temporariamente as conexões enquanto também as registra ([modo Silent Allow](https://help.obdev.at/littlesnitch6/concepts-opmodes) no Little Snitch). Revise a configuração para entender e controlar a atividade de rede.
## Filtro de pacotes
O macOS também inclui [pf](https://en.wikipedia.org/wiki/PF_(firewall)), um firewall de filtragem de pacotes configurado pela linha de comando. Ele é poderoso, mas consideravelmente mais complexo do que o firewall de aplicativos integrado.
O pf também pode ser controlado com um aplicativo gráfico, como o [Murus](https://www.murusfirewall.com/).
Muitos [livros](https://nostarch.com/book-of-pf-4e) e [guias](https://www.openbsd.org/faq/pf/) abordam o firewall pf. O exemplo a seguir mostra como configurar uma política básica.
### Exemplo de configuração do pf
Adicione as seguintes regras a um arquivo chamado `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
Um exemplo avançado de configuração do pf está disponível em pf/pf.rules.
Para controlar o firewall:
| Comando | Tarefa |
|---|---|
sudo pfctl -e -f pf.rules | ativar o firewall com arquivo de configuração |
sudo pfctl -t blocklist -T add 1.2.3.4 | adicionar endereço IPv4 à tabela blocklist |
sudo pfctl -d | desativar o firewall |
Para monitorar o firewall:
O pf pode bloquear faixas de endereços de rede, por exemplo, de uma organização inteira. Consulte o Merit RADb para obter a lista de redes em uso por um sistema autônomo (uma grande rede operada por uma única organização), como o Facebook:```bash whois -h whois.radb.net '!gAS32934'
Adicione a lista de redes retornada à blocklist:```bash
sudo pfctl -t blocklist -T add $(whois -h whois.radb.net '!gAS32934' | sed -n '2p')
Confirme que os endereços foram adicionados:```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 ...
Confirme que o tráfego de rede está bloqueado para esses endereços (as solicitações DNS ainda funcionarão):```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
O firewall descarta os pacotes iniciais necessários para iniciar a conexão TCP, então a conexão expira.
Consulte drduh/config/scripts/pf-blocklist.sh para mais inspiração.
Muitos serviços em segundo plano do sistema e do usuário são gerenciados pelo launchd.
Contas de administrador podem modificar serviços e extensões em Ajustes do Sistema.
Para ler uma configuração de serviço:```bash defaults read /System/Library/LaunchAgents/com.apple.Finder
> [!IMPORTANT]
> Os serviços do sistema são protegidos pelo [SIP](https://github.com/drduh/macOS-Security-and-Privacy-Guide#system-integrity-protection); desativar o SIP para modificar serviços do sistema pode comprometer a segurança e causar instabilidade no sistema.
Para ver o status dos serviços:```bash
find /var/db/com.apple.xpc.launchd \
-type f -print -exec defaults read {} \; 2>/dev/null
Consulte o gerenciamento de scripts com launchd e o launchd.info para obter mais informações.
As Sugestões da Siri e o Spotlight podem enviar algumas consultas ou informações de uso à Apple, dependendo dos recursos habilitados. Nas Ajustes do Sistema, pesquise por Siri e Spotlight, desative as sugestões online e configure as categorias a serem excluídas da indexação ou das sugestões. Revise a política de Busca e Privacidade da Apple para obter mais informações.
Se um programa não estiver disponível na App Store, considere usar o Homebrew.
[!IMPORTANT] Alguns fluxos de trabalho de instalação ou gerenciamento do Homebrew podem solicitar o Gerenciamento de Aplicativos ou o Acesso Total ao Disco. Conceda essas permissões somente quando estiverem totalmente compreendidas e forem necessárias.
Execute periodicamente brew upgrade em redes confiáveis e seguras para instalar atualizações de software. Para obter informações sobre um pacote antes da instalação, execute brew info <package> e revise a fórmula dele online. Ative opções de segurança adicionais, como HOMEBREW_NO_INSECURE_REDIRECT=1
De acordo com a Análise Anônima do Homebrew, o Homebrew coleta análises anônimas de uso e as reporta a uma instância do InfluxDB auto-hospedada.
Para desativar os analytics do Homebrew, execute brew analytics off ou defina HOMEBREW_NO_ANALYTICS=1 no arquivo de inicialização do shell.
O macOS oferece "perfis de configuração de DNS" para configurar DNS criptografado, filtragem e DNSSEC.
Os perfis de DNS podem ser criados ou obtidos de provedores como Quad9, AdGuard e NextDNS.
Use o arquivo hosts para bloquear domínios associados a malware, publicidade e outros serviços indesejados.
Para bloquear um domínio por registro A, adicione qualquer uma das seguintes linhas a /etc/hosts:```
0 example.com
0.0.0.0 example.com
127.0.0.1 example.com
> [!NOTE]
> O IPv6 usa registros AAAA em vez de registros A: bloqueie conexões IPv6 incluindo entradas `::1 example.com`.
Muitas listas de domínios estão disponíveis online. Antes de acrescentar uma a `/etc/hosts`, verifique se cada entrada começa com `0`, `0.0.0.0` ou `127.0.0.1` e mantenha a entrada `127.0.0.1 localhost`.
Listas de hosts populares incluem:
- [StevenBlack/hosts](https://github.com/StevenBlack/hosts)
- [Sinfonietta/hostfiles](https://github.com/Sinfonietta/hostfiles)
- [someonewhocares.org](https://someonewhocares.org/hosts/zero/hosts)
Para baixar e acrescentar uma lista ao arquivo hosts, use o comando [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 também suporta listas de bloqueio.
Para criptografar o tráfego DNS, considere o DNSCrypt/dnscrypt-proxy. Quando configurado com um resolvedor confiável, o DNSCrypt criptografa as consultas DNS. O DNSSEC pode, adicionalmente, validar respostas DNS assinadas quando houver suporte.
Instale o DNSCrypt via Homebrew e siga as instruções para configurar e iniciar o dnscrypt-proxy:```bash
brew install dnscrypt-proxy
Ao usar DNSCrypt com Dnsmasq, localize o arquivo de configuração do DNSCrypt executando:```bash
brew info dnscrypt-proxy | grep dnscrypt-proxy.toml | head -1
Este comando deve exibir um caminho como /opt/homebrew/etc/dnscrypt-proxy.toml.
Por padrão, o dnscrypt-proxy escuta em 127.0.0.1:53 e envia consultas a um ou mais provedores de DNS configurados. Modifique a configuração e altere listen_addresses para usar uma porta diferente de 53, como 5355:```toml
listen_addresses = ['127.0.0.1:5355', '[::1]:5355']
Iniciar DNSCrypt:```bash
sudo brew services restart dnscrypt-proxy
Confirme que o DNSCrypt está em execução:```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
Além disso, essas regras de pf bloqueiam tráfego DNS convencional para a porta 53 fora da interface de loopback, para reduzir o risco de [vazamentos de 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 pode armazenar respostas em cache, impedir consultas upstream para nomes não qualificados e bloquear domínios de nível superior inteiros.
Use-o em combinação com o DNSCrypt para criptografar o tráfego DNS.
Se você não usar o DNSCrypt, escolha pelo menos um resolvedor de DNS diferente do fornecido pelo provedor de internet. Duas alternativas populares são Google DNS e OpenDNS.
Instale o Dnsmasq:```bash brew install dnsmasq
Baixe e edite [drduh/config/dnsmasq.conf](https://github.com/drduh/config/blob/main/dnsmasq.conf) ou o arquivo de configuração padrão.
Veja [drduh/config/domains](https://github.com/drduh/config/tree/main/domains) para exemplos de listas de domínios que podem ser adicionadas para bloquear destinos específicos.
Instale e inicie o programa (é necessário sudo para vincular à [porta privilegiada](https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the-root-user-only) 53):```bash
sudo brew services start dnsmasq
Para definir o dnsmasq como o servidor DNS local, abra Configurações do Sistema > Rede e selecione a conexão de rede atualmente em uso (como Wi-Fi), depois abra a aba DNS, selecione + e adicione 127.0.0.1, ou use:```bash
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
Confirme que o Dnsmasq está configurado:```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] Alguns aplicativos VPN substituem as configurações de DNS ao conectar. Consulte a issue 24 e drduh/config/scripts/macos-dns.sh.
O macOS inclui um conjunto de autoridades de certificação raiz (CAs) confiáveis, operadas por corporações, governos e outras organizações de todo o mundo. Uma CA confiável pode emitir certificados que o macOS e os navegadores podem aceitar para conexões HTTPS, tornando o armazenamento de CAs raiz uma parte crítica do limite de confiança do sistema.
Inspecione System Roots para entender o armazenamento de raízes confiáveis fornecido pela Apple usando o Keychain Access ou a ferramenta de linha de comando security e o arquivo /System/Library/Keychains/SystemRootCertificates.keychain. O Keychain Access também pode ser iniciado com o comando:```bash
open "/System/Library/CoreServices/Applications/Keychain Access.app"
Revise também quaisquer certificados que possam ter sido adicionados por um usuário, administrador, cliente VPN, produto de segurança ou aplicativo de gerenciamento de dispositivos móveis nos chaveiros **login**, **Itens Locais** e **Sistema**.
Para desativar um certificado selecionado, modifique sua configuração de Confiança para **Nunca Confiar** e feche a janela para confirmar. Isso pode reduzir o risco de ataques [MITM](https://wikipedia.org/wiki/Man-in-the-middle_attack), nos quais um certificado fraudulento é usado para [interceptar silenciosamente](https://en.wikipedia.org/wiki/DigiNotar#Issuance_of_fraudulent_certificates) o tráfego criptografado.
> [!WARNING]
> Remover ou modificar as configurações de confiança da autoridade de certificação pode quebrar sites, atualizações de software, redes corporativas, VPNs, portais cativos e outros serviços.
Consulte as listas da Apple de [certificados confiáveis disponíveis](https://support.apple.com/103723) e [certificados bloqueados](https://support.apple.com/103247#blocked) para obter informações atuais sobre o armazenamento de confiança.
# Privoxy
Considere usar o [Privoxy](https://www.privoxy.org/) como proxy local para filtrar o tráfego da web.
Instale e inicie o Privoxy usando o Homebrew:```bash
brew install privoxy
brew services start privoxy
Alternativamente, um pacote de instalação assinado para Privoxy está disponível no site oficial ou no Sourceforge. O pacote assinado é mais seguro do que a versão do Homebrew e recebe suporte do projeto Privoxy.
Por padrão, o Privoxy escuta na porta TCP local 8118.
Defina o proxy HTTP do sistema na interface de rede ativa para 127.0.0.1 e porta 8118:```bash
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118
Configure o proxy **HTTPS** do sistema:```bash
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118
O proxy também pode ser definido em Definições do Sistema > Rede > Detalhes > Proxies.
Confirme que o proxy está definido:```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 }
Embora a maior parte do tráfego web seja criptografado, o Privoxy pode filtrar solicitações por nome de host. Por exemplo, as seguintes regras bloqueiam todo o tráfego, exceto o tráfego para .net, github.com e domínios da Apple:```console
{ +block{all} }
.
{ -block }
.apple.
.github.com
.net
Para bloquear domínios do Facebook:```console { +block{facebook} } .cdninstagram. .facebook*. .fb. .fbcdn*. .fbinfra. .fbsbx. .fbstatic*. .fbsv. .fburl. .instagr.am .tfbnw. .thefacebook. fb*.akamaihd.net
Consulte [drduh/config/privoxy/config](https://github.com/drduh/config/blob/main/privoxy/config) e [drduh/config/privoxy/user.action](https://github.com/drduh/config/blob/main/privoxy/user.action) para exemplos adicionais de Privoxy. O Privoxy **não** precisa ser reiniciado após editar as regras de filtro.
Para verificar se o tráfego está bloqueado ou redirecionado, use [curl](https://en.wikipedia.org/wiki/CURL) ou abra a interface do Privoxy em <http://p.p> em um navegador:```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] Aplicativos e serviços podem ignorar as configurações de proxy. O pf pode redirecionar o tráfego por um proxy sem configurar cada aplicativo separadamente.
Navegadores web criam riscos significativos de segurança e privacidade porque baixam e executam conteúdo não confiável da Internet.
Uma fronteira de segurança fundamental dos navegadores é a política de mesma origem (SOP), que impede que um site leia os dados de outro site. Uma falha nessa política pode expor dados ou ações de outros sites no mesmo perfil do navegador.
Alguns ataques a navegadores dependem de convencer o usuário a instalar software, conceder permissões ou usar uma extensão maliciosa. Tenha cuidado especial com downloads inesperados, solicitações de extensões e pedidos para executar comandos no Terminal.
Extensões de navegador também representam um risco significativo de segurança: uma extensão maliciosa ou mal feita pode comprometer tudo no navegador, inclusive credenciais. O uso de extensões deve ser limitado às estritamente necessárias, publicadas apenas por desenvolvedores confiáveis.
Use perfis de navegador separados para diferentes identidades e finalidades. Se possível, desative o JavaScript e permita-o apenas em sites confiáveis usando as permissões de site do navegador.
Mozilla Firefox, Google Chrome, Safari e Tor Browser são navegadores populares, cada um com recursos exclusivos e finalidades próprias.
O Firefox modernizou grandes partes de seu código-fonte por meio dos projetos Quantum e Photon. O Quantum inclui a migração de alguns componentes de C++ para Rust, uma linguagem de programação projetada para melhorar a segurança de memória e a segurança de concorrência.
O Firefox oferece um modelo de segurança comparável ao do Chrome, incluindo um programa de recompensas por bugs para divulgação responsável de vulnerabilidades. O Firefox segue um ciclo de lançamentos de quatro semanas.
Consulte drduh/config/firefox.user.js e arkenfox/user.js para configurações recomendadas. Veja também NoScript, uma extensão que permite o bloqueio seletivo de scripts.
O Firefox foca na privacidade do usuário. Ele oferece suporte à proteção contra rastreamento no modo de Navegação Privada. A proteção contra rastreamento pode ser ativada para a conta padrão, embora possa prejudicar a experiência de navegação em alguns sites. O Firefox no modo Estrito de proteção contra rastreamento randomizará as impressões digitais para se defender contra o rastreamento. O Firefox oferece perfis de usuário separados. A navegação também pode ser delimitada com os Contêineres de Multi-Conta.
O Firefox oferece suporte apenas a Web Extensions por meio da API WebExtension, que é muito semelhante à do Chrome. O envio de Web Extensions no Firefox é gratuito. As Web Extensions no Firefox são, na maioria das vezes, de código aberto, embora algumas sejam proprietárias.
O Google Chrome é baseado no projeto Chromium de código aberto. O Chrome inclui alguns componentes proprietários, atualizações automáticas, um visualizador de PDF, suporte a codecs de mídia, relatórios de falhas e integração com a conta Google. Revise as configurações de privacidade do Chrome e as políticas de privacidade do Google para obter mais informações.
O Chrome oferece sincronização de conta entre vários dispositivos, incluindo credenciais; os dados são criptografados com a senha da conta.
O Chrome tem a maior parcela do uso global e é a plataforma alvo preferida pela maioria dos desenvolvedores. As principais tecnologias são baseadas nos componentes de código aberto do Chrome, como o node.js, que usa o mecanismo V8 do Chrome, e o framework Electron, que é baseado em Chromium e node.js. A vasta base de usuários do Chrome o torna o alvo mais atraente para agentes de ameaças e pesquisadores de segurança. Apesar dos ataques constantes, o Chrome manteve um impressionante histórico de segurança ao longo dos anos. Isso não é pouca coisa.
O Chrome oferece perfis separados, sandbox robusto, atualizações frequentes e possui credenciais impressionantes. Além disso, o Google oferece um programa de recompensas muito lucrativo para relatar vulnerabilidades, juntamente com sua própria equipe Project Zero. Isso significa que um grande número de pessoas altamente talentosas e motivadas audita e protege constantemente o código do Chrome.
Considere desativar a otimização V8 (recursos de desempenho do mecanismo JavaScript) nas configurações do navegador - veja esta explicação para os trade-offs de segurança.
Bloqueie rastreadores com o uBlock Origin Lite.
Desative a pré-busca de DNS (veja Pré-busca de DNS e suas Implicações de Privacidade). O Chrome pode tentar resolver DNS usando os servidores de nomes públicos 8.8.8.8 e 8.8.4.4 do Google.
Consulte Segurança do Chromium e Privacidade do Chromium para obter mais informações. Leia a política de privacidade do Google para entender como as informações pessoais são coletadas e usadas.
O Safari é o navegador nativo da Apple e está integrado ao macOS, proporcionando melhorias na eficiência da bateria no hardware da Apple.
O Safari possui componentes de código aberto e proprietários. O Safari é baseado no mecanismo web de código aberto WebKit, onipresente no ecossistema macOS. O WebKit é usado por aplicativos da Apple, como Mail, Livros e App Store. O mecanismo Blink do Chrome é um fork do WebKit, e ambos os mecanismos compartilham uma série de semelhanças.
O Safari oferece suporte a certos recursos exclusivos que beneficiam a segurança e a privacidade do usuário. Os bloqueadores de conteúdo permitem a criação de regras de bloqueio de conteúdo sem usar JavaScript. Essa abordagem baseada em regras melhora bastante o uso de memória, a segurança e a privacidade. O Safari 11 introduziu a Prevenção Inteligente de Rastreamento, que remove os dados de rastreamento armazenados no Safari após um período sem interação do usuário com o site do rastreador. O Safari pode randomizar a impressão digital do navegador para reduzir o rastreamento. O Safari não suporta certos recursos, como WebUSB ou a API Battery, intencionalmente por razões de segurança e privacidade. As abas privadas no Safari possuem cookies e cache isolados, que são destruídos quando você fecha a aba. O Safari também suporta Perfis, que são equivalentes aos Contêineres de Multi-Conta do Firefox para separar cookies e navegação. O Safari pode se tornar significativamente mais seguro com o modo de isolamento, que pode ser desativado por site. Leia mais sobre prevenção de rastreamento no Safari.
As Web Extensions no Safari têm uma opção adicional de usar código nativo no ambiente de sandbox do Safari, além das APIs de Web Extension. As Web Extensions no Safari também são distribuídas pela Apple App Store. O envio para a App Store traz o benefício adicional de o código da Web Extension ser auditado pela Apple. Por outro lado, o envio para a App Store tem um custo elevado. A assinatura anual para desenvolvedores custa 100 USD (em contraste com a taxa de 5 USD do Chrome e o envio gratuito do Firefox). O alto custo é proibitivo para a maioria dos desenvolvedores de código aberto. Como resultado, o Safari tem pouquíssimas extensões para escolher. No entanto, tenha o alto custo em mente ao instalar extensões. Espera-se que a maioria das Web Extensions tenha alguma forma de monetizar o uso para cobrir os custos de desenvolvimento. Evite Web Extensions sem código aberto disponível para revisão.
O Safari sincroniza as preferências e senhas do usuário com o iCloud Keychain. Visualizar uma senha salva exige autenticação com a senha da conta do dispositivo atual ou outro método de autenticação configurado.
O Safari implementa novos recursos web mais lentamente que o Chrome ou o Firefox, mas as correções de segurança são entregues rapidamente por meio das atualizações do sistema.
Veja também el1t/uBlock-Safari para desativar os beacons de auditoria de hiperlinks.
Os sites inferem informações sobre o navegador e o dispositivo a partir de configurações, fontes, tamanho da tela, idioma, endereço IP e comportamento do navegador. Essas informações contribuem para a impressão digital do navegador.
Para mais informações sobre navegação com consciência de segurança e quais dados são enviados pelo navegador, consulte os recursos HowTo: Privacy & Security Conscious Browsing, browserleaks.com, Am I Unique? e EFF Cover Your Tracks.
Para reduzir o rastreamento entre sites, bloqueie cookies de terceiros.
Esteja também ciente do WebRTC, que pode revelar endereços IP locais ou públicos (se conectado a uma VPN). No Firefox e no Chrome/Chromium, esse recurso pode ser desativado com o uBlock Origin. O modo de isolamento também desativa o WebRTC no Safari.
Tor é uma rede de anonimato que pode proporcionar privacidade adicional durante a navegação. O Tor Browser é um navegador modificado baseado no Firefox, configurado para usar a rede Tor.
Baixe o Tor Browser do Tor Project, incluindo os arquivos dmg e asc para verificação:```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
Certifique-se de que `Good signature from "Tor Browser Developers (signing key) <[email protected]>"` apareça na saída. O aviso é esperado, pois a chave não foi verificada pessoalmente e adicionada a um chaveiro de confiança.
Consulte [Como posso verificar a assinatura do Tor Browser?](https://support.torproject.org/tbb/how-to-verify-signature/) para mais informações.
Para terminar de instalar o Tor Browser, abra a imagem de disco e arraste-a para a pasta Applications, ou use os comandos:```bash
hdiutil mount tor-browser-macos-15.0.17.dmg
cp -r /Volumes/Tor\ Browser/Tor\ Browser.app/ ~/Applications/
Verifique se o aplicativo foi assinado pelo Apple Developer ID do The Tor Project (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
O comando `codesign` também pode ser usado para examinar a assinatura de código de uma aplicação:```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
Para visualizar os detalhes completos do certificado de um aplicativo assinado, extraia com codesign e decodifique com 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
O Tor Browser pode usar métodos de conexão especiais chamados [pluggable transports](https://support.torproject.org/tor-browser/circumvention/) para tornar o tráfego mais difícil de identificar ou bloquear. Isso pode ser feito configurando um [retransmissor](https://support.torproject.org/relays/) ou usando uma [ponte](https://bridges.torproject.org/) existente.
A rede Tor fornece [anonimato](https://www.privateinternetaccess.com/blog/2013/10/how-does-privacy-differ-from-anonymity-and-why-are-both-important/), que não é necessariamente o mesmo que privacidade. A rede não defende contra um observador global capaz de análise e correlação de tráfego. Veja também [Seeking Anonymity in an Internet Panopticon](https://bford.info/pub/net/panopticon-cacm.pdf) e [Traffic Correlation on Tor by Realistic Adversaries](https://www.ohmygodel.com/publications/usersrouted-ccs13.pdf).
Consulte a [Especificação do Protocolo Tor](https://spec.torproject.org/tor-spec/) para obter mais informações.
Veja também [Invisible Internet Project (I2P)](https://geti2p.net/en/about/intro) e sua [comparação com o Tor](https://geti2p.net/en/comparison/tor).
# VPN
Escolha um provedor de VPN ou uma configuração auto-hospedada com um protocolo moderno e documentado e clientes bem auditados. Evite protocolos obsoletos como [PPTP](https://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol#Security) em favor de [OpenVPN](https://en.wikipedia.org/wiki/OpenVPN) ou [WireGuard](https://www.wireguard.com/) [em uma VM Linux](https://github.com/mrash/Wireguard-macOS-LinuxVM) ou por meio de um conjunto de [ferramentas multiplataforma](https://www.wireguard.com/xplatform/).
Alguns clientes de VPN podem enviar tráfego pela próxima interface de rede disponível quando a conexão é interrompida ou desconectada. Veja [scy/8122924](https://gist.github.com/scy/8122924) para um exemplo de como permitir tráfego apenas pela VPN.
Consulte guias para configurar uma VPN [IPsec](https://en.wikipedia.org/wiki/Ipsec) em uma máquina virtual ([hwdsl2/setup-ipsec-vpn](https://github.com/hwdsl2/setup-ipsec-vpn)) ou em um contêiner Docker ([hwdsl2/docker-ipsec-vpn-server](https://github.com/hwdsl2/docker-ipsec-vpn-server)).
Pode valer a pena considerar a localização geográfica do provedor de VPN. Veja mais discussões na [issue 114](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/114).
Veja também esta [visão geral técnica](https://blog.timac.org/2018/0717-macos-vpn-architecture/) do cliente VPN L2TP/IPsec integrado do macOS e do cliente [IKEv2](https://en.wikipedia.org/wiki/IKEv2).
# PGP/GPG
PGP é um padrão para criptografar e assinar dados, especialmente e-mail. Ele pode proteger o conteúdo de mensagens entre correspondentes que trocam e verificam chaves corretamente, mas não protege metadados como destinatários de e-mail e linhas de assunto.
GPG (GNU Privacy Guard) é um programa de código aberto licenciado pela GPL e compatível com o padrão PGP. Ele pode verificar assinaturas de software e criptografar arquivos [simetricamente](https://en.wikipedia.org/wiki/Symmetric-key_algorithm) ou usando [chaves públicas](https://en.wikipedia.org/wiki/Public-key_cryptography).
Instale o GnuPG com Homebrew (`brew install gnupg`) ou instale o [GPG Suite](https://gpgtools.org/).
Baixe o [gpg.conf](https://github.com/drduh/YubiKey-Guide/blob/main/config/gpg.conf) para usar as configurações recomendadas:```bash
curl -o ~/.gnupg/gpg.conf \
https://raw.githubusercontent.com/drduh/YubiKey-Guide/main/config/gpg.conf
Consulte o drduh/YubiKey-Guide para gerar e gerenciar credenciais.
O e-mail não foi projetado para fornecer privacidade forte por padrão: o conteúdo das mensagens pode ser retido por provedores de serviços, copiado para as caixas de correio dos destinatários, encaminhado ou exposto por meio de comprometimento da conta. Os metadados (incluindo destinatário, assunto, carimbos de data/hora e informações do servidor de e-mail) geralmente permanecem visíveis mesmo quando o conteúdo da mensagem está criptografado.
O Thunderbird é um cliente de e-mail gratuito e de código aberto com suporte padrão para IMAP, POP, CalDAV e CardDAV. É uma escolha adequada para acessar e-mails e manter cópias locais em vez de depender exclusivamente do servidor remoto de um provedor.
O Thunderbird inclui suporte para criptografia de e-mail com OpenPGP, que pode proteger o conteúdo das mensagens e fornecer assinaturas criptográficas. Sempre verifique as impressões digitais das chaves públicas por um canal independente antes de confiar em uma chave para comunicações sensíveis.
O recurso de mensagens arquivadas pode mover mensagens para fora dos servidores de e-mail remotos para uma Pasta Local, melhorando a privacidade.
O XMPP é um protocolo aberto desenvolvido pelo IETF que oferece suporte a mensagens federadas e multiplataforma. Existem muitas opções de clientes. Considere usar um dos clientes baseados em navegador para aproveitar a sandbox do navegador.
Dependendo do provedor, você pode não precisar de nada além de um nome de usuário e senha para criar uma conta.
O XMPP não é criptografado de ponta a ponta (E2EE) por padrão; use OMEMO com um cliente compatível.
O Signal é um mensageiro E2EE popular cujo protocolo double-ratchet é usado por muitos outros aplicativos, incluindo WhatsApp, Google Messages e Facebook Messenger.
Para usar o aplicativo de desktop do Signal, o Signal deve primeiro ser instalado em um telefone.
Consulte o guia do Signal da EFF para obter orientações adicionais.
O iMessage é o mensageiro de primeira parte da Apple. É necessário ter uma Conta Apple para usá-lo.
Ative a Verificação de Chave de Contato e verifique os contatos.
O iMessage pode ser usado com número de telefone ou e-mail.
[!WARNING] Por padrão, o backup do iCloud está ativado, o que armazena cópias das chaves de criptografia das mensagens nos servidores da Apple sem E2EE. Desative o backup do iCloud ou ative a Proteção Avançada de Dados para evitar isso. Lembre os destinatários das mensagens de fazerem o mesmo.
Consulte Methods of malware persistence on Mac OS X e Malware Persistence on OS X Yosemite para saber como o malware comum do macOS persiste.
Para exemplos de capacidades avançadas de malware no macOS, consulte o material da Hacking Team. Para uma análise mais aprofundada, consulte root installation for MacOS, support driver for Mac Agent e RCS Agent for Mac.
Consulte também A Brief Analysis of an RCS Implant Installer e reverse.put.as.
Aplicativos da App Store ou notarizados pela Apple podem reduzir o risco de malware, mas nenhum dos processos garante segurança. A Apple realiza verificações automatizadas em aplicativos notarizados, e os aplicativos da App Store passam por revisão. Caso contrário, obtenha software de fontes identificadas pelo desenvolvedor como oficiais e verifique se o site ou o download por linha de comando usa HTTPS.
Verifique se um aplicativo usa a App Sandbox:```bash
codesign --display --entitlements -
/System/Applications/Calculator.app 2>&1 |
grep -A2 com.apple.security.app-sandbox
Com o App Sandbox ativado, a saída deve ser:```console
[Key] com.apple.security.app-sandbox
[Value]
[Bool] true
Activity Monitor também pode indicar se está habilitado com a coluna "Sandbox" exibida:```bash
defaults write com.apple.ActivityMonitor "UserColumnsPerTab v6.0"
-dict-add 0 '(Command, CPUUsage, CPUTime, Threads, IdleWakeUps, Architecture, GPUUsage, GPUTime, PID, UID, Sandbox, restricted)'
O software da App Store é obrigado a usar o App Sandbox. Aplicativos como o Google Chrome usam seu próprio [sandbox](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md) e podem não usar o App Sandbox.
> [!NOTE]
> A sandbox limita o acesso padrão de um aplicativo, mas entitlements e permissões concedidas pelo usuário podem expandir o acesso.
## Hardened Runtime
Verifique se um aplicativo usa o [Hardened Runtime](https://developer.apple.com/documentation/security/hardened_runtime):```bash
codesign --display --verbose /path/to/application.app
Se o Hardened Runtime estiver ativado, flags=0x10000(runtime) aparecerá na saída.
Liste todos os aplicativos com esse recurso ativado:```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
**Activity Monitor** tem a opção de exibir uma coluna "Restricted", que indica que um programa está impedido de injetar código via [linkeditor dinâmico](https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html) do macOS.
O Hardened Runtime é um pré-requisito para a notarização de aplicativos distribuídos.
## Antivírus
Para verificar arquivos e aplicativos, considere enviá-los ao [VirusTotal](https://www.virustotal.com/gui/home/upload), lembrando que isso os torna publicamente visíveis.
O macOS inclui um software antivírus integrado chamado [XProtect](https://support.apple.com/guide/security/protecting-against-malware-sec469d47bd8), que é executado em segundo plano e atualiza automaticamente as assinaturas usadas para detectar malware. Se um malware for detectado, o XProtect tenta removê-lo e colocá-lo em quarentena.
Verifique o status de atualização do XProtect:```bash
xprotect version
Aplicações como BlockBlock ou hazcod/maclaunch podem ajudar a prevenir ou detetar malware persistente.
O software antivírus pode ajudar a detetar malware comum, mas também pode aumentar a superfície de ataque porque muitas vezes é executado com privilégios extensos do sistema. Alguns produtos também podem enviar telemetria ou amostras ao fornecedor.
Veja Sophail: Ataques aplicados contra Antivírus, Análise e Exploração de uma Vulnerabilidade da ESET, Software de Segurança Popular Sofreu Ataques Implacáveis da NSA e do GCHQ, e Como Israel Apanhou Hackers Russos a Vasculhar o Mundo em Busca de Segredos dos EUA.
Gatekeeper verifica a notarização e a proveniência do software.
O Gatekeeper avisa ao abrir uma aplicação sem notarização. Pode ser contornado ao selecionar a aplicação listada em Definições do Sistema > Privacidade e Segurança após uma tentativa falhada.
Verifique se o Gatekeeper está ativado:```bash spctl --status --verbose
# Proteção de Integridade do Sistema
Para verificar se a Proteção de Integridade do Sistema está ativada, use o comando `csrutil status`, que deve retornar: `System Integrity Protection status: enabled.` Caso contrário, [ative a SIP](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) usando o [Modo de Recuperação](https://support.apple.com/102518).
# Metadados e artefatos
O macOS anexa metadados ([atributos estendidos do APFS](https://en.wikipedia.org/wiki/Extended_file_attributes#macOS)) aos arquivos.
Certos atributos de metadados podem ser visualizados e removidos com os comandos [`mdls`](https://ss64.com/mac/mdls.html) e [`xattr`](https://ss64.com/mac/xattr.html). Os arquivos de preferência (`plist`) podem ser lidos e modificados com [`defaults`](https://ss64.com/mac/defaults.html).
Os metadados do sistema e de aplicativos podem ser encontrados em:
- `~/Library/Preferences/`
- `~/Library/Containers/<APP>/Data/Library/Preferences`
- `/Library/Preferences`
Informações do Bluetooth:
- `/Library/Preferences/com.apple.Bluetooth.plist`
Cache de trabalhos de impressão:
- `/var/spool/cups`
Dispositivos iOS conectados anteriormente:
- `/Users/$USER/Library/Preferences/com.apple.iPod.plist`
- `/Library/Preferences/com.apple.iPod.plist`
Preferências do Finder:
- `~/Library/Preferences/com.apple.finder.plist`
- `~/Library/Preferences/com.apple.sidebarlists.plist`
Dados de diagnóstico:
- `/var/db/CoreDuet`
- `/var/db/diagnostics`
- `/var/db/systemstats`
- `/var/db/uuidtext`
- `/var/log/DiagnosticMessages`
Sugestões de ortografia e idioma:
- `~/Library/LanguageModeling`
- `~/Library/Spelling`
- `~/Library/Suggestions`
Estado do aplicativo:
- `~/Library/Saved\ Application\ State`
- `~/Library/Containers/<APPNAME>/Data/Library/Saved\ Application\ State`
Metadados de salvamento automático:
- `~/Library/Containers/<APP>/Data/Library/Autosave\ Information`
- `~/Library/Autosave\ Information`
Análises da Siri:
- `~/Library/Assistant/SiriAnalytics.db`
Histórico do QuickTime Player:
- `~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist`
Metadados diversos:
- `~/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`
# Autenticação
O aplicativo [Passwords](https://support.apple.com/guide/passwords/the-passwords-app-mchl901b1b95/mac) cria [credenciais seguras](https://support.apple.com/guide/security/automatic-strong-passwords-secc84c811c4/web). Ele suporta [passkeys](https://fidoalliance.org/passkeys/), que são credenciais projetadas para resistir a phishing quando usadas com serviços compatíveis.
[KeePassXC](https://keepassxc.org/) é um gerenciador de senhas de código aberto e multiplataforma a considerar. Ele suporta autenticação robusta com tokens de hardware compatíveis e uma extensão de navegador para inserir credenciais automaticamente.
Senhas memoráveis podem ser criadas com o [Diceware](https://secure.research.vt.edu/diceware/).
Garanta que as contas online tenham a [autenticação multifator](https://en.wikipedia.org/wiki/Multi-factor_authentication) ativada. Prefira autenticação resistente a phishing, como tokens de hardware ou passkeys com serviços compatíveis. Aplicativos autenticadores são preferíveis a códigos SMS, mas qualquer MFA é melhor do que autenticação apenas com senha.
O [YubiKey](https://www.yubico.com/products/) é um token de autenticação de hardware popular. Ele também pode armazenar chaves para tarefas de criptografia, assinatura e autenticação - veja [drduh/YubiKey-Guide](https://github.com/drduh/YubiKey-Guide).
O GnuPG também pode gerenciar senhas e outros arquivos criptografados - veja [drduh/Purse](https://github.com/drduh/Purse) e [drduh/pwd.sh](https://github.com/drduh/pwd.sh).
# Backup
Criptografe os arquivos localmente antes de fazer backup em mídia externa ou serviços online.
Siga o [modelo de backup 3-2-1](https://www.cisa.gov/sites/default/files/publications/data_backup_options.pdf): mantenha três cópias dos dados importantes, armazene-as em pelo menos dois tipos diferentes de mídia e mantenha pelo menos uma cópia em um local físico separado.
## Time Machine
[Time Machine](https://support.apple.com/104984) é a ferramenta integrada para lidar com backups no macOS. Use um disco externo ou armazenamento em rede para criar backups [criptografados](https://support.apple.com/guide/mac-help/keep-your-time-machine-backup-disk-secure-mh21241).
## GnuPG
O [GnuPG](https://www.gnupg.org/) pode ser usado com uma senha ou chave pública, com a chave privada armazenada no [YubiKey](https://github.com/drduh/YubiKey-Guide).
Compacte e criptografe um diretório usando uma senha:```bash
tar zcvf - ~/Downloads |
gpg -c > ~/Downloads/backup-$(date +%F-%H%M%S).tar.gz.gpg
Descriptografe e descomprima o diretório:```bash gpg -o ~/Downloads/decrypted-backup.tar.gz -d ~/Downloads/backup-*.tar.gz.gpg tar zxvf ~/Downloads/decrypted-backup.tar.gz
## Utilitário de Disco
Volumes criptografados podem ser criados usando o [Utilitário de Disco](https://support.apple.com/guide/disk-utility/toc) ou `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
Tresorit e restic também podem ser de interesse.
Os nomes de redes Wi-Fi, chamados SSIDs, e o comportamento de sondagem dos dispositivos podem revelar informações sobre redes próximas e usadas anteriormente. Redes ocultas não oferecem privacidade significativa e podem fazer com que os dispositivos procurem ativamente por elas.
Defina um endereço Wi-Fi privado para reduzir o rastreamento de rede.
Defina a segurança da rede sem fio para WPA3. Siga as orientações da Apple para definir as configurações recomendadas para roteadores e pontos de acesso.
Para conexões SSH remotas, use uma chave SSH exclusiva protegida por frase secreta ou token de hardware, verifique as chaves de host do servidor e evite autenticação baseada em senha. Consulte drduh/config/ssh_config para opções recomendadas de cliente.
Um túnel SSH pode rotear o tráfego com segurança por meio de outro computador, semelhante a uma VPN. Para usar o Privoxy em execução em um host remoto na porta 8118:```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
Ou usar uma conexão SSH como um [proxy SOCKS](https://www.mikeash.com/ssh_socks.html):```bash
ssh -NCD 3000 [email protected]
Por padrão, o macOS não tem o Remote Login (servidor SSH) habilitado.
Para habilitar o SSH e permitir conexões de entrada, use System Settings > General > Sharing ou o comando:```bash sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Desative a autenticação por senha e considere [endurecer](https://stribika.github.io/2015/01/04/secure-secure-shell.html) ainda mais a configuração do servidor SSH. Consulte [drduh/config/sshd_config](https://github.com/drduh/config/blob/main/sshd_config) para obter opções recomendadas.
Confirme que o servidor SSH está em execução:```bash
sudo lsof -Pni TCP:22
Não deixe o computador sem supervisão em locais inseguros. Um atacante habilidoso com acesso físico sem supervisão pode instalar um keylogger de hardware para registrar teclas digitadas, incluindo senhas. Usar um Mac com teclado integrado ou um teclado bluetooth torna isso mais difícil, pois muitas versões prontas desse ataque são projetadas para serem conectadas entre um teclado USB e o computador.
Para reduzir as consequências de roubo enquanto um Mac está em uso, considere usar buskill/buskill-app ou Lennolium/swiftGuard.
Considere adquirir uma tela/filtro de privacidade para uso em público.
Esmalte de unha e selos de evidência de violação podem ser aplicados aos componentes para detectar adulteração.
Monitore os logs do sistema com o Console ou o comando log stream.
Imprima todos os logs do sistema dos últimos 5 minutos no formato clássico syslog:```bash log show --last 5m --style syslog
Saída como array JSON:```bash
log show --last 5m --style json
Saída de JSON delimitado por nova linha (um objeto JSON por linha); necessário para jq:```bash log show --last 5m --style ndjson
Filtrar mensagens por subsistema, por exemplo de `com.apple.SoftwareUpdate`:```bash
log show --last 1h --style json \
--predicate 'subsystem == "com.apple.SoftwareUpdate"'
Filtrar mensagens por conteúdo, por exemplo contendo failed:```bash
log show --last 1h --predicate 'eventMessage CONTAINS "failed"'
Filtragem de mensagens sem diferenciar maiúsculas de minúsculas:```bash
log show --last 1h --predicate 'eventMessage CONTAINS[c] "error"'
Conte mensagens de erro distintas com jq:```bash
log show --last 1h --style ndjson
--predicate 'eventMessage CONTAINS[c] "error"' |
jq -r '.eventMessage' | sort | uniq -c | sort -nr | head -100
Exporte os registos para um arquivo, que pode ser aberto com o Console:```bash
log collect --last 1h --output ~/Downloads/logs-$(date +%F-%H%M).logarchive
A Proteção de Integridade do Sistema interfere com o DTrace e deve ser parcialmente desativada antes do uso.
iosnoop monitora E/S de discoopensnoop monitora aberturas de arquivosexecsnoop monitora processoserrinfo monitora chamadas de sistema com falhadtruss monitora todas as chamadas de sistemaConsulte man -k dtrace para mais informações.
Liste os processos em execução com o Monitor de Atividades ou o comando ps.
Liste as conexões de rede abertas:```bash sudo lsof -Pni
Liste o conteúdo de várias estruturas de dados relacionadas à rede:```bash
sudo netstat -n -p tcp
sudo netstat -n -p udp | sort | uniq
O Wireshark pode ser usado a partir da linha de comando com o tshark.
Substitua en0 pela interface ativa exibida por networksetup -listallhardwareports.
[!IMPORTANT] Capture tráfego apenas em redes e sistemas que você está autorizado a monitorar.
Monitore 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=,
Monitore 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
Monitore certificados 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
# Diversos
## Protetor de tela
Configure para que a tela bloqueie assim que o protetor de tela iniciar:```bash
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
Desative Diagnostics & Usage Data.
Desative o repórter de falhas (a caixa de diálogo que aparece depois que um aplicativo trava e solicita que você relate o problema à Apple):```bash defaults write com.apple.CrashReporter DialogType none
## Media player
Use o [QuickTime Player](https://en.wikipedia.org/wiki/Quicktime_player), o aplicativo de mídia integrado, para reproduzir arquivos de música e vídeo. Ele usa [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) e se beneficia do [Signed System Volume](https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web) como parte do sistema base.
## Manipuladores de arquivos
Gerencie os [manipuladores de arquivos padrão](https://support.apple.com/guide/mac-help/choose-an-app-to-open-a-file-on-mac-mh35597) para reduzir o risco de abrir determinados tipos de arquivo.
Altere o aplicativo padrão para arquivos de script para que, ao abri-los, o conteúdo seja exibido em vez de executá-los.
No Finder, localize e selecione qualquer arquivo .sh, clique com o botão direito e selecione Obter Informações ou pressione <kbd>Command</kbd> + <kbd>I</kbd>. Na seção "Abrir com", selecione TextEdit no menu suspenso. Se não estiver listado, selecione "Outro..." e Aplicativos > TextEdit.app. Selecione "Alterar todos..." e confirme selecionando Continuar.
## Opções do Finder
Mostrar arquivos ocultos e a pasta Biblioteca no Finder:```bash
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library
Mostrar todas as extensões de nome de arquivo:```bash defaults write NSGlobalDomain AppleShowAllExtensions -bool true
Não defina o padrão de salvar documentos no iCloud:```bash
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
Defina um umask personalizado:```bash sudo launchctl config user umask 077
Reinicie, depois crie um arquivo/diretório e verifique as permissões (o padrão do macOS permite acesso de leitura para 'grupo/outros'):```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
Ative a entrada de teclado segura no Terminal (isso pode interferir com aplicativos como o TextExpander).
Desative os anúncios de multicast Bonjour (isso também desativa os recursos AirPlay e AirPrint):```bash
sudo defaults write /Library/Preferences/com.apple.mDNSResponder
NoMulticastAdvertisements -bool YES
Desative os recursos [Handoff](https://support.apple.com/guide/mac-help/change-airdrop-handoff-settings-mchl6a407f99) e [Bluetooth](https://support.apple.com/guide/mac-help/turn-bluetooth-on-or-off-blth1008).
## Sudoers
O macOS inclui esta linha em `/etc/sudoers`:```bash
Defaults env_keep += "HOME MAIL"
Isto impede que o sudo altere o HOME quando os privilégios são elevados. Como resultado, programas executados com sudo podem usar arquivos de configuração do diretório inicial do usuário que invoca. Considere remover HOME de env_keep, a menos que esse comportamento seja especificamente necessário.
Para manter a conveniência de o usuário root ter o diretório inicial de um usuário não root, acrescente uma linha de exportação a /var/root/.zshrc, por exemplo:```bash
export HOME=/Users/user1
# Software relacionado
Software | Categoria | Descrição
:-: | :-: | :-
[lynis](https://github.com/CISOfy/lynis) | Scanner de auditoria | Ferramenta de auditoria de segurança multiplataforma que verifica a configuração do sistema e sugere melhorias de reforço.
[zentral](https://github.com/zentralopensource/zentral) | Plataforma de monitoramento e configuração | Servidor de gerenciamento de frota para endpoints macOS; coleta inventário, eventos, auditorias e resultados do osquery. Mais adequado para ambientes gerenciados.
[osquery](https://github.com/osquery/osquery) | Mecanismo de monitoramento | Expõe o estado do sistema operacional como tabelas SQL, permitindo verificações repetíveis de processos, usuários, itens de inicialização, conexões de rede e muito mais.
[pareto-mac](https://github.com/paretoSecurity/pareto-mac) | Scanner de auditoria | Aplicativo de barra de menus que verifica um Mac em relação às recomendações comuns de segurança de linha de base.
# Recursos adicionais
- [Visão geral de segurança e privacidade do iCloud](https://support.apple.com/102651)
- [Guia de Autodefesa contra Vigilância da EFF](https://ssd.eff.org/)
- [beerisgood/macOS_Hardening](https://github.com/beerisgood/macOS_Hardening)
- [Blog de engenharia reversa de macOS](https://reverse.put.as/)
- [Recursos de engenharia reversa](http://samdmarshall.com/re.html)
- [Blog da Malwarebytes](https://www.malwarebytes.com/blog)
- [Blog do Objective-See](https://objective-see.com/blog.html)
- [CIS Benchmarks](https://www.cisecurity.org/benchmark/apple_os/)
- [Apple Open Source](https://opensource.apple.com/)
- [iOS, o futuro do macOS, liberdade, segurança e privacidade em um ambiente global cada vez mais hostil](https://gist.github.com/iosecure/357e724811fe04167332ef54e736670d)
| Adversário | Motivação | Capacidades | Mitigação |
|---|
| Colega de quarto | Ver conversas privadas ou histórico de navegação | Proximidade física; pode ver a tela ou observar credenciais | Use autenticação biométrica (impressão digital ou rosto), use um filtro de privacidade para a tela, mantenha o telefone bloqueado quando não estiver usando |
| Ladrão | Desbloquear o telefone e roubar informações pessoais, esvaziar contas bancárias, vender o telefone por dinheiro | Observar a senha sendo digitada, roubar dispositivo conectado deixado sem supervisão | Manter posse física do dispositivo o tempo todo, bloquear dispositivos quando não estiverem em uso, evitar digitar a senha em público, usar Buscar ou serviços semelhantes para rastrear ou desativar remotamente dispositivos roubados |
| Criminoso | Ganho financeiro | Engenharia social (enganar um usuário para revelar informações ou realizar ações inseguras), malware facilmente disponível, reutilização de senhas, exploração de vulnerabilidades | Execute softwares em sandbox, ative os recursos de segurança do sistema operacional, mantenha as atualizações de software automáticas |
| Corporação | Marketing baseado em dados do usuário | Coleta de telemetria e dados comportamentais | Bloqueie conexões de rede, redefina identificadores específicos do dispositivo, evite adicionar dados de pagamento |
| Estado-nação/APT | Vigilância direcionada | Vigilância passiva da infraestrutura da internet, análise avançada de criptografia | Use software de código aberto, credenciais fortes do tipo diceware, hardware com elemento seguro, desligue os dispositivos quando não estiverem em uso, alertas de tripwire/honeypot/canary tokens |
| Comando | Tarefa |
|---|
sudo pfctl -t blocklist -T show | mostrar blocklist |
sudo pfctl -s rules | mostrar regras ativas |
sudo pfctl -s states | mostrar tabela de estados |
sudo ifconfig pflog0 create | criar interface de registro de pacotes |
sudo tcpdump -ni pflog0 | monitorar pacotes bloqueados |
| Comando | Tarefa |
|---|
launchctl list | exibir tarefas do usuário |
sudo launchctl list | exibir tarefas do sistema |
launchctl list com.apple.Finder | examinar um serviço |
systemextensionsctl list | listar extensões do sistema |
ls /System/Library/LaunchDaemons | listar daemons do sistema |
ls /System/Library/LaunchAgents | listar agentes do sistema |