سؤال مئات من تسجيلات الدخول سحن فشلت


كل ليلة أحصل على المئات ، وأحيانًا الآلاف ، من تسجيلات دخول ssh الفاشلة على خادم RedHat 4 الخاص بي. لأسباب جدار الحماية من المواقع البعيدة ، أحتاج إلى تشغيل على المنفذ القياسي. هل هناك أي شيء يجب القيام به لمنع هذا. ألاحظ أن العديد منها يأتي من نفس عنوان IP. ألا يجب أن يتوقف هؤلاء بعد فترة؟


76
2018-06-02 16:18


الأصل




الأجوبة:


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

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP 
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT 

تفترض هذه القواعد أنك تقبل اتصالات ESTABLISHED في وقت سابق في الجدول (بحيث ستصل فقط الاتصالات الجديدة هذه القواعد). ستصل اتصالات SSH الجديدة بهذه القواعد وسيتم تمييزها. في 60 ثانية ، ستؤدي 5 محاولات من عنوان IP واحد إلى إسقاط اتصالات واردة جديدة من IP.

قد عملت بشكل سليم معي.

تحرير: أنا أفضل هذه الطريقة إلى "fail2ban" لأنه لا يوجد برنامج إضافي ليتم تثبيته ، ويحدث بشكل كامل في وضع kernel. إنه لا يتعامل مع تحليل ملفات السجل مثل "fail2ban" ، ولكن إذا كانت مشكلتك فقط مع SSH ، لن أستخدم وضع مستخدم يتطلب تثبيت البرامج ويكون أكثر تعقيدًا.


63
2018-06-02 16:25



أنا أحب هذا الحل وأنا أخطط للحصول عليه في مكانه الليلة ، بمجرد أن أخرج النار اليوم. - MattMcKnight
إنه يبطئ من الهجمات وأنا أوصي به ، ولكن بسبب وجود أخطاء كبيرة في المسح ، فإن ذلك ليس دواءً لكل داء. ستظل هناك عمليات تسجيل دخول غير صحيحة من شبكات الروبوت التي تقوم بتشغيل عمليات مسح موزعة ضدك. ليس هناك الكثير مما يمكنك فعله حيال ذلك ، وهو اختصار لنوع معين من نظام "قرع المنافذ" من أجل توصيل منفذ SSH عن بعد عندما تريد الدخول. - Evan Anderson
إجراء 1+ للاقتراح المقدم من "Evan". بعض المعلومات: linux.die.net/man/1/knockd . ولكن لا تفعل ذلك بطريقة صفحة الرجل (أي إضافة / حذف قواعد iptables) ، ولكن بدلاً من ذلك استخدمها -m condition مباراة iptables بدلا من ذلك. - pepoluan
لا تحتاج - dport 22 في هذه القواعد بحيث يتم تطبيقها فقط لحركة المرور ssh؟ - clime
clime - نعم. من الصعب تصديق أن هذا كان هنا 2 1/2 سنوات ولم يلاحظ أحد! مسكة جيدة. - Evan Anderson


fail2ban يمكن أن تساعد في ذلك عن طريق منع عناوين IP مع محاولات تسجيل الدخول الفاشلة.


38
2018-06-02 16:20



أنا لا أحب أدوات / البرامج النصية قراءة سجلات وإصدار الأوامر نيابة عن المستخدم مسؤول النظام - asdmin
asdmin ، نعم ، خاصة عندما يكونون لدينا مثل سجل حافل ... - maxschlepzig


أنصح باستخدام منفذ غير قياسي لـ SSH إذا استطعت (على سبيل المثال ، المنفذ 10222) ولكن بما أنك ذكرت لا يمكنك فعل ذلك ، أوصي باستخدام شيء مثل DenyHosts.

http://denyhosts.sourceforge.net/

حزمة كبيرة ، سهلة التركيب والتكوين.


25
2018-06-02 17:16



لا أعلم لماذا الناس يرفضون هذا ؛ SSH على المنفذ القياسي 22. وهذا يعني أنه عندما تكون على شبكة أجنبية ، فإنك لا تعتمد عليها بفتح منفذ غير قياسي من خلال جدار الحماية الخارجي. يتم توثيق الحل الحقيقي لهذه المشكلة أعلاه ، إما تقييد عدد الاتصالات المتكررة عبر جدار الحماية الداخلي الخاص بك ، أو إيقاف تشغيل كلمة مرور تسجيل الدخول. - Andrew Taylor
OpenSSH 6.7 drops دعم tcpwrappers، وهو ما يستخدمه denyhosts. - Zoredache


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

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

إليك طريقة القيام بذلك:

رفض جميع اتصالات ssh في /etc/hosts.deny:

# /etc/hosts.deny fragment
sshd:  all

السماح للأنظمة المعروفة بواسطة IP في /etc/hosts.allow ، بالإضافة إلى إضافة ملف للوصول المؤقت:

# /etc/hosts.allow fragment
sshd:  10.0.10.2     # some system
sshd:  172.99.99.99  # some other system
sshd:  /etc/hosts.allow.temporary-sshd-access

قم بإنشاء ملف php في خادم الويب الخاص بك واعطيه اسمًا غير واضح مثل my-sshd-access.php:

<?php
function get_ip()
{
    return getenv("REMOTE_ADDR"); 
}

?>

<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';

print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);

$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);

print "Wrote: ";
readfile($out);
?>

اغفر رمز php - لقد قمت بتمريره من مكان آخر ، لذلك يمكن أن يقف على الأرجح لتنظيف مجموعة كاملة. كل ما يفعله هو إضافة عنوان IP الخاص بالنظام الذي يتم الوصول إليه إلى الملف /etc/hosts.allow.temporary-sshd-access ، والذي تتم قراءته بواسطة sshd (بسبب تضمينه من خلال /etc/hosts.allow) في وقت الاتصال .

الآن عندما تكون في نظام تعسفي على الويب وترغب في استخدام ssh لهذا النظام ، استخدم أولاً متصفح ويب واضغط على هذا الملف (أو استخدم wget أو equivilent):

$ wget http://your.system.name/my-sshd-access.php

الآن يجب أن تكون قادراً على ssh في النظام الخاص بك. إذا كان هذا في مكان ما ، فمن المحتمل أن تكون متدرجًا في كثير من الأحيان ، سيكون من السهل قراءة محتويات ملف /etc/hosts.allow.temporary-sshd-access وإضافة عنوان IP بشكل دائم إلى / etc / hosts. السماح.


15
2018-06-02 17:07



لجعل هذا أكثر أمانًا ، قم بتشغيل هذه الصفحة على https. - Robert Munteanu
إذا قمت بتغيير البرنامج النصي بحيث لا يخرج محتويات "عنوان IP المؤقت المسموح به" الملف ، لن يكون هناك أي شيء للحصول على شم محتمل للشم. ثم يمكنك تشغيله على http بدلاً من https. - Barry Brown
دائمًا ما يكون "عنوان IP المؤقت المسموح به" هو عنوان مقدم الطلب (أي عنوانك). لا أعتقد أنها مهمة بطريقة أو بأخرى. يعني Https أن عنوان URL المطلوب مشفّر مما يعني أنه ليس من السهل استبعاده عن السلك. - David Mackintosh
لن ينجح هذا الأمر إذا كنت على شبكة تقوم بتوصيل اتصالات HTTP ولكن طريقك المباشر إلى الإنترنت يكون عبر خروج مختلف. - Andrew Taylor
OpenSSH 6.7 drops دعم tcpwrappersوهو ما يتم استخدامه في إجابتك. - Zoredache


قد ترغب في النظر denyhosts كذلك.

لمعلوماتك: OpenSSH 6.7 قطرات دعم tcpwrappers، بمعنى أن denyhosts ربما ليس هو الحل لعمليات التثبيت الجديدة.


9
2018-06-02 16:23





قم بنفسك صالح وتعطيل تسجيل الدخول كلمة المرور. استخدم مفاتيح المصادقة على وجه الحصر (google ssh-keygen على سبيل المثال - مثال: http://www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/document/html/SSH-with-Keys-HOWTO-4.html ) سيكون خادمك أكثر أمانًا ، وسوف تتصل به بشكل أكثر راحة (تحقق من ssh-agent ، ssh-add ، keychain) ولن تكون بعد الآن ضحية هجمات القوة الوحشية.


8
2017-08-17 22:08





حل آخر هو مجرد نقل ssh إلى منفذ آخر. هذه الديدان غبية جدا


2
2018-06-02 16:28



قال الملصق الأصلي إنه بحاجة إلى الركض على المنفذ القياسي. - kbyrd
آسف ، يجب أن أقرأ الأسئلة بعناية أكثر :) - disserman
لا بد لي من الاتفاق ... لدي SSH يعمل على منافذ "بديلة" ويجعل العالم من الاختلاف في السجلات. تكون الديدان ذكية مثل الطوب ، لذلك فهي تعمل بشكل جيد ضد مخطوطات الأتمتة البكمية. ليس جيدا ضد المهاجمين. ومع ذلك ، فإن سجلات لها الصوت المبارك الصمت فيهم... - Avery Payne