Soru Yüzlerce başarısız ssh giriş


Her gece RedHat 4 sunucumda yüzlerce, bazen binlerce başarısız ssh girişimi alıyorum. Uzak sitelerden gelen güvenlik duvarı nedenleri için standart bağlantı noktasında çalışmam gerekiyor. Bunu engellemek için yapmam gereken bir şey var mı? Pek çoğunun aynı IP adresinden geldiğini fark ettim. Bir süre sonra durmaması mı gerekiyor?


76
2018-06-02 16:18


Menşei




Cevaplar:


SSH bağlantı noktasına yeni gelen bağlantıları hızlandırmak için iptables'i kullanabilirsiniz. Anahtar teslim çözüm sunmak için tüm iptables yapılandırmanızı görmem gerekiyor, ancak temelde aşağıdaki gibi kurallar eklemekten bahsediyorsunuz:

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 

Bu kurallar, daha önce tablodaki bağlantıları kurduğunuzu kabul eder (böylece yalnızca yeni bağlantılar bu kurallara çarpacaktır). Yeni SSH bağlantıları bu kurallara çarpacak ve işaretlenecektir. 60 saniyede, tek bir IP adresinden 5 girişimi, bu IP'den gelen yeni gelen bağlantılara neden olacaktır.

Bu benim için iyi çalıştı.

Düzenleme: Bu yöntemi "fail2ban" olarak tercih ediyorum çünkü hiçbir ek yazılım yüklenmeyecek ve tamamen çekirdek modunda gerçekleşecek. Bu "fail2ban" gibi ayrıştırma günlük dosyalarını işlemez, ancak sorun sadece SSH ile ise yazılım yüklemesi gerektiren ve daha karmaşık bir kullanıcı modu kullanmazdım.


63
2018-06-02 16:25



Bu çözümü çok beğendim ve bugün yangın çıkınca, bu gece devreye girmeyi planlıyorum. - MattMcKnight
Saldırıları yavaşlatır ve bunu öneririm, fakat dışarıda bulunan taranan tarama botları olduğundan, her derde deva değil. Size karşı dağıtılmış taramalar çalıştıran botnet'lerden hala geçersiz girişler olacaktır. Bu konuda yapabileceğiniz çok fazla şey yok, içeri girmek istediğinizde SSH portunu uzaktan getirmek için bir çeşit “liman vurma” şemasının kısa bir kısmı. - Evan Anderson
Evan'un "liman vurma" önerisi için +1. Bazı bilgi: linux.die.net/man/1/knockd . Ama bu adam sayfa yolu (yani iptables kuralları ekleme / silme) yapmayın, ama yerine kullanın -m condition iptables bunun yerine uyuyor. - pepoluan
gerek yok - bu kurallarda 22 sd onlar sadece ssh trafik için uygulanır? - clime
@clime - Evet. Bunun 2 1/2 yıldır burada olduğuna inanmak zor ve kimse farketmedi! İyi yakalama. - Evan Anderson


fail2ban IP adreslerini girişimlerde çok fazla başarısız giriş ile engelleyerek bu konuda yardımcı olabilir.


38
2018-06-02 16:20



sysadmin kullanıcısı adına günlükleri okuyan ve komutları veren araçları / komut dosyalarını sevmiyorum - asdmin
@ asdmin, evet, özellikle onlar çok güzel bir sicili var ... - maxschlepzig


SSH için standart olmayan bir port kullanmanızı öneririm (eğer port 10222), ancak bunu yapamayacağınız için bunu yapmamanızı tavsiye ederim, DenyHosts gibi bir şey kullanmanızı tavsiye ederim.

http://denyhosts.sourceforge.net/

Büyük paket, kurulumu ve yapılandırması kolaydır.


25
2018-06-02 17:16



İnsanların neden böyle davrandığını bilmiyorum; SSH, standart bir bağlantı noktası 22 üzerindedir. Bu, yabancı bir ağ üzerindeyken, giden güvenlik duvarı üzerinden standart dışı bir bağlantı noktası açmak zorunda kalmayacağınız anlamına gelir. Bu sorunun gerçek çözümü yukarıda belgelenmiştir, ya gelen güvenlik duvarınız üzerinden tekrar bağlantı sayısını kısıtlar ya da şifre girişlerini kapatır. - Andrew Taylor
OpenSSH 6.7 damla tcpwrappers desteğidenyhosts'ın kullandığı şey budur. - Zoredache


İnternetteki keyfi konumlardan sisteminize ssh olmak güzel olsa da, açık ssh bağlantı noktasına kilitlenecek ve sisteminize karşı çeşitli joe hesabı ve sözlük saldırıları uygulayabilecek otomatik şifre saldırı sistemleri vardır. Bu, günlük log özetinizde okumak için agresif olabilir ve bant genişliğinizin israfıdır.

Aynı sistemde bir web sunucunuz varsa, bilinen sistemlere ssh gelen trafiği kısıtlamak için php ve tcp sarmalayıcıları kullanabilir, ayrıca size internet üzerindeki keyfi sistemlerden erişiminizi sağlamak için bir arka kapı anahtarı verebilirsiniz.

İşte bunu nasıl yapıyorsun:

/etc/hosts.deny içindeki tüm ssh bağlantılarını reddedin:

# /etc/hosts.deny fragment
sshd:  all

Bilinen sistemleri /etc/hosts.allow'da IP'ye izin verin, ayrıca geçici erişim için bir dosya ekleyin:

# /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

Web sunucunuzda bir php dosyası oluşturun ve bunu my-sshd-access.php gibi belirgin olmayan bir ad verin:

<?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 kodunu affet - ben onu başka bir yerden kaydırdım, bu yüzden muhtemelen bir bütün olarak toplanmaya dayanabilir. Tek yapmanız gereken, sshd tarafından okunan /etc/hosts.allow.temporary-sshd-access dosyasına (sistem tarafından /etc/hosts.allow tarafından eklenmesi nedeniyle) bağlantı zamanına erişen sistemin IP adresini eklemektir. .

Şimdi, web'de bazı keyfi sistemlerde olduğunuzda ve bu sisteme ssh yapmak istediğinizde, önce bir web tarayıcısı kullanın ve bu dosyaya gidin (veya wget veya equivilent kullanın):

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

Şimdi sisteminize ssh mümkün olmalıdır. Eğer burası bir yerdeyseniz sık sık ssh'ing olacaksınız, /etc/hosts.allow.temporary-sshd-access dosyasının içeriğini okumak ve / etc / hosts'e kalıcı olarak IP adresini eklemek önemsiz olacaktır. izin vermek.


15
2018-06-02 17:07



Bunu daha güvenli hale getirmek için, bu sayfayı https'de çalıştırın. - Robert Munteanu
Komut dosyasını değiştirirseniz, "izin verilen geçici IP adresi" dosyasının içeriğinin çıkmasını sağlamazsanız, koklama için bir sniffer olmasının bir yararı olmaz. Sonra https yerine http üzerinde çalıştırabilirsiniz. - Barry Brown
"İzin verilen geçici IP adresi" her zaman isteklinin (yani sizinki). Bunun bir şekilde bir şey olduğunu düşünmüyorum. Https, istenen URL'nin şifrelenmiş olduğu anlamına gelir, bu da telden onu aldatmanın önemsiz olduğu anlamına gelir. - David Mackintosh
Bu, HTTP bağlantılarını destekleyen bir ağ üzerindeyseniz işe yaramaz, ancak İnternet'e giden doğrudan rotanız farklı bir çıkış yolu ile gerçekleşir. - Andrew Taylor
OpenSSH 6.7 damla tcpwrappers desteğicevabınızda ne olduğu, hangisidir. - Zoredache


Bakmak isteyebilirsiniz denyhosts de.

FYI: OpenSSH 6.7 damla tcpwrappers desteğiYani, denyhosts muhtemelen yeni kurulumlar için bir çözüm değildir.


9
2018-06-02 16:23





Kendinize bir iyilik yapın ve şifre girişini devre dışı bırakın. Yalnızca kimlik doğrulama anahtarlarını kullanın (örneğin google ssh-keygen - Örnek: http://www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/document/html/SSH-with-Keys-HOWTO-4.html ) Sunucunuz daha güvenli olacak, ona daha rahat bağlanacaksınız (ssh-agent, ssh-add, keychain) ve ssh brute force saldırılarının kurbanı olmayacaksınız.


8
2017-08-17 22:08





Başka bir çözüm de ssh'i başka bir bağlantı noktasına taşır. Bu solucanlar oldukça aptaldır.


2
2018-06-02 16:28



Orijinal afiş, standart portta çalışması gerektiğini söyledi. - kbyrd
üzgünüm, soruları daha dikkatli okumalıyım :) - disserman
Katılıyorum ... SSH'm "alternatif" limanlarda çalışıyorum ve günlüklerde bir DÜNYA fark yaratıyor. Solucanlar bir tuğla kadar zeki, bu yüzden aptal otomasyon scriptlerine karşı iyi çalışır; İnsan saldırganlarına karşı pek iyi değil. Yine de, günlükler Sessizlik onların içinde ... - Avery Payne


Diğer bir seçenek, tüm ssh bağlantılarının bir sertifika tarafından doğrulanmasını ve parolalarla tamamen kaldırılmasını gerektirebilir.

Denyhosts'u kullanmak için kullanıyorum, ama bir avuç yerden sadece düzenli olarak uzak bir bağlantı kurduğumu fark ettim, bu yüzden tüm bağlantı noktaları 22 bağlantıyı başka bir yerden hariç tuttum ve bağlantı noktası vuruntusunu kullanmam gerekiyor, böylece dizüstü bilgisayarımla her yerden bağlanabiliyorsam .


2
2018-06-03 00:51





Çoklu arızalardan sonra IP'leri otomatik olarak engelleyen herhangi bir çözüm, hizmet reddi saldırıları riskini ortaya çıkarır. Kaba kuvvet veya sözlük saldırılarının etkinliğini azaltmak için iyi bir şifre politikası olduğu sürece, onlar hakkında çok fazla endişelenmem.

Kullanıcıları / grupları yalnızca ilk etapta ssh'a izin verilmesi gerekenlerle sınırlar ve root olarak giriş yapmayı devre dışı bırakırsanız, yeterince güvenli olmanız gerekir. Ve bu yeterli değilse, her zaman anahtar tabanlı kimlik doğrulaması vardır.


1
2018-06-02 17:03





Dürüst olmak gerekirse, SSH'yi (ve 22 numaralı bağlantı noktasında) çalıştırmanız gerekiyorsa, bunlardan sakınamazsınız. Parolaları kabul etmeniz gerekiyorsa, daha da kötü durumdasınız demektir.

En iyi bahsiniz, log analiz yazılımınızı SSH kayıtlarını hariç tutmak için yapılandırmaktır. Ardından, yalnızca SSH günlüklerine bakmak için ayrı bir örnek çalıştırın ve başarısız girişimleri filtrelemek için procmail kullanın. Birden fazla başarısız denemeyle IP adreslerinden başarılı girişleri izlemek için komut dosyaları bile yazabilirsiniz.

İnsanların SSH sunucunuzu sormasını engellemenin bir yolu yok. Denyhosts, fail2ban ve iptables örneği bir noktaya kadar çalışacak, ancak yasal kullanıcıları yanlışlıkla engelleme tehlikesiyle karşı karşıya kalacaktır. En iyi yöntem onu ​​emmek ve hakkında düşünmek zorunda kaldığınız süreyi azaltmak için log-analiz işlemini otomatikleştirmeye çalışmaktır.


1
2017-08-17 22:51





Kırmızı şapka sunucunuzdaki şerh kayıtlarında başarısızlıkla karşılaştığınızı söylediğinizde, ne tür bir güvenlik duvarı oturuyor ve kaç kişinin buna sarılması gerekiyor. Gerçek sunucunuzun yakınında herhangi bir yere ulaşmadan önce güvenlik duvarındaki girişimleri sınırlamak isteyebileceğinizi öneririm.

Meşru erişime ihtiyaç duyan ip adreslerinin aralığını kısıtlayabiliyorsanız, yangın duvarında bir erişim listesi oluşturmalısınız. Güvenlik duvarında trafiği kısıtlayabiliyorsanız, sunucuya bir şey tarafından hedeflenmiş gibi geldiğinden, ağa izinsiz giriş sistemlerine bakmanızı öneririm.


0
2018-06-02 17:28