Terapia Grave: Cura para MacOS

Você dirá que tudo aqui e fora da caixa está bem e tudo parece engenhoso, até a geração automática de uma senha para sites que nem sequer é percebida visualmente a partir da quinta tentativa, no entanto, imagine que é importante nos proteger não apenas dos hackers comuns, mas também dos próprios desenvolvedores do sistema.

Minha pesquisa sobre esses problemas começou a partir do momento em que o OS X Lion 10.7 foi lançado e, inicialmente, usei software de terceiros que era pago e muito eficaz para proteção, até descobrir o que estava acontecendo e por que esse software cobre esse resultado.

Na verdade, aqui está um script simples que suprime o controle do firewall através dos serviços internos do sistema MacOS com base em âncoras e fornece controle diretamente ao filtro de pacotes, que bloqueia todas as conexões de entrada em geral:

# # Ninja PF configuration file( original located on /etc/pf.conf.backup ). # # This file contains the main ruleset, which gets automatically loaded # at startup. PF will not be automatically enabled, however. Instead, # each component which utilizes PF is responsible for enabling and disabling # PF via -E and -X as documented in pfctl(8). That will ensure that PF # is disabled only when the last enable reference is released. # # Care must be taken to ensure that the main ruleset does not get flushed, # as the nested anchors rely on the anchor point defined here. In addition, # to the anchors loaded by this file, some system services would dynamically # insert anchors into the main ruleset. These anchors will be added only when # the system service is used and would removed on termination of the service. # # See pf.conf(5) for syntax. # # ICMP configure icmp_types = "{echoreq, echorep, unreach}" icmp6_types = "{echoreq, unreach, echorep, 133, 134, 135, 136, 137}" netbios_types = "{137,138,139}" interfaces = "{en0, en1, en2, en3, en4}" # Base policy set fingerprints "/etc/pf.os" set block-policy drop set state-policy if-bound set require-order yes set optimization aggressive set ruleset-optimization none set skip on lo0 scrub in all fragment reassemble no-df min-ttl 64 max-mss 1440 scrub out all random-id block in log all pass out quick flags S/SA modulate state # Antispoofing antispoof quick for $interfaces inet antispoof quick for $interfaces inet6 # More secure settings block in from urpf-failed to any block in quick on $interfaces from any to 255.255.255.255 block in quick on $interfaces from any to 255.255.255.0 # ICMP policy block in inet proto icmp all icmp-type $icmp_types keep state block in inet6 proto icmp6 all icmp6-type $icmp6_types keep state block in on $interfaces proto {tcp,udp} from any to any port $netbios_types 

Não se esqueça de marcar a caixa para ativar o firewall nas preferências. Para verificar se o PF está em execução, basta executar no terminal

 sudo pfctl -sa 

Aqui estão alguns padrões de regras coletados brevemente para gerenciar conexões e interfaces, e a própria configuração bloqueia o tráfego de entrada o máximo possível. Se você é completamente paranóico, basta comentar o conjunto pular na linha lo0 e você salvará o sistema de um servidor da web em funcionamento e impedirá que a maioria dos aplicativos acesse a interface de loop back (loop terminal).

Lo0 geralmente é útil para bloquear se você gosta de jogar jogos piratas de torrents, que geralmente são corrigidos por uma exploração ou outro tipo de lixo.

A segunda coisa que o script faz é, com o consentimento do usuário, definir configurações avançadas de segurança do kernel.

Aqui está uma pequena lista:

 # 10.13.4 system ctl configuration # Kernel IPC overrides kern.ipc.somaxconn=100 # kernel security level(0, 1 - soft security level or 2 - can't install any software) kern.securelevel=1 # Speed up TM backups debug.lowpri_throttle_enabled=0 kern.coredump=0 # Networking settings net.link.ether.inet.max_age=600 net.inet.ip.redirect=0 net.inet6.ip6.redirect=0 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.ip.linklocal.in.allowbadttl=0 net.inet.icmp.bmcastecho=0 net.inet.icmp.icmplim=50 net.inet.icmp.maskrepl=0 net.inet.udp.blackhole=1 net.inet.tcp.blackhole=2 net.inet.tcp.delayed_ack=2 net.inet.tcp.always_keepalive=0 net.inet.tcp.rfc3390=1 net.inet.tcp.rfc1644=1 net.inet.tcp.tso=0 # Incoming and outgoing port ranges net.inet.tcp.sack_globalmaxholes=2000 net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 net.inet.ip.portrange.hifirst=1024 net.inet.ip.portrange.hilast=2500 net.inet.ip.check_interface=1 net.inet.tcp.keepidle=50000 net.inet.ip.rtmaxcache=1024 net.inet.tcp.path_mtu_discovery=0 net.inet6.icmp6.rediraccept=0 net.inet.tcp.msl=4500 net.inet6.icmp6.nodeinfo=0 net.inet6.ip6.accept_rtadv=0 net.inet6.ip6.auto_linklocal=1 net.inet6.ip6.only_allow_rfc4193_prefixes=1 net.inet6.icmp6.nd6_onlink_ns_rfc4861=1 

Esses parâmetros do kernel reforçam a política de conexão de rede, incluindo todas as RFCs possíveis e bloqueiam todo o ruído possível (eco, redirecionamentos etc.), e o parâmetro kern.securelevel = 1, que pode ser extremamente útil para o testador de caneta, merece atenção especial.

O kern.securelevel = 2 bloqueará completamente a capacidade de instalar qualquer pacote no sistema. Geralmente apertado. Mas o sistema não perderá o desempenho.

Também inverti as portas de aplicativos que exigiam valores altos e as aterrissei mais baixo, para que o tráfego não fosse mais confortável para "ouvir".

Em seguida, o script adicionou opções de personalização para algumas opções de exibição do Finder e pequenas configurações para o Safari. Por exemplo, vale a pena desabilitar o AV Foundation e outras funções de mídia, pois, com uma única imagem de um site, o sistema pode ser invadido por fluxos de áudio e vídeo.

Em geral, é estranho, mas até o iTunes no MacOS segue, então eu prefiro um tanque cheio.

O patch está disponível no GitHub . Para começar a usar

 sudo ./fix.sh 

Se você tiver alguma sugestão ou alteração, sugiro compartilhar seus pensamentos nos comentários.

Source: https://habr.com/ru/post/pt421221/


All Articles