it-swarm.asia

Debian sunucusunu güvenceye almak için hangi adımları atıyorsunuz?

Doğrudan İnternet'e bağlı bir Debian sunucusu kuruyorum. Açıkçası mümkün olduğunca güvenli hale getirmek istiyorum. Sizden/kızlarınızdan fikirlerinizi ve güvenliğinizi sağlamak için fikirlerinizi eklemenizi istiyorum.

Bu sorunun bir kısmının güvenlik duvarı olarak ne kullandığınızı kapsamasını istiyorum. Sadece iptables manuel olarak yapılandırılmış veya 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ç duyduğuna izin ver? Bu konuya yeni başlayanlar için iyi öğreticiler var mı?

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

66
Thomaschaaf

Zorunlu:

  • uzman modlu sistem kurulumu, sadece ihtiyacım olan paketler
  • iptables'input üzerinde varsayılan politika ile el yazılı güvenlik duvarı: bırak, SSH, HTTP veya verilen herhangi bir sunucuya erişime izin verme
  • Fail2Ban SSH için [ve bazen FTP/HTTP/diğer - bağlama göre]
  • root girişlerini devre dışı bırak, normal kullanıcı ve Sudo kullanarak zorla
  • özel çekirdek [sadece eski alışkanlık]
  • zamanlanmış sistem yükseltme

Ek olarak paranoya seviyesine bağlı olarak:

  • izin verilen birkaç hedef/bağlantı noktası hariç çıktıda düşüş politikası
  • integrit dosya sistemi yazılımının bazı bölümlerinin değiştirilip değiştirilmediğini kontrol etmek için [sağlama toplamı makinenin dışında tutulurken], örneğin Tripwire
  • en azından dışarıdan sistem nmap ile zamanlanmış tarama
  • bilinmeyen kalıplar için otomatik günlük kontrolü [ancak bu çoğunlukla donanım arızasını veya bazı küçük çökmeleri algılamak içindir]
  • planlanan çalıştırma chkrootkit
  • /etc/passwd için değişmez özellik olduğundan yeni kullanıcılar eklemek biraz daha zor
  • / tmp noexec ile monte edildi
  • port tokmağı veya SSH portlarını açmanın standart olmayan başka 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 ESTABLISHED Tek bir SSH oturumu kullandığınız sürece paket akışına izin verir]

Kendim yapmadığım, ancak anlamlı olduğum şeyler:

  • grsecurity çekirdek için
  • sistem güvenliği tehlikeye girdiğinde günlüklerin üzerine yazılamaz.
  • sSH girişleri hakkında uyarma
  • configure rkhunter ve zaman zaman çalışacak şekilde ayarla
50
pQd

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

  • Kara liste değil, beyaz liste kullanın - yani her şeyi engelleyin ve yalnızca ihtiyacınız olan şeylere izin verin, diğer her şeyi reddedin.
  • GUI'leri/ncurses'ları veya güvenlik duvarınızı sizin için yazma görevini yapmaya çalışan herhangi bir yazılımı kullanmayın. Bunu yaparsanız, yazılımın sizin için varsayımlar yapmasına izin vermiş olursunuz - bu riski almanıza gerek yoktur ve yapmamalısınız. Emin değilseniz, devre dışı bırakın - gerekirse hemen öğreneceksiniz. Zaten çalışan ve çalışan bir sistemse ve trafiği (yanlışlıkla yanlışlıkla engelleyerek) kesemiyorsanız, tcpdump (dosyaya dökümü) çalıştırın ve örnekleri alın - daha sonra çalışın ve neyin geçerli neyin olmadığını öğrenin.
  • Kişisel olarak standart olmayan bir bağlantı noktasında bir hizmet çalıştırmanın herhangi bir noktasını görmüyorum, araçlar bugünlerde bağlantı noktası 22'de bir şey çalıştığından, ssh olmalı ve aksi halde olmamalıdır. örnek amap ve nmap 's -A seçeneği. Bunu söyledikten sonra, meraklı gözlerden kendilerini gizlemek için hizmetlerinizi değiştirebilirsiniz (ve muhtemelen endişelenmeniz gerekir), örneğin, aşağıdakiler saldırganın tam olarak çalıştığınız OpenSSH sürümünü bilmesine izin verir, daha sonra bu tam sürüm için istismarları arayabilir. Böyle şeyleri saklarsan, onlar için daha da zorlaşırdın.
 [root @ ud-olis-1 uhtbin] # telnet localhost 22 
 127.0.0.1 deniyor ... 
 localhost.localdomain (127.0.0.1) ile çalışıyor. 
 Kaçış karakteri '^]'. 
 SSH-2.0-OpenSSH_3.9p1 
  • Tüm kamu hizmetlerinizi güncel tutun ve en son güvenlik yamalarıyla yama yapın.
  • Herhangi bir DATA'yı ağ geçidi sunucusunda saklamayın, en azından bu makineye girmeyi başardıklarında zaman alırsınız ve bir veya iki hizmeti kaybedersiniz, ancak bir süre veri kaybedersiniz.

Sonuç olarak, hiçbir zaman% 100 güvenli bir şey yapmayı başaramayacaksınız - bu mümkün değil - bu yüzden amaç mümkün olduğunca güvenli - sisteminizi kırmak için çok fazla çaba varsa, yeterince iyi ve en lamer Senaryo kiddileri bir sonraki sisteme geçecek.

  • iptables herhangi bir Linux sistemine geçmenin yoludur - ancak bunu kendiniz yapılandırın.

Hiçbir zaman açık standartlara dayalı olmayan 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). Açık kaynak ve açık protokoller kamu denetimine açıktır ve olgun ve güvenilir bir ürün haline gelir; kapalı kaynaklı yazılım çoğunlukla yazarların bir ürünün ne kadar büyük/güvenli olduğu konusunda özgüvenine güvenir onlar olduğunu düşünürler - yani az sayıda gözün dünyayla dolu gözlere karşı.

Umarım yardımcı olur :)

18
Xerxes
  • root girişini devre dışı bırak
  • şifre ile giriş yapmayı devre dışı bırak (sadece ortak anahtarla girişe izin ver)
  • sSH bağlantı noktasını değiştir
  • denyhosts (veya benzeri) kullanın

  • kendi iptbles betiğinizi yazın (böylece tam olarak neye izin vereceğinizi kontrol edersiniz ve her şeyi bırakabilirsiniz)

  • 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 sıkı sertifika doğrulamayı aç (örneğin, başka bir makinede LDAP sunucusu olan kullanıcıların kimliğini doğrularken)
12
x-way
9
KPWINC

Genel bir başlangıç ​​noktası olarak, en iyi güvenlik uygulamalarının kapsamlı derlemeleri olan İnternet Güvenliği Merkezi kriterlerini/kılavuzlarını takip ediyorum. Debian kıyaslamaları bir süredir güncellenmiş gibi görünmüyor, ancak adımlara genel bir bakış:

  • En son işletim sistemi yamalarını/paketlerini uygulama
  • Sistem/çekirdek/süreç muhasebesini etkinleştirin.
  • MAC'i etkinleştirin (ör. SELinux veya AppArmor).
  • Ana bilgisayar tabanlı güvenlik duvarını (iptables) etkinleştirin.
  • APT sources.list (anahtarlar doğru, kaynaklara güveniliyor) doğrulayın.
  • Ağ hizmetlerini 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ğ protokollerini kullanın, şifrelenmemiş servisleri (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ın ve anahtar tabanlı kimlik doğrulaması gerektirir.
  • Dosya sistemi paylaşımını devre dışı bırakın (NFS, SMB).
  • Uzaktan/merkezi sistem günlüğünü etkinleştirin (ve günlükleri düzenli olarak inceleyin!).
  • Bir BIOS/bellenim seviyesi şifresi belirleyin.
  • Bir önyükleyici parolası belirleyin.
  • Sistem yedeklemelerini yapılandırın, bir olağanüstü durum kurtarma planına ve yedeklemelerin geçerli olduğunu ve personelin olağanüstü durum kurtarma prosedürlerini bildiğini test edin!

Tüm bu çeşitli ayarlarda, CISecurity ölçütlerinde sistemde uygulanacak özel komutlar ve yapılandırma dosyaları da dahil olmak üzere birçok kaynak vardır.

6
jtimberman

Bir makineyi doğrudan İnternete bağlamamanızı öneririm. Makine ve İnternet arasına bir tür güvenlik duvarı yerleştirin. Bu, sunucuya daha fazla yük yüklemeden güvenlik ve ağ izleme yapmanızı sağlar. Şahsen, ağ ve işlev bölümlemesinin ağ sorun gidermesini sık sık basitleştirdiğini görüyorum, ancak zaman zaman ek karmaşıklık analizi daha zorlaştırıyor.

En güvenli, ancak yönetilmesi en sinir bozucu güvenlik duvarı politikası, tümünü reddetmek ve yalnızca izin vermeniz gereken trafiğe açıkça izin vermektir. Bu can sıkıcı bir durumdur, çünkü ağın değişmesi nedeniyle güvenlik duvarının sık sık güncellenmesi gerekir.

Ayrıca sunucuda bir tür arayüz güvenlik duvarı kullanmanızı öneririm - derinlemesine savunma anahtardır. Yönetimle ilgili hizmetler için standart dışı bağlantı noktalarının kullanılması zarar vermez. fail2ban iyidir. Daha fazla fikir bulmak için Serverfault'daki güvenlik uygulamaları hakkında daha spesifik soruları takip edin.

Güvenlik, iki yürüyüşçü ve ayı hakkındaki şaka gibidir - biri asla mükemmel güvenlik elde edemezken, diğer adamlardan daha zor bir hedef olmak yararlıdır.

5
pcapademic

Bazı insanlar Debian Kılavuzunun Güvenliğini Sağlama 'a dikkat çekti. Bu, askeri gereklilikler dışında her şey için mükemmel bir şekilde yeterli olmalıdır.

Birçok insan gülünç bir şekilde paranoyak olmanın havalı, profesyonel veya başka bir şey olduğunu düşünüyor. Diğer yöneticiler için not, sadece sinir bozucu ve kullanıcılarınız için açık baskıcı. Tavsiye edilen şeylerin çoğu, paranoyak yönetici için yararlı hissetmek için sahte meşgul çalışmasıdır, ancak aslında yararlı değildir, çünkü gerçek güvenlik ihlali, yeterince güncellenmemiş bir sistemden ve/veya bir iç kaynaktan kaynaklanır.

Bununla birlikte, yerel ağdaki hiçbir şeye Internet'ten herhangi bir şeyden daha fazla güvenmemek için ilkelerimden biri olduğunu düşünüyorum. Bu nedenle, her şeyi yerel ağda bile kimlik doğrulaması gerektirecek şekilde yapılandırıyorum. IPsec kullanarak her bir bilgisayar arasındaki tüm trafiği şifreler ve doğrularım.

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

Yalnızca kullandığım hizmetleri yüklüyorum. Güvenlik duvarım yok; Kimlik doğrulaması gereken hizmetleri yapılandırıyorum veya bunları (programın kendi yapılandırması veya TCP sarmalayıcılar tarafından) belirli IP'lerle sınırlandırıyorum. Iptables kullanarak engellemek için gereken tek şey memcached, çünkü hiçbir yapılandırma dosyası yoktu ve TCP-sarmalayıcıları kullanmadı.

Hesaplarım için iyi, rastgele oluşturulmuş şifreleri kullanıyorum ve şifreyi bilmeyenleri korumak için SSH sunucuma (ve diğer tüm hizmetlere) güveniyorum. fail2ban yalnızca günlük dosyaları, IMO için sınırlı alana sahip olanlar içindir. (Onlara güvenebilecek kadar parolanız olmalı.)

4
Teddy

Www.debian.org/doc/manuals/securing-debian-howto/ adresinde bu güzel nasıl yapılır

Ben şahsen ssh port değiştirmek ve fail2ban + denyhosts kullanın. Ve gerekli olmayan her şeyi engelliyorum. Ne kadar çok engellersen o kadar az endişelenmen gerekir.

3
Vihang D