Kullanıcıları nasıl denetleyebilirim ve sunucumdaki SSH girişimlerine nasıl erişebilirim?


28

Bir sunucumla birkaç güvenlik sorunu yaşadım, birkaç SSH kullanıcısı yangın çıkarıyor, sorun çıkarıyor.

İsterim:

  • Kullanıcı girişlerini ve çıkışlarını takip et
  • Herhangi bir kötü amaçlı etkinliği keşfetmek için bu SSH’nin etkinliğini izleyin
  • Kullanıcıların günlükleri silmesini önleyin

Çok fazla sys admin değilim ve bu konuda oldukça deneyimsizim, bu yüzden her türlü tavsiye çok hoş ve çok yararlı olacaktır. :)

Yanıtlar:


27

SSH sunucuları hakkında konuştuğumuz için size komut satırı çözümleri vereceğim.

  • Kullanıcı girişlerini ve çıkışlarını izleyin. Çok kolay, dosya /var/log/auth.logbu bilgiye sahip olmalı.

  • Bu kullanıcıların etkinliklerini izleyin: Oldukça masumlarsa, dosyayı .bash_historyana dizinde kontrol edebilirsiniz . Yürütdükleri komutların bir listesini göreceksiniz. Sorun elbette bu dosyayı silebilmeleri veya düzenleyebilmeleridir.

  • Kullanıcıların günlükleri silmesini önleyin: Kullanıcılar dokunamaz auth.log. Onları oynamalarını engellemek için .bash_historybirkaç püf noktası yapmanız gerekir .

  • Kullanıcı root erişimi almayı başarırsa ne olur? : Sarhoşsun. Bir hata yapmazlarsa bütün adımlarını gizleyebilecekler.


Kullanıcıların unset HISTFILEbash içine yazmalarını engellemenin bir yolu olmadığını ve ardından bash geçmişlerinin kaydedilmeyeceğini unutmayın.
Gilles 'SO- kötülük' dur

@Gilles, lütfen hileci bağlantısını oku. HITSFILE öğesini .profile öğesinde salt okunur bir değişken olarak ayarladılar.
Javier Rivera

Kısıtlı olmayan bir bashta salt okunur bir değişkeni ayarlayabileceğinizi düşündüm, ama görünüşe göre değil. Bu, başka bir kabuk (okunmayacak ~/.bash_historyveya ~/.bashrcgörünmeyecek) içeri gireceğinden izlenebilirliği biraz arttırır $HISTFILE. Ancak bu başlı başına tamamen meşru olabilir (örneğin, kullanıcı sadece çalıştırmak zshister veya kendi tercihini bir alternatif olarak belirlemek ister bashrc).
Gilles 'SO- kötülük olmayı'

1
Evet. Onu bash veya başka bir kabukla sınırlandırabilirsin. Tüm güvenlikten sonra sadece bir yarış var.
Javier Rivera

"Eğer kullanıcı root erişimi almayı başarırsa", tüm adımları gizleyebilecekleri doğru değildir. Harici sunucuyu her zaman, kökleri de dahil olmak üzere, tüm adımların kaydedileceği denetim için kullanabilirsiniz.
Petr,

6

[YASAL UYARI] Partiye geç kaldığımı fark ettim, ancak başka bir soruya verdiğim bir cevabı yapıştırmak istiyorum , çünkü okurlara iyi bir fikir verebilir gibi hissediyorum ve bu soru go-to-go. temel ssh bilgisi için yer.

Bu soruyu burada AskUbuntu'da okuduktan ve VPS'imi kontrol ettikten sonra , sadece bazilyonlarca kaba kuvvet girişimi görmek için beni etkileyen benzer bir sorun vardı . O zaman harekete geçmeye karar verdim.

Şimdi bağladığım soruya göre, makinenizde ssh üzerinden başarısız giriş denemeleri görmek istiyorsanız (kaba kuvvet denemeleri veya herhangi bir şey olabilir), şunu yazmayı deneyin:

grep sshd.\*Failed /var/log/auth.log | less

Çıktı birden çok satırdan oluşuyorsa, bu çok kaba kuvvet girişimleridir, özellikle kısa aralıklar arasında olmuşlarsa, aşağıdaki eylem parçalarını yapmak isteyebilirsiniz:

Ssh yapılandırma dosyasını değiştirin

Bunu yapmak için, / etc / ssh / sshd_config dosyasındaki dosyayı , favori editörünüzle birlikte açın vim /etc/ssh/sshd_config.

1. ssh'ı 22 numaralı bağlantı noktasından taşımaya çalışın : Şimdi okuyan satırı bulun:

# What ports, IPs and protocols we listen for
Port 22

ve Port 22'ye yorum yapın ve beğenebileceğiniz birisini kullanın. Örnek:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

Lütfen 1024'ün altındaki bağlantı noktalarının özel (kök) izin alması gerektiğini unutmayın. Bunun buna nasıl müdahale edebileceğini bilmiyorum ama sadece söylüyorum.

2. Root ssh aracılığıyla oturum açmayı devre dışı bırak : Kök kullanıcı adı tahmin edilebilir olduğundan ve sisteminize tam erişim sağladığından, bu hesaba SSH üzerinden sınırsız erişim sağlar. PermitRootLogin okuma satırını bulun ve hayır olarak ayarlayın .

PermitRootLogin no

3. Parola doğrulamasını devre dışı bırakın : Sisteminize giriş yapmak için SSH anahtarlarını oluşturun ve kullanın . Şifreler etkin değilse, saldırganların sunucunuza erişmek için SSH özel anahtarınızı tahmin etmesi (veya çalması) gerekir. Çok zor bir şey. PasswordAuthentication yazan satırı bulmaya devam et ve hayır olarak ayarla

PasswordAuthentication no

!UYARI! Bunu yapmadan önce, bu kılavuzu danışın buraya sertifika kimlik doğrulamasını ayarlamak için nasıl.

NOT: Değişiklikleri yaptıktan sonra kullanın sudo /etc/init.d/ssh restart. Ssh kullanımı üzerinden başka porta bağlamak için: ssh username@hostname.com -p <port_number>.

Bir güvenlik duvarı kurun

Lütfen Linux, IPTable'lara entegre edilen son derece güçlü ve etkili güvenlik duvarının nasıl kurulacağına ilişkin bu kılavuzu inceleyin .

Güvenlik konusunda size yardımcı olacak komut dosyaları oluşturun

Kişisel olarak kullandığım ve çabucak aklıma gelen bir şey Fail2Ban . Fail2ban log dosyalarınızı başarısız giriş denemeleri için izleyecektir. Bir IP adresi, maksimum kimlik doğrulama girişimi sayısını aştığında, ağ düzeyinde engellenecek ve olay oturum açacaktır /var/log/fail2ban.log. Yüklemek için:sudo apt-get install fail2ban

Komut geçmişini ssh ile kontrol et

historyBu noktaya kadar hangi komutların girildiğini görmenizi sağlayan adlı bir linux komutu vardır . historyBu noktaya kadar olan tüm komutları görmek için bir terminale yazmayı deneyin . Kök olsaydın yardımı olurdu .

İçin belirli bir komut için arama deneyin:history | grep command-name

Ssh'den sonra tüm komutları listelemek için :fc -l ssh

Vi komutunu kullanarak da düzenleyebilirsiniz (bununla birlikte çalıştığını farz etsem de vim denemedim):fc -e vi

Ayrıca geçmişi silebilirsiniz :history -c

NOT: Komutun hayranı historydeğilseniz, ana dizininizde ( cd ~) adı verilen, .bash_history (bash kullanıyorsanız) adında catbash kabuğuna yazılanları görebileceğiniz bir dosya vardır.


çok güzel cevap Ayrıca @radu tarafından işaret rehber bakmak gerekir askubuntu.com/a/3906/59250
Cerber


3
  1. Javier bunu daha önce yanıtladı: /var/log/auth.log
  2. Bu konuda güzel bir yazı bulduk burada .
  3. Eğer kullanıcılarınız root erişimine sahip değilse, log dosyalarınız güvende olmalıdır. Kullanıcılarınızın erişebileceği ve nasıl erişebileceğini kısıtlamak için sudoers dosyasında bazı özel kurallar oluşturmayı deneyebilirsiniz. Ayrıca sshd arka plan programı için günlük düzeyini artırabilirsiniz.

3

Oturum açmanın dışında, kullanıcıların oturum açtıktan sonra eylemlerini izlemenin / kaydetmenin güvenli bir yolu yoktur, temel Linux bilgisine sahip olduklarını varsayarak kabuk günlüğünü devre dışı bırakabileceklerini veya basitçe diğer komutlardan çalışan komutları (örneğin python) kullanabileceklerini varsayarlar.

Bunun yerine ssh erişimi sağlama konusunda muhafazakar olmalısınız, gerçekten ihtiyaçları var mı? Kabuk sağlayan iş olmadıkça ssh erişim vermek çok yaygın değildir.

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.