it-swarm-tr.com

Linux Sunucusunu Sertleştirme

Burada zaten Apache'yi Sertleştirme , PHP'yi Sertleştirme ve SSH'yi Güvence altına Alma hakkında sorularımız var.

Bu eğilimi sürdürmek için insanların Linux sunucularını sertleştirmek için hangi adımları attıklarıyla ilgileniyorum. Kişiler, uygulamaya özel olmayan yeni bir sunucu kurarken her zaman hangi adımları atmaktadırlar? Tmp bölümünü noexec olarak ayarlamak, belirli hizmetleri kaldırmak/devre dışı bırakmak gibi, e.t.c.

88
Mark Davidson

Gerekli uygulamaları ve işlemleri belirleyin ve yüklemekten kaçınmak için bir kontrol listesi uygulayın veya en kötü durumda ilk derlemeden sonra kaldırın.

Burada hala varsayılan olarak çok fazla dağıtımlara devam eden ortak suçluları düşünüyorum!

  • NFS hizmetleri: nfsd, lockd, mountd, statd, portmapper
  • telnet sunucusu ve ftp sunucusu
  • R hizmetleri: rlogin, rsh, rcp, rexec
  • Gerekmedikçe BIND ve DNS sunucusu
  • sendmail gibi posta sunucuları
  • X11 (masaüstü gerekmedikçe)
  • parmak daemon vb

Bir sonraki adım, potansiyel zayıf hizmetlerden geçmek ve bunlara erişimi sınırlamaktır

  • crontab'a erişimi kısıtlamak için at.allow ve cron.allow öğelerini kullanın
  • Tüm cihazların sıradan kullanıcılar tarafından okunamaz ve yazılamaz olduğundan emin olun (/ dev/tty ve/dev/null vb. Olanlar hariç)
  • Anahtar dosyalar - bunlara ilişkin izinler root'a ait olmalıdır:/etc/fstab,/etc/password,/etc/shadow
  • Dikkatle kontrol hosts.equiv - burada büyük bir erişim kaynağı :-)
  • Benzer şekilde, NFS yapılandırması gerekirse kilitlenir
  • Gereksiz sistem hesaplarını devre dışı bırakın.
  • Tüm yürütülebilir dosyalar ve genel dizinler için dosya sistemi - yapışkan bitlerine bakın.
  • Tüm kök gereksinimlerini kontrol edin (PATH ortam değişkeni, kök olarak uzaktan erişim yok, grup üyeliği, şifre gereksinimleri)
  • Tüm kullanıcı gereksinimlerini kontrol edin (ayrıcalıklı gruplara üyelik, geçerli mermiler, umask, SUID, SGID gereksinimleri
  • ve tabii ki SANS rehberi gerçekten iyi bir kaynak!
57
Rory Alsop

"Linux Server" alanı, her biri kendi varsayılan yapılandırma güncelleme stratejisine, paket yönetimi araç zincirine ve varsayılan hizmetlere ve açık bağlantı noktalarına yaklaşımına sahip büyük bir dağıtım aralığı içerir. Ayrıca çok çeşitli dağıtım senaryoları da vardır: bir web sunucusunu sertleştirmek, linux tabanlı bir yönlendiriciyi sertleştirmekten oldukça farklıdır. En çok önem verdiğiniz dağıtımları ve kullanım durumlarını sorarak daha iyi tavsiye alabilirsiniz.

Bu bağlamda, sadece ilgili kaynaklara işaret ederek Ubuntu güvenliğini ele alacağım, ancak bunların çoğu diğer durumlar için yararlı olacaktır.

İyi bir tanıtım burada: http://www.andrewault.net/2010/05/17/securing-an-ubuntu-server/

Topluluk, kullanılabilirlik etkilense bile güvenliğe daha fazla yön veren daha katı varsayılanlar ve sertleştirme ipuçları açıkladı: https://help.ubuntu.com/community/StricterDefaults

İşte başka bir yerde bulduğunuz araştırmacıların araştırmasına yardımcı olmak için Ubuntu güvenlik özelliklerinin bir matrisi ve özeti: https://wiki.ubuntu.com/Security/Features

Bazı testleri kendiniz nasıl yapabileceğinizi görmek için, içindeki demo koduyla yönlendirilen transkripti http://people.canonical.com/~kees/demo/ec2-session.loghttp://people.canonical.com/~kees/demo/

Şurada ne yapılması gerektiğinin bir özeti: https://wiki.ubuntu.com/Security/Privileges

Ubuntu güvenlik ekibinin wiki'sinde başka yararlı şeyler var: https://wiki.ubuntu.com/Security/

25
nealmcb

Zaman içinde sistem sertleştirme yararlı bir başarıdır, ancak bir sunucuyu güvenli bir şekilde konuşlandırmayı gerçekten tanımlayan şey bu durumu kor.

Sunucularınızın güvenliğini güçlendirmek ve kurulumunuz için anlamlı olan değişiklikleri uygulamak için önerilen yapılandırma değişikliklerini ayrıntılandıran kalite kontrol listelerinden herhangi birini seçin (aşağıdaki bağlantılara bakın). Daha da iyisi, Kukla ( http://www.puppetlabs.com/ ) aracılığıyla önerileri kodlayın: Bu bir kazanma kazanırsanız, daha güvenli bir şekilde konuşlandırırsınız ve kendinize zaman içinde sertleştirilmiş yapılandırmaları sürdürme şansı verirsiniz.

Bonus : Saldırı modelleme/tehdit modelleme yapın ( http://taosecurity.blogspot.com/2007/06/threat- model-vs-attack-model.html ) savunma çabalarınıza odaklanmak için. Örneğin, kendinize şu soruları sorun:

Bir saldırgan bu sunuculara nasıl erişebilir?
Başarı şansını azaltmak için neler yapabilirim?

İkinci soruya verdiğiniz yanıtı belirli yapılandırma değişikliklerine (sertleştirme) veya ek denetimler uygulayarak çevirin. Oyun, elbette, herhangi bir tehdidin başarı olasılığını en aza indirmektir. Bu zaman alır, ancak yaptığınız değişiklikler ve neden rastgele değişiklik yapma konusunda kendinizi daha iyi hissedersiniz, çünkü birisi yapmanın iyi olduğunu söyledi.

Giriş ve incelemede harika olun . Önleme her zaman başarısız olur - olayları daha hızlı tanımlayabilmeniz ve daha hızlı geri kazanabilmeniz için günlüğe kaydetmeyi artırmak istediğiniz bu gerçekliğe karşı koymak. Linux'ta savunmaları artırmak ve günlüğe kaydetmeyi artırmak için en sevdiğim araç [~ # ~] ossec [~ # ~] ( http: //www.ossec .ağ/ ). Daha fazla endişe duyduğunuz şeyleri izlemek için [~ # ~] ossec [~ # ~] ile birlikte verilen kuralları özelleştirmek için ekstra zaman harcamak değerli bir etkinliktir (örn. Ek dizinleri listeleme) ve değiştirildiklerinde uyarılacak dosyalar, kimlik doğrulama anormallikleri konusunda sizi uyarmak için kurallar eklemek veya mevcut kuralların önem derecesini yükseltmek, mysql kullanıcı tablosundaki değişiklikleri izlemek için kurallar eklemek ( http: // blog.rootshell.be/2011/01/07/udit-mysql-db-integrity-with-ossec/ ), reklam sonsuz). Richard Bejtlich yeni bir blog yazısı yayınladı Savunmacılar için yedi açık kaynak kodlu proje ( http://taosecurity.blogspot.com/2011/01/seven-cool-open -source-projeler-for.html )

Sunucu savunmanızın sürekli olarak doğrulanmasını desteklemek için Nessus ( http://www.nessus.org/nessus/ çalıştırabilirsiniz. ) İnternet Güvenlik Merkezi (CIS) Linux denetim şablonlarıyla sürekli olarak çalışır. Sonuçları temel olarak kullanın, değişiklikleri izleyin ve keşfedilen zayıflıkları düzeltin.

Özetlemek gerekirse:

1) Ortamınız için çalışan özel bir taslak hazırlamanıza yardımcı olmak için mevcut saygın güvenlik sertleştirme kontrol listelerinden yararlanın (umarım saldırı/tehdit modelleme etkinlikleri gerçekleştirdikten ve bir yapılandırma yönetimi çerçevesi seçtikten sonra)

2) Gözlem yeteneklerini artırın: günlüğe kaydetmeyi geliştirin (yani sistemi gözlemlemek istediğiniz etkinlikler için yeterli günlük oluşturacak şekilde ayarlayın), HIDS'i dağıtın (örn. [~ # ~] ossec [~ # ~] ), günlük analiz araçlarını konuşlandırın (örn. logwatch - http://sourceforge.net/projects/logwatch/ ) , ağ akışlarını yakalayabilir (örneğin softflowd aracılığıyla)

3) Sistemlerin güvenli bir savunucusu olmayı birisinin sorumluluğu haline getirin

4) Yapıldığını düşündüğünüzü doğrulamak için sürekli denetleme ve test etme

kıyaslama/kontrol listesi kaynakları:.

http://cisecurity.org/ İnternet Güvenliği Merkezi (BDT), Kıyaslama ve Metrik Bölümü kuruluşların iş ve e-ticaret riskini azaltmasına yardımcı olan kar amacı gütmeyen bir kuruluştur teknik güvenlik kontrollerinin yetersizliğinden kaynaklanan aksamalar. Bölüm, işletmelere güvenlik yapılandırmaları için en iyi uygulama standartlarının yanı sıra bilgi güvenliği durumunu ölçmek ve güvenlik yatırımları hakkında rasyonel kararlar almak için kaynaklar sağlar.

http://iase.disa.mil/stigs/checklist/ Savunma Bilgi Sistemleri Ajansı (DISA)

http://web.nvd.nist.gov/view/ncp/repository
http://csrc.nist.gov/fdcc/faq-common_security_configurations.html
NIST SP 800-70 Rev. 1 tarafından tanımlanan Ulusal Kontrol Listesi Programı (NCP), ABD hükümetinin halka açık güvenlik kontrol listelerinin (veya karşılaştırmalı değerlendirmelerinin) işletim sistemleri ve uygulamalarının güvenlik yapılandırmasını ayarlama konusunda ayrıntılı düşük düzeyli rehberlik.

21
Tate Hansen

Sans kontrol listesi ile başlamaktan çok daha kötü yapabilirsiniz.

Bu konudaki tek eleştirim, konuşlandırılan bir sistemin güvenliğini yönetmeye yeterince önem vermemesidir - özellikle satıcı yamalarının güncel olmasını sağlamak, iyi bir izin modeli planlamak, IDS istisna raporlarını yönetmek vb.

17
symcbean

Öncelikle, sunucunun amacını ve savunmaya çalıştığınız tehdit modelini bulmalısınız. Tek kullanımlık bir sunucu mu? Birden fazla kullanıcının erişimi var mı? Birden fazla kullanıcının erişimi varsa, hepsine güveniyor musunuz yoksa güvenmiyor musunuz?

Bu sunucunun yalnızca ağ hizmetleri için kullanıldığını ve makinenizde hesabı olan birinin saldırı tehdidi ile uğraşmanıza gerek olmadığını varsayalım. İşte attığım adımlar:

  • Bir güvenlik duvarını etkinleştirin. Yerel bir güvenlik duvarı ayarlamak için iptables kullanıyorum. Bir default-deny ilkesi kullanıyorum: güvenlik duvarı ilkesinde açıkça izin verilmedikçe, gelen tüm bağlantılar varsayılan olarak engellenir. Dünyaya aktarılması amaçlanan hizmetlere gelen bağlantıları etkinleştiriyorum (örneğin, bu bir posta sunucusuysa 25 numaralı bağlantı noktası, bu bir web sunucusuysa 80/443 numaralı bağlantı noktaları vb.). iptables durumsal filtreleme için mükemmel bir desteğe sahiptir, böylece bir bağlantı kurulduktan sonra, o bağlantıyla ilişkili tüm paketlere izin verilir.

  • Tüm paketleri yükseltin ve otomatik güncellemeleri etkinleştirin. Linux dağıtımımı tüm paketlerin en son sürümüne güncelliyorum (yum upgrade Fedora'ya gidin, ancak yapılandırmanız için uygun olanı kullanın). Ayrıca, günde bir kez otomatik olarak güncellemeleri almak ve yüklemek için bir cron komut dosyası ayarladım (yum -y upgrade Fedora üzerinde). Bazı deneyimli sistem yöneticilerinin otomatik güncellemelere karşı önerebileceğini anlıyorum, çünkü bir güncelleme bazı hizmetleri bozma riski vardır; bu riski, güncel olmayan bir paket nedeniyle güvenlik ihlali riskine karşı tartmanız gerekir. Şahsen, otomatik güncellemelerin rahatlığını ve rahatlığını, kırık hizmetler riskine değer buluyorum, ancak bu tüm operasyonel ayarlarda doğru cevap olmayabilir.

  • SELinux'u etkinleştirin. SELinux, maruz kalan hizmetlere yönelik saldırılara karşı ikinci bir savunma katmanı sağlar. Bazen biraz acı olabilir (bazen benim için sorunlara neden oldu, bir servisi hata ayıklamak için zor bir şekilde kırdı), ancak güvenlik açısından kritik bir ortam için buna değer olduğunu düşünüyorum.

  • Uzaktan yönetim için SSH'yi ayarlayın. Makineyi uzaktan yönetebilmeniz için SSH'yi ayarlamanız gerekir. İstemci tarafında bir DSA özel anahtarı oluşturmanızı, bir parola ile şifrelemenizi, ilgili ortak anahtarı sunucudaki yetkili_anahtarlar dosyasına yüklemenizi ve özel anahtarı kullanarak oturum açmanızı öneririm. sshd_config sunucudaki yapılandırma dosyası. PasswordAuthentication'ı devre dışı bırakmayı ve kişilerin ortak bir anahtar kullanarak oturum açmasını zorunlu tutmayı düşünün. Parola kimlik doğrulaması, özel anahtarınızla ilgili bir sorun olması durumunda faydalı bir geri dönüş olabilir, ancak aynı zamanda daha büyük bir risktir, çünkü insanlar genellikle tahmin edilebilir parolaları seçer. Sisteminizde çok yüksek kalitede şifreler seçmek için güvenemeyeceğiniz başka kullanıcılarınız varsa, PasswordAuthentication özelliğini devre dışı bırakabilirsiniz. Sadece sizseniz ve tüm şifrelerinize çok güveniyorsanız, etkin bırakabilirsiniz. Kökün SSH yoluyla oturum açmasını engellemiyorum, ancak farklı hissedebilirsiniz.

  • Birden fazla sistem yöneticiniz varsa, onlar için hesaplar ayarlayın. Ya her birine Sudo erişimi verin veya ayrı bir kök hesap oluşturun her sistem yöneticisi için.

  • DNSSEC'yi etkinleştirin. Sunucularımı, DNS sahteciliği riskini azaltmak için, mümkün olan her yerde ana bilgisayar adlarını DNSSEC ile doğrulayan yerel bir önbellek DNS sunucusu çalıştıracak şekilde yapılandırıyorum.

Daha sonra, dünyaya maruz kalan her hizmet için bu hizmeti güvence altına almak için önlemler alırım. Örneğin, mümkün olduğunda şifreleme (ör. Posta sunucuları için STARTTLS) ve chroot veya sandbox sunucularını etkinleştiriyorum. Ancak, ayrıntılar hizmetten hizmete değişir. Bu nedenle, çalıştırmayı planladığınız her hizmet için ayrı bir soru göndermenizi ve bu hizmeti nasıl kilitleyeceğiniz konusunda tavsiye istemenizi öneririm.

Zaten çok fazla sertleştirilmiş bir Linux dağıtımı arıyorsanız, kesinlikle tavsiye ederim Openwall Linux .

(Yorum: Sunucunuzda güvenilmeyen kullanıcılara verirseniz, güvenliği sıkılaştırmak çok daha zor hale gelir: saldırı yüzeyi çok daha büyüktür. Bu sizin için bir endişe varsa, bilgisayarınızı nasıl kilitleyeceğiniz hakkında ayrı bir soru sormanızı öneririm sunucunuzda hesapları olan yerel kullanıcıların saldırılarına karşı korumak için sunucu, bunu yapmak için teknikler kümesi oldukça farklıdır.)

13
D.W.

Ve Grsecurity/PAX çekirdek yamaları hakkında, bunlar sunucuyu çekirdek düzeyinde sertleştirmek için çok güzel özellikler içerir.

Özet:

  • Yığın ve yığın taşmalarını koruma
  • Diğer kullanıcıların işlemlerini gizle
  • Rol tabanlı erişim kontrol listesi
  • Krom sertleştirme
  • / proc, FIFO ve dmesg kısıtlamaları
  • Gelişmiş günlük kaydı özellikleri
6
Jerry Jacobs

Red Hat için NSA sertleştirme konusunda tavsiyeye sahiptir. Bakınız Red Hat Enterprise Linux için yapılandırma kılavuzu 5 - NSA/CSS .

CentOS ve diğer türevler için de yararlı olmalıdırlar.

4
nealmcb

RHEL için CIS Red Hat Enterprise Linux 5 BenchmarkInternet Güvenlik Merkezi iyi bir kaynak gibi görünüyor.

3
nealmcb

Gereksiz paketleri/hizmetleri kaldırarak sisteminizi korumaya çalışıyorsanız, daha büyük bir sorununuz var demektir. Bu paketler ilk etapta kurulmamış olmalıdır.

Minimalist bir sistem kurmalı ve sadece gerçekten ihtiyacınız olan paketleri eklemelisiniz. Aynı şey çekirdeğiniz için de geçerlidir. Kendi çekirdeğinizi sadece ihtiyacınız olan özelliklerle derleyin. Dağıtım çekirdeğinizi her şey için destekle kullanmayın (yine de% 95'ine ihtiyacınız olmayacak)

2
Martin Vegter