Giriş:
Ubuntu için varsayılan güvenlik duvarı yapılandırma aracı ufw'dir. İptables güvenlik duvarı yapılandırmasını basitleştirmek için tasarlanan ufw, IPv4 veya IPv6 ana bilgisayar tabanlı bir güvenlik duvarı oluşturmanın uygun bir yolunu sunar. Varsayılan olarak, UFW devre dışıdır.
UFW durum kontrolü
Güvenlik duvarının açık olup olmadığını kontrol edin, bu komutu kullanın:
- Sonuç, güvenlik duvarınızın etkin olup olmadığını gösterecektir.
Açılma UFW
Ufw durum komutunu çalıştırırken Durum: etkin değil mesajı alırsanız, güvenlik duvarının sistemde henüz etkin olmadığı anlamına gelir. Etkinleştirmek için bir komut çalıştırmanız gerekir.
Varsayılan olarak, UFW etkinleştirildiğinde, sunucudaki tüm bağlantı noktalarına harici erişimi engeller. Pratikte bu, SSH üzerinden bir sunucuya bağlanırsanız ve SSH bağlantı noktasına erişime izin vermeden önce ufw'yi etkinleştirirseniz bağlantınızın kesileceği anlamına gelir.
Sisteminizde ufw'yi etkinleştirmek için şu komutu çalıştırın:
- Buna benzer bir sonuç göreceksiniz.
Şu anda neyin engellendiğini veya izin verildiğini görmek için, aşağıda gösterildiği gibi ufw durumunu çalıştırırken ayrıntılı parametreyi kullanabilirsiniz:
- Çıktı
Kapatılıyor UFW
Herhangi bir nedenle güvenlik duvarını devre dışı bırakmanız gerekiyorsa, bunu aşağıdaki komutla yapabilirsiniz:
Dikkatli olun, bu komut sisteminizdeki güvenlik duvarı hizmetini tamamen devre dışı bırakacaktır!
Bir IP adresinin adreslenmesini engelleme
Belirli bir IP adresinden kaynaklanan tüm ağ bağlantılarını engellemek için, ayrılan IP adresini engellemek istediğiniz IP adresiyle değiştirerek aşağıdaki komutu çalıştırın:
- Bu örnekte, "91.198.174.190'dan itibaren", "91.198.174.190" kaynak IP adresini gösterir.
Bu komutu çalıştırırsanız, belirtilen IP adresinin yasaklar listesinde olduğunu göreceksiniz:
- Gelen ve giden tüm bağlantılar belirtilen IP adresi için engellenir.
Alt ağı engelle
Tüm alt ağı engellemeniz gerekiyorsa, alt ağ adresini ufw reddet komutunda "kimden" parametresi olarak kullanabilirsiniz. Bu, örnek alt ağdaki tüm IP adreslerini engeller 91.198.174.0 / 24:
- Alt ağı engelle
Ağ arayüzüne gelen bağlantıları engelleme
Belirli bir IP adresinden belirli bir ağ arabirimine gelen bağlantıları engellemek için, IP adresini engellemek istediğiniz IP adresiyle değiştirerek aşağıdaki komutu çalıştırın:
- "Giriş" parametresi, güvenlik duvarına kuralı yalnızca gelen bağlantılara uygulamasını söyler ve "eth0'da" parametresi, kuralın yalnızca eth0 arabirimi için geçerli olduğunu söyler. Birden çok ağ arabirimine (sanal arabirimler dahil) sahip bir sisteminiz varsa ve bu arabirimlerin bazılarına harici erişimi engellemeniz gerekiyorsa, ancak hepsine değil, bu yararlı olabilir.
IP adresi dönüşümlerine izin ver
Belirli bir IP adresinden kaynaklanan tüm ağ bağlantılarına izin vermek için, ayrılan IP adresini erişime izin vermek istediğiniz IP adresiyle değiştirerek aşağıdaki komutu çalıştırın:
- Şimdi "sudo ufw durumu" nu çalıştırırsanız, yeni eklediğiniz IP adresinin yanında İZİN VER ile buna benzer bir çıktı göreceksiniz.
- Ana bilgisayar için uygun alt ağ maskesini belirterek, örneğin 91.198.174.0/24 gibi tüm bir alt ağdan bağlantılara da izin verebilirsiniz.
Ağ arayüzüne gelen bağlantılara izin ver
Belirli bir IP adresinden belirli bir ağ arabirimine gelen bağlantılara izin vermek için, IP adresini izin vermek istediğinizle değiştirerek aşağıdaki komutu çalıştırın:
- The "in" parameter tells the firewall to apply the rule only to incoming connections and the "on eth0" parameter specifies that the rule applies only to the "eth0" interface.
Komutu çalıştırırsanız, buna benzer bir sonuç görürsünüz:
- "Sudo ufw durumu" nun sonucu
Güvenlik duvarı kuralını kaldırma
Ufw'ye önceden yüklenmiş bir kuralı silmek için "ufw sil" i kullanın, ardından kuralı (izin ver / reddet) ve hedef belirtimi girin. Aşağıdaki örnek, daha önce 91.198.174.192 IP adresinden tüm bağlantılara izin verecek şekilde ayarlanmış bir kuralı siler:
- Güvenlik duvarı kuralını kaldırma
Hangi kuralı kaldırmak istediğinizi belirtmenin başka bir yolu da kural kimliğini belirtmektir. Bu bilgi aşağıdaki komut kullanılarak elde edilebilir:
- Çıktıdan iki aktif kural olduğunu görebilirsiniz. İlk kural, 91.198.174.190 IP adresinden gelen tüm bağlantıları reddeder. İkinci kural, 91.198.174.22 IP adresinden gelen eth0 arabirimindeki bağlantılara izin verir.
Varsayılan olarak güvenlik duvarı, açıkça izin verilmedikçe tüm harici erişimi zaten engellediğinden, ilk kural gereksizdir, bu nedenle kaldırılabilir. Bir kuralı kimliğine göre kaldırmak için komutu çalıştırın:
İşlemi onaylamanız ve belirttiğiniz kimliğin silmek istediğiniz doğru kuralla ilişkili olduğundan emin olmanız istenir.
- Kurallarınızı "sudo ufw" durumuyla tekrar listelerseniz, kuralın kaldırıldığını görürsünüz.
Kullanılabilir uygulama profillerinin listesi
Ağ iletişimine dayanan uygulamaları yüklerken, harici adreslerden bağlantılara izin vermek için kullanılabilecek bir güvenlik duvarı profili ayarlamak yaygındır. Bu, hizmet tarafından kullanılan belirli bağlantı noktası numaralarını soyutlayan ve hizmetleri yönlendirmek için uygun adlandırma sağlayan bir kısayol olması avantajıyla, genellikle "ufw allow from" çalıştırmakla aynıdır.
Web sunucusu veya ağa bağlı başka bir yazılım gibi bir hizmet yüklediyseniz ve profil güvenlik duvarında mevcut değilse, önce hizmetin etkin olduğundan emin olun. Uzak sunucular için OpenSSH genellikle kullanılabilir:
- Çıktı
Belirli bir uygulama için bir profil ekleyin
Bir güvenlik duvarı uygulama profilini etkinleştirmek için "ufw'ye izin ver" komutunu ve ardından etkinleştirmek istediğiniz uygulama profilinin adını çalıştırın ve bu, "sudo ufw uygulama listesi" komutuyla elde edilebilir. Aşağıdaki örnekte, standart SSH bağlantı noktasında gelen tüm SSH bağlantılarına izin verecek olan OpenSSH profilini etkinleştiriyoruz.
- Çıktı
Belirli bir uygulama için profili devre dışı bırakma
Güvenlik duvarında önceden yapılandırdığınız bir uygulama profilini devre dışı bırakmak için ilgili kuralı kaldırmanız gerekir. Örneğin, "sudo ufw durumu" ndan aşağıdaki çıktıyı göz önünde bulundurun
- Bu çıktı, "Nginx Tam" uygulama profilinin şu anda etkin olduğunu ve web sunucusuna hem HTTP hem de HTTPS üzerinden herhangi bir bağlantıya izin verdiğini gösterir.
Web sunucunuza yalnızca HTTPS isteklerine izin vermek istiyorsanız, önce bu durumda "Nginx HTTPS" olan en kısıtlayıcı kuralı etkinleştirmeniz ve ardından "Nginx Full" etkin kuralını devre dışı bırakmanız gerekir:
sudo ufw delete allow "Nginx Full"
Mevcut tüm uygulama profillerini "sudo ufw uygulama listesi" ile listeleyebileceğinizi unutmayın.
Ssh'yi etkinleştir
Uzak sunucularla çalışırken, sunucunuza uzaktan giriş yapabilmeniz için SSH bağlantı noktasının bağlantılara açık olduğundan emin olmanız gerekir.
Aşağıdaki komut, güvenlik duvarı için OpenSSH uygulama profilini etkinleştirecek ve sunucudaki varsayılan SSH bağlantı noktasına tüm bağlantılara izin verecektir:
Daha az kullanıcı dostu olmasına rağmen, alternatif bir sözdizimi, genellikle varsayılan olarak 22 olarak ayarlanan SSH hizmetinin tam bağlantı noktası numarasını belirtmektir:
- Çıktı
Belirli bir IP adresinden veya alt ağdan gelen ssh'ye izin ver
Belirli bir IP adresinden veya alt ağdan gelen bağlantılara izin vermek için, bağlantının kaynağını tanımlamak üzere "kimden" yönergesini ekleyeceksiniz. Bu, hedef adresi "kime" parametresiyle de belirtmenizi gerektirir. Bu kuralı yalnızca SSH için engellemek için "proto" yu (protokol) "tcp" ile sınırlayın ve ardından "port" parametresini kullanın ve varsayılan SSH portu olan 22'ye ayarlayın.
Aşağıdaki komut yalnızca 91.198.174.33 IP adresinden kaynaklanan SSH bağlantılarına izin verecektir:
Tüm ağdan gelen SSH bağlantılarına izin vermek için alt ağ adresini "kimden" parametresi olarak da kullanabilirsiniz:
Belirli bir IP adresinden veya alt ağdan gelen Rsync'ye izin ver
873 numaralı bağlantı noktasında çalışan Rsync, dosyaları bir bilgisayardan diğerine aktarmak için kullanılabilir.
Belirli bir IP adresinden veya alt ağdan gelen rsync bağlantılarına izin vermek için kaynak IP adresini belirtmek için kimden parametresini ve hedef bağlantı noktasını 873 olarak ayarlamak için bağlantı noktası parametresini kullanın. Aşağıdaki komut yalnızca 91.198.174.33 IP adresinden gelen Rsync bağlantılarına izin verecektir:
Tüm 91.198.174.0 / 24 alt ağının sunucunuza "rsync" yapmasına izin vermek için komutu çalıştırın:
- Çıktı
Nginx HTTP / https'ye izin ver
Nginx web sunucusunu kurarken, sunucunun içine birkaç farklı güvenlik duvarı profili yükler. Nginx'i hizmet olarak kurup etkinleştirdikten sonra, hangi profillerin kullanılabilir olduğunu belirlemek için aşağıdaki komutu çalıştırın:
- HTTP ve HTTPS trafiğine izin vermek için Nginx Full'u seçin. Aksi takdirde, yalnızca http'ye izin vermek için Nginx http'yi veya yalnızca https'ye izin vermek için Nginx https'yi seçin.
Aşağıdaki komut sunucuda HTTP ve HTTPS trafiğine izin verecektir (80 ve 443 numaralı bağlantı noktaları):
- Çıktı
Apache HTTP / https'ye izin ver
Kurulum sırasında Apache web sunucusu, sunucuya birkaç farklı UFW profili yükler. Apache'yi bir hizmet olarak kurduktan ve etkinleştirdikten sonra, hangi profillerin kullanılabilir olduğunu belirlemek için aşağıdaki komutu çalıştırın:
- HTTP ve HTTPS trafiğini etkinleştirmek için "Apache Full" u seçin. Aksi takdirde HTTP için "Apache" yi veya HTTPS için "Apache Secure" ı seçin.
Aşağıdaki komut sunucuda HTTP ve HTTPS trafiğine izin verecektir (80 ve 443 numaralı bağlantı noktaları):
- Çıktı
Gelen tüm HTTP'ye izin ver (bağlantı noktası 80)
Apache ve Nginx gibi web sunucuları normalde 80 numaralı bağlantı noktasında HTTP isteklerini dinler. Gelen trafiğe ilişkin varsayılan ilkeniz reddet veya reddet olarak ayarlanmışsa, 80 numaralı bağlantı noktasına harici erişime izin vermek için bir UFW kuralı oluşturmanız gerekir. Bu komutun parametresi olarak bağlantı noktası numarasını veya hizmet adını (http) kullanabilirsiniz.
Gelen tüm HTTP bağlantılarına izin vermek için (bağlantı noktası 80) komutu çalıştırın:
Alternatif bir sözdizimi, HTTP hizmetinin bağlantı noktası numarasını belirtmektir:
- Çıktı
Gelen tüm https'lere izin ver (bağlantı noktası 443)
HTTPS normalde 443 numaralı bağlantı noktasında çalışır. Gelen trafiğe ilişkin varsayılan ilkeniz reddet veya reddet olarak ayarlanmışsa, 443 numaralı bağlantı noktasında harici erişime izin vermek için bir UFW kuralı oluşturmanız gerekir. Bu komutun parametresi olarak bağlantı noktası numarasını veya hizmet adını (https) kullanabilirsiniz.
Gelen tüm HTTPS bağlantılarına (bağlantı noktası 443) izin vermek için bu komutu çalıştırın:
Alternatif bir sözdizimi, HTTPS hizmetinin bağlantı noktası numarasını belirtmektir:
- Çıktı
Gelen tüm HTTP ve https'ye izin ver
HTTP ve HTTPS trafiğine izin vermek istiyorsanız, her iki bağlantı noktasına da izin veren bir kural oluşturabilirsiniz. Bu kullanım, protokolü, bu durumda tcp'ye ayarlanması gereken "proto" parametresini kullanarak da tanımlamanızı gerektirir.
Gelen tüm HTTP ve HTTPS bağlantılarına (80 ve 443 numaralı bağlantı noktaları) izin vermek için komutu çalıştırın:
Allow connection to MySQL from a specific IP address or subnet
MySQL listens for client connections on port 3306. If your MySQL database server is used by a client on a remote server, you need to create a UFW rule to allow such access.
To allow incoming MySQL connections from a particular IP address or subnet, use the from parameter to specify the source IP address and the "port" parameter to set destination port 3306.
The following command will allow the IP address 91.198.174.33 to connect to the MySQL server port:
91.198.174.0 / 24 alt ağının tamamının MySQL sunucunuza bağlanmasına izin vermek için komutu çalıştırın:
Belirli bir IP adresinden veya alt ağdan postgresql'e bağlantıya izin ver
PostgreSQL, 5432 numaralı bağlantı noktasında istemci bağlantılarını dinler. PostgreSQL veritabanı sunucunuz uzak sunucudaki bir istemci tarafından kullanılıyorsa, bu trafiğe izin vermeniz gerekir.
Belirli bir IP adresinden veya alt ağdan gelen PostgreSQL bağlantılarına izin vermek için kaynağı kimden parametresiyle belirtin ve bağlantı noktasını 5432 olarak ayarlayın:
91.198.174.0/24 alt ağının tamamının PostgreSQL sunucunuza bağlanmasına izin vermek için komutu çalıştırın:
Belirli bir IP adresinden veya alt ağdan postgresql'e bağlantıya izin ver
Sendmail ve Postfix gibi posta sunucuları normalde SMTP trafiği için 25 numaralı bağlantı noktasını kullanır. Sunucunuzun giden posta göndermemesi gerekiyorsa, bu tür trafiği engelleyebilirsiniz. Giden SMTP bağlantılarını engellemek için şu komutu çalıştırın:
Bu, güvenlik duvarınızı 25 numaralı bağlantı noktasındaki tüm giden trafiği engelleyecek şekilde yapılandıracaktır. Farklı bir bağlantı noktası numarasındaki giden bağlantıları reddetmeniz gerekiyorsa, bu komutu tekrarlayabilir ve 25'i engellemek istediğiniz bağlantı noktası numarasıyla değiştirebilirsiniz.
Sonuç:
UFW, doğru yapılandırıldığında sunucularınızın güvenliğini önemli ölçüde artırabilen güçlü bir araçtır. Bu kılavuz, Ubuntu'da güvenlik duvarını yapılandırmak için sıklıkla kullanılan bazı yaygın UFW kurallarını kapsar. Bu kılavuzdaki komutların çoğu, kaynak IP adresi ve / veya hedef bağlantı noktası gibi parametreler değiştirilerek farklı kullanım durumları ve senaryoları için uyarlanabilir. Her komut parametresi ve kullanılabilir değiştiriciler hakkında daha fazla bilgi için UFW kılavuzunu kontrol etmek için mac yardımcı programını kullanabilirsiniz: