المزيد من طرق الامان لخادم OpenSSH

img

1. تغيير منفذ SSH والحد من ربط IP

بشكل افتراضي ، يستمع SSH إلى جميع الواجهات المتاحة وعنوان IP على النظام. تقييد ربط منفذ ssh وتغيير منفذ ssh (يحاول العديد من المتوحشين الذين يجبرون البرامج النصية فقط الاتصال بمنفذ TCP رقم 22). للربط بـ 192.168.1.5 و 202.54.1.5 IPs والمنفذ 300 ، أضف أو صحح السطر التالي في sshd_config:
Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5

طريقة أفضل لاستخدام البرامج النصية للنهج الاستباقي مثل fail2ban أو denyhosts عندما تريد قبول الاتصال من عنوان IP الديناميكي لشبكة WAN.

2. استخدام أغلفة TCP (اختياري)

TCP Wrapper هو نظام ACL للشبكات قائم على المضيف ، ويستخدم لتصفية وصول الشبكة إلى الإنترنت. OpenSSH يدعم أغلفة TCP. ما عليك سوى تحديث ملف /etc/hosts.allow على النحو التالي للسماح لـ
SSH فقط من 192.168.1.2 وعنوان IP 172.16.23.12:
sshd : 192.168.1.2 172.16.23.12

3. إحباط مفرقعات SSH / هجمات القوة الغاشمة

القوة الغاشمة هي طريقة للتغلب على مخطط التشفير من خلال تجربة عدد كبير من الاحتمالات (مزيج من المستخدمين وكلمات المرور) باستخدام شبكة كمبيوتر واحدة أو موزعة. لمنع هجمات القوة الغاشمة على SSH ، استخدم البرنامج التالي:

DenyHosts هي أداة أمان تستند إلى Python لخوادم SSH. الغرض منه هو منع هجمات القوة الغاشمة على خوادم SSH من خلال مراقبة محاولات تسجيل الدخول غير الصالحة في سجل المصادقة وحظر عناوين IP الأصلية.
يشرح كيفية إعداد DenyHosts ضمن RHEL / Fedora و CentOS Linux.
Fail2ban هو برنامج مشابه يمنع هجمات القوة الغاشمة ضد SSH.
sshguard يحمي المضيفين من هجمات القوة الغاشمة ضد ssh والخدمات الأخرى باستخدام pf.
security / sshblock حظر محاولات تسجيل الدخول إلى SSH التعسفية.
يمكن اعتبار مرشح IPQ BDB بمثابة fail2ban lite.

4. الحد من معدل حركة المرور الواردة في منفذ TCP رقم 22 (اختياري)

يوفر كل من netfilter و pf خيار حد المعدل لإجراء اختناق بسيط للاتصالات الواردة على المنفذ رقم 22.

مثال Iptables
سيؤدي المثال التالي إلى إسقاط الاتصالات الواردة التي تجري أكثر من 5 محاولات اتصال عند المنفذ 22 في غضون 60 ثانية:
#!/bin/bash
inet_if=eth1
ssh_port=22
$IPT -I INPUT -p tcp –dport ${ssh_port} -i ${inet_if} -m state –state NEW -m recent –set
$IPT -I INPUT -p tcp –dport ${ssh_port} -i ${inet_if} -m state –state NEW -m recent –update –seconds 60 –hitcount 5 -j DROP

استدعاء البرنامج النصي أعلاه من البرامج النصية iptables الخاصة بك. خيار تكوين آخر:
$IPT -A INPUT -i ${inet_if} -p tcp –dport ${ssh_port} -m state –state NEW -m limit –limit 3/min –limit-burst 3 -j ACCEPT
$IPT -A INPUT -i ${inet_if} -p tcp –dport ${ssh_port} -m state –state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o ${inet_if} -p tcp –sport ${ssh_port} -m state –state ESTABLISHED -j ACCEPT
# another one line example
# $IPT -A INPUT -i ${inet_if} -m state –state NEW,ESTABLISHED,RELATED -p tcp –dport 22 -m limit –limit 5/minute –limit-burst 5-j ACCEPT

راجع صفحة دليل iptables لمزيد من التفاصيل.
* مثال BSD PF
سيحد ما يلي من الحد الأقصى لعدد الاتصالات لكل مصدر إلى 20 ويحد معدل عدد الاتصالات إلى 15 في فترة 5 ثوانٍ. إذا خالف أي شخص قواعدنا ، قم بإضافته إلى جدول abusive_ips الخاص بنا وحظره لإجراء أي اتصالات أخرى. أخيرًا ، تقتل الكلمة الأساسية المتدفقة جميع الحالات التي تم إنشاؤها بواسطة قاعدة المطابقة التي تنشأ من المضيف الذي يتجاوز هذه الحدود.
sshd_server_ip="202.54.1.5"
table persist
block in quick from
pass in on $ext_if proto tcp to $sshd_server_ip port ssh flags S/SA keep state (max-src-conn 20, max-src-conn-rate 15/5, overload flush)

5. استخدام طرق المنفذ (اختياري)

ضرب المنفذ هو طريقة لفتح المنافذ على جدار الحماية خارجيًا عن طريق إنشاء محاولة اتصال على مجموعة من المنافذ المغلقة المحددة مسبقًا. بمجرد تلقي التسلسل الصحيح لمحاولات الاتصال ، يتم تعديل قواعد جدار الحماية ديناميكيًا للسماح للمضيف الذي أرسل محاولات الاتصال بالاتصال بالمنفذ (المنافذ) المحددة. مثال على منفذ عينة Knocking لـ ssh باستخدام iptables:
$IPT -N stage1
$IPT -A stage1 -m recent –remove –name knock
$IPT -A stage1 -p tcp –dport 3456 -m recent –set –name knock2

$IPT -N stage2
$IPT -A stage2 -m recent –remove –name knock2
$IPT -A stage2 -p tcp –dport 2345 -m recent –set –name heaven

$IPT -N door
$IPT -A door -m recent –rcheck –seconds 5 –name knock2 -j stage2
$IPT -A door -m recent –rcheck –seconds 5 –name knock -j stage1
$IPT -A door -p tcp –dport 1234 -m recent –set –name knock

$IPT -A INPUT -m –state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp –dport 22 -m recent –rcheck –seconds 5 –name heaven -j ACCEPT
$IPT -A INPUT -p tcp –syn -j door

6. تكوين الفاصل الزمني لتسجيل الخروج

يمكن للمستخدم تسجيل الدخول إلى الخادم عبر ssh ، ويمكنك تعيين فاصل مهلة خامل لتجنب جلسة ssh غير المراقبة. افتح sshd_config وتأكد من تكوين القيم التالية:
ClientAliveInterval 300
ClientAliveCountMax 0

أنت تقوم بتعيين فاصل مهلة خامل بالثواني (300 ثانية == 5 دقائق). بعد مرور هذا الفاصل الزمني ، سيتم طرد المستخدم العاطل تلقائيًا (يُقرأ على أنه تم تسجيل الخروج). تعرف على كيفية تسجيل خروج مستخدمي BASH / TCSH / SSH تلقائيًا بعد فترة من عدم النشاط لمزيد من التفاصيل.

  • Share:
Send a Message