تصفية المحتوى في المدرسة على أساس Ubuntu 18.04 و Squid الشفاف ، مع الاندماج في الشبكة على MikroTik وليس فقط



1. مقدمة


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

2. الاختصاصات


المقدمة: 436-FZ ومدرسة يتم فيها توصيل العديد من أجهزة الكمبيوتر بالشبكة وتوصيلها بالإنترنت من خلال جهاز توجيه MikroTik أو أي جهاز آخر.

الهدف: القيام بتصفية محتوى HTTP و HTTPS حسب القائمة البيضاء للجميع باستثناء إدارتك الحبيبة وإدارتك.


3. حل المشكلات


تم العثور على كمبيوتر مكتبي غير مستخدم مع Intel-ohm ثنائي النواة وذاكرة وصول عشوائي سعتها 1 غيغابايت و 80 غيغابايت الثابت.
لحل هذا ، سيتم القيام بما يلي:

  1. تم تثبيت خادم Linux Ubuntu 18.04 LTS
  2. يتم تثبيت Squid شفاف الوكيل وتهيئته على الخادم ، ويتم تجميعه من أكواد المصدر بدعم HTTPS.
  3. دمج الخادم في الشبكة الفرعية ، عن طريق إعادة توجيه الطلبات إلى الخادم الوكيل أو خيار بديل (في النهاية)

لنبدأ.

3.1. تثبيت وتكوين أوبونتو 18.04


عملية التثبيت بسيطة. قم بتنزيل توزيع Ubuntu Server 18.04 من الموقع الرسمي. أوصي بالتنزيل باستخدام برنامج التثبيت القديم ، نظرًا لأن الإصدار الجديد - شخصيًا مني - قد تم تنزيله بشكل غير محدود أثناء التثبيت. نكتب الصورة إلى محرك / قرص فلاش USB بأي طريقة مريحة. للتسجيل على محرك أقراص فلاش USB ، أوصي باستخدام Rufus وفي بداية التسجيل حدد "تسجيل صورة DD". بعد ذلك ، باتباع المعلومات التي تظهر على الشاشة ، قم بتثبيت النظام. نحن نركز فقط على اختيار المكونات ، حيث يمكنك على الفور اختيار OpenSSH وهذا كل شيء. لا نحتاج كثيرًا ، لكننا بحاجة إلى تثبيت ما نحتاج إليه.

لذلك ، تم تثبيت أوبونتو. تم تكوين الشبكة بالفعل ، إذا كان لديك DHCP. سندخل وضع الخارق بحيث لا نضيف في كل مرة أوامر sudo إلى الأوامر.

sudo -s 

أدخل كلمة المرور الخاصة بك وقم بتحديث النظام.

 apt-get update apt-get upgrade 

تثبيت محرر نصوص ومدير الملفات.

 apt-get install nano mc 

لحفظ الملف في nano ، يجب عليك الضغط على Ctrl + O متبوعًا بـ Y. الخروج من المحرر بالضغط على Ctrl + X. يمكنك حفظ الملف مباشرة قبل الخروج عن طريق الضغط على Ctrl + X متبوعًا بـ Y.
لفتح مدير الملفات ، اكتب mc . يتم فتح NortonCommander DOS أو Windows TotalCommander / FAR نموذجي مع اثنين من اللوحات. على الرغم من أنني معتاد على العمل مع وحدة التحكم ، إلا أن مدير الملفات يساعد أحيانًا ، على سبيل المثال ، في العثور على الملف المطلوب بشكل أسرع.

إذا لم يكن لديك DHCP أو تريد عنوان IP منفصل لخادمك ، كما أردت ، فسننتقل إلى التكوين.

