Takip et

Mosquitto MQTT Mesajlaşma Aracısının Debian 10 Üzerine Kurulumu ve Güvenli Hale Getirilmesi

Mosquitto MQTT Mesajlaşma Aracısının Debian 10 Üzerine Kurulumu ve Güvenli Hale Getirilmesi Giriş Nesnelerin İnterneti (IoT) ekosisteminde ci

Mosquitto MQTT Mesajlaşma Aracısının Debian 10 Üzerine Kurulumu ve Güvenli Hale Getirilmesi

Giriş

Nesnelerin İnterneti (IoT) ekosisteminde cihazlar arası iletişimin temel taşlarından biri olan MQTT (Message Queuing Telemetry Transport) protokolü, düşük bant genişliği ve yüksek gecikme sürelerine sahip ağlarda bile verimli ve güvenilir mesajlaşma sağlamasıyla öne çıkmaktadır. Hafif yapısı sayesinde sensörlerden akıllı cihazlara kadar geniş bir yelpazedeki donanımlarda kullanılabilen MQTT, “yayınla/abone ol” (publish/subscribe) modelini benimseyerek esnek bir iletişim mimarisi sunar. Bu modelde, mesajı gönderen (yayıncı) ve mesajı alan (abone) doğrudan birbirleriyle etkileşime girmez; bunun yerine, bir aracı (broker) üzerinden iletişim kurarlar.

Mosquitto, açık kaynaklı ve oldukça popüler bir MQTT mesajlaşma aracısıdır. Eclipse Vakfı tarafından geliştirilen Mosquitto, MQTT v3.1, v3.1.1 ve v5.0 protokollerini destekler. Güvenilirliği, performansı ve kolay yapılandırılabilir olması nedeniyle hem küçük ölçekli projelerde hem de büyük endüstriyel IoT çözümlerinde yaygın olarak tercih edilmektedir.

Debian 10 (Buster), kararlılığı, güvenilirliği ve geniş paket depoları sayesinde sunucu ortamlarında sıkça kullanılan bir işletim sistemidir. Mosquitto’yu Debian 10 üzerine kurmak, sağlam ve güvenli bir IoT iletişim altyapısı oluşturmak için mantıklı bir seçimdir. Ancak, herhangi bir ağ hizmetinde olduğu gibi, Mosquitto broker’ın da doğru bir şekilde kurulması ve özellikle güvenlik önlemlerinin eksiksiz alınması büyük önem taşır. IoT cihazlarından gelen veriler genellikle hassas bilgiler içerebilir ve yetkisiz erişim veya veri sızıntıları ciddi sonuçlara yol açabilir. Bu makale, Mosquitto MQTT broker’ını Debian 10 üzerine adım adım nasıl kuracağınızı ve çeşitli güvenlik önlemleriyle nasıl koruyacağınızı detaylı bir şekilde açıklayacaktır.

Ön Gereksinimler

Bu rehbere başlamadan önce aşağıdaki ön gereksinimlere sahip olduğunuzdan emin olun:
* Debian 10 Sunucusu: Fiziksel veya sanal bir Debian 10 (Buster) işletim sistemine sahip bir sunucuya erişiminiz olmalı.
* Root veya Sudo Yetkileri: Kurulum ve yapılandırma adımları için root kullanıcısı olarak veya sudo yetkisine sahip bir kullanıcı ile işlem yapmanız gerekecek.
* İnternet Bağlantısı: Paket indirme ve güncelleme işlemleri için sunucunuzun aktif bir internet bağlantısı olmalı.

Sistem Güncellemesi

Herhangi bir yazılım kurulumuna başlamadan önce, sisteminizin paket listelerini güncellemek ve mevcut paketleri en son sürümlerine yükseltmek iyi bir uygulamadır. Bu, bağımlılık sorunlarını önlemeye ve en güncel güvenlik yamalarına sahip olmanızı sağlamaya yardımcı olur.

sudo apt update
sudo apt upgrade -y

apt update komutu, yerel paket indeksini güncellerken, apt upgrade -y komutu, mevcut tüm paketleri onay gerektirmeden (-y bayrağı ile) yükseltir.

Mosquitto Kurulumu

Mosquitto, Debian’ın resmi depolarında mevcuttur, bu da kurulumu oldukça basit hale getirir. apt paket yöneticisini kullanarak Mosquitto broker’ını ve onunla birlikte gelen istemci araçlarını (test amaçlı kullanışlıdır) kurabilirsiniz.

sudo apt install mosquitto mosquitto-clients -y

Bu komut, Mosquitto broker hizmetini ve mosquitto_pub ile mosquitto_sub gibi istemci yardımcı programlarını kuracaktır. Kurulum tamamlandıktan sonra Mosquitto hizmeti otomatik olarak başlatılacak ve sistem başlangıcında çalışacak şekilde yapılandırılacaktır.

Kurulumu Doğrulama

Mosquitto hizmetinin düzgün çalışıp çalışmadığını kontrol etmek için systemctl komutunu kullanabilirsiniz:

systemctl status mosquitto

Çıktıda Active: active (running) ifadesini görmelisiniz. Bu, Mosquitto broker’ının başarıyla çalıştığı anlamına gelir.

Temel Test (Anonim Erişimle)

Kurulumun ardından, varsayılan olarak Mosquitto, 1883 numaralı port üzerinden anonim erişime izin verecek şekilde yapılandırılmıştır. Bu, hızlı bir test yapmak için kullanışlıdır. Bir terminalde abone olalım:

mosquitto_sub -h localhost -t test/topic

Başka bir terminal açın ve aynı konuya bir mesaj gönderin:

mosquitto_pub -h localhost -t test/topic -m "Merhaba Mosquitto!"

Abone olduğunuz terminalde “Merhaba Mosquitto!” mesajını görmelisiniz. Bu, Mosquitto’nun düzgün çalıştığını ve mesajları başarıyla ilettiğini gösterir.

Temel Yapılandırma

Mosquitto’nun ana yapılandırma dosyası /etc/mosquitto/mosquitto.conf konumundadır. Bu dosya genellikle boştur veya yalnızca yorum satırları içerir. Mosquitto, bu dosya yoksa veya boşsa varsayılan değerleri kullanır. Ek yapılandırmalar genellikle /etc/mosquitto/conf.d/ dizinindeki .conf uzantılı dosyalarda yapılır. Ancak, biz tüm yapılandırmaları ana dosyaya ekleyeceğiz veya mevcut dosyayı düzenleyeceğiz.

Yapılandırma dosyasını açalım:

sudo nano /etc/mosquitto/mosquitto.conf

Bu dosya başlangıçta boş olabilir veya bazı örnek yorum satırları içerebilir. Varsayılan olarak Mosquitto, 1883 numaralı portu (standart, şifrelenmemiş MQTT) dinler ve anonim bağlantılara izin verir. Güvenlik adımlarına geçmeden önce bu varsayılan davranışları anlayalım.

Mosquitto’yu Güvenli Hale Getirme

Bir Mosquitto broker’ını üretim ortamında anonim erişime açık bırakmak büyük bir güvenlik riskidir. Yetkisiz kişilerin veya cihazların broker’ınıza bağlanmasını, mesajları okumasını, yayınlamasını veya hizmet reddi (DoS) saldırıları yapmasını önlemek için çeşitli güvenlik önlemleri almanız şarttır. Bu bölüm, kullanıcı kimlik doğrulaması, TLS/SSL şifrelemesi, güvenlik duvarı yapılandırması ve erişim kontrol listeleri (ACL’ler) gibi önemli güvenlik adımlarını ele alacaktır.

1. Kullanıcı Kimlik Doğrulaması

Anonim erişimi devre dışı bırakmak ve yalnızca bilinen kullanıcıların broker’a bağlanmasına izin vermek, ilk ve en önemli güvenlik adımıdır. Mosquitto, kullanıcı adı ve parola tabanlı kimlik doğrulaması için bir parola dosyası kullanabilir.

Parola Dosyası Oluşturma

Mosquitto, parolaları karmaşık (hashed) bir formatta saklayan özel bir parola dosyası kullanır. Bu dosyayı mosquitto_passwd yardımcı programı ile oluşturur ve yönetiriz.

İlk kullanıcıyı oluşturmak için:

sudo mosquitto_passwd -c /etc/mosquitto/passwd mosquitto_user

Bu komut, /etc/mosquitto/passwd yolunda yeni bir parola dosyası oluşturur (-c bayrağı yeni bir dosya oluşturur veya mevcut dosyayı siler). mosquitto_user adında bir kullanıcı eklemenizi ister ve sizden bu kullanıcı için bir parola belirlemenizi ister. Parolayı iki kez girin.

Daha fazla kullanıcı eklemek isterseniz, -c bayrağını kullanmayın, aksi takdirde mevcut dosya silinir ve yeni bir dosya oluşturulur.

sudo mosquitto_passwd /etc/mosquitto/passwd another_user

Bu komut, another_user adında yeni bir kullanıcıyı mevcut parola dosyasına ekler.

Mosquitto’yu Parola Dosyasını Kullanacak Şekilde Yapılandırma

Şimdi Mosquitto’yu bu parola dosyasını kullanacak ve anonim bağlantıları reddedecek şekilde yapılandırmamız gerekiyor. /etc/mosquitto/mosquitto.conf dosyasını tekrar açın:

sudo nano /etc/mosquitto/mosquitto.conf

Dosyanın sonuna veya uygun bir yere aşağıdaki satırları ekleyin:

# Kullanıcı kimlik doğrulamasını etkinleştir
password_file /etc/mosquitto/passwd

Anonim bağlantıları devre dışı bırak

allow_anonymous false

Yapılandırma dosyasını kaydedin ve kapatın (CTRL+X, Y, Enter).

Mosquitto Hizmetini Yeniden Başlatma

Yapılandırma değişikliklerinin etkili olması için Mosquitto hizmetini yeniden başlatmanız gerekir:

sudo systemctl restart mosquitto
Kimlik Doğrulama ile Test Etme

Artık Mosquitto’ya bağlanmak için bir kullanıcı adı ve parola sağlamanız gerekecek. Önceki test komutlarını kullanıcı adı ve parola ile deneyelim:

# Abone olma
mosquitto_sub -h localhost -t test/topic -u mosquitto_user -P your_password

Mesaj yayınlama

mosquitto_pub -h localhost -t test/topic -m "Güvenli Mesaj" -u mosquitto_user -P your_password

your_password yerine mosquitto_user için belirlediğiniz parolayı yazmalısınız. Eğer doğru kullanıcı adı ve parola ile bağlanırsanız, mesajlar başarıyla iletilmelidir. Yanlış kimlik bilgileriyle bağlanmaya çalışırsanız, “Connection Refused: not authorised.” gibi bir hata mesajı alırsınız.

2. TLS/SSL Şifrelemesi

Kullanıcı kimlik doğrulaması, kimlerin bağlanabileceğini kontrol ederken, TLS/SSL şifrelemesi broker ile istemciler arasındaki iletişimin gizliliğini ve bütünlüğünü sağlar. Bu, hassas verilerin ağ üzerinden şifresiz olarak gönderilmesini engeller. Bu bölümde, Mosquitto için kendinden imzalı (self-signed) TLS/SSL sertifikaları oluşturacağız ve broker’ı bunları kullanacak şekilde yapılandıracağız. Üretim ortamlarında genellikle güvenilir bir Sertifika Yetkilisinden (CA) alınmış sertifikalar kullanılır, ancak kendinden imzalı sertifikalar test ve geliştirme ortamları için yeterlidir.

SSL Sertifikaları Oluşturma

İlk olarak, sertifikaları saklamak için bir dizin oluşturalım:

sudo mkdir /etc/mosquitto/certs
sudo chown mosquitto:mosquitto /etc/mosquitto/certs

Şimdi OpenSSL kullanarak bir Sertifika Yetkilisi (CA) sertifikası, sunucu anahtarı ve sunucu sertifikası oluşturalım.

a. CA Anahtarı ve Sertifikası Oluşturma:
CA, diğer sertifikaları imzalamak için kullanılan kök sertifikadır.

cd /etc/mosquitto/certs

CA özel anahtarını oluştur

sudo openssl genrsa -out ca.key 2048

CA sertifikasını oluştur (365 gün geçerli)

sudo openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=TR/ST=Istanbul/L=Istanbul/O=MyCompany/OU=IoT/CN=MyMosquittoCA"

CN (Common Name) alanını kendi şirket veya proje adınıza göre değiştirebilirsiniz.

b. Sunucu Anahtarı ve Sertifika İmzalama İsteği (CSR) Oluşturma:
Bu, Mosquitto broker’ı için kullanılacak anahtar ve sertifika isteğidir.

# Sunucu özel anahtarını oluştur
sudo openssl genrsa -out server.key 2048

Sunucu sertifika imzalama isteğini oluştur

sudo openssl req -new -out server.csr -key server.key -subj "/C=TR/ST=Istanbul/L=Istanbul/O=MyCompany/OU=IoT/CN=your_server_hostname_or_ip"

CN (Common Name) alanına Mosquitto broker’ınızın hostname’ini (örneğin mqtt.example.com) veya IP adresini (örneğin 192.168.1.100) girmeniz çok önemlidir. İstemciler bağlanırken bu CN’i doğrulayacaklardır.

c. Sunucu Sertifikasını CA Tarafından İmzalama:
Şimdi CA sertifikamızı kullanarak sunucu sertifika isteğini imzalayacağız.

# Sunucu sertifikasını CA tarafından imzala (365 gün geçerli)
sudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365

d. Dosya İzinlerini Ayarlama:
Sertifika dosyalarının yalnızca Mosquitto kullanıcısı tarafından okunabilir olduğundan emin olmalıyız.

sudo chmod 0600 ca.key server.key
sudo chmod 0644 ca.crt server.crt
sudo chown mosquitto:mosquitto ca.key server.key ca.crt server.crt
Mosquitto’yu TLS Kullanacak Şekilde Yapılandırma

Şimdi Mosquitto’yu TLS şifrelemesi için 8883 numaralı portu (standart MQTT/TLS portu) dinleyecek şekilde yapılandıracağız. /etc/mosquitto/mosquitto.conf dosyasını tekrar açın:

sudo nano /etc/mosquitto/mosquitto.conf

Aşağıdaki satırları dosyanın sonuna ekleyin:

# TLS/SSL şifrelemesi için 8883 portunu dinle
listener 8883

CA sertifikası yolu

cafile /etc/mosquitto/certs/ca.crt

Sunucu sertifikası yolu

certfile /etc/mosquitto/certs/server.crt

Sunucu özel anahtarı yolu

keyfile /etc/mosquitto/certs/server.key

İstemcilerin kendi sertifikalarını sunmasını zorunlu kılma (şimdilik isteğe bağlı, test için false)

Üretim ortamlarında karşılıklı TLS (mutual TLS) için true ayarlanabilir.

require_certificate false

Anonim erişim kapalı kalmaya devam etmeli

allow_anonymous false

require_certificate false ayarı, istemcilerin broker’a bağlanmak için kendi sertifikalarını sunmalarını zorunlu kılmaz. Bu, yalnızca sunucu tarafı şifrelemesi sağlar. Daha yüksek güvenlik için karşılıklı TLS (mutual TLS) kullanmak isterseniz bu değeri true yapmanız ve her istemci için ayrı ayrı sertifika oluşturup yapılandırmanız gerekir.

Yapılandırma dosyasını kaydedin ve kapatın.

Mosquitto Hizmetini Yeniden Başlatma

Değişikliklerin etkili olması için Mosquitto hizmetini yeniden başlatın:

sudo systemctl restart mosquitto
TLS ile Test Etme

Şimdi TLS şifrelemesi ve kullanıcı kimlik doğrulaması ile Mosquitto’ya bağlanmayı deneyelim. İstemcilerin, broker’ın sertifikasını doğrulayabilmesi için CA sertifikasını bilmesi gerekir.

