نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يتم استهداف خوادم VPS بشكل متكرر من قبل المتسللين. يظهر نوع شائع من الهجمات في سجلات النظام كمئات من محاولات تسجيل الدخول إلى ssh غير المصرح بها. يعد إنشاء جدار حماية مفيدًا جدًا ، ولكن في حد ذاته قد لا يتحكم بشكل كاف في محاولات الاختراق التخريبية.
يوضح هذا البرنامج التعليمي كيفية بناء حاجز اقتحام محسن لـ FreeBSD باستخدام برنامجين ، ipfw
جدار الحماية و sshguard
. SSHGuard هو برنامج إضافي صغير يراقب سجلات النظام للإدخالات "المسيئة". عندما يحاول المخالفين الوصول ، sshguard
يرشد ipfw
إلى منع حركة المرور الناشئة من عنوان IP الخاص بالجاني. ثم يتم إغلاق الجاني بشكل فعال.
بمجرد فهم كيفية عمل هذه البرامج ، تصبح إدارة حماية الخادم بسيطة جدًا. على الرغم من أن هذا الدليل يركز على تكوين FreeBSD ، فإن أجزاء منه تنطبق على نظام التشغيل الآخر وبرامج جدار الحماية.
يوفر FreeBSD 3 جدران حماية في GENERIC
نواة ( ) kernel ipfw
و pf
، و ipfilter
. كل منها له مميزات ipfw
ومعجبين ، ولكنه برنامج جدار حماية FBSD الأصلي ومباشر جدًا للاستخدام لأغراضنا. من الجدير بالذكر أن ipfw
هناك العديد من الأشياء التي تظهرها صفحة الدليل الخاصة بها ، ولكن هناك حاجة إلى قدرات مثل NAT ، وتشكيل حركة المرور ، وما إلى ذلك ، لحالة VPS النموذجية. لحسن الحظ ، فإن الميزات الأساسية لجدار الحماية تلبي متطلباتنا بسهولة.
لبدء جدار الحماية في وقت التمهيد ، أضف ما يلي إلى /etc/rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"
و service
تتوفر الأوامر لبدء / إيقاف جدار الحماية يدويا:
[user@vultr ~]$ sudo service ipfw start
بطبيعة الحال ، ipfw
لن تفعل أي شيء حتى يضيف قواعد ، غالبًا من ملف ، في هذا المثال الموجود في /usr/local/etc/IPFW.rules
. يمكن في الواقع وضع ملف القواعد في أي مكان أو يكون له أي اسم ، طالما أنه يتطابق مع معلمة "firewall_script". يتم وصف ملف القواعد بالتفصيل أدناه.
sshguard
يأتي في العديد من النكهات للاستخدام مع جدران الحماية المختلفة. استخدم pkg
الأداة لجلب وتثبيت sshguard-ipfw
:
[user@vultr ~]$ sudo pkg install sshguard-ipfw
في معظم الحالات ، هذا كل ما يحتاج المرء القيام به. يتم إدخال المتغير المناسب تلقائيًا /etc/rc.conf
لبدء التشغيل عند التمهيد:
sshguard_enable="YES"
عادةً ما تعمل الإعدادات الافتراضية بشكل جيد. إذا كانت القيم المختلفة ضرورية ، تقدم sshguard
الصفحة الرئيسية معلومات تفصيلية حول المعلمات:
# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"
يمكنك البدء بالاستدعاء sshguard
المعتاد service
:
[user@vultr ~]$ sudo service sshguard start
الجزء الأصعب هو إنشاء مجموعة قواعد جدار الحماية. ipfw
يمكن الاستفادة من /etc/rc.firewall
النص البرمجي المقدم ، ولكن يجب تعديله لاستيعاب SSHGuard ، بالإضافة إلى سيناريوهات التشغيل المختلفة. يحتوي عدد من صفحات الويب ودليل FreeBSD على معلومات مفيدة حول القيام بذلك. ومع ذلك ، فإن كتابة ملف القواعد ليس بهذه الصعوبة ، بالإضافة إلى أن مجموعة القواعد المخصصة يمكن أن تكون أسهل في الفهم والتغيير عند الضرورة.
ميزة مهمة ipfw
للقواعد هي أن المباراة الأولى تفوز مما يعني أن ترتيب القواعد مهم. في ipfw
، كل قاعدة هي أمر ، وملف القاعدة هو برنامج نصي shell قابل للتنفيذ. يسمح هذا بتغيير مجموعة القواعد عن طريق تغيير القواعد ثم تشغيل ملف القواعد كبرنامج نصي shell:
[user@vultr /usr/local/etc]$ sudo ./IPFW.rules
بشكل عام ، سيحدد ملف القواعد متغيرًا ipfw
للأمر ، ثم يمسح القواعد الحالية ، ويصدر القواعد العامة ، ثم يتابع وضع القواعد "خارج" ، متبوعًا بقواعد "في". تحتوي صفحة دليل ipfw والموارد الأخرى على ثروة من المعلومات حول هيكل القاعدة والخيارات التي تعد أقل من غيرها.
منذ أن تم تحديث إصدار FreeBSD sshguard إلى الإصدار 1.6.2 ، تغيرت طريقة إدراج قواعد الحظر للمجرمين. الآن يتم الاحتفاظ بعناوين الجناة في جدول ipfw (الجدول 22 محدد) ، بدلاً من إدراجها في القواعد أعلاه 55000 كما كان من قبل.
لحسن الحظ ، من السهل جدًا إعداد ملف القواعد لاستخدام الجدول. إنها مجرد مسألة وضع قاعدة الجدول في المكان الصحيح ، والتأكد من استخدام بناء الجملة الصحيح عند كتابة القاعدة.
عندما sshguard
يعثر على الجاني ، يضع عنوان الجاني في قائمته السوداء ، ويدرج العنوان أيضًا في ipfw
الجدول بحيث "يؤدي" إلى رفض الوصول. ستنجز هذه القاعدة هذه الأغراض:
01000 deny ip from table\(22\) to any
لا يزال من الضروري وضع قواعد تسمح بالخدمات الواردة فوق 01000 في هذه الحالة. على سبيل المثال ، لنفترض أن العنوان 10.20.30.40
هو الجاني في الجدول 22 ، ولدينا قاعدة ipfw هذه:
56420 allow tcp from any to me dst-port 22 in via $vif
منذ ipfw
قاءات حكم 01000 قبل الحكم 56420 ، 10.20.30.40
و منعت . لن يتم رؤيتها أبدًا من خلال قاعدة "السماح بـ 22 بوصة" على الإطلاق. إذا كان لقاعدة السماح رقم "عادي" مثل 00420 ، فسيتم السماح بحركة المرور السيئة ولن يتم حظرها مطلقًا (لأن 00420 أقل من 01000 و "أول فوز يفوز").
ميزة لطيفة في الإصدار المحدث هي أنه عندما يبدأ sshguard الآن يتم إضافة جميع العناوين في القائمة السوداء إلى الجدول وتكون متاحة لمنع المخالفين القادمين دون تأخير. القائمة السوداء تراكمية ويتم الاحتفاظ بها بين الجلسات.
في هذه المرحلة ، ربما يكون من المنطقي إظهار مجموعة ipfw
قواعد كاملة معدلة من أجل sshguard
. يجب أن تجعل التعليقات من السهل جدًا اتباع منطق القاعدة:
#!/bin/sh
# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.
# Flush all rules before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add "
vif="vtnet0"
# allow all for localhost
$cmd 00010 allow ip from any to any via lo0
# checks stateful rules. If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state
# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state
# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state
# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state
# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state
# allow icmp re: ping, et. al.
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state
# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state
# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state
# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state
# otherwise deny outbound packets
# outbound catchall.
$cmd 00299 deny log ip from any to any out via $vif
# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif
# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif
# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif
# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif
# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state
$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2
# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any
# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state
# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif
# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any
تختلف احتياجات النظام وتنعكس الخيارات المختلفة للمنافذ للحظر أو إلغاء الحظر في مجموعة القواعد. بمجرد الانتهاء من مجموعة القواعد ، احفظ الملف في /usr/local/etc/IPFW.rules
، وابدأ خدمات FBSD:
# service ipfw start
# service sshguard start
يجب أن يعمل جدار الحماية المعزز الآن! تحقق sshguard
:
[user@vultr ~]$ sudo pgrep -lfa ssh
إذا كان sshguard
قيد التشغيل ، يتم عرض pid و سطر الأوامر الكامل:
720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid
يعرض هذا مجموعة قواعد جدار الحماية مع الإحصائيات وآخر مرة تطابق الحزمة فيها القاعدة:
[user@vultr ~]$ sudo ipfw -cat list
بعد ساعات أو أيام ، تتم إضافة عناوين الجناة إلى القائمة السوداء وكذلك الجدول 22. لعرض جميع العناوين في الجدول ، استخدم هذا الأمر:
ipfw table 22 list
يتم طباعة النتيجة على النحو التالي:
10.10.10.118/32 0
10.10.10.72/32 0
...
كما هو موضح أعلاه ، لا يُسمح بالاتصالات من هذه العناوين. بالطبع ، عند التشغيل لأول مرة ، sshguard
لن يكون هناك أي عناوين في القائمة ، ولكن بمرور الوقت يمكن أن تكون طويلة إلى حد ما. أحد الخيارات هو إنشاء قواعد حظر منفصلة للعناوين مع إدخالات متعددة في الجدول ثم حذفها من القائمة السوداء.
من الجيد التحقق من السجلات من حين لآخر للتأكد من التحكم في عمليات التطفل. عموما، /var/log/auth.log
و /var/log/security
تكون غنية بالمعلومات. قد تظهر ثغرات أو أخطاء في تغطية خدمات الشبكة. يعد تعديل مجموعة قواعد جدار الحماية حسب الحاجة جزءًا طبيعيًا من إدارة الخادم.
في إصدارات sshguard السابقة ، عندما /var/db/sshguard/blacklist.db
زاد حجم الملف ، يمكن أن يمنع sshguard
من بدء تشغيل النظام. يُسمح بإزالة أو إعادة تسمية ملف القائمة السوداء sshguard
. يبدو أن هذه المشكلة قد تم إصلاحها في أحدث إصدار من sshguard ، لذلك ربما لم يعد هذا الحل البديل ضروريًا.
تأكد من إضافة عنوان IP الذي تتصل بجلسة SSH منه إلى القائمة البيضاء. إذا أغلقت نفسك دون قصد ، فيمكنك دائمًا الاتصال بوحدة التحكم noVNC في https://my.vultr.com وإدراج عنوان IP الخاص بك في القائمة البيضاء.
تلخيص باستخدام تركيبة نظام FreeBSD الخاص بك ipfw
والمساعدة في sshguard
الحفاظ عليه آمنًا والقيام بعمله. إن تقليل نشاط الشبكة المتداخل له فائدة إضافية: "ضوضاء" أقل تجعل من السهل تتبع وضبط تشغيل النظام ، مما يساهم في خادم أفضل وأكثر أمانًا.
حماية نظام / خادم FreeBSD بشكل فعال ليست معقدة بشكل خاص. في حين يلزم بذل جهد متواضع لتشغيله وتشغيله ، فإنه يؤتي ثماره في VPS وأمن المشروع بشكل أكبر.
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد