Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Core 2.1, .NET Core 3.1, .NET 5
Bu makalede, Linux sanal makinenizin (VM) güvenliğini sağlamak için yerel bir güvenlik duvarının nasıl yapılandırılması anlatılmaktadır.
Önkoşullar
Öğreticinin bu bölümünü tamamlamak için önkoşul yoktur.
Bu bölümün hedefi
Bir güvenlik duvarı yapılandırarak Linux VM'nizin güvenliğini sağlamayı öğreneceksiniz.
Bu bölüm için herhangi bir önkoşul olmasa da ideal kurulum önceki bölümlerdeki yönergeleri izler. Aşağıdakilere sahip olmanız gerekir:
- Nginx otomatik olarak çalışıyor ve 80 numaralı bağlantı noktasında gönderilen istekleri dinliyor
- Nginx, 5000 numaralı bağlantı noktasında dinleyen bir ASP.NET Core uygulamasına ters ara sunucu olarak yapılandırıldı ve gelen istekleri yönlendirdi.
- Sunucu yeniden başlatıldıktan veya işlem durdurulduğunda veya kilitlendiğinde otomatik olarak başlatacak şekilde yapılandırılan ASP.NET Core uygulaması
Uzak bilgisayarlardan erişime izin vermek için yerel güvenlik duvarı yapılandırma
Neredeyse tüm Linux dağıtımları iptables adlı yerel bir güvenlik duvarı içerir. Bu başlangıç kılavuzu hızlı bir başlangıç için yeterlidir. Iptable'lar, trafiğe izin vermek veya trafiği engellemek için ilke zincirlerini kullanan basit ancak güçlü bir güvenlik duvarıdır.
Ubuntu topluluk yardım sayfasına göre, iptable'lar varsayılan olarak tüm resmi Ubuntu dağıtımlarına yüklenir ve tüm trafiğe izin verecek şekilde yapılandırılır.
Iptable'lar basit bir güvenlik duvarı olsa da kalıcı kuralları yönetmek kolay değildir. Neyse ki, Linux'ta güvenlik duvarı kurallarını yapılandırma görevini çok daha kolay hale getiren birkaç güvenlik duvarı yapılandırma aracı vardır. Resmi Ubuntu güvenlik duvarı belgelerine göre, Ubuntu için varsayılan güvenlik duvarı yapılandırma aracıdırufw. Bu araç, iptable'ların IPv4 veya IPv6 konak tabanlı güvenlik duvarı oluşturmak için sağladığından daha kullanıcı dostu bir yöntem sağlar.
Not
ufw varsayılan olarak devre dışıdır. Bu nedenle kullanabilmesi için etkinleştirmeniz gerekir.
Bu öğretici boyunca kullanılan Linux VM herhangi bir güvenlik duvarı kuralı tarafından korunmaz. Bunun nedeni iptable'ların yüklü ve çalışıyor olmasına rağmen tanımlı kural olmamasıdır.
Burada amaç, yalnızca HTTP ve SSH (Secure Shell) trafiğinin sanal makineye dışarıdan erişmesine izin vermektir. Bunu başarmak için şu adımları izleyin:
- 'yi etkinleştirmeden
ufwönce, varsayılan ilke kuralının izin verecek şekilde ayarlandığından emin olun. Aksi takdirde, VM'ye SSH bağlantısını kaybetme riskiyle karşılaşırsınız. Varsayılan kural, başka bir kural eşleştirilmemişse işlenen kuraldır. Varsayılan "izin ver" kuralının etkinleştirilmesi, gelen SSH trafiğinin engellenmemesini sağlar. Bu noktada hiçbir "reddetme" kuralı yoktur. Bu nedenle tüm gelen trafiğe izin verilir. -
Önemli
SSH ve HTTP "allow" kurallarını açıkça ekleyin. Ayrıca, SSH bağlantı noktasını varsayılan değer olan 22'den farklı bir değere yapılandırdıysanız, bu bağlantı noktasına izin vermelisiniz. Örneğin, SSH bağlantı noktasını 2222 olarak değiştirdiyseniz şu komutu çalıştırmanız gerekir:
sudo ufw allow 2222. - Varsayılan kuralı "reddetme" kuralı olarak ayarlayın. Bu, protokol SSH veya HTTP'den farklı bir şeyse varsayılan "reddetme" kuralının trafiği reddetmesini sağlar. Örneğin, gelen HTTP trafiği reddedilir.
- öğesini
ufwetkinleştirin.
Bu adımların komutları aşağıdaki ekran görüntüsünde listelenmiştir.
Her adımda gerçekleşen budur.
komutunu çalıştırarak
sudo ufw status verboseufw'un durumunu denetler. Varsayılan olarak, ufw etkin değildir ve etkin değildir.komutunu çalıştırır
sudo ufw default allow. Varsayılan "izin ver" kuralından başka bir kural olmadığından, VM'de her bağlantı noktasının açık olduğu kabul edilir.-
Önemli
komutunu çalıştırarak SSH protokolunu
sudo ufw allow sshizin verilenler listesine ekleyin. Protocol.ssh bilinen bir protokoldür ve /etc/services dosyasında tanımlanır. Bu nedenle, "22" yerine "ssh" kullanılabilir. SSH hizmetini varsayılan 22 bağlantı noktası dışında bir bağlantı noktasında dinleyecek şekilde yapılandırdığınızda, diğer bağlantı noktasını açıkça eklemeniz gerektiğini unutmayın. Örneğin, SSH'yi 2222 numaralı bağlantı noktasını dinleyecek şekilde yapılandırdıysanız şu komutu çalıştırın:sudo ufw allow 2222. komutunu çalıştırarak
sudo ufw allow httpHTTP protokolüne izin verin. HTTP, /etc/services dosyasında tanımlanan bilinen bir protokoldür. Bu nedenle, protokol adı kullanılabilir vesudo ufw allow httpkomut çalıştırılabilir. Çalıştırmaksudo ufw allow 80da mükemmel bir şekilde geçerlidir.Not
Hem SSH hem de HTTP protokollerine izin verdikten sonra, diğer tüm protokolleri "reddet" listesine eklemek istersiniz.
Komutunu çalıştırarak
sudo ufw default denyvarsayılan kuralı reddedecek şekilde değiştirerek bunu yapabilirsiniz. Yalnızca SSH ve HTTP protokollerine izin verilir. Diğer protokoller reddedilir.ufwöğesini etkinleştirin.
Bu yordamı tamamladıktan sonra çıkış aşağıdadır sudo ufw status verbose .
Güvenlik duvarı yapılandırıldıktan sonra çalışıp çalışmadığını test edin.
Yerel güvenlik duvarını test edin
Güvenlik duvarını test etmek kolaydır: HTTP protokolü için bir "reddetme" kuralı oluşturun ve siteye başka bir bilgisayardan erişmeyi deneyin. İstek engellenmelidir.
Bu "reddet" kuralını oluşturmadan önce, uygulamanın geçerli yapılandırmasında tarayıcı tarafından erişilebilir olduğundan emin olun. Bunu yapmak için buggyamb konak adını ekleyerek ve Linux VM'nizin genel IP adresini kullanarak istemci bilgisayardaki C:\Windows\System32\drivers\etc\hosts dosyasını düzenleyin. Buggyamb ana bilgisayar adı Linux VM IP adresini çözümler. Konak dosyanıza herhangi bir konak adı ekleyebilir veya Doğrudan Linux VM'nizin genel IP adresine bağlanmayı deneyebilirsiniz.
HTTP isteklerinin VM'ye ulaşabildiğini doğruladıktan sonra, HTTP trafiğini engelleyen bir kuralı etkinleştirmeyi deneyin. Bu, güvenlik duvarının çalıştığından emin olmaktır. Bunu yapmak için komutunu çalıştırarak sudo ufw deny httpHTTP için bir "reddetme" kuralı ekleyin. Bu, HTTP protokolü (bağlantı noktası 80'de) için iki "reddetme" kuralı ekler. Biri IPv4, diğeri IPv6 içindir.
Tarayıcıyı yeniden açın ve Linux'ta çalışan ASP.NET Core uygulamasına erişmeyi deneyin.
Bu ekran görüntüsü beklenen sonucu gösterir.
Komutunu kullanarak wget benzer bir testi doğrudan Linux VM'nin içinde çalıştırabilirsiniz. Aşağıdaki ekran görüntüsünde, komutunu çalıştırarak wgetaynı test için gerekli adımlar gösterilmektedir.
Her adımda gerçekleşen budur.
HTTP protokolü için "reddet" kuralı eklendi.
Komut
wget buggyamb-externalçalıştırıldı. Tahmin edebileceğiniz gibi, "buggyamb-external" ana bilgisayar adı Linux VM'nin genel IP adresini çözümler. Bunu yapmak için vi kullanarak/etc/hostsdosyayı düzenleyin. Gösterildiği gibi,wgetbağlanmaya çalıştı, ancak hiçbir zaman başarılı olmadı. İşlemden çıkmak için CTRL+C tuşlarına basmanız gerekiyordu.HTTP protokolü için bir "izin ver" kuralı eklendi.
komutu yeniden çalıştırılırken
wget buggyamb-externalfarklı sonuçlar elde edilir. Bu kez HTTPwgetprotokolüne izin verildiği için bağlanabildi. Gösterildiği gibi,wgetIndex.html dosyasını geçerli dizininize indirir.
Artık ASP.NET Core uygulamasında hata ayıklamak için gerekli yapılandırmayı tamamlamaya bir adım daha yaklaştınız. Sonraki bölüme geçmeden önce yerel güvenlik duvarında hem SSH hem de HTTP'ye izin verildiğinden emin olun.
Sonraki adımlar
Bölüm 2.5 - Geliştirme ortamınızdaki dosyaları Linux VM'sine kopyalayın ve sonra dosyaları Linux'ta ayıklayın.