# Abone olma (TLS ve kimlik doğrulama ile)
mosquitto_sub -h localhost -p 8883 -t test/secure_topic --cafile /etc/mosquitto/certs/ca.crt -u mosquitto_user -P your_password

Mesaj yayınlama (TLS ve kimlik doğrulama ile)

mosquitto_pub -h localhost -p 8883 -t test/secure_topic -m "Güvenli ve Şifreli Mesaj" --cafile /etc/mosquitto/certs/ca.crt -u mosquitto_user -P your_password

your_password yerine doğru parolayı ve localhost yerine broker’ınızın IP adresini veya hostname’ini kullanın. Eğer her şey doğru yapılandırıldıysa, mesajlar 8883 portu üzerinden şifreli bir şekilde iletilmelidir.

3. Güvenlik Duvarı Yapılandırması (UFW)

Mosquitto broker’ınızın yalnızca gerekli portlardan erişilebilir olmasını sağlamak için bir güvenlik duvarı kullanmak kritik öneme sahiptir. Debian’da yaygın olarak kullanılan güvenlik duvarı aracı UFW (Uncomplicated Firewall)’dir.

UFW Kurulumu ve Etkinleştirme

Eğer UFW yüklü değilse:

sudo apt install ufw -y

UFW’yi etkinleştirmeden önce SSH bağlantınıza izin verdiğinizden emin olun, aksi takdirde sunucunuzla bağlantınız kesilebilir.

sudo ufw allow OpenSSH
sudo ufw enable

ufw enable komutunu çalıştırdıktan sonra bir uyarı göreceksiniz. y tuşuna basarak onaylayın.

MQTT Portlarına İzin Verme

Şimdi Mosquitto’nun kullandığı portlara izin verelim:
* 1883/tcp: Standart, şifrelenmemiş MQTT portu. Eğer TLS kullanıyorsanız ve sadece şifreli bağlantılara izin vermek istiyorsanız bu portu kapatabilirsiniz.
* 8883/tcp: TLS/SSL şifrelemeli MQTT portu.

# Eğer şifrelenmemiş MQTT kullanıyorsanız:
sudo ufw allow 1883/tcp comment 'MQTT unencrypted'

TLS/SSL şifrelemeli MQTT için:

sudo ufw allow 8883/tcp comment 'MQTT encrypted TLS'

Eğer 1883 portundan anonim veya şifrelenmemiş bağlantılara tamamen izin vermek istemiyorsanız, bu kuralı eklemeyin. Hatta mosquitto.conf dosyasında bu porttaki listener‘ı kaldırabilirsiniz.

Güvenlik Duvarı Durumunu Kontrol Etme

UFW’nin durumunu ve tanımlı kuralları görmek için:

sudo ufw status verbose

Çıktıda SSH, 1883/tcp ve 8883/tcp portlarının izinli olduğunu görmelisiniz.

4. Erişim Kontrol Listeleri (ACL’ler)

Kullanıcı kimlik doğrulaması, kimlerin broker’a bağlanabileceğini kontrol eder. Ancak, hangi kullanıcının hangi konulara (topics) yayın yapabileceğini veya abone olabileceğini kontrol etmek için Erişim Kontrol Listeleri (ACL’ler) kullanılır. Bu, “en az ayrıcalık” ilkesini uygulamak için hayati öneme sahiptir.

ACL Dosyası Oluşturma

ACL’leri tanımlamak için bir dosya oluşturalım:

sudo nano /etc/mosquitto/aclfile.conf

Aşağıdaki gibi örnek ACL’ler ekleyebilirsiniz:

# Varsayılan olarak tüm kullanıcılara okuma/yazma erişimini reddet

Bu satır, herhangi bir özel kuralda belirtilmeyen tüm konular için varsayılan davranışı belirler.

Eğer tüm konulara erişimi varsayılan olarak engellemek istiyorsanız bu satırı ekleyin.

topic deny all

'admin_user' kullanıcısının tüm konulara okuma ve yazma erişimi var

user admin_user topic readwrite #

'sensor_temp_room1' kullanıcısı sadece 'sensors/temperature/room1' konusuna yazabilir (yayın yapabilir)

user sensor_temp_room1 topic write sensors/temperature/room1

'display_room1' kullanıcısı sadece 'sensors/temperature/room1' konusunu okuyabilir (abone olabilir)

user display_room1 topic read sensors/temperature/room1

'user_general' kullanıcısı 'general/#' altındaki tüm konulara okuma ve yazma yapabilir

user user_general topic readwrite general/#

Pattern tabanlı ACL'ler

Kullanıcı adı ile konu eşleştirme (örneğin, "user/sensor1" sadece "sensor1/data" konusuna yazabilir)

pattern write %u/data

pattern read %u/status

# karakteri tüm konuları ifade eder. readwrite hem okuma hem yazma, read sadece okuma ve write sadece yazma izni verir. %u gibi kalıplar, kullanıcı adını veya istemci kimliğini kullanarak dinamik ACL’ler oluşturmaya olanak tanır.

ACL dosyasını kaydedin ve kapatın.

Mosquitto’yu ACL Dosyasını Kullanacak Şekilde Yapılandırma

ACL dosyasını Mosquitto’ya bildirmek için /etc/mosquitto/mosquitto.conf dosyasını tekrar açın:

sudo nano /etc/mosquitto/mosquitto.conf

Aşağıdaki satırı ekleyin:

# ACL dosyasını etkinleştir
acl_file /etc/mosquitto/aclfile.conf

Yapılandırma dosyasını kaydedin ve kapatın.

Mosquitto Hizmetini Yeniden Başlatma

ACL değişikliklerinin etkili olması için Mosquitto hizmetini yeniden başlatın:

sudo systemctl restart mosquitto
ACL’leri Test Etme

ACL’leri test etmek için, farklı kullanıcılar oluşturmanız ve bunların tanımladığınız kurallara göre erişim sağlayıp sağlayamadığını kontrol etmeniz gerekir. Örneğin, admin_user ve sensor_temp_room1 kullanıcılarını mosquitto_passwd ile oluşturun ve ardından bu kullanıcılarla bağlanarak yayın ve abone olma işlemlerini deneyin.

# admin_user ile her şeye yayın yapabilir
mosquitto_pub -h localhost -p 8883 -t any/topic -m "Admin Message" --cafile /etc/mosquitto/certs/ca.crt -u admin_user -P admin_password

sensor_temp_room1 sadece belirli bir konuya yazabilir

mosquitto_pub -h localhost -p 8883 -t sensors/temperature/room1 -m "25C" --cafile /etc/mosquitto/certs/ca.crt -u sensor_temp_room1 -P sensor_password

sensor_temp_room1 başka bir konuya yazmaya çalışırsa hata almalı

mosquitto_pub -h localhost -p 8883 -t another/topic -m "Failed" --cafile /etc/mosquitto/certs/ca.crt -u sensor_temp_room1 -P sensor_password

Bu testler, ACL’lerinizin doğru çalıştığını ve yetkisiz erişimi engellediğini doğrulamak için önemlidir.

En İyi Uygulamalar ve Ek Güvenlik Önlemleri

Mosquitto broker’ınızı güvence altına almak için yukarıdaki adımlar temel bir çerçeve sunar. Ancak, daha fazla güvenlik ve operasyonel verimlilik sağlamak için aşağıdaki en iyi uygulamaları ve ek önlemleri göz önünde bulundurmanız önemlidir:

