Terapia severa: cura para MacOS

Dirás que todo aquí y fuera de la caja está bien y todo parece ser ingenioso, hasta la generación automática de dicha contraseña para sitios web que ni siquiera se percibe visualmente desde el quinto intento, sin embargo, imagina que es importante para nosotros protegernos no solo de los piratas informáticos cotidianos, sino también de los propios desarrolladores del sistema.

Mi investigación sobre estos temas comenzó desde el momento en que se lanzó OS X Lion 10.7, e inicialmente utilicé un software de terceros que fue pagado y muy efectivo para la protección, hasta que descubrí lo que estaba sucediendo y por qué este software cubre tal resultado.

En realidad, aquí hay un script simple que suprime el control del firewall a través de los servicios internos del sistema MacOS basado en anclajes y le da control directamente al filtro de paquetes, que bloquea todas las conexiones entrantes en general:

# # 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 

No olvide marcar la casilla para habilitar el firewall en las preferencias. Para verificar que PF se está ejecutando, simplemente ejecute en la terminal

 sudo pfctl -sa 

Aquí se presentan brevemente patrones de reglas para administrar conexiones e interfaces, y la configuración en sí misma bloquea el tráfico entrante tanto como sea posible. Si está completamente paranoico, simplemente comente la omisión del conjunto de líneas en lo0 y guardará el sistema desde un servidor web en funcionamiento y bloqueará el acceso de la mayoría de las aplicaciones a la interfaz de bucle de retorno (bucle de terminal).

Lo0 suele ser útil para bloquear si te gusta jugar juegos pirateados desde torrentes, que a menudo son reparados por un exploit u otra basura.

La segunda cosa que hace el script es, con el consentimiento del usuario, establecer configuraciones avanzadas de seguridad del kernel.

Aquí hay una breve 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 

Estos parámetros del kernel ajustan la política de conexión de red, incluidos todos los RFC posibles y bloquean todo el ruido posible (eco, redirecciones, etc.), y el parámetro kern.securelevel = 1, que puede ser extremadamente útil para el probador de lápiz, merece especial atención.

kern.securelevel = 2 bloqueará por completo la capacidad de instalar cualquier paquete en el sistema. Generalmente apretado. Pero el sistema no perderá rendimiento.

También volteé los puertos de aplicaciones que requerían valores altos y los bajé para que el tráfico no fuera más cómodo de "escuchar".

A continuación, el script agregó opciones de personalización para algunas opciones de visualización del Finder y pequeñas configuraciones para Safari. Por ejemplo, vale la pena deshabilitar AV Foundation y otras funciones de medios, ya que con una sola imagen de división de un sitio web, el sistema puede ser pirateado a través de transmisiones de audio y video.

En general, es extraño, pero incluso iTunes en MacOS lo sigue, así que prefiero un tanque lleno.

El parche está disponible en GitHub . Para comenzar a usar

 sudo ./fix.sh 

Si tiene alguna sugerencia o enmienda, sugiero compartir sus pensamientos en los comentarios.

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


All Articles