خطوات تأمين الخادم الافتراضي الخاص بنا

يوضح هذا البرنامج التعليمي كيفية تجهيز خادم افتراضي خاص (VPS) وتأمينه باستخدام دبيان جنو / لينكس. قبل البدء ، يتم افتراض بعض الأشياء:

  1. لديك مستوى متوسط ​​من الإلمام بـ GNU / Linux.
  2. هناك خادم افتراضي خاص للاستخدام الشخصي يمكننا الوصول إليه عبر SSH.
  3. يحتوي VPS على ipv4 250.250.250.155 خارجي مخصص ويمتلك مزودنا الكتلة 250.250.0.0/16. (1)
  4. في VPS الخاص بنا ، سيكون لدينا خدمات http و https و ssh ممكّنة للوصول من الخارج.
  5. لن يتم تمكين DNS الخارجي لأنه يتم عادة في لوحة مزودنا. (2)
  6. ستعمل كمستخدم خارق.

تركيب

كخطوة أولى ، لنقم بتحديث الخادم وتثبيت بعض الحزم التي سنحتاجها:

# aptitude update & aptitude safe-Upgrade # aptitude -RvW install dropbear gesftpserver sslh iptables-persistent ulogd fail2ban nginx-light apache2-utils dnsutils telnet ghostscript poppler-utils zip unzip unrar-free p7zip-full less multitail tee

ترتيب

الآن سنقوم بإنشاء مستخدم عمل. العمل كجذر على الخادم غير آمن ، لذلك سننشئ أولاً مستخدمًا خاصًا:

adduser عامل مستخدم مستخدم aG sudo

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

ضبط الأذونات للمستخدمين المتميزين

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

visudo

يسمح هذا الأمر بشكل أساسي بتعديل الملف / الخ / sudoers؛ التي يجب أن تحتوي على هذه الأسطر:

الافتراضيات env_reset ، timestamp_timeout = 0٪ sudo ALL = (ALL: ALL) ALL

في السطر الأول يتم إضافة الخيار إلى القيم الافتراضية timestamp_timeout الذي يسمح لك بتعيين وقت انتهاء الصلاحية (بالدقائق) لكلمة المرور عند تنفيذ الأمر sudo. القيمة الافتراضية هي 5 ، ولكن هذا غير آمن في بعض الأحيان لسببين:

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

لتجنب المخاطر ، قمنا بتعيين القيمة على صفر ، أي أنه في كل مرة يتم فيها تنفيذ الأمر sudo ، يجب إدخال كلمة المرور. إذا تم تعيين قيمة سالبة كـ -1 ، فإن التأثير هو أن كلمة المرور لا تنتهي صلاحيتها أبدًا ، مما ينتج عنه النتيجة المعاكسة لما نريد.

في السطر الثاني ، تم توضيح أن مجموعة sudo يمكنها تنفيذ أي أمر على أي جهاز كمبيوتر ، وهو أمر معتاد ، على الرغم من إمكانية تعديله. (3) هناك من يضع السطر على النحو التالي لتسهيل الأمر لتجنب الاضطرار إلى كتابة كلمة المرور:

٪ sudo ALL = (الكل: الكل) NOPASSWD: الكل

ومع ذلك ، كما أوضحنا من قبل ، هذا أمر محفوف بالمخاطر ، وبالتالي لا ينصح به.

تعطيل إعادة التشغيل

لأسباب أمنية ، سنقوم أيضًا بتعطيل إعادة التشغيل باستخدام مجموعة المفاتيح CTRL + ALT + ديل، والتي يجب أن نضيف هذا السطر في الملف / الخ / inittab:

ca: 12345: ctrlaltdel: / bin / echo "تم تعطيل Ctrl + Alt + Del."

استبدل OpenSSH بـ DropBear

تأتي معظم VPS مثبتًا عليها OpenSSH ، وهو أمر مفيد للغاية بالتأكيد ، ولكن ما لم نكن بحاجة إلى استغلال جميع وظائف OpenSSH ، فهناك بدائل أخف لـ VPS ، مثل دروببير، والتي عادة ما تكون كافية للاستخدام المنتظم. ومع ذلك ، فإن عيب هذا التطبيق هو أنه لا يأتي مع خادم SFTP متكامل ، ولهذا السبب قمنا بتثبيت الحزمة في البداية com.gesftpserver.

لتكوين Dropbear ، سنقوم بتعديل الملف / etc / default / dropbear بحيث تحتوي على هذين السطرين:

NO_START = 0 DROPBEAR_EXTRA_ARGS = "- w -p 127.0.0.1:22 -I 1200 -m"

يتيح السطر الأول الخدمة ببساطة ، بينما يقوم السطر الثاني بعدة أشياء:

  1. تجنب الوصول إلى الجذر.
  2. يضع خدمة الاستماع على المنفذ 22 من الواجهة المحلية (سنشرح السبب لاحقًا).
  3. يضبط وقت الانتظار (20 دقيقة).

SSLH

المنفذ 22 (SSH) معروف جيدًا وهو عمومًا أول من يحاول المتسللون اختراقه ، لذلك سنستخدم المنفذ 443 (SSL) بدلاً منه. يحدث أن يتم استخدام هذا المنفذ للتصفح الآمن عبر HTTPS.

لهذا السبب ، سنستخدم حزمة sslh ، وهي ليست أكثر من مُضاعِف إرسال يحلل الحزم التي تصل إلى المنفذ 443 ، ويوجهها داخليًا إلى خدمة أو أخرى اعتمادًا على نوع حركة المرور SSH أو SSL.

لا يمكن لـ SSLH الاستماع على واجهة تستمع فيها خدمة أخرى بالفعل ، ولهذا السبب جعلنا سابقًا Dropbear يستمع إلى الواجهة المحلية.

الآن ما نحتاج إلى القيام به هو الإشارة إلى sslh الواجهة والمنفذ الذي يجب أن تستمع من خلاله ومكان إعادة توجيه الحزم حسب نوع الخدمة ، ولهذا سنقوم بتعديل ملف التكوين / etc / default / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- المستخدم sslh - Listen 250.250.250.155:443 - ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile / var / run / sslh / sslh. pid "RUN = نعم

أخيرًا ، نعيد تشغيل الخدمات:

خدمة ssh stop && service dropbear start && service sslh

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

إذا كان كل شيء يعمل بشكل صحيح ، فيمكننا الاستمرار في العمل كجذر ، وإذا أردنا إلغاء تثبيت OpenSSH:

sudo su - aptitude -r purge openssh-server

كورتافيجوس

الشيء التالي الذي سنفعله هو فصل السجلات من جدار الحماية إلى ملف منفصل /var/log/firewall.log لتسهيل المزيد من التحليل ، ولهذا السبب قمنا بتثبيت حزمة ulogd عند بدء التشغيل. لهذا سنقوم بتحرير الملف /etc/logd.conf لتعديل القسم ذي الصلة:

[LOGEMU] file = "مزامنة / var / log / firewall.log" = 1

بعد ذلك ، سنقوم بتعديل ملف تدوير السجل / etc / logrotate / ulogd للاحتفاظ بالتناوب اليومي (مع التاريخ) وحفظ الطلقات المضغوطة في الدليل / var / log / ulog /:

/var/log/ulog/*.log /var/log/firewall.log {daily dateext missingok compress delaycompress sharedscripts إنشاء 640 root adm postrotate /etc/init.d/ulogd reload mv /var/log/firewall.log-* .gz / var / log / ulog / endcript}

ثم سننشئ قواعد netfilter بتنفيذ ما يلي:

IPT = $ (أي iptables) IPEXT = 250.250.250.155 IPEXTBLK = 250.250.0.0 / 16 IPBCAST = 255.255.255.255 $ IPT -F $ IPT -X $ IPT -Z $ IPT -A INPUT -i lo -j ACCEPT $ IPT - P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT ACCEPT $ IPT -A INPUT -m state - State INVALID -j ULOG --ulog-prefix IN_INVALID $ IPT -A INPUT -p igmp -j ULOG --ulog -prefix IN_IGMP $ IPT -A INPUT -m pkttype -pkt-type البث -j ULOG --ulog-prefix IN_BCAST $ IPT -A INPUT -m pkttype --pkt-type multicast -j ULOG --ulog-prefix IN_MCAST $ IPT -A FORWARD -j ULOG --ulog-prefix FORWARD $ IPT -N ICMP_IN $ IPT -A INPUT!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-prefix IN_ICMP_FRAGMENTED $ IPT -A ICMP_IN -p icmp -m icmp -m length!  - الطول 28: 1322 -j ULOG - أولوغ-بادئة IN_ICMP_INVALIDSIZE $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-above 4 / sec -hashlimit-mode srcip --hashlimit-srcmask 24 - -hashlimit-name icmpflood -j ULOG --ulog-prefix IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-upto 64kb / min --hashlimit-mode srcip --hashlimit-srcmask 24 - hashlimit -اسم icmpattack -j ULOG - أولوغ-بادئة IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m u32!  --u32 "0x4 & 0x3fff = 0x0" -j ULOG - بادئة أولوج IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  - icmp من نوع echo-request -m state - State NEW -j ULOG --ulog-prefix IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -j ULOG --ulog- البادئة IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp - icmp-type echo-request -m limit - Limit 1 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp - icmp-type echo-response -m Limit 2 / sec - Limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type destination-unreachable -m limit - limit 2 / ثانية - Limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type time-overd -m-Limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp - معامل نوع معامل-مشكلة -m حد - حد 2 / ثانية - حد-انفجار 4 -j قبول $ IPT -A ICMP_IN -j RETURN $ IPT -N UDP_IN $ IPT -A INPUT!  -i lo -p udp -j UDP_IN $ IPT -A UDP_IN!  -أنا لو!  -p udp -f -j ULOG --ulog-prefix IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp - رياضة بطول 53 مترًا!  - الطول 28: 576 -j ULOG - أولوغ-بادئة IN_UDP_DNS_INVALIDSIZE $ IPT -A UDP_IN -p udp -m udp - ميناء 53 -m -state - الحالة الجديدة -j ULOG - أولوغ-بادئة IN_UDP_DNSREQUEST $ IPT - UDP_IN -p udp -m udp -dport 53 -m -state - State NEW -j REJECT -reject-with icmp-port-unreachable $ IPT -A UDP_IN -p udp -m udp!  --الرياضة 53!  -s $ IPEXTBLK!  -d $ IPBCAST -m state - State NEW -j ULOG --ulog-prefix IN_UDP $ IPT -A UDP_IN -p udp -m udp -m state - State ESTABLISHED، ذات الصلة -j ACCEPT $ IPT -A UDP_IN -j عائد $ IPT -N TCP_IN $ IPT -A INPUT!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -أنا لو!  -p tcp -f -j ULOG - بادئة أولوج IN_TCP_FRAGMENTED $ IPT -A TCP_IN -p tcp -m tcp - حالة رياضية 53 مترًا - الحالة مُحددة ، ذات طول بطول متر!  - الطول 513: 1500 -j ULOG - أولوغ-بادئة IN_TCP_DNS_INVALIDSIZE $ IPT -A TCP_IN -p tcp -m tcp - حالة ميناء 53 م - الحالة الجديدة -j ULOG - أولوغ-بادئة IN_TCP_DNS $ IPT -A TCP_IN -p tcp -m tcp -dport 53 -m state -state NEW -j REJECT -reject-with icmp-port-unreachable $ IPT -A TCP_IN -p tcp -m tcp -m multort!  - dports 80,443،80,443 -m state - State NEW -j ULOG --ulog-prefix IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multort --dports 4،16 -m state - State NEW -m hashlimit - ما يصل إلى 80,443 / ثانية - الهاشليميت - انفجار XNUMX - وضع حد الحد - srcip - اسم هاشليميت navreq - j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multort --dports XNUMX،XNUMX -m state - ESTABLISHED -م متواصل!  --connlimit-above 16 -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multiport! 

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

لا تسمح كل VPS بتثبيت وحدات إضافية لـ netfilter ، ولكن هناك فائدة كبيرة منها مديرية الأمن العام، مما يسمح لك بتجنب عمليات فحص المنافذ. لسوء الحظ ، لا يتم دمج هذه الوحدة في netfilter افتراضيًا ، لذلك من الضروري تثبيت حزم معينة ثم بناء الوحدة:

aptitude -RvW install iptables-dev xtables-addons-source module-assistant module-assistant - verbose - text-mode auto-install xtables-addons-source

بمجرد الانتهاء من ما سبق ، يمكننا إضافة قاعدة مثل هذه:

iptables -A INPUT -m psd -psd-weight-threshold 15 -psd-delay-threshold 2000 --psd-lo-port-weight 3 -psd-hi-port-weight 1 -j ULOG --ulog- البادئة IN_PORTSCAN

تعني القاعدة السابقة أساسًا أننا سننشئ عدادًا يزداد بمقدار 3 في كل مرة يتم فيها محاولة الوصول إلى منفذ أقل من 1024 وبنسبة 1 في كل مرة يتم فيها محاولة الوصول إلى منفذ أعلى من 1023 ، وعندما يتم ذلك يصل العداد إلى 15 في مدة أقل من 20 ثانية ، وسيتم تسجيل الحزم بواسطة أولوغ كمحاولة في portscan. لا يزال من الممكن التخلص من الحزم مرة واحدة ، ولكن في هذه الحالة نعتزم استخدامها fail2ban، والتي سنقوم بتكوينها لاحقًا.

بمجرد إنشاء القواعد ، يجب أن نتخذ احتياطات معينة لجعلها مستمرة ، وإلا فسوف نفقدها عند إعادة تشغيل الخادم. هناك عدة طرق لتحقيق ذلك؛ سنستخدم في هذا البرنامج التعليمي الحزمة iptables-persistent التي قمنا بتثبيتها في البداية ، والتي تخزن القواعد فيها /etc/iptables/rules.v4 y /etc/iptables/rules.v6 لـ ipv6.

iptables-save> /etc/iptables/rules.v4

في الواقع ، على الرغم من أن استخدام IPv6 في كوبا لم ينتشر بعد ، يمكننا وضع بعض القواعد الأساسية:

IPT = $ (أي ip6tables) $ IPT -P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT ACCEPT $ IPT -A INPUT -i lo -j ACCEPT $ IPT -A INPUT! -i lo -m state - State ESTABLISHED، ذات الصلة -j ACCEPT unset IPT

يمكن أيضًا جعل هذه القواعد ثابتة:

ip6tables-save> /etc/iptables/rules.v6

أخيرًا ، لمزيد من الأمان ، نقوم بتنظيف سجل جدار الحماية وإعادة تشغيل الخدمات:

echo -n> /var/log/firewall.log سجل خدمة إعادة تشغيل خدمة ulogd إعادة تشغيل خدمة iptables-persistent

إنجن إكس

سنستخدم Nginx كخادم ويب ، لأن VPSs عادةً ما تحتوي على كمية أقل من ذاكرة الوصول العشوائي مقارنة بالخادم الحقيقي ، لذلك من الملائم عمومًا أن يكون لديك شيء أخف من Apache.

قبل تهيئة Nginx ، سننشئ شهادة (بدون كلمة مرور) لاستخدامها عبر HTTPS:

cd / etc / nginx openssl genrsa -des3 -out cert.key 4096 cp -v cert.key cert.key.original openssl req -new -key cert.key -out cert.csr openssl rsa -in cert.key.original - out cert.key openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

بمجرد الانتهاء من ذلك ، سننشئ ملف كلمة مرور للمستخدم "elusuario":

htpasswd -c .htpasswd المستخدم

بعد ذلك ، سنقوم بتعديل الملف / الخ / إنجن إكس / مواقع متاح / الافتراضي لتعيين تفضيلات الموقع الافتراضية. يمكن أن يبدو مثل هذا:

الخادم {server_name localhost ؛ index.html index.htm default.html default.htm ؛ الجذر / var / www ؛ location / {# عيّن ترتيب التحقق والصفحة المراد تحميلها ، إذا لم يتم العثور على URI try_files $ uri $ uri / /index.html؛ }} الخادم {listen 127.0.0.1:443 ؛ server_name localhost ؛ index.html index.htm default.html default.htm ؛ الجذر / var / www ؛ تشغيل SSL ssl_certificate cert.crt ؛ ssl_certificate_key cert.key ؛ ssl_session_timeout 5 م ؛ # تمكين HTTPS فقط عبر TLS (أكثر أمانًا من SSL) ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ؛ # أعط الأفضلية للأصفار عالية القوة [HIGH] ، # انقل الأصفار متوسطة القوة [MEDIUM] إلى نهاية القائمة ، # تعطيل الأصفار منخفضة القوة [LOW] (40 و 56 بت) # تعطيل الأصفار باستخدام خوارزميات التصدير [ EXP] # تعطيل الأصفار الفارغة [eNULL] ، بدون مصادقة [aNULL] ، SSL (الإصداران 2 و 3) و DSS (يسمح فقط بالمفاتيح حتى 1024 بت) ssl_ciphers عالية: + متوسط ​​:! منخفضة:! EXP:! aNULL :! eNULL :! SSLv3 :! SSLv2 :! DSS؛ # تفضل طرق تشفير الخادم (يتم استخدام العميل افتراضيًا) ssl_prefer_server_ciphers on ؛ الموقع / {# تمكين المصادقة auth_basic "تسجيل الدخول" ؛ auth_basic_user_file /etc/nginx/.htpasswd ؛ # قم بتعيين ترتيب التحقق وكود الصفحة المراد تحميله ، إذا لم يتم العثور على URI try_files $ uri $ uri / = 404 ؛ # السماح بإنشاء فهرس للمستخدمين المصادق عليهم تشغيل الفهرسة التلقائية ؛ autoindex_exact_size إيقاف ؛ autoindex_localtime قيد التشغيل ؛ }}

نتحقق من صحة التكوين:

nginx -t

أخيرًا ، نعيد تشغيل الخدمة:

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

Fail2Ban

قبل البدء في تكوين Fail2Ban ، لمزيد من الأمان نقوم بإيقاف الخدمة وتنظيف السجل:

fail2ban-client ، ووقف echo -n> /var/log/fail2ban.log

بعد ذلك ، نقوم بإنشاء ملف التكوين /etc/fail2ban/jail.local مع المحتوى المخصص التالي:

# ملف التكوين المخصص /etc/fail2ban/jail.local # [DEFAULT] findtime = 43200 ؛ 12 ساعة بان تايم = 86400 ؛ 1 يوم ماكس = 3 ؛ سيسري الحظر بعد تمكين المحاولة الرابعة [ssh] = خطأ [nginx-auth] ممكّن = مرشح صحيح = nginx-auth action = iptables-multiport [name = NoAuthFailures، port = "http، https"] logpath = / var / log / nginx * / * خطأ * .log [nginx-badbots] ممكّن = مرشح صحيح = إجراء apache-badbots = iptables-multiport [name = BadBots، port = "http، https"] logpath = / var / log / nginx * /*access*.log bantime = 4 ؛ 604800 week maxretry = 1 [nginx-login] ممكّن = مرشح صحيح = nginx-login action = iptables-multiport [name = NoLoginFailures، port = "http، https"] logpath = / var / log / nginx * / * access *. سجل bantime = 0 ؛ 1800 دقيقة [nginx-noscript] ممكّنة = إجراء صحيح = iptables-multiport [name = NoScript، port = "http، https"] filter = nginx-noscript logpath = /var/log/nginx*/*access*.log maxretry = 30 [nginx-proxy] ممكّن = إجراء صحيح = iptables-multiport [name = NoProxy، port = "http، https"] عامل تصفية = nginx-proxy logpath = /var/log/nginx*/*access*.log bantime = 0 ؛ أسبوع واحد maxretry = 604800 [جدار الحماية] ممكّن = إجراء صحيح = iptables-multiport [name = Firewall] filter = firewall logpath = /var/log/firewall.log maxretry = 1

بمجرد الانتهاء من ذلك ، نقوم بإنشاء في الدليل /etc/fail2ban/filters.d/ الملفات التالية:

# /etc/fail2ban/filter.d/nginx-auth.conf # عامل تصفية المصادقة # كتل عناوين IP التي تفشل في المصادقة باستخدام المصادقة الأساسية # [التعريف] failregex = لم يتم توفير مستخدم / كلمة مرور للمصادقة الأساسية. * العميل: المستخدم. * غير موجود في. * العميل: المستخدم. * كلمة المرور غير متطابقة. * العميل: ignoreregex =
# /etc/fail2ban/filter.d/nginx-login.conf # عامل تصفية تسجيل الدخول # Blocks IPs التي تفشل في المصادقة باستخدام صفحة سجل تطبيق الويب # سجل الوصول إلى HTTP 200 + POST / Session => فشل تسجيل الدخول # [التعريف ] failregex = ^ -. * POST / جلسات HTTP / 1 \ .. "200 ignoreregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf # مرشح Noscript # منع عناوين IP التي تحاول تنفيذ البرامج النصية مثل .php و .pl و .exe وغيرها من النصوص المضحكة. # المطابقات ، مثل # 192.168.1.1 - - "GET /something.php # [التعريف] failregex = ^ -. * GET. * (\. Php | \ .asp | \ .exe | \ .pl | \ .cgi | \ scgi) ignoreregex =
# /etc/fail2ban/filter.d/proxy.conf # عامل تصفية البروكسي # منع عناوين IP التي تحاول استخدام الخادم كبروكسي. # المطابقات ، مثل # 192.168.1.1 - - "احصل على http://www.something.com/ # [التعريف] failregex = ^ -. * احصل على http. * Ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf # عامل تصفية جدار الحماية # [التعريف] failregex = ^. * IN_ (INVALID | PORTSCAN | UDP | TCP |). * SRC = . * $ ignoreregex =

أخيرًا ، نبدأ الخدمة ونحمل التكوين:

fail2ban-service -b fail2ban- إعادة تحميل العميل

التحقق

كخطوة أخيرة ، يمكننا عرض السجلات باستخدام الذيل -f o متعدد الصفحات - متابعة الكل. في الواقع ، يوفر التطبيق الأخير ميزة أنه يسمح بمشاهدة ملفات متعددة في نفس الوقت ويوفر تمييزًا أساسيًا لبناء الجملة.

في حالة عدم تكوين حساب بريد إلكتروني في VPS ، يُنصح بتعطيل رسالة تحذير تظهر عند بدء تشغيل متعدد البريد ، والتي سنقوم بتنفيذ الأمر التالي لها:

صدى "check_mail: 0"> ~ / .multitailrc

في الواقع ، يمكننا إنشاء اسم مستعار (4) لعرض السجلات بسرعة باستخدام أمر قصير ، على سبيل المثال ، "flog":

alias flog = 'multitail --follow-all /var/log/firewall.log /var/log/fail2ban.log'

1) هذه قيم خيالية.
2) يعد تمكين الخدمات الأخرى أمرًا سهلاً بمجرد فهم كيفية عمله.
3) لمزيد من التفاصيل ، قم بتشغيل man sudoers.
4) اختياريًا يمكن إضافته إلى الملف ~ / .bash_aliases


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   MSX قال

    هناك بعض الأشياء الممتعة ، +1

  2.   يوكيتيرو قال

    Hugo هذا الخط في التكوين:

    ssl_protocols SSLv3 TLSv1 ؛

    أود إزالة SSLv3 منه لأن هذا البروتوكول لم يعد آمنًا ، حتى في Debian Jessie ، تم تكوين العديد من الخدمات لتجنب استخدام هذا البروتوكول لهذا السبب.

    معلومات عن الموضوع هنا:

    https://www.linode.com/docs/security/security-patches/disabling-sslv3-for-poodle
    http://disablessl3.com/

    1.    هوغو قال

      لم تكن الفكرة في الواقع تقديم الخدمات الرئيسية عبر HTTPS ، ولكن لشرح كيفية استخدام المنفذ 443 لـ SSH دون فقدان إمكانية استخدامه لـ HTTPS إذا لزم الأمر ، ولكن شكرًا على التحذير.

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

  3.   دانيال بي زد قال

    شكرًا جزيلاً لك على هذا البرنامج التعليمي الرائع، والآن سأضعه موضع التنفيذ! :د، استمر في ذلك DesdeLinux، يفاجئونني دائمًا، تحية من بيرو.

  4.   نانديكورا قال

    شكرا جزيلا لتقاسم لك.

  5.   فرناندو قال

    دليل جيد جدًا وهو يأتي من اللآلئ الآن بعد أن بدأت في هذا التدوين ولكن أكثر من ذلك الآن لأنني على وشك تثبيت أول vps الخاص بي وحتى مع العديد من المشاكل ولكن هذا المقال أخرجني من الكثير من الشكوك والشكر والتحية