* Düzenli Güncellemeler: İşletim sisteminizi ve Mosquitto dahil tüm yazılımlarınızı düzenli olarak güncelleyin. Güvenlik açıkları sıkça keşfedilir ve yamalarla kapatılır. sudo apt update && sudo apt upgrade -y komutunu düzenli olarak çalıştırmak önemlidir.
* Güçlü Parolalar: Tüm Mosquitto kullanıcıları için güçlü, karmaşık ve benzersiz parolalar kullanın. Parola yöneticileri bu konuda yardımcı olabilir.
* En Az Ayrıcalık İlkesi: ACL’leri uygularken, her kullanıcının veya cihazın yalnızca görevini yerine getirmesi için kesinlikle gerekli olan erişim ayrıcalıklarına sahip olduğundan emin olun. Gereksiz izinlerden kaçının.
* Logları İzleme: Mosquitto’nun loglarını düzenli olarak izleyin. Anormal bağlantı denemeleri, kimlik doğrulama hataları veya diğer şüpheli etkinlikler için logları kontrol edin. Mosquitto logları genellikle /var/log/mosquitto/mosquitto.log adresinde veya journalctl -u mosquitto komutuyla görüntülenebilir.
* Güvenilir CA Sertifikaları: Üretim ortamlarında, kendinden imzalı sertifikalar yerine Let’s Encrypt gibi ücretsiz veya ticari bir Sertifika Yetkilisinden (CA) alınmış güvenilir TLS/SSL sertifikaları kullanın. Bu, istemcilerin broker’ın kimliğini kolayca doğrulamasına olanak tanır ve manuel sertifika kurulumu ihtiyacını azaltır.
* Kullanılmayan Dinleyicileri Devre Dışı Bırakma: Eğer tüm istemcileriniz TLS üzerinden bağlanabiliyorsa, 1883 numaralı porttaki şifrelenmemiş dinleyiciyi (listener 1883) Mosquitto yapılandırma dosyasından kaldırarak devre dışı bırakın. Bu, potansiyel bir saldırı yüzeyini azaltır.
* Yedeklemeler: Mosquitto yapılandırma dosyalarınızı (mosquitto.conf, passwd dosyası, aclfile.conf ve sertifikalar) düzenli olarak yedekleyin.
* Chroot Ortamı (İleri Düzey): Daha yüksek güvenlik gerektiren ortamlarda Mosquitto’yu bir chroot ortamında çalıştırmayı düşünebilirsiniz. Bu, broker’ın sistemin geri kalanından izole edilmesine yardımcı olur ve bir güvenlik açığının sistemin tamamını etkilemesini zorlaştırır.
* İstemci Kimlik Doğrulaması (Mutual TLS): require_certificate true ayarını kullanarak karşılıklı TLS (mutual TLS) uygulayın. Bu, hem istemcinin broker’ı hem de broker’ın istemciyi bir sertifika aracılığıyla doğrulaması anlamına gelir. Bu, özellikle hassas IoT cihazları için en üst düzey güvenlik sağlar.
* Keepalive ve Mesaj Boyutu Limitleri: DoS saldırılarını önlemek için Mosquitto yapılandırmasında max_inflight_messages, max_queued_messages ve message_size_limit gibi parametreleri ayarlayarak mesaj kuyruğu ve boyutu üzerinde sınırlar belirleyebilirsiniz.

Sonuç

Bu makale, Mosquitto MQTT mesajlaşma broker’ını Debian 10 üzerine kurmak ve güvenli hale getirmek için kapsamlı bir rehber sunmuştur. MQTT, IoT cihazları arasında verimli iletişim için güçlü bir araçtır, ancak güvenli bir şekilde yapılandırılmadığında önemli güvenlik riskleri taşıyabilir.

Adım adım kurulum sürecinden başlayarak, kullanıcı kimlik doğrulaması, TLS/SSL şifrelemesi, güvenlik duvarı yapılandırması ve erişim kontrol listeleri (ACL’ler) gibi kritik güvenlik önlemlerini detaylı bir şekilde ele aldık. Her bir adımın neden gerekli olduğunu ve nasıl uygulanacağını açıklayarak, broker’ınızın yetkisiz erişime ve veri ihlallerine karşı korunmasına yardımcı olacak sağlam bir temel oluşturduk.

Unutmayın ki güvenlik sürekli bir süreçtir. Broker’ınızı düzenli olarak güncellemek, logları izlemek ve en iyi uygulamaları takip etmek, IoT altyapınızın uzun vadeli güvenliğini sağlamak için hayati öneme sahiptir. Bu rehberdeki bilgileri uygulayarak, IoT projeleriniz için güvenilir ve güvenli bir MQTT iletişim omurgası oluşturabilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.