Bir Debian sunucusunu korumak için hangi adımları atıyorsunuz? [kapalı]


66

Doğrudan İnternete bağlı bir Debian sunucusu kuruyorum. Açıkçası mümkün olduğunca güvenli hale getirmek istiyorum. Siz / bayanların güvenliğini sağlamak için fikirlerinizi eklemesini ve bunun için hangi programları kullandığınızı istiyorum.

Bu sorunun bir bölümünü güvenlik duvarı olarak ne kullanıyorsunuz? Sadece iptables elle yapılandırılmış mı yoksa size yardımcı olması için bir tür yazılım kullanıyor musunuz? En iyi yol nedir? Her şeyi engelle ve sadece neye ihtiyaç duyulsun? Yeni başlayanlar için bu konuyla ilgili iyi dersler olabilir mi?

SSH portunuzu değiştiriyor musunuz? Bruteforce saldırılarını önlemek için Fail2Ban gibi bir yazılım kullanıyor musunuz ?



1
Ubuntu, Debian'ın yapmadığı bir şey yaptı;) İnsanların kendilerini iptables olarak mı yapılandırdıklarını yoksa fireHOL
Thomaschaaf

Ben her zaman iptables kurallarını kendim yazmaya meyilliydim. Tüm parçaları, Noel paketlerini, vb. Düşürmek gibi şeyleri yapan bir kazan plakası var. Bunun ötesinde her şey sisteme özgüdür ve genellikle oldukça küçüktür. İptables kullanırken btw'yi yeterince fazla parçaya bırakmam. Herhangi bir sebepten dolayı henüz araştırmamıştım, iptables sadece ilk parçayı kontrol etti ve geri kalanını kontrol etmeden körü körüne geçti. Aklıma, bu parçaları bir sorumluluk yapar.
Scott Pack

3
Uhm ... Debian ufw yaptı. packages.debian.org/ufw
womble

Yanıtlar:


50

Zorunlu:

  • Uzman modlu sistemin kurulumu, sadece ihtiyacım olan paketleri
  • iptables'input'ta varsayılan ilke ile güvenlik duvarını yazdı: bırak, SSH'ye erişim izni, HTTP ya da herhangi bir sunucu çalışıyorsa
  • SSH için Fail2Ban [ve bazen FTP / HTTP / diğer - bağlama bağlı olarak]
  • kök girişleri devre dışı bırak, normal kullanıcı ve sudo kullanmaya zorla
  • özel çekirdek [sadece eski alışkanlık]
  • zamanlanmış sistem yükseltme

Ek olarak paranoya seviyesine bağlı olarak:

  • izin verilen birkaç varış noktası / bağlantı noktası dışında çıkış politikası
  • integritdosya sisteminin bazı bölümlerinin değiştirilip değiştirilmediğini kontrol etmek için [makinenin dışında tutulan sağlama toplamı ile] örneğin Tripwire
  • en azından dışarıdan sistem haritasıyla zamanlanmış tarama
  • bilinmeyen kalıplar için otomatik kayıt denetimi [ancak çoğunlukla donanım arızası veya bazı küçük çökmeler algılaması için]
  • chkrootkit programlı çalışması
  • /etc/passwdyeni kullanıcılar eklemek için değiştirilemez nitelik biraz daha zordur
  • / tex noexec ile monte edilmiş
  • port tokmağı veya SSH portlarını açmanın standart dışı bir yolu [ör. web sunucusunda 'gizli' web sayfasını ziyaret etmek, sayfayı görüntüleyen bir IP adresinden sınırlı bir süre için gelen SSH bağlantısına izin verir. Bağlanırsanız, -m state --satete ESTABLISHEDtek bir SSH oturumu kullandığınız sürece paket akışına izin vermeye özen gösterin]

Kendim yapmadığım ama mantıklı olduğum şeyler:

  • çekirdek için grsecurity
  • uzak syslog böylece sistem tehlikeye girdiğinde günlüklerin üzerine yazılamaz
  • SSH girişleri hakkında uyarma
  • rkhunter'ı yapılandırın ve zaman zaman çalışacak şekilde ayarlayın

4
Tüm bunları yaptıktan sonra başka bir şey aramak için BASTILLE'ı çalıştırın. Ben de tam bir delme yapmak, güvensiz kontrolleri Nessus sisteminin taramasını da öneririm; sonra ne uyarırsa düzeltin.
Scott Pack

