Ubuntu Sunucusunu Güvenli Hale Getirmek İçin Ne Yapılabilir?


35

Ubuntu Server'ı mümkün olduğu kadar güvenli hale getirecek bir projem var. Sunucu bir web barındırma sunucusudur. Sunucu LAMP, Mail ve DNS kullanıyor olacak.


Hangi hizmetler çalışacak?
wojox

LAMBA, Posta, DNS
Bir Sıfır

Bir Ubuntu Sunucu Hile Yaptım ve sizinle paylaşmak istiyorum. İlk birkaç sayfa genel linux komutları, ardından belirli sunucu paketleri ve son sayfa ise sunucu güvenlik kontrol listesidir. Kontrol listesi birçok web sitesindeki ipuçlarını ve sertleşmeleri birleştirir. Umarım size yardımcı olur! WTFPL lisansı altında lisanslanmıştır. Sen burada / indirme / ne olursa olsun kontrol listesini görebilirsiniz . Zaman zaman güncellerim.
Noah Krasser

Yanıtlar:


43

Sunucumu korumak için yaptığım şeylerin bir listesi.

  1. UFW'yi ( sudo ufw enable) açın ve ardından yalnızca gerçekten kullanılan bağlantı noktalarına izin verin. ( sudo ufw allow 80)
  2. MySQL'in yalnızca localhost'tan bağlantılara izin verdiğinden emin olun.
  3. Posta hizmetlerinde TLS'yi etkinleştirin. Kendinden imzalı bir sertifika olsa bile. Şifrelerin net olarak gönderilmesini istemiyorsunuz.
  4. Denyhosts veya fail2ban gibi ssh bruteforce engelleyicilerini kurun. ( sudo apt-get install denyhosts)
  5. Yalnızca ssh anahtar tabanlı girişler yapmaya bakın.
  6. AppArmor'u öğrenin. Oldukça vanilya yapılandırmaları kullanıyorsanız, o zaman son derece kolaydır. Sadece açık olduğundan emin ol. Sıfır günlük açıkların azaltılmasına yardımcı olacaktır.
  7. Sunucuya fiziksel erişime bağlı olarak, sabit diskteki verilerin şifrelenmesine bakmak isteyebilirsiniz.
  8. Bu bağlantıdaki diğer önerileri takip edin. EDIT: Daha fazla bağlantı eklemek için yeterli üne sahip olmadığımda bunu düzenlemeyi unuttum. Burada kastedilen bağlantı aşağıdaki son bağlantıdır.
  9. Kullanıcılarınıza asla güvenmeyin. Sisteme erişimi olan birden fazla kullanıcı varsa, onları kilitleyin. Onlara sudo erişimi vermeniz gerekiyorsa, sadece ihtiyaç duyduklarını verin.
  10. Sağduyu kullanın. Eğer daha önce kilitlenseydin içeri nasıl gireceğinizi gerçekten çok düşünün. Ardından bu delikleri kapatın.

Dikkate alınması gereken birkaç şey daha var. Çoğu insan fiziksel erişimi unutur. Fiziksel olarak bir LiveCD'ye girip verilerinizi çalabilirsem dünyadaki tüm yazılım yapılandırmaları bir anlam ifade etmiyor. Sosyal mühendisliğe dikkat edin. Telefonda kimin olduğunu doğrulamak için sorular sorun ve yaptıkları talebi yapma yetkisine sahip olduklarından emin olun.

Hala 'yeni' bir kullanıcı olduğum için 2'den fazla bağlantı gönderemiyorum. Bu konuda daha fazla bilgiyi burada bulabilirsiniz: https://help.ubuntu.com/12.04/serverguide/index.html ve https://help.ubuntu.com/12.04/serverguide/security.html


2
UFW kullanmanın bir alternatifi (hala Ubuntu'daki yerleşik güvenlik duvarlarını kullanırken), sisteminizi, iptableskullanmayacağınız herhangi bir servise harici erişim izni vermemek için oldukça özel kurallarla kilitlemektir. Gerçi rouing ve benzeri şeyler gerektiren bilye düzeni.
Thomas Ward

2
@LordofTime Anlaşıldı. Aslında iptables'ı kendim kullanıyorum, ancak ufw çoğu temel kurulum için gayet iyi. Ayrıca UFW zaten en yaygın iptables yapılandırmaları için sadece bir sarıcıdır. Temel sistem hala aynı.
Patrick Regan

2
Ufw için +1, sen yeni bir kullanıcı değilsin, 1 yıl üyesin: p
Tachyons

1
Gerçekten, sadece bazı durumlarda iptables'ın bazı durumlarda ufw üzerinde daha iyi kullanılabilirliğe sahip olacağını belirtmek istedim
Thomas Ward

1
BastilleLinux’un ayrıca iyi bir güvenlik sertleştirme takımı olduğunu düşünün .
pl1nk

13

Güvenli paylaşılan hafıza

/ dev / shm, httpd gibi çalışan bir hizmete karşı saldırıda kullanılabilir. Daha güvenli hale getirmek için / etc / fstab dosyasını değiştirin.

Bir Terminal Penceresi açın ve aşağıdakileri girin:

sudo vi /etc/fstab

Aşağıdaki satırı ekleyin ve kaydedin. Bu ayarın geçerli olması için yeniden başlatmanız gerekir:

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

Sysctl ayarları ile sertleşme ağı

/Etc/sysctl.conf dosyası tüm sysctl ayarlarını içerir. Gelen paketlerin kaynak yönlendirmesini engelle ve hatalı biçimlendirilmiş IP'leri günlüğe kaydet

sudo vi /etc/sysctl.conf

Düzenleme /etc/sysctl.conf dosyası ve un-yorum veya aşağıdaki satırları ekleyin:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

Son değişikliklerle sysctl’yi yeniden yüklemek için, şunu girin:

sudo sysctl -p

IP Sahtekarlığını Önleyin

Bir Terminal açın ve aşağıdakileri girin:

sudo vi /etc/host.conf

Aşağıdaki satırları ekleyin veya düzenleyin:

order bind,hosts
nospoof on

Güvenlik için Harden PHP

Php.ini dosyasını düzenleyin:

sudo vi /etc/php5/apache2/php.ini

Aşağıdaki satırları ekleyin veya düzenleyin:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

Web Uygulaması Güvenlik Duvarı - ModSecurity

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

DDOS (Hizmet Reddi) saldırılarından koruyun - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

Günlükleri tarayın ve şüpheli ana bilgisayarları yasaklayın - DenyHosts ve Fail2Ban

@DenyHosts

DenyHosts, /etc/hosts.deny dosyasına girişler ekleyerek SSH saldırılarını otomatik olarak engelleyen bir python programıdır. DenyHosts, Linux yöneticilerini rahatsız eden ana bilgisayarlar, saldırgan kullanıcılar ve şüpheli girişler hakkında da bilgilendirecektir.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install denyhosts

Yüklemeden sonra /etc/denyhosts.conf yapılandırma dosyasını düzenleyin ve e-postayı ve diğer ayarları gerektiği gibi değiştirin.

Yönetici e-posta ayarlarını düzenlemek için bir terminal penceresi açıp şunu girin:

sudo vi /etc/denyhosts.conf

Sunucunuzda aşağıdaki değerleri gerektiği gibi değiştirin:

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2ban, günlük izlemesini SSH, Apache, Courier, FTP ve diğerleri dahil olmak üzere diğer hizmetlere genişlettiği için DenyHosts'tan daha ileri düzeydedir.

Fail2ban log dosyalarını tarar ve kötü niyetli işaretler gösteren IP'leri yasaklar - çok fazla şifre hatası, istismar arayışı vb.

Genelde Fail2Ban, IP adreslerini belirli bir süre boyunca reddetmek için güvenlik duvarı kurallarını güncellemek için kullanılır, ancak herhangi bir isteğe bağlı başka işlem de yapılandırılabilir. Kutudan çıkan Fail2Ban, çeşitli servisler (apache, kurye, ftp, ssh, vb.) İçin filtrelerle birlikte gelir.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install fail2ban

Yüklemeden sonra /etc/fail2ban/jail.local yapılandırma dosyasını düzenleyin ve gerektiği gibi filtre kurallarını oluşturun.

Ayarları düzenlemek için bir terminal penceresi açıp şunu girin:

sudo vi /etc/fail2ban/jail.conf

Fail2ban'ın izlemesini istediğiniz tüm hizmetleri etkinleştirerek active = false to * enable = true * olarak değiştirin

Örneğin, SSH'nin hapishaneyi izlemesini ve yasaklanmasını etkinleştirmek istiyorsanız, aşağıdaki satırı bulun ve yanlıştan doğruya doğru etkinleştirmeyi değiştirin . Bu kadar.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

Eğer ev sahiplerinin yasaklanması durumunda Fail2Ban'dan e-posta almak istiyorsanız , aşağıdaki satırı e-posta adresinize değiştirin.

destemail = root@localhost

ve aşağıdaki satırı şuradan değiştirin:

action = %(action_)s

için:

action = %(action_mwl)s

Ayrıca fail2ban'ın varsayılan olarak sağlanmadığını izlemesini istediğiniz çeşitli servisler için kural filtreleri oluşturabilirsiniz .

sudo vi /etc/fail2ban/jail.local

Fail2ban'ı nasıl yapılandıracağınız ve çeşitli filtreler yaratacağınıza dair iyi talimatlar HowtoForge'da bulunabilir - bir örnek için buraya tıklayın

Fail2Ban yapılandırması tamamlandığında servisi şu şekilde yeniden başlatın:

sudo /etc/init.d/fail2ban restart

İle durumunu da kontrol edebilirsiniz.

sudo fail2ban-client status

Rootkit'leri kontrol et - RKHunter ve CHKRootKit.

Hem RKHunter hem de CHKRootkit temelde aynı şeyi yapar - sisteminizi rootkits için kontrol edin. Her ikisini de kullanmanın zararı yok.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install rkhunter chkrootkit

Chkrootkit'i çalıştırmak için bir terminal penceresi açıp şunu girin:

sudo chkrootkit

RKHunter'ı güncellemek ve çalıştırmak için. Bir Terminal açın ve aşağıdakileri girin

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

Açık portları tara - Nmap

Nmap ("Network Mapper"), ağ keşfi ve güvenlik denetimi için ücretsiz ve açık kaynaklı bir yardımcı programdır.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install nmap

Sisteminizi açık portlar için aşağıdakilerle tarayın:

nmap -v -sT localhost

SYN aşağıdakilerle tarama:

sudo nmap -v -sS localhost

Analiz sistemi LOG dosyaları - LogWatch

Logwatch özelleştirilebilir bir log analiz sistemidir. Logwatch, sisteminizin günlüklerini ayrıştırır ve belirttiğiniz alanları analiz eden bir rapor oluşturur. Logwatch kullanımı kolaydır ve çoğu sistemde paketten çıkar çıkmaz çalışacaktır.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install logwatch libdate-manip-perl

Logwatch çıkışını görüntülemek için daha az kullanın:

sudo logwatch | less

Son 7 güne ait bir logwatch raporunu bir e-posta adresine e-posta ile göndermek için, aşağıdakini girin ve posta@etkialani.com adresini gerekli e-posta ile değiştirin. :

sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today' 

Sistem güvenliğinizi denetleyin - Tiger.

Tiger, hem güvenlik denetimi hem de izinsiz giriş tespit sistemi olarak kullanılabilecek bir güvenlik aracıdır.

Bir Terminal açın ve aşağıdakileri girin:

sudo apt-get install tiger

Kaplanı çalıştırmak için şunu girin:

sudo tiger

Tüm Tiger çıkışları / var / log / tiger içinde bulunabilir.

Kaplan güvenlik raporlarını görüntülemek için bir Terminal açın ve aşağıdakileri girin:

sudo less /var/log/tiger/security.report.*

Daha Fazla Yardım İçin


PHP: magic_quotes_gpc = On. Sihirli tırnaklar ilk önce kullanımdan kaldırılmış ve sonra kaldırılmıştır: php.net/manual/en/security.magicquotes.whynot.php
Tim

13

Bunun web-hosting-sunucu olduğunu söylediğinden beri ... 5 uzun yıldaki en iyi uygulamalarımı ve deneyimlerimi web-hosting hattında paylaşmak istiyorum .

  1. Geçmiş deneyimlerime göre, hemen yapılandırmaya cehenneme girmek yerine, önce verilen makalede belirtildiği gibi düşük güvenlikli asma üzümlerini birleştirmelisiniz.

  2. LAMP'a sahip olduğunuzdan, PHP ve php.ini ayarları konusunda çok dikkatli olmalısınız . Bu PHP'yi korumak için iyi bir bağlantıdır . PHP, uygun şekilde yapılandırılmadığında güvenlik döngüsü haline gelebilecek süper güçlere sahiptir.

  3. Dosyalarınızın izniniz olmadan değiştirilip değiştirilmediğini kontrol etmek için bir cron işi kullanabilirsiniz ; Bu cron işini kullanarak . Cron sonuçlarını karşılaştırmak için Notepad ++ ' ı tercih ediyorum (cron emailini doğrudan web sunucunuzdan indirin ve Notepad ++' da açın).

  4. Bazı SEM'leri yüklemek istiyorsanız, cPanel en çok tercih edilir (ancak ücretlidir). Webmin ve zpanel çok iyi ücretsiz alternatiflerdir. Webmin bunun için iyidir, en azından kendinden imzalı sertifikalar kullanır ve güvenlik ekler.

  5. Kutudan çıkan bir şeyin çalışmasını istiyorsanız, Anahtar Teslim Linux'a gidebilirsiniz . Ubuntu'ya dayanmaktadır, uygulaması son derece kolay ve ihtiyaçlarınıza göre esnek. Çok az bir çaba ile kutudan güvenliği elde edersiniz. Bu onların LAMP yığını . Ben şahsen bunu sadece kullanıyorum ve tercih ediyorum.

  6. Eğer çiziklerden başlıyorsanız, ISPconfig3'ü de kurabilirsiniz. Talimat Burada .

  7. Back-Track-Linux kullanarak güvenliğinize nüfuz etmeye çalışarak güvenliğinizi test edebilirsiniz .

  8. karmaşık uzun ve rastgele şifreler saklayın . PC'de saklamayın . onları yaz. Bu girişlere erişmek için canlı bir CD kullanın.

  9. fail2ban gibi kaba bir kuvvet koruma yazılımı edinin .

  10. İhtiyacın olmayan şeytanları çalıştırma.

  11. Gereksiz tüm bağlantı noktalarını engelleyin . SSH portuyla (22) çok dikkatli olun.

  12. Sunucuyu yöneteceğiniz sistem üzerinde statik bir IP ile kendinizi edinin. IP engellemesinin çoğunu yapın ve yalnızca belirli IP'nizin 22 numaralı bağlantı noktası gibi yapılandırma yerlerine erişmesine izin verin .

Günün sonunda ... mutlak bir zihinle çalışın , yükleme ile duygusallaşmayın ve sağduyunuzu uygulamak sizi çok ötesine götürür.

**My heartiest best wishes to you. good luck.**

1
PHP, kullanıcı girdisine güvenirken de tehlikeli olabilir (örneğin sql enjeksiyonu).
NoBugs

@ NoBugs Bu noktaya kesinlikle katılıyorum. Tek bir cevapla her şeyi sıkıştırmak mümkün değil. Cevabım pek çok köprü içerir ve bu sayfaları içeren bu web siteleri gerçekten çok yararlıdır. Cevabımın ve içerilen bağlantıların topluluğa yardım etmesini
umuyorum

2
# 9: Hayır, ramdom yolcuları kötüdür, anahtar uzunluktadır , yani. "D0g ....................." "PrXyc.N (n4k77 # L! EVdAfp9" daha güçlü. En açıklanması explainxkcd.com/2011/08/10 / password-strength
papukaija

2
@papukaija ben google öneririz brute force attacksve dictionary attacks.. Bu tür saldırılardan kendinizi güvence altına almak için tek yol rastgele uzun şifre.
Bhavesh Diwan,

6

Bastille Linux projesinden yararlanın.

Tüm güvenliği artırmak ve Ubuntu sisteminiz için ( Bastille Linux'tan ) ödün verme hassasiyetini azaltmak için ek güvenlik sertleştirme önlemleri almak için etkileşimli bir araç sunar .

Bir değerlendirme ve raporlama işlevi sunar, böylece sistemin hangi kısımlarının kilitlenmediğini size söyleyebilir. Sistemi, salt okunur bir şekilde inceler ve her sertleştirme maddesinin durumunu bildirir. Örneğin, Bastille, DNS sunucusunun bir chroot hapishanesinde kilitli olup olmadığını, telnet'in kapalı olup olmadığını veya şifrelerin iyi bir uzunlukta olması gerekip gerekmediğini kontrol edebilir. Bu bağlantı üzerinden yalnızca Web'deki bir demoya bakabilirsiniz (daha fazla bilgi ).

Burada Web (yalnızca) demosunun önizlemesini görebilirsiniz .

BastillleLinux


1
Bu tavsiyeyi ikinci olarak söyleyebilirim. Maruz kalan ana bilgisayarları (örneğin web sunucuları) çalıştırmak için, bastille sistemi güvenceye almak için uzun bir yol kat etmektedir.
Floyd

Bu, CentOS / Redhat'ta bulduğun SELinux sistemine benziyor ama iddiaya göre SELinux daha modern.
djangofan

3

nmapMakinedeki tüm arayüzleri kullanın , böylece makinenizde hangi servisleri çalıştırdığınızı bilirsiniz. Bu güvenlik için önemli bir araçtır.

Harici arayüzlerde ihtiyacınız olmayan tüm hizmetleri kaldırın. MySQL'i yalnızca localhost gibi belirli arayüzleri dinleyecek şekilde yapılandırabilirsiniz.

SSH servisinizi (ve diğerlerini mümkün olduğunca) korumak için ufw tuşunu kullanın, böylece aynı makineden dakika başına çok fazla (başarısız) bağlantı yapılmasına izin vermez. Bu kaba kuvvet saldırılarını zorlaştıracak. Bağlantı noktası numarasını değiştirmek yararlı değil, sadece belirsizlik, güvenlik yok.

Makinenizdeki hesap sayısını kısıtlayın. Ayrıca gerçekte kullandığınızdan daha fazla paket / program yüklemeyin. Yalnızca X11 istemcileri yükleyin, X11 sunucusu değil.

Sadece dijital sertifika ile makineye ssh-login yapınız, şifre yok . Bu da kaba kuvvet saldırılarını zor / imkansız hale getirecek.



0

Güvenlik her zaman bir bedelle gelir. Bazı gerçekçi sınırlar koymak, hedeflerinize ulaşmada size yardımcı olacaktır. Aşağıdaki hususları dikkate alacağım:

  • Kendinizi neye karşı koruyorsunuz (hangi tür kötü adam, bütçesi nedir)?
  • Saldırı vektörlerin neler?

Burada yayınlanan tüm bağlantıları kontrol ederek, bunun eklenmesi gerektiğini düşünüyorum. Yalnızca yazılımınızı nasıl kuracağınızla ilgili değil, aynı zamanda güvenlik planını da düşünmekle ilgili detaylara girer. Artı olarak, çalıştırılacak her komut kendisine bir kaynakla açıklanmaktadır.

Xenial 16.04’te Ubuntu Web Sunucusu’nun güvenliğini sağlama


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.