العلاج الشديد: علاج MacOS

ستقول أن كل شيء هنا وخارجه على ما يرام ويبدو كل شيء مبتكرًا ، حتى الإنشاء التلقائي لكلمة المرور هذه لمواقع الويب التي لا يتم إدراكها بصريًا من المحاولة الخامسة ، ومع ذلك ، تخيل أنه من المهم بالنسبة لنا حماية أنفسنا ليس فقط من المتسللين العاديين ، ولكن أيضًا من مطوري النظام أنفسهم.

بدأ بحثي حول هذه المشكلات من لحظة إصدار نظام التشغيل OS X Lion 10.7 ، واستخدمت في البداية برامج جهة خارجية مدفوعة وفعالة جدًا للحماية ، حتى اكتشفت ما كان يحدث ولماذا يغطي هذا البرنامج مثل هذه النتيجة.

في الواقع ، إليك نص برمجي بسيط يمنع التحكم في جدار الحماية من خلال الخدمات الداخلية لنظام MacOS استنادًا إلى نقاط التثبيت ويمنح التحكم مباشرة لمرشح الحزمة ، والذي يحظر جميع الاتصالات الواردة بشكل عام:

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

لا تنس تحديد المربع لتمكين جدار الحماية في التفضيلات. للتحقق من أن PF يعمل فقط في المحطة

 sudo pfctl -sa 

فيما يلي أنماط القواعد التي تم جمعها لفترة وجيزة لإدارة الاتصالات والواجهات ، والإعداد نفسه يمنع حركة المرور الواردة قدر الإمكان. إذا كنت مصابًا بجنون العظمة تمامًا ، فما عليك سوى التعليق على مجموعة التخطي على سطر lo0 وستقوم بحفظ النظام من خادم ويب فعال وحظر معظم التطبيقات من الوصول إلى واجهة الحلقة الخلفية (حلقة طرفية).

عادة ما يكون Lo0 مفيدًا للحظر إذا كنت ترغب في لعب ألعاب مقرصنة من السيول ، والتي غالبًا ما يتم إصلاحها بواسطة استغلال أو بعض القمامة الأخرى.

الشيء الثاني الذي يقوم به البرنامج النصي هو ، بموافقة المستخدم ، إعداد إعدادات أمان kernel المتقدمة.

هنا قائمة قصيرة:

 # 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 

تعمل معلمات kernel هذه على تشديد سياسة اتصال الشبكة ، بما في ذلك جميع طلبات RFC المحتملة وحظر جميع الضوضاء المحتملة (الصدى ، وعمليات إعادة التوجيه ، وما إلى ذلك) ، والمعلمة kern.securelevel = 1 ، والتي يمكن أن تكون مفيدة للغاية لفاحص القلم ، تستحق اهتمامًا خاصًا.

kern.securelevel = 2 سيحظر تمامًا القدرة على تثبيت أي حزم على النظام. ضيق بشكل عام. لكن النظام لن يفقد الأداء.

لقد قمت أيضًا بقلب منافذ التطبيقات التي تتطلب قيمًا عالية وهبطتها أقل بحيث لا تكون حركة المرور أكثر راحة "للاستماع إليها".

بعد ذلك ، أضاف البرنامج النصي خيارات التخصيص لبعض خيارات عرض Finder والإعدادات الصغيرة لـ Safari. على سبيل المثال ، يجدر تعطيل AV Foundation ووظائف الوسائط الأخرى ، نظرًا لأن صورة التقسيم الفردية من موقع ويب ، يمكن اختراق النظام من خلال تدفقات الصوت والفيديو.

بشكل عام ، إنه أمر غريب ، ولكن حتى iTunes على نظام MacOS يتبع ، لذلك أفضل دبابة ممتلئة.

يتوفر التصحيح على GitHub . لبدء الاستخدام

 sudo ./fix.sh 

إذا كان لديك أي اقتراحات أو تعديلات ، أقترح مشاركة أفكارك في التعليقات.

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


All Articles