13
Özel bir çekirdek oluşturmak, ne yaptığınızı gerçekten bilmiyorsanız güvenlik avantajları sağlamaz. Ayrıca, güvenlik yönetimini daha da kötüleştirecek paket yönetim sistemine koymadığınız sürece güncel tutmayı da ihmal edersiniz.
Adam Gibbins

3
Müstehcenlik yoluyla güvenlik için -1. Aksi takdirde iyi cevap.
dwc

@Adam - evet, biliyorum, hala sadece ihtiyacım olan parçalardan oluşan monolitik çekirdeğe sahip olmayı tercih ediyorum. Bu muhtemelen çok geriye, ama yine de yapıyorum. @dwc - bu sadece bir krema olan ek bir adım veya tatsız kokan şeylerin üstüne kiraz diyoruz.
pQd

1
Ve demek istediğim su değil -
LapTop006

18

Makinenizi güvenlik duvarı ile ilgili bir not ...

  • Bir kara liste değil bir beyaz liste kullanın - yani her şeyi engelleyin ve yalnızca ihtiyacınız olana izin verin, diğer her şeyi reddedin.
  • GUI / ncurses veya güvenlik duvarınızı sizin için yazma görevini yerine getirmeye çalışan herhangi bir yazılımı kullanmayın. Bunu yaparsanız, yazılımın sizin için varsayımlarda bulunmasına izin vereceksiniz - bu riski almanız gerekmiyor ve yapmamalısınız. Emin değilseniz, kendiniz yapılandırın, devre dışı bırakın - gerekirse hemen öğreneceksiniz. Zaten çalışan ve çalışan bir sistemse ve trafiği (yanlışlıkla engelleyerek) engelleyemiyorsanız, o zaman tcpdump (dosyaya dökümü) çalıştırın ve örnekleri alın - bunları daha sonra inceleyin ve neyin geçerli olup olmadığını öğrenin.
  • Kişisel olarak standart olmayan bir bağlantı noktasında hizmet çalıştırmanın hiçbir anlamı görmüyorum, araçlar bugünlerde 22 numaralı bağlantı noktasında bir şey çalıştığından dolayı o kadar aptal değiller ki, o zaman ssh olmalı, aksi halde - örnek amapve nmap'ın -Aseçeneği. Bunu söyledikten sonra, hizmetlerinizi meraklı gözlerden gizlemek için hizmetlerinizi değiştirebilir (ve belki de endişelendiyseniz), örneğin, saldırganın OpenSSHçalıştırmakta olduğunuz tam sürümünü bilmesine izin verebilir, daha sonra istismarları arayabilirler. bu tam sürüm. Böyle şeyleri saklarsan, onlar için daha çok zorlarsın.
    [root @ ud-olis-1 uhtbin] # telnet localhost 22
    127.0.0.1 Deneniyor ...
    Localhost.localdomain (127.0.0.1) ile bağlantılı.
    Çıkış karakteri '^]'.
    SSH-2.0-OpenSSH_3.9p1
  • Tüm kamu hizmetlerinizi güncel tutun ve en son güvenlik yamalarıyla yamalayın.
  • Ağ geçidi sunucusunda herhangi bir DATA saklamayın, en azından bu makineye girmeyi başardıklarında zaman kazanacaksınız ve bir ya da iki kez bir hizmet kaybedeceksiniz ve bir süre de veri alacaksınız.

Alt çizgi,% 100 güvenli bir şey yapmayı asla başaramayacağınızdır - bu mümkün değil - bu yüzden amaç mümkün olduğunca güvenlidir - sisteminizi kırmak için çok fazla çaba harcıyorsanız, bu yeterli derecede iyi ve çoğu katman script-kiddies bir sonraki sisteme geçecek.

  • iptables Herhangi bir Linux sistemine gitmenin yolu - ancak kendiniz yapılandırın.

Asla açık standartlara dayanmayan herhangi bir "güvenlik yazılımı" kullanmayın - kötü yazılmaya mahkumdurlar ve saldırıya uğrarlar ("eğer" değil, "ne zaman" meselesi değil). Açık kaynak kodlu ve açık protokoller halka açık incelemeye açık ve olgun ve güvenilir bir ürün haline gelmeye yakınlar; kapalı kaynaklı yazılımlar çoğunlukla yazarların ne kadar büyük / güvenli bir ürün olduğunu düşündüklerine (yani, dünya dolu bir göze karşılık az sayıda göze) güven duymalarına dayanır .

Umarım yardımcı olur :)


“... az sayıda göz, dünya dolu, gözlerle dolu.” - Yeterince "şirket" in farkına varmasını diliyorum, ancak gizlilik yoluyla güvenlik en çok izlenen trend gibi görünüyor. Evet, standart olmayan bir bağlantı noktasında ssh gibi bir hizmeti çalıştırmak kararlı bir saldırganı uzak tutmaz. Ancak betiği uzak tutacaktır - birisi 22 numaralı bağlantı noktasında bir dizi ip adresine sözlük saldırısı yapıyor
L0neRanger

12
  • kök girişini devre dışı bırak
  • şifreyle giriş yapmayı devre dışı bırak (yalnızca genel anahtarla giriş yapmanıza izin ver)
  • SSH portunu değiştir
  • denyhosts kullanın (veya benzeri)

  • kendi iptbles betiğini yaz (bu yüzden tam olarak neye izin vereceğini ve diğer her şeyi bırakabileceğini kontrol et)

  • SSL / TLS güvenli iletişim kullanımını zorlayın ve geçerli, süresi dolmamış ve imzalı sertifikalara sahip olduğunuzdan emin olun.

  • Tüm harici hizmetler için kesin sertifika doğrulamasını açın (örneğin, başka bir makinede bir LDAP sunucusuyla kullanıcıların kimliğini doğrularken)

Parola kimlik doğrulamasını devre dışı bırakmak için bir artı değer kazanırsınız.
derobert


6

Genel bir başlangıç ​​noktası olarak, güvenlikle ilgili en iyi uygulamaların kapsamlı bir derlemesi olan İnternet Güvenliği Merkezi'nden gelen kriterleri / rehberleri takip ediyorum . Debian kriterlerinin bir süre önce güncellendiğine benzemiyor, ancak adımlara genel bir bakış:

  • En yeni OS yamalarını / paketlerini uygula
  • Sistem / çekirdek / işlem muhasebesini etkinleştirin.
  • MAC'yi etkinleştirin (örneğin, SELinux veya AppArmor).
  • Ana bilgisayar tabanlı güvenlik duvarını (iptables) etkinleştirin.
  • APT sources.list'i doğrulayın (anahtarlar doğru, kaynaklar güvenilir).
  • Ağ servislerini en aza indirin, gerekli olmayan her şeyi devre dışı bırakın ve güvenlik duvarını kullanın.
  • Sistem erişimini daha da kısıtlamak için TCPWrappers kullanın.
  • Yalnızca şifreli ağ protokolleri kullanın, şifrelenmemiş hizmetleri (telnet, ftp, vb.) Devre dışı bırakın.
  • Yalnızca SSH'ye uzaktan erişimi yapılandırın.
  • Kullanıcı oturum açma şifrelerini devre dışı bırak ve anahtar tabanlı kimlik doğrulaması gerektir.
  • Dosya sistemi paylaşımını (NFS, SMB) devre dışı bırakın.
  • Uzaktan / merkezi sistem günlüğünü etkinleştirin (ve günlükleri düzenli olarak gözden geçirin!).
  • Bir BIOS / üretici yazılımı seviye şifresi ayarlayın.
  • Bir önyükleyici şifresi ayarlayın.
  • Sistem yedeklemelerini yapılandırın, bir olağanüstü durum kurtarma planına ve yedeklerin geçerli olduğunu ve personelin olağanüstü durum kurtarma prosedürlerini bildiğini TEST yapın!

CISecurity kriterlerinde sistemde uygulanacak özel komutlar ve konfigürasyon dosyaları dahil, tüm bu çeşitli ayarlarda birçok kaynak vardır.


5

Bir makineyi doğrudan İnternete takmamanızı tavsiye ederim. Makine ile İnternet arasına bir tür güvenlik duvarı yerleştirin. Bu, sunucuya daha fazla yük yüklemeden güvenlik ve ağ izlemesi yapmanızı sağlar. Şahsen, ağ ve işlev bölümlemesini sıklıkla ağ sorunlarını gidermeyi basitleştiriyorum, ancak zaman zaman, ek karmaşıklık analizi daha da zorlaştırıyor.

Güvenlik duvarı politikasını yönetmenin en güvenli, ancak en can sıkıcı olanı, tümünü reddetmek ve açıkça yalnızca izin vermeniz gereken trafiğe izin vermektir. Bu can sıkıcıdır, çünkü ağın değişmesi gerektiğinden güvenlik duvarı politikasını sık sık güncellemeniz gerekir.

Ayrıca, sunucuda bir çeşit güvenlik duvarı güvenlik duvarı kullanmasını öneriyorum - savunma derinliği önemli. Yönetimle ilgili hizmetler için standart olmayan bağlantı noktaları kullanmak zarar vermez. fail2ban iyi. Daha fazla fikir bulmak için Serverfault'daki güvenlik uygulamaları hakkında daha spesifik soruları izleyin.

Güvenlik, iki yürüyüşçünün ve ayının şakaları gibidir - biri asla mükemmel bir güvenlik sağlayamazken, diğerlerinden daha zor bir hedef olmak faydalıdır.


Güzel cevap için +1. Varsayılan reddetmenin, doğru bir şekilde yaklaşırsanız yönetmenin can sıkıcı olmadığını belirtmem gerekir. Elbette neye izin verdiğini bilmelisin, değil mi? Aslında, bunun açık bir dille politika beyanı olarak yazılması gerekir. Bunu normal bir rutin olarak yapmıyorsanız, bir yönetici olarak işinizi yapmıyorsunuz demektir. Öyleyse, güvenlik duvarı kurallarını güncellemek basit bir mesele.
dwc

Çok iyi noktalar. Her kurumun basit bir dil güvenlik politikası bildirimi olmalıdır. Kuruluşun ihtiyaçları değiştikçe, politika bildirimi güncellenmelidir. Yalnızca yöneticinin güvenlik duvarı kuralı uygulamasını ve CYA'yı planlaması için, akıllı bir yönetici, kuruluş yönetimi güvenlik hakkında düşünmeye zahmet etse bile, böyle bir politika beyanını sürdürür.
pcapademic

4

Bazı insanlar Debian Güvencesi El Kitabına dikkat çekti . Askeri gereklilikler dışında bu her şey için tamamen yeterli olmalı.

Birçok insan gülünç paranoyak olmanın havalı veya profesyonel olduğunu düşünür. O var değil bu sadece, rahatsız edici diğer yöneticiler için ve düpedüz baskıcı kullanıcılar için. Önerilen göreceğiniz şeylerin çoğu, paranoyak yönetici için faydalı hissetmek için sahte bir çalışmadır, ancak gerçek güvenlik ihlalinin yeterince güncellenmemiş bir sistemden ve / veya bir iç kaynaktan kaynaklanıyor olması muhtemel olduğundan, aslında yararlı değildir.

Bununla birlikte, yerel ağda hiçbir şeyden İnternetten hiçbir şeye güvenmemenin ilkelerimden biri olduğunu düşünüyorum. Bu nedenle, yerel ağda bile kimlik doğrulama gerektiren her şeyi yapılandırıyorum. IPsec kullanarak bilgisayarın her birindeki tüm trafiği şifreleyip doğrularım.

Tüm sunucularım için tam disk şifrelemeye dönüştürme sürecindeyim.

Yalnızca kullandığım hizmetleri yüklerim. Güvenlik duvarım yok; Kimlik doğrulaması gerektirmem gereken hizmetleri yapılandırıyorum veya sınırlandırıyorum (programın kendi yapılandırmasıyla veya TCP sarmalayıcıları ile) belirli IP'lerle. İptables kullanarak engellemem gereken tek şey memcached, yapılandırma dosyası olmadığı ve TCP sarmalayıcı kullanmadığı içindi .

Hesaplarım için rastgele oluşturulmuş iyi şifreler kullanıyorum ve şifreyi bilmeyenleri saklamak için SSH sunucuma (ve diğer tüm hizmetlere) güveniyorum. fail2banIMO yalnızca günlük dosyaları için sınırlı alana sahip olanlar içindir. (Onlara güvenebilecek kadar iyi şifreleriniz olmalıdır.)


3

Www.debian.org/doc/manuals/securing-debian-howto/ adresinden bu güzel nasıl yapılır üzerinden geçin

Şahsen ssh portunu değiştiriyorum ve fail2ban + denyhosts kullanıyorum. Ve gerekli olmayan her şeyi engelliyorum. Ne kadar çok engellerseniz, o kadar az endişelenmeniz gerekir.


4
Ugh. Beni "SSH portunu değiştirene" kadar beklettin. Anlamı yok. Özellikle ellerinde yeterli zamanı olan herhangi bir joe schmoe sizi taratamaz ve SSH'nin hangi portta çalıştığını anında öğrenemez. Bağlandığınız anda hizmet adını (ve sunucu sürümünü) bildirir.
Matt Simmons

3
Evet, herhangi birinin sizi tarayabileceğini ve doğru bağlantı noktasını bulabileceğini biliyorum. Ancak çoğu saldırı varsayılan bağlantı noktasında. Bağlantı noktasını değiştirerek bazı istatistikler almaya çalışın.
Vihang D
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.