Schwere Therapie: Heilung für MacOS

Sie werden sagen, dass alles hier und sofort in Ordnung ist und alles genial zu sein scheint, bis zur automatischen Generierung eines solchen Passworts für Websites, das ab dem fünften Versuch nicht einmal visuell wahrgenommen wird. Stellen Sie sich jedoch vor, dass es für uns wichtig ist, uns nicht nur vor alltäglichen Hackern zu schützen. sondern auch von den Systementwicklern selbst.

Meine Recherchen zu diesen Themen begannen mit der Veröffentlichung von OS X Lion 10.7. Zunächst verwendete ich Software von Drittanbietern, die kostenpflichtig und für den Schutz sehr effektiv war, bis ich herausfand, was geschah und warum diese Software ein solches Ergebnis abdeckt.

Tatsächlich ist hier ein einfaches Skript, das die Firewall-Kontrolle über die internen Dienste des MacOS-Systems basierend auf Ankern unterdrückt und die Kontrolle direkt an den Paketfilter gibt, der im Allgemeinen alle eingehenden Verbindungen blockiert:

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

Vergessen Sie nicht, das Kontrollkästchen zu aktivieren, um die Firewall in den Einstellungen zu aktivieren. Um zu überprüfen, ob PF ausgeführt wird, führen Sie es einfach im Terminal aus

 sudo pfctl -sa 

Hier werden kurz Muster von Regeln zum Verwalten von Verbindungen und Schnittstellen zusammengestellt, und die Einstellung selbst blockiert den eingehenden Datenverkehr so ​​weit wie möglich. Wenn Sie völlig paranoid sind, kommentieren Sie einfach den Zeilensatzsprung auf lo0 aus, und Sie speichern das System von einem funktionierenden Webserver und blockieren den Zugriff der meisten Anwendungen auf die Loop-Back-Schnittstelle (Terminal-Loop).

Lo0 ist normalerweise nützlich, um zu blockieren, wenn Sie Raubkopien von Torrents spielen möchten, die häufig durch einen Exploit oder einen anderen Müll gepatcht werden.

Das zweite, was das Skript tut, ist mit Zustimmung des Benutzers das Einrichten erweiterter Kernel-Sicherheitseinstellungen.

Hier ist eine kurze Auflistung:

 # 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 

Diese Kernel-Parameter verschärfen die Netzwerkverbindungsrichtlinie einschließlich aller möglichen RFCs und blockieren alle möglichen Störungen (Echo, Weiterleitungen usw.). Der Parameter kern.securelevel = 1, der für den Pen-Tester äußerst nützlich sein kann, verdient besondere Aufmerksamkeit.

kern.securelevel = 2 blockiert die Möglichkeit, Pakete auf dem System zu installieren, vollständig. Im Allgemeinen eng. Das System verliert jedoch nicht an Leistung.

Ich habe auch die Ports von Anwendungen umgedreht, die hohe Werte erfordern, und sie niedriger gelandet, damit der Datenverkehr nicht angenehmer zu „hören“ ist.

Als Nächstes fügte das Skript Anpassungsoptionen für einige Finder-Anzeigeoptionen und kleine Einstellungen für Safari hinzu. Es lohnt sich beispielsweise, AV Foundation und andere Medienfunktionen zu deaktivieren, da das System mit einem einzelnen Splitterbild von einer Website über Audio- und Videostreams gehackt werden kann.

Im Allgemeinen ist es seltsam, aber sogar iTunes unter MacOS folgt, daher bevorzuge ich einen vollen Tank.

Der Patch ist auf GitHub verfügbar . Verwendung starten

 sudo ./fix.sh 

Wenn Sie Vorschläge oder Änderungen haben, empfehle ich Ihnen, Ihre Gedanken in den Kommentaren mitzuteilen.

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


All Articles