07.06.2023

Temel UFW (Uncomplicated Firewall) komutları

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:

sudo ufw status

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:

sudo ufw enable

Ş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:

sudo ufw status verbose

Kapatılıyor UFW

Herhangi bir nedenle güvenlik duvarını devre dışı bırakmanız gerekiyorsa, bunu aşağıdaki komutla yapabilirsiniz:

sudo ufw disable

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:

sudo ufw deny from 91.198.174.190

sudo ufw status

Bu komutu çalıştırırsanız, belirtilen IP adresinin yasaklar listesinde olduğunu göreceksiniz:

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:

sudo ufw deny from 198.174.0/24

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:

sudo ufw deny in on eth0 from 91.198.174.192

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:

sudo ufw allow from 198.174.192

sudo ufw status

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:

sudo ufw allow in on eth0 from 91.198.174.22

sudo ufw status

Komutu çalıştırırsanız, buna benzer bir sonuç görürsünüz:

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:

sudo ufw delete allow from 91.198.174.192

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:

sudo ufw status numbered

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:

sudo ufw delete 1

İşlemi onaylamanız ve belirttiğiniz kimliğin silmek istediğiniz doğru kuralla ilişkili olduğundan emin olmanız istenir.

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.

sudo ufw app list

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:

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.

sudo ufw allow OpenSSH

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

sudo ufw status

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 allow "Nginx HTTPS"

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:

sudo ufw allow OpenSSH

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:

sudo ufw allow 22

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:

sudo ufw allow from 91.198.174.33 proto tcp to any port 22


Tüm ağdan gelen SSH bağlantılarına izin vermek için alt ağ adresini "kimden" parametresi olarak da kullanabilirsiniz:

sudo ufw allow from 91.198.174.0/24 proto tcp to any port 22

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:

sudo ufw allow from 91.198.174.33 to any port 873


Tüm 91.198.174.0 / 24 alt ağının sunucunuza "rsync" yapmasına izin vermek için komutu çalıştırın:

sudo ufw allow from 91.198.174.0/24 to any port 873

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:

sudo ufw app list | grep Nginx

Aşağıdaki komut sunucuda HTTP ve HTTPS trafiğine izin verecektir (80 ve 443 numaralı bağlantı noktaları):

sudo ufw allow "Nginx Full"

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:

sudo ufw app list | grep Apache

Aşağıdaki komut sunucuda HTTP ve HTTPS trafiğine izin verecektir (80 ve 443 numaralı bağlantı noktaları):

sudo ufw allow "Apache Full"

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:

sudo ufw allow http

Alternatif bir sözdizimi, HTTP hizmetinin bağlantı noktası numarasını belirtmektir:

sudo ufw allow 80

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:

sudo ufw allow https

Alternatif bir sözdizimi, HTTPS hizmetinin bağlantı noktası numarasını belirtmektir:

sudo ufw allow 443

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:

sudo ufw allow proto tcp from any to any port 80,443

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:

sudo ufw allow from 91.198.174.33 to any port 3306


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:

sudo ufw allow from 91.198.174.0/24 to any port 3306

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:

sudo ufw allow from 91.198.174.33 to any port 5432


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:

sudo ufw allow from 91.198.174.0/24 to any port 5432

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:

sudo ufw deny out 25

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:

man ufw