Sunucum sürekli saldırıya uğradı [kapalı]


32

Sistem yönetimi dünyasında oldukça yeniyim. Son zamanlarda bir uygulama üzerinde çalışıyorum ve uygulama sunucusu günlüklerimi kontrol ettiğimde, kaba kuvvetle sunucuma ssh yapmaya çalışan çeşitli IP adresleri alıyorum. İşte sunucu günlüğüme bir örnek:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Bu oldukça normal bir şey midir, yoksa endişelenmeli miyim / bu konuda bir şeyler yapmalı mıyım?


3
Port numarasını değiştirmeyi deneyin ve devam edip etmediğini kontrol edin. Sizi özellikle hedef almıyorlarsa, muhtemelen olmaz.
goldilocks

13
En iyi çözüm, kaba kuvvet saldırılarını kesinlikle durduracağından SSH'de parola doğrulamayı devre dışı bırakmaktır!
Willem


3
@Willem - hayır, şifre doğrulaması devre dışı olacak DEĞİL saldırıları durdurmak. Yalnızca başarısız olmalarını sağlar (saldırganlar parola doğrulamanın devre dışı bırakıldığını farketmeyecek ve denemeye devam edecektir).
Martin Vegter

Yanıtlar:


59

İnternetin harika dünyasına hoş geldiniz ... Siz:

Fakat asıl cevap: Evet, bu normaldir : BotNet Maffia her zaman birkaç ekstra korumalı sunucu kullanabilir ...


1
Vahşi, vahşi İnternet'te SSH olmamasını tercih ederim. +1
Rui F Ribeiro

2
Ssh için varsayılan portu değiştirmenin yanı sıra portu çalıyor .
Pablo A

15

Bir sel günlüğü yapmak için yeterince giriş denemesi yapılması oldukça normaldir.

SSH portlarını değiştirmek, “belirsizliğe göre güvenlik” türünden bir çözümdür, ancak taşkın konusunda yardımcı olur. Çok şık olmadığını vurguluyorum; Bir nedenden dolayı hizmetler için fiili bağlantı noktaları vardır.

Varsayılan olarak açık olması gerektiği gibi, ancak sunucunuza kök olarak SSH alamayacağınızdan emin olun. Sunucular arasında oldukça tutarlı olan kullanıcı adı ve dolayısıyla parola kaba kuvvet giriş işleminde öncelikli hedef. Ayarı aşağıdaki satırda olacak şekilde zorlayın sshd_config:

PermitRootLogin no

Ayrıca fail2bantekrarlayan suçluların sshd kayıtlarını izlediğine dikkat edin. Örneğin, 5 başarısız oturum açma, belirli bir IP’den 3 dakika sonra bu IP’yi 10 dakika boyunca engeller. Günlük spam’ını daha da azaltmak için bu yasaklanma süresini 24 saate yükselttim - başarıyla. :)


1
apt-get install fail2ban size temel olarak örtülecektir
Willem

7
"Günlük spam'lerini daha da azaltmak için bu yasak süresini 24 saate yükselttim" Güven bana. Sunucuya fiziksel erişiminiz olmadığı sürece, bir gün çok pişman olacaksınız. ;)
Daniel

8

Birkaç şey yapmanızı öneririm:

  1. Ssh'nin dinlediği portu değiştirin (1024'ten daha yüksek bir şeye) ve protokolün 1. versiyonunu kullanmadığınızdan emin olun:

/ Etc / SSH / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Instal fail2ban- günlük dosyalarını izler ve mevcut güvenlik duvarı kurallarını ( iptables) güncelleyerek, geçici veya kalıcı olarak hataya açık adresleri yasaklar .

  2. Güvenilir konumlarınızı beyaz listelediğinizden emin olun.


7

Evet, endişelenme . Asla yanamayabilirsiniz, ancak BT en iyi uygulamalarını izlemelisiniz. Eşeği sağlam kazığa bağlamak.

Ben hastanede ağ yöneticisiyim. Bir kutuyu doğrudan internete bağlamak her zaman kötü bir fikirdir. Gördüğünüz şey, internette güvenlik açığı taraması yapan binlerce otomatik tarayıcı. Bunları ve her türlü yazılım (ssh, telnet, ftp, vb.)
İçin kimlikleri kutumuzda gösterilen her türlü şeyi (port taramaları, bilinen güvenlik açığı testleri) görüyorum. Makineniz bir güvenlik duvarı / NAT çözümünün arkasında olmalı ve yalnızca siz İstenilen portları internete yönlendirin (80, 443 vs.). Yapması nispeten kolay.
Managemnt (SSH telnet) için kullanabileceğiniz bir şey internete karşı karşıya kalmak için kötü bir fikirdir, çünkü - ne nedenle olursa olsun - SSH / telnet yazılımında o sunucudaki bir hata varsa, otomatik bot bunu bir kalp atışıyla algılayacaktır ve sen berbat olacaksın. Yazılımdaki hatalar her zaman olur ve bir yamanın yayınlanması ya da yamayı hatırlamanız için biraz zaman alabilir.

Uzaktan yönetmeniz gerekiyorsa, VPN çözümü gibi bir şey ayarlamaya bakın veya Windows kullanıyorsanız uzak masaüstü için terminal hizmetleri ağ geçidi kurun. Küçük bir mağazaysanız VPN ve NAT'a yönlendirme ve uzaktan erişim ayarlamak için 2 NIC içeren ayrı bir Linux veya Windows kutusu kullanabileceğinizi biliyorum. Aksi takdirde, Cisco gibi satıcıların donanım güvenlik duvarı / NAT çözümleri (Cisco ASA) vardır.

Özetle, makinenizi NAT'ın arkasına yerleştirin. Yalnızca hizmet amacını gerçekleştirmek için gereken bağlantı noktalarını ileriye doğru yönlendirin. Yönetim için kullanılan hizmetleri internete taşımayın, bunun yerine uzaktan yönetim için VPN'i arayın.

PS SSH portlarını değiştirmek log hacmine yardımcı olabilir, ancak SSH'ye erişimi engellemiyor. Binlerce otomatik güvenlik açığı bulucusundan herhangi biri, hangi bağlantı noktalarının hangi hizmetleri dinlediğini görmek için bağlantı noktası taramaları yapabilir ve yapacaktır. Nmap adında bir araçla kendiniz yapabilirsiniz .


7
Aslında, bir VPN çözümü bir SSH sunucusundan daha az ya da çok güvenli değildir. Her ikisi de doğru bir şekilde uygulanmakta olan şifreleme protokollerine ve hizmetlerin doğru şekilde yapılandırıldığına güvenmektedir. Farklı yollardan, tam olarak aynı güvenlik seviyesini sağladıklarını söyleyebilirim. O zaman, seni iyi anlarsam, bir VPN'in arkasına bir SSH koyarsın , o zaman evet bir seviye daha güvenli.
lgeorget

Evet, haklısın demek istediğim, güvenlik duvarı / nat'ı geçmek için vpn'yi kullandıktan sonra sunucuya ssh
kişi

1
VPN kurulumlarının çoğunda, birkaç istemci katmanı kimlik doğrulaması yapılır ve harici trafiğin iç ağa erişebileceği tek bir nokta sağlanır. Çok sayıda düğüme sahip. VPN yoğunlaştırıcılar ayrıca, muhtemelen sshdörneği barındıran sunucuya karşı genellikle kendi başlarına ilginç hedefler değildir . Bir ssh jumpbox çoğu VPN konfigürasyonları kadar güvenli olabilir , fakat genel olarak, bu şekilde çalışmaz.
Bratchley

5

Çekirdeğin iç güvenlik duvarını iptables ile yapılandırabilirsiniz . Böylece sadece birkaç makine sunucunuza ssh atabilir ve diğer IP paketlerinin düşmesine izin verebilir. Daha man iptablesfazla bilgi için bkz .

Örneğin, 192.168.1.67, ssh'den ev sahipliği yapıyorsa, sunucu türünde:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
Uzaktan yönetim tek seçeneğinizse, ciddi şekilde mahkum olacağınızı unutmayın. Çoğu IP sadece yarı kalıcıdır. Donanımı değiştirirseniz yanarsınız.
Mast

3

Sunucunuza gerçekten internetten mi ihtiyacınız var? Gerçekten internette olmasını istiyorsanız, oraya koymadan önce güvenli olduğundan emin olun.

Bağlantı noktasını değiştirmek sadece gizlilik nedeniyle güvende. Saldırganınız yalnızca komut dosyalarını çalıştırmaktan daha karmaşıksa, yardımcı olmaz.

Daha önce de bahsettiğim birkaç şey daha var:

  1. Fail2Ban ile aynı fikirdeyim ve uygun şekilde yapılandırılmış senaryoları ve en gelişmiş bilgisayar korsanlarını uzak tutacak.
  2. PermitRootLogin değerini hayır olarak ayarlamak şarttır.
  3. Bir güvenlik duvarını yapılandırın. Ben genellikle sadece iptables kurallarını düzenlerim, fakat UFW veya firehol gibi bir şeyler de çalışacak.

Bu topluluğa yeni katıldım çünkü yeterince ele alınmadığını düşündüğüm iki şey var.

  • Güvenlik duvarı config kesinlikle tamamen gerekli olmayan her şeyi bloke / devre dışı bırakın. Herhangi bir bağlantı noktasını açmadan önce kendinize "İnternetten gerçekten bu hizmete ihtiyacım var mı?" Açtığınız her liman / hizmet, birinin yararlanabileceği başka bir potansiyel vektör haline gelir. Bu hizmette, sunucuya kök erişimi sağlamalarına izin veren bir hata varsa, bunlar üzerindeki her şeye erişebilirler. Güvenliğiniz sadece en zayıf halka kadar güçlüdür.
  • Şimdi son şey için ve tartışmasız en önemlisi. Ssh'a erişmeye çalıştığınız komut dosyaları zamanla şifrenizi tahmin edebilir. Fail2Ban onları çok yavaşlatır, ancak hala potansiyel olarak tahmin edebilirler. Bunu yaparlarsa, erişilebilir servislerde 2 faktörlü kimlik doğrulaması istersiniz . Bunun için Duo Security ile ücretsiz bir hesap öneririm. https://www.duosecurity.com/docs/duounix

1
Bağlantı noktasını değiştirmek, günlük dosyalarını temizleme avantajına sahiptir: script çocukları çoğunlukla varsayılan olmayan bağlantı noktalarına saldırmadığından, herhangi bir günlük girişinin ciddi bir tehdit oluşturduğunu bilirsiniz.
Mark

Bağlantı noktasını değiştirmek de gerçek bir tehdide karşı sıfır kullanımda değil. Bir hız tümseği pek bir duvar değil, ama yine de bir hız tümseği, ve bunu biraz daha büyük bir hız tümseği haline getirmenin yolları var. Ayrıca, 2 faktörlü kimlik doğrulama kesinlikle mümkün olduğunda kullanmak için iyi bir fikirdir ve neredeyse her zaman mümkün olması gerekir, ancak son durumları da vardır. Belirli bir asgari süre varsa, Fail2Ban'ın onları geciktireceğinden emin olabilirsiniz, daha sonra şifrenizi daha sık değiştirmek, onları tekrar tekrar başlamaya ve asla bitmemeye zorlayacak.
Matthew Najmon,

2

SSH sunucunuzdaki başarılı "denemeleri" yasaklamak istiyorsanız, cff answer 'a başka bir örnek:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Bu bir 'etiket' bağlantısı dener ve 600'den (10mn) 4'ten fazla olursa, kaynak 'yasaklanır'. @Cff çözümü yerine bunu kullanın çünkü daha güvenlidir (eğer kendinizi kilitlerseniz, 10mn bekleyin ve yeniden deneyin).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.