Vous direz que tout va bien ici et hors de la boîte et tout semble ingénieux, jusqu'à la génération automatique d'un tel mot de passe pour les sites Web qui n'est même pas perçu visuellement dès la cinquième tentative, cependant, imaginez qu'il est important pour nous de nous protéger non seulement contre les pirates de tous les jours, mais aussi des développeurs de systèmes eux-mêmes.
Mes recherches sur ces problèmes ont commencé à partir du moment où OS X Lion 10.7 est sorti et j'ai d'abord utilisé un logiciel tiers payé et très efficace pour la protection, jusqu'à ce que je comprenne ce qui se passait et pourquoi ce logiciel couvrait un tel résultat.
En fait, voici un script simple qui supprime le contrôle du pare-feu via les services internes du système MacOS basé sur les ancres et donne le contrôle directement au filtre de paquets, qui bloque toutes les connexions entrantes en général:
# # 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'oubliez pas de cocher la case pour activer le pare-feu dans les préférences. Pour vérifier que PF est en cours d'exécution, il suffit de l'exécuter dans le terminal
sudo pfctl -sa
Voici des modèles de règles brièvement collectés pour la gestion des connexions et des interfaces, et le paramètre lui-même bloque autant que possible le trafic entrant. Si vous êtes complètement paranoïaque, il suffit de commenter le jeu de saut sur la ligne lo0 et vous enregistrerez le système à partir d'un serveur Web fonctionnel et empêcherez la plupart des applications d'accéder à l'interface de bouclage (boucle de terminal).
Lo0 est généralement utile pour bloquer si vous aimez jouer à des jeux piratés à partir de torrents, qui sont souvent corrigés par un exploit ou d'autres déchets.
La deuxième chose que fait le script est, avec le consentement de l'utilisateur, la configuration des paramètres avancés de sécurité du noyau.
Voici une courte liste:
# 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
Ces paramètres du noyau renforcent la politique de connexion au réseau, y compris tous les RFC possibles et bloquent tout le bruit possible (écho, redirections, etc.), et le paramètre kern.securelevel = 1, qui peut être extrêmement utile pour le testeur de plume, mérite une attention particulière.
kern.securelevel = 2 bloquera complètement la possibilité d'installer des packages sur le système. Généralement serré. Mais le système ne perdra pas ses performances.
J'ai également inversé les ports d'applications nécessitant des valeurs élevées et les ai atterris plus bas afin que le trafic ne soit pas plus confortable à «écouter».
Ensuite, le script a ajouté des options de personnalisation pour certaines options d'affichage du Finder et de petits paramètres pour Safari. Par exemple, il vaut la peine de désactiver AV Foundation et d'autres fonctions multimédias, car avec une seule image de fractionnement d'un site Web, le système peut être piraté via des flux audio et vidéo.
En général, c'est étrange, mais même iTunes sur MacOS suit, donc je préfère un réservoir plein.
Le patch
est disponible sur GitHub . Pour commencer à utiliser
sudo ./fix.sh
Si vous avez des suggestions ou des amendements, je vous suggère de partager vos réflexions dans les commentaires.