تكوين عنوان IP ثابت
على عكس الإصدارات السابقة من Ubuntu ، في 18.04 الجديدة ، لم تعد الشبكة مكونة في الواجهات المعتادة / etc / network / ، ولكن عبر netplan في ملف /etc/netplan/*.yaml . قد يتم تسمية الملف بشكل مختلف ، لكنه موجود بمفرده. / الخ / شبكة / واجهات نفسها يكتب لنا ما يلي:



أيضًا ، إذا كنت ترغب في الترقية من إصدار أقدم من 18.04 ، فستظل إعدادات الشبكة في مكانها. Netplan مناسب فقط للتثبيت النظيف لـ 18.04.

دعنا ننكب على إعداد الشبكة.

أولاً ، دعونا نلقي نظرة على اسم واجهة الشبكة المخصصة لنظام التشغيل ، ونتذكرها.

 ifconfig 

الآن افتح ملف الإعدادات.

 nano /etc/netplan/*.yaml 

يجب أن يكون بالفعل إعداد DHCP. لنجلب الملف إلى النموذج التالي.

 # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets:   : dhcp4: no dhcp6: no addresses: [/24] gateway4:  nameservers: addresses: [77.88.8.7, 77.88.8.3] 

أدخل الواجهة والعنوان والعبارة. يوصي DNS ترك هذه - Yandex.DNS الأطفال سيكون بمثابة حماية إضافية. تم تكوين نفس DNS في جهاز التوجيه الخاص بي. في أي حال ، يجب عليك تحديد DNS الذي يوزعه جهاز التوجيه.

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

تطبيق الإعدادات.

 netplan apply 

إعادة تشغيل الخادم ، فقط في حالة.

 reboot 


أيضًا ، أضاف خيار تهيئة شبكة بديلة لكل من DHCP و IP الثابت ، إذا لم يكن netplan مناسبًا.
إعداد الشبكة البديلة
في Ubuntu 18.04 ، يمكنك الرجوع إلى خيار تكوين الشبكة المألوف من خلال / etc / network / واجهات . للقيام بذلك ، يشير الملف نفسه إلى أنك بحاجة إلى تثبيت الأداة المساعدة ifupdown . تثبيته:
 apt-get install ifupdown 

الآن افتح ملف الإعدادات الأولية في netplan
 nano /etc/netplan/*.yaml 

والتعليق على جميع محتوياته بحيث لا توجد تعارضات.
بعد ذلك ، افتح ملف إعدادات الشبكة
 nano /etc/network/interfaces 

وأضف إليها:
ل IP ثابت
 auto ___ iface ___ inet static address IP- netmask  gateway  dns-nameservers 77.88.8.7 77.88.8.3 

للديناميكية (DHCP)
 auto ___ iface ___ inet dhcp 

إعادة تشغيل الخادم
 reboot 

إذا كنت تستخدم هذا الخيار لتكوين الشبكة ، ثم في إعدادات جدار الحماية ، يمكنك إلغاء الاشتراك من Webmin تمامًا واستخدام خيار التكوين تحت المفسد (على الرغم من أن الخيار مع Webmin سيعمل أيضًا)


أنت الآن بحاجة إلى تمكين مرور الحزم عبر خادمنا. افتح الملف /etc/sysctl.conf
 nano /etc/sysctl.conf 

نحن نبحث عن السلسلة net.ipv4.ip_forward = 1 فيها ونلغيها . إذا كانت القيمة 0 ، فقم بالتغيير إلى 1 .
أدخل الأمر لتطبيق الإعداد
 sysctl -p /etc/sysctl.conf 


بعد إعداد الشبكة ، أوصي بأن تذهب مباشرةً إلى الجهاز ، وأن تواصل العمل فيه. للقيام بذلك ، إذا لم تقم بتحديد OpenSSH أثناء مرحلة التثبيت ، فقم بتثبيته.

 apt-get install ssh 

بشكل افتراضي ، يتم تكوين SSH بالفعل لتسجيل دخول المستخدم / كلمة المرور على المنفذ 22 ، ولكن يمكنك تهيئته بنفسك من خلال ، على سبيل المثال ، مفتاح ترخيص ومع منفذ آخر لحماية الخادم من الهجمات الخارجية. كيفية القيام بذلك مليء بالمعلومات على شبكة الإنترنت.

كمحطة ، أنا استخدم XShell. يمكنك استخدام الشخص الذي تفضله.

لا نحتاج إلى خادم DHCP وبطاقة شبكة ثانية ، حيث سنقوم بإعادة توجيه طلبات المستخدم إلى وكيلنا باستخدام جهاز التوجيه نفسه.

وضعت الأساس. الآن دعنا ننتقل إلى تثبيت وتكوين Squid.

3.2. تثبيت وتكوين الحبار مع دعم HTTPS وتصفية القائمة


3.2.1. بناء وتثبيت الحبار

نظرًا لعدم وجود حزمة Squid جاهزة مع دعم طبقة المقابس الآمنة في المستودعات ، يجب عليك تجميعها يدويًا من المصدر. أولاً ، افتح الملف مع المستودعات.

 nano /etc/apt/sources.list 

في ذلك نحن uncomment (حذف # في البداية) الأسطر التي تبدأ بـ deb-src .

بعد ذلك ، سنقوم بتحديث الحزم.

 apt-get update 

بعد ذلك ، قم بتثبيت أدوات التجميع.

 apt-get install fakeroot build-essential devscripts 

وإضافة جميع الحزم اللازمة للتجميع.

 apt-get build-dep squid3 

تثبيت المكتبة لدعم SSL.

 apt-get install libssl1.0-dev 

دعنا نذهب إلى المجلد الرئيسي وإنشاء مجلد للتجميع ، على الفور تعيين الحقوق اللازمة لذلك.

 cd ~ mkdir build chown _apt:root build 

انتقل إلى المجلد الذي تم إنشاؤه وتنزيل مصادر Squid.

 cd build apt-get source squid3 

سيظهر مجلد في مجلد الإنشاء مع اسم squid3 ورقم الإصدار. على Ubuntu 18.04.3 هو 3.5.27. دعنا نذهب إلى ذلك.

 cd squid3-3.5.27 

قبل التجميع ، يجب عليك تحديد الخيارات. افتح الملف معهم.

 nano debian/rules 

نحن نبحث عن قائمة بالخيارات ، كما في الصورة


أضف الخيارات التالية.

 --enable-ssl \ --enable-ssl-crtd \ --with-openssl 

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

لذلك ، كل شيء جاهز للتجميع. الآن دعنا ننتقل إلى مجلد مصدر Squid ، على الرغم من أنه يجب أن تكون موجودًا فيه بالفعل.

 cd ~/build/squid3-3.5.27 

وأدخل الأمر للبناء.

 debuild -d 

سيستغرق التجميع وقتًا طويلاً للغاية ، استغرق الأمر مني 2 إلى 4 ساعات في المتوسط. يعتمد على سرعة الكمبيوتر. في نهاية التجميع ، سترى خطأ في توقيع الحزمة. هذا طبيعي - تجاهل الخطأ.

اذهب الآن إلى مجلد البناء.

 cd ~/build 

وتثبيت الحبار.

 dpkg -i squid*.deb 

واجه على الفور خطأ حول التبعيات غير المرضية وأدخل الأمر

 apt-get install -f 

بعد التثبيت ، نحتفل على الحزم بحيث لا يتم الكتابة فوقها بعد تحديث النظام.

 apt-mark hold squid apt-mark hold squid-common apt-mark hold squidclient 

3.2.2. تكوين الحبار والترشيح

لذلك ، تم تثبيت Squid ، يبقى تكوينه لتلبية احتياجاتنا.

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

 cd /etc/squid cp squid.conf squid.conf.backup cat squid.conf.backup | egrep "^[^#]" > squid.conf 

الآن فتح squid.conf

 nano squid.conf 

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

التكوين Squid.conf
 acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 


الكتلة الأولى هي على النحو التالي.

 acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT 

وهو مسؤول عن معايير ACL القياسية. في ذلك ، في localnet ، نقوم بتغيير الشبكة المحلية إلى شبكتنا الخاصة ، ونضيف أيضًا acl من وقت العمل (اختياري). لقد أضفت وقت العمل نظرًا لحقيقة أن المعلمين غالبًا ما يأتون إلي ويشكون من أنهم لا يستطيعون العثور على أي شيء ، لا يمكن الوصول إلى كل شيء. بالطبع ، أنا سعيد لأن كل شيء يعمل كما ينبغي ، لكن بصراحة ، لقد سئمت من الاستماع إلى هذا. أبلغ الآن عن ادعائهم أنه بعد الساعة 15:00 تم إيقاف تشغيل التصفية ، ويمكنهم بحرية (تقريبًا) العثور على المعلومات التي يحتاجون إليها. يمكنك إضافة وقتك ، أو ترك التصفية على مدار الساعة دون إضافة هذا ACL.

تحدد المجموعة الثانية قوائم المواقع المسموح بها والممنوع لـ HTTP وتبدو كما يلي.

 acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" 

سنقوم بإضافة قوائم بالمواقع المسموح بها والممنوعات لاحقًا ، وسيتم وضعها في ملفات محددة في acl.

الكتلة الثالثة تحدد معلمات الوصول عبر HTTP وتبدو هكذا

 http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all 

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

 http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem 

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

تحدد الكتلة الخامسة معلمات اتصال SSL مع Squid. على وجه الخصوص ، يشير إلى أنه يجب توجيه كل حركة المرور على الإنترنت مباشرةً ، دون استخدام ذاكرة تخزين مؤقت أعلى ، والسماحين الأخيرين بالاتصالات حتى مع وجود أخطاء في التحقق من الشهادة ، حيث يجب اتخاذ قرار زيارة هذا المورد من قبل المستخدم ، وليس الخادم. يبدو مثل هذا.

 always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER 

تعين الكتلة السادسة معلمات acl لقوائم "الأسود" و "البيضاء" ، والتي سيتم إنشاؤها لاحقًا ، وكذلك عمق اعتراض حركة مرور HTTPS.

 acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 

تحدد الكتلة السابعة معلمات الوصول باستخدام بروتوكول HTTPS. هنا ، يكون الحظر والإذن مسؤولين بالفعل عن الإنهاء واللصق ، على التوالي. مرة أخرى ، لا تنسَ إزالة وقت العمل إذا لم يكن لديك وقت عمل محدد.

 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB 

يعين الكتلة الثامنة ذاكرة التخزين المؤقت وسجل الحبار لدينا. تجدر الإشارة هنا إلى المعلمة logfile_rotate فقط ، والتي تشير إلى عدد الأيام التي يتم خلالها تخزين السجل.

 # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 

هذا يكمل الإعداد squid.conf. نحن نحفظ الملف ونتابع إنشاء الشهادة والقوائم.

دعنا نذهب إلى المجلد مع الحبار

 cd /etc/squid/ 

وأدخل الأمر التالي لإنشاء الشهادة

 openssl req -new -newkey rsa:1024 -days 36500 -nodes -x509 -keyout squid.pem -out squid.pem 

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

الآن إنشاء ملفات قائمتنا.

 touch blacklist touch whitelist cp whitelist whitelist_ssl cp blacklist blacklist_ssl 

يتم سرد المواقع في شكل تعبيرات منتظمة. على سبيل المثال ، لإلغاء قفل mail.ru ، افتح القائمة البيضاء

 nano whitelist 

وأضف التعبير التالي إليه.

 mail\.ru 

الآن كتلة Games.Mail.ru. دعنا نفتح قائمتنا السوداء

 nano blacklist 

واكتب التعبير التالي فيه

 games\.mail\.ru 

نظرًا لأنه ، كقاعدة عامة ، يكون حاجب القائمة السوداء أعلى قائمتنا البيضاء ، عندما تقوم بالتبديل إلى mail.ru ، سيتم فتح الموقع كما هو متوقع (باستثناء الصور ، ولكن المزيد حول ذلك لاحقًا) ، وإذا حاولت التبديل إلى الألعاب ، Squid us لن تتركها.

تحتوي بعض المواقع على العديد من النطاقات الفرعية ، والنطاقات الفرعية ، إلخ. كما ، على سبيل المثال ، يخزن mail.ru صوره على imgsmail.ru. فيما يتعلق بالمواقع الأخرى المشابهة ، تحتاج إلى فتح الموقع المطلوب في أي متصفح (أستخدم Chrome) ، ثم أدوات المطور (في Chrome يطلق عليها بالضغط على F12).



انتقل إلى علامة تبويب المصادر وشاهد المصادر الأخرى التي يقوم الموقع بتحميل المعلومات منها.

بعد إضافة المواقع ، انسخها إلى قوائم HTTPS.

 cp whitelist whitelist_ssl cp blacklist blacklist_ssl 

قائمة ملء تلميح
قم بإنشاء ملف نص عادي على جهاز الكمبيوتر الخاص بك ، وابحث عن قائمة المواقع المسموح بها وانسخها ، وأضفها إلى موقعك. بعد ذلك ، في دفتر ملاحظات عادي ، استبدل النقطة تلقائيًا بنقطة مائلة (\.) وحذف النقطة غير الضرورية بنفس الاستبدال التلقائي (www ، http ، الحرف "/" ، إلخ). ثم ، يمكن نسخ هذا الملف ، باستخدام الجهاز ، على الفور إلى الأوراق على الخادم.

تحقق الآن من التكوين.

 squid -k check 

إذا كان كل شيء على ما يرام ، توقف عن الحبار.

 /etc/init.d/squid stop 

إعادة إنشاء ذاكرة التخزين المؤقت

 squid -z 

وتشغيل الحبار مرة أخرى

 /etc/init.d/squid start 

بعد أي تغييرات على القوائم أو تهيئة Squid ، يجب إعادة تحميلها باستخدام الأمر

 /etc/init.d/squid restart 

يمكنك أيضًا تغيير صفحة تقييد الوصول (تعمل فقط على HTTP) ضمن المسار / usr / share / squid / error / ~ Russian-1251 . ابحث في المجلد عن ملف ERR_ACCESS_DENIED وقم بتحريره. بناء جملة الملف هو HTML.

3.3. رصد حالة الخادم وتكوين جدار الحماية


لمراقبة حالة خادمنا ، قم بتثبيت الأداة المساعدة Webmin ، التي نساعد في تكوين جدار الحماية الخاص بنا. بالإضافة إلى ذلك ، من خلاله يمكنك مراقبة حالة وحدة المعالجة المركزية ، وذاكرة الوصول العشوائي ، وما إلى ذلك ، وتحديث الحزم وإضافة مكونات وتكوينها ، وأكثر من ذلك بكثير. لديها محطة خاصة بها ، على الرغم من الخرقاء. تعمل الأداة من خلال أي متصفح ، وبالتالي ، يمكنك الاتصال بخادمنا من أي جهاز كمبيوتر على الشبكة ، وهو مريح بما فيه الكفاية ، على الرغم من أنه غير آمن. إذا رغبت في ذلك ، يمكن أن يقتصر الاتصال فقط على عناوين IP الفردية في "التحكم في الوصول إلى IP" في Webmin نفسه.

قبل بدء التثبيت ، أضف مستودع Webmin. المصادر المفتوحة.

 nano /etc/apt/sources.list 

وأضف السطر أدناه.

 deb http://download.webmin.com/download/repository sarge contrib 

الآن تثبيت مفتاح GPG مع الحزم التي يتم تسجيلها في مستودع Webmin

 cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc 

بعد ذلك نقوم بتحديث قائمة الحزم وتثبيت الأداة

 apt-get update apt-get install webmin 

يمكنك الاتصال بالخادم في أي متصفح عن طريق إدخال شريط العناوين

 IP__:10000 

افتراضيًا ، يتصل Webmin عبر طبقة المقابس الآمنة (SSL) ، وتعطي معظم المتصفحات خطأ غير موثوق في الشهادة. لكي لا تختار الثقة في كل مرة ، قم بتعطيل SSL. للقيام بذلك ، افتح الملف /etc/webmin/miniserv.conf

 nano /etc/webmin/miniserv.conf 

ابحث عن السلسلة ssl = 1 فيها واستبدله بـ ssl = 0 . في نفس الملف ، يمكنك تغيير منفذ الاتصال. افتراضيا هو 10000. يمكنك وضع أي واحد مجانا.

بعد الاتصال بـ Webmin ، انتقل إلى Webmin -> Webmin Configuration وقم بتبديل اللغة إلى اللغة الروسية. ثم انتقل إلى الشبكة -> جدار الحماية . بشكل افتراضي ، جدار الحماية لدينا نظيف. نذهب إلى أسفل ومعاكس " تمكين في التمهيد" حدد "نعم" . انقر فوق "تطبيق التكوين" . الآن يتم تحديد إعدادات جدار الحماية الخاص بنا في ملف /etc/webmin/firewall/iptables.save ويتم تشغيلها مع النظام. إذا لم يكن هناك مثل هذا الملف ، فراجع ما هو مكتوب في السطر "File with rules" في علامة تبويب Firewall في Webmin. دعونا فتحه في المحطة.

 nano /etc/webmin/firewall/iptables.save 

نذهب إلى كتلة * nat وفي النهاية قبل الالتزام نضيف القواعد التالية.

 -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130 

هذه القواعد توجه حركة المرور إلى المنفذين 80 (HTTP) و 443 (HTTPS) من الخادم إلى منافذ Squid لدينا. هنا قدمت خيارين من القواعد مع DNAT و REDIRECT. يمكنك استخدام كليهما ، أو اتخاذ خيار واحد عن طريق وضع المنافذ المناسبة.

تكوين FIrewall لإعداد شبكة بديلة
هذا الخيار مناسب إذا استخدمت إعداد الشبكة البديل الموضح أعلاه.
أولاً ، قم بإنشاء ملف به قواعد جدار الحماية الخاص بنا ومنحه الحق في التنفيذ.
 touch /etc/nat chmod +x /etc/nat 

افتحه
 nano /etc/nat 

وأضف المحتوى التالي
 #!/bin/sh #Firewall iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130 

كما في حالة Webmin ، قمت بتقديم خيارين من القواعد مع DNAT و REDIRECT. يمكنك استخدام كليهما ، أو اتخاذ خيار واحد عن طريق وضع المنافذ المناسبة.
الآن قم بإضافة ملفنا إلى التنزيل فور بدء الشبكة. افتح ملف إعدادات الشبكة
 nano /etc/network/interfaces 

وأضف السطر في أسفل الملف
 post-up /etc/nat 

ملاحظة: ميزة هذا الخيار هي أنه يمكنك إضافة القواعد الخاصة بك في المستقبل فقط عن طريق تحرير ملف / etc / nat. Webmin هو أكثر تعقيدا قليلا.

هذا يكمل إعداد الخادم. إعادة تشغيله.

 reboot 

ودعنا ننتقل إلى إعداد جهاز التوجيه MikroTik.

3.4. تكوين جهاز توجيه MikroTik لإعادة توجيه حركة المرور إلى الوكيل


نفترض أنك قمت بالفعل بتنزيل الأداة المساعدة WinBox للتحكم عن بعد ، وتم تكوين الإنترنت والشبكة المحلية ، وجدار الحماية على جهاز التوجيه نظيف. تعرف اسم واجهة الشبكة المحلية (يمكنك رؤيته في IP - خادم DHCP - DHCP ).

أ) انتقل إلى WinBox ، انتقل إلى IP - خادم DHCP - التأجير . في القائمة ، نبحث عن أجهزة كمبيوتر IP لن تعمل التصفية من أجلها (المخرج ، الإدارة) ، وانقر بزر الماوس الأيمن عليها واختر Make Static في القائمة. بجانبهم ، يجب أن تختفي الحرف "D" ، وهو ما يعني الديناميكي. سيتم الآن تعيين هذه العناوين بشكل ثابت بشكل ثابت على أجهزة الكمبيوتر هذه ، بغض النظر عن وقت التأجير ، عن طريق عنوان MAC. إذا تم استخدام الكمبيوتر المحمول عبر شبكة Wi-Fi وكابل ، فيجب عليك تحديد Make Static على كلا عنوانين MAC.

ب) بعد ذلك ، انتقل إلى IP - جدار الحماية - قوائم العناوين وانقر فوق علامة الجمع الزرقاء "+" . في حقل الاسم ، حدد اسم مجموعتنا من العناوين المشرقة غير المصفاة ، على سبيل المثال ، "المسؤولون". في حقل العنوان ، حدد عنوان IP واحدًا من أولئك الذين تم تعيين عنوان ثابت لهم. نكرر هذا لكل عنوان ، ونختار مجموعتنا في حقل الاسم مع سهم.

ج) انتقل إلى علامة التبويب Mangle في نفس IP - جدار الحماية وانقر على "+" . سيتم فتح نافذة كلفه. في علامة التبويب عام ، املأ الحقول التالية:

 Chain - Prerouting Src. Address - __proxy Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __ 

في علامة التبويب " إجراء" ، تحقق من القيمة قبول وانقر فوق "موافق".

كرر العملية ، ولكن في حقل التوقيت الصيفي. تعيين المنفذ القيمة إلى 443 .

د) انقر فوق "+" مرة أخرى وعلى علامة التبويب عام نملأ مرة أخرى الحقول التالية:

 Chain - Prerouting Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __ 

انتقل إلى علامة التبويب خيارات متقدمة وفي حقل Src. حدد قائمة العناوين قائمة عناوين الإدارة " المسؤولين " الخاصة بنا . تأكد من النقر فوق المربع الظاهر بجوار القائمة. علامة تعجب "!" سوف تظهر . ، وهذا يعني منطقية لا أو سلبية.

انتقل إلى علامة التبويب " الإجراء" واملأ الحقول:

 Action - mark routing New Routing Mark - to_proxy Passthrough -   

انقر فوق "موافق" وقم بتنفيذ نفس الإجراءات ، ولكن في الحقل Dst. حدد المنفذ القيمة 443 .

ه) وأخيرا ، إضافة القاعدة الأخيرة. انقر فوق علامة الجمع، وملء في المجالات التالية في علامة التبويب الجنرال :

 Chain - Prerouting In. Interface - __ Routing Mark - to_proxy 

نتيجة لذلك ، يجب أن يحدث ما يلي مع المعلمات الخاصة بك. النظام مهم!



و) نذهب في طرق IP - ونضغط على "+". املأ الحقول التالية:

 Dst. Address - 0.0.0.0/0 Gateway - __proxy Routing Mark - to_proxy 

انقر فوق موافق وهذا كل شيء. عند تشغيل الخادم ، سوف تمر جميع حركات HTTP و HTTPS عبر Squid.

3.5. الإعداد البديل ل MikroTik وأجهزة التوجيه الأخرى


هذا الخيار مناسب لكل من جهاز التوجيه MikroTik وأي جهاز آخر ، حتى أنه أبسط (باستثناء قطع الموفر المستأجرة التي تعرفها بنفسك). في هذه الحالة ، ننفذ مشاركة الوصول إلى الإنترنت ليس على جهاز التوجيه ، ولكن على Squid نفسه. لذلك دعونا نبدأ.
أ) سنفترض أنك وصلت إلى هذه النقطة من خلال استكمال جميع الخطوات المذكورة أعلاه ، بما في ذلك إعداد إعادة التوجيه إلى Proxy في MikroTik. لتشغيل الخيار الموضح بدون مشاكل ، نحتاج إلى إلغاء الفقرة الفرعية هـ) من الفقرة 3.4 من هذه المقالة. يمكنك إلغاء النقطة بأكملها 3.4 (مغادرة ، ربما ، الفقرة الفرعية أ) حتى لا تتغير عناوين IP الخاصة بنا) ، ولكن هذا أمر اختياري - من المهم بالنسبة لنا إلغاء التوجيه نفسه. للقيام بذلك ، انتقل إلى IP - Routes ، وابحث عن طريقنا ، وحدده وانقر على الصليب الأحمر (ليس علامة زائد ، لكن الصليب بجوار علامة الاختيار). سوف يتحول المسار إلى اللون الرمادي => تم تعطيله. تم إيقاف تشغيل التصفية ، والآن يذهب جميع العملاء إلى الإنترنت مباشرةً عبر جهاز توجيه.

ب) انتقل الآن إلى الخادم الخاص بنا وانتقل إلى المجلد باستخدام Squid
 cd /etc/squid/ 

افتح ملف التكوين
 nano squid.conf 

ونضيفه إلى كتل:
في أول كتلة مباشرة بعد السطر مع ACL localnet ...
 acl admins src "/etc/squid/admins-ip" # IP   acl students src "/etc/squid/students-ip" # IP   

لا نحتاج إلى قائمة تحتوي على أجهزة كمبيوتر للمعلمين ، حيث يُفهم أن الجميع معلم. ولكن يمكنك إضافتها بنفسك مع القواعد المقابلة في الكتل الأخرى.
في الكتلة الثانية
 acl whitelist-stud url_regex -i "/etc/squid/whitelist-stud" #      

في الكتلة الثالثة بعد http_access ينكر القائمة السوداء
 http_access allow admins #      http_access allow students whitelist-stud #       http_access deny students #        

علاوة على ذلك ، تظل الكتلة كما هي ، نظرًا لأن المعلمين (جميع عناوين IP الأخرى) يتبعون ، ويقومون بالتصفية حسب قائمتهم البيضاء وأثناء ساعات العمل (إذا كان ذلك موضحًا). يمكنك أيضًا السماح لمجموعة المسؤولين بتجاوز القائمة السوداء عن طريق تعيين قاعدة السماح أعلى القائمة المحظورة ، أو إضافة عناوين IP منفصلة (على سبيل المثال ، ملكك الخاص) إلى قائمة ACL منفصلة ووضعها في القواعد أعلى القائمة السوداء.
الكتل الرابعة والخامسة لم تتغير.
في الكتلة السادسة ، أضف
 acl whitelist-stud_ssl ssl::server_name_regex -i "/etc/squid/whitelist-stud_ssl" 

في المجموعة السابعة ، أضف بعد إنهاء ssl_bump blacklist_ssl
 ssl_bump splice admins ssl_bump splice students whitelist-stud_ssl ssl_bump terminate students 

المبدأ هو نفسه كما في الكتلة الثالثة.
الباقي لم يتغير. حفظ والخروج

ج) الآن إنشاء قوائم عناوين IP الخاصة بنا.
 touch admins-ip touch students-ip 

والقوائم البيضاء للطلاب.
 touch whitelist-stud cp whitelist-stud whitelist-stud_ssl 

أضف عناوين IP والمواقع المطلوبة إلى القوائم المناسبة. في قائمة مواقع الطلاب ، يمكنك نسخ القائمة للمدرسين عن طريق إزالة المواقع التي لا يحتاج إليها الطلاب. يتم نسخ الملفات على نظام Linux بواسطة الأمر
 cp <    > <    > 

أعد تشغيل الحبار
 /etc/init.d/squid restart 


د) لقد توصلنا إلى أهم شيء ، وهو كيفية جعل العملاء يتجهون عبر الإنترنت عبر وكيلنا. نحتاج إلى تغيير بوابة خادم DHCP الخاص بنا من عنوان جهاز التوجيه إلى عنوان خادمنا. بالطبع ، لهذا ، يجب أن يكون عنوان الخادم ثابتًا ، أو مرتبطًا بـ MAC.
في MikroTik:
اذهب إلى IP - خادم DHCP - الشبكة وانقر نقرًا مزدوجًا على شبكتنا. في حقل Gateway ، قم بتغيير عنوان الموجه إلى عنوان الخادم الوكيل. انقر فوق موافق وهذا كل شيء. يمكنك إعادة تشغيل جهاز التوجيه بحيث يتم تحديث الإعدادات بشكل صحيح لجميع العملاء النشطين. بعد ذلك ، من المحتمل أن يغير العملاء نوع الشبكة إلى عام (إذا كانت خاصة).
في جهاز التوجيه العادي:
ابحث في الدليل عن جهاز التوجيه الخاص بك حيث يمكنك تغيير بوابة خادم DHCP ، لكنني سأذكر ما في إعداداته :)

خلاصة القول: نتيجة لهذا الحل البديل ، تمكنا من ضبط الوصول عبر IP والقوائم ، والحصول على عناوين IP العادية للعملاء في سجلات Squid. إذا كنت بحاجة إلى بعض العملاء للاتصال بالإنترنت لتجاوز البروكسي عبر جهاز توجيه ، فاقرأ المفسد.
تجاوز الإنترنت الوكيل
, - Squid , , ,


4. الخلاصة


لذلك ، لتلخيص كل ما سبق. لقد نجحنا في تثبيت Linux Ubuntu 18.04 LTS وتكوينه من نقطة الصفر ، وإنشاء وتثبيت Squid بدعم HTTPS ، وتكوين تصفية القائمة البيضاء ، ودمج خادم Proxy في شبكتنا دون الحاجة إلى تثبيت خادم DHCP إضافي.

5. قائمة المصادر


عندما استخدمت خلق المواد مجموعة متنوعة من المواد من مواقع المدونات التقنية المتخصصين في "واجهة" و سلامة الويب - الشبكة لاختيار الشبكة ، فضلا عن المعرفة الشخصية والخبرة.
عند تحرير وإكمال المقال ، ساعد المستخدمون التاليون كثيرًا: Kanlas ، PetRiot ، Barsook . شكرا جزيلا لهم على المساعدة والمساعدة.

6. ملاحظات المؤلف


  1. يجب أن يتم أي عمل مع الخادم في وضع الخارق عن طريق إضافة sudo قبل الأمر ، أو عن طريق إدخال الأمر sudo -s مرة واحدة .
  2. Squid \ , , , . .
  3. , . , 1000 .
  4. , IP- Squid. Squid IP- — Mikrotik. , DHCP , . , , , IP .Barsook
  5. لكي يعمل Squid مع عدد كبير من العملاء (أكثر من 50) ، يلزم وجود 1 غيغابايت على الأقل من ذاكرة الوصول العشوائي. أكثر من الأفضل ، كما الحبار يأكل الذاكرة. يمكنك التحقق من حالة الذاكرة عن طريق إدخال الأمر الأعلى .
  6. أوصي باستخدام كلا الخيارين لتكوين جهاز التوجيه ، لأنه إذا قمت بتحديد بوابة مختلفة بشكل صريح في إعدادات الشبكة (جهاز التوجيه نفسه) ، فيمكنك تجاوز القفل.


UPD1: إضافة تكوين شبكة بديل وجدار حماية
UPD2: أضاف خيار تكوين بديل لجهاز التوجيه ، حيث تم إصلاح مشاكل عرض العناوين في سجلات Squid.
UPD3: إضافة إصلاح في 3.1 - تمكين الحزم بالمرور عبر الخادم ، والذي نسي إضافته في البداية. خلاف ذلك ، فإن الإنترنت لا يعمل. بفضل Dmitry1986 لاختبار المادة.

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


All Articles