{"id":38111,"date":"2026-01-23T14:40:51","date_gmt":"2026-01-23T11:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38111"},"modified":"2026-01-23T14:40:51","modified_gmt":"2026-01-23T11:40:51","slug":"mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/","title":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi"},"content":{"rendered":"<p><body><\/p>\n<h2>Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Nesnelerin \u0130nterneti (IoT) ekosisteminde cihazlar aras\u0131 ileti\u015fimin temel ta\u015flar\u0131ndan biri olan MQTT (Message Queuing Telemetry Transport) protokol\u00fc, d\u00fc\u015f\u00fck bant geni\u015fli\u011fi ve y\u00fcksek gecikme s\u00fcrelerine sahip a\u011flarda bile verimli ve g\u00fcvenilir mesajla\u015fma sa\u011flamas\u0131yla \u00f6ne \u00e7\u0131kmaktad\u0131r. Hafif yap\u0131s\u0131 sayesinde sens\u00f6rlerden ak\u0131ll\u0131 cihazlara kadar geni\u015f bir yelpazedeki donan\u0131mlarda kullan\u0131labilen MQTT, &#8220;yay\u0131nla\/abone ol&#8221; (publish\/subscribe) modelini benimseyerek esnek bir ileti\u015fim mimarisi sunar. Bu modelde, mesaj\u0131 g\u00f6nderen (yay\u0131nc\u0131) ve mesaj\u0131 alan (abone) do\u011frudan birbirleriyle etkile\u015fime girmez; bunun yerine, bir arac\u0131 (broker) \u00fczerinden ileti\u015fim kurarlar.<\/p>\n<p>Mosquitto, a\u00e7\u0131k kaynakl\u0131 ve olduk\u00e7a pop\u00fcler bir MQTT mesajla\u015fma arac\u0131s\u0131d\u0131r. Eclipse Vakf\u0131 taraf\u0131ndan geli\u015ftirilen Mosquitto, MQTT v3.1, v3.1.1 ve v5.0 protokollerini destekler. G\u00fcvenilirli\u011fi, performans\u0131 ve kolay yap\u0131land\u0131r\u0131labilir olmas\u0131 nedeniyle hem k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projelerde hem de b\u00fcy\u00fck end\u00fcstriyel IoT \u00e7\u00f6z\u00fcmlerinde yayg\u0131n olarak tercih edilmektedir.<\/p>\n<p>Debian 10 (Buster), kararl\u0131l\u0131\u011f\u0131, g\u00fcvenilirli\u011fi ve geni\u015f paket depolar\u0131 sayesinde sunucu ortamlar\u0131nda s\u0131k\u00e7a kullan\u0131lan bir i\u015fletim sistemidir. Mosquitto&#8217;yu Debian 10 \u00fczerine kurmak, sa\u011flam ve g\u00fcvenli bir IoT ileti\u015fim altyap\u0131s\u0131 olu\u015fturmak i\u00e7in mant\u0131kl\u0131 bir se\u00e7imdir. Ancak, herhangi bir a\u011f hizmetinde oldu\u011fu gibi, Mosquitto broker&#8217;\u0131n da do\u011fru bir \u015fekilde kurulmas\u0131 ve \u00f6zellikle g\u00fcvenlik \u00f6nlemlerinin eksiksiz al\u0131nmas\u0131 b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. IoT cihazlar\u0131ndan gelen veriler genellikle hassas bilgiler i\u00e7erebilir ve yetkisiz eri\u015fim veya veri s\u0131z\u0131nt\u0131lar\u0131 ciddi sonu\u00e7lara yol a\u00e7abilir. Bu makale, Mosquitto MQTT broker&#8217;\u0131n\u0131 Debian 10 \u00fczerine ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve \u00e7e\u015fitli g\u00fcvenlik \u00f6nlemleriyle nas\u0131l koruyaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip oldu\u011funuzdan emin olun:<br \/>\n*   <strong>Debian 10 Sunucusu:<\/strong> Fiziksel veya sanal bir Debian 10 (Buster) i\u015fletim sistemine sahip bir sunucuya eri\u015fiminiz olmal\u0131.<br \/>\n*   <strong>Root veya Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>root<\/code> kullan\u0131c\u0131s\u0131 olarak veya <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131 ile i\u015flem yapman\u0131z gerekecek.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Paket indirme ve g\u00fcncelleme i\u015flemleri i\u00e7in sunucunuzun aktif bir internet ba\u011flant\u0131s\u0131 olmal\u0131.<\/p>\n<h3>Sistem G\u00fcncellemesi<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizin paket listelerini g\u00fcncellemek ve mevcut paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlemeye ve en g\u00fcncel g\u00fcvenlik yamalar\u0131na sahip olman\u0131z\u0131 sa\u011flamaya yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p><code>apt update<\/code> komutu, yerel paket indeksini g\u00fcncellerken, <code>apt upgrade -y<\/code> komutu, mevcut t\u00fcm paketleri onay gerektirmeden (<code>-y<\/code> bayra\u011f\u0131 ile) y\u00fckseltir.<\/p>\n<h3>Mosquitto Kurulumu<\/h3>\n<p>Mosquitto, Debian&#8217;\u0131n resmi depolar\u0131nda mevcuttur, bu da kurulumu olduk\u00e7a basit hale getirir. <code>apt<\/code> paket y\u00f6neticisini kullanarak Mosquitto broker&#8217;\u0131n\u0131 ve onunla birlikte gelen istemci ara\u00e7lar\u0131n\u0131 (test ama\u00e7l\u0131 kullan\u0131\u015fl\u0131d\u0131r) kurabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">sudo apt install mosquitto mosquitto-clients -y<\/code><\/pre>\n<p>Bu komut, Mosquitto broker hizmetini ve <code>mosquitto_pub<\/code> ile <code>mosquitto_sub<\/code> gibi istemci yard\u0131mc\u0131 programlar\u0131n\u0131 kuracakt\u0131r. Kurulum tamamland\u0131ktan sonra Mosquitto hizmeti otomatik olarak ba\u015flat\u0131lacak ve sistem ba\u015flang\u0131c\u0131nda \u00e7al\u0131\u015facak \u015fekilde yap\u0131land\u0131r\u0131lacakt\u0131r.<\/p>\n<h4>Kurulumu Do\u011frulama<\/h4>\n<p>Mosquitto hizmetinin d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>systemctl<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">systemctl status mosquitto<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Active: active (running)<\/code> ifadesini g\u00f6rmelisiniz. Bu, Mosquitto broker&#8217;\u0131n\u0131n ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<h4>Temel Test (Anonim Eri\u015fimle)<\/h4>\n<p>Kurulumun ard\u0131ndan, varsay\u0131lan olarak Mosquitto, 1883 numaral\u0131 port \u00fczerinden anonim eri\u015fime izin verecek \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Bu, h\u0131zl\u0131 bir test yapmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r. Bir terminalde abone olal\u0131m:<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h localhost -t test\/topic<\/code><\/pre>\n<p>Ba\u015fka bir terminal a\u00e7\u0131n ve ayn\u0131 konuya bir mesaj g\u00f6nderin:<\/p>\n<pre><code class=\"language-bash\">mosquitto_pub -h localhost -t test\/topic -m \"Merhaba Mosquitto!\"<\/code><\/pre>\n<p>Abone oldu\u011funuz terminalde &#8220;Merhaba Mosquitto!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Bu, Mosquitto&#8217;nun d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve mesajlar\u0131 ba\u015far\u0131yla iletti\u011fini g\u00f6sterir.<\/p>\n<h3>Temel Yap\u0131land\u0131rma<\/h3>\n<p>Mosquitto&#8217;nun ana yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/mosquitto\/mosquitto.conf<\/code> konumundad\u0131r. Bu dosya genellikle bo\u015ftur veya yaln\u0131zca yorum sat\u0131rlar\u0131 i\u00e7erir. Mosquitto, bu dosya yoksa veya bo\u015fsa varsay\u0131lan de\u011ferleri kullan\u0131r. Ek yap\u0131land\u0131rmalar genellikle <code>\/etc\/mosquitto\/conf.d\/<\/code> dizinindeki <code>.conf<\/code> uzant\u0131l\u0131 dosyalarda yap\u0131l\u0131r. Ancak, biz t\u00fcm yap\u0131land\u0131rmalar\u0131 ana dosyaya ekleyece\u011fiz veya mevcut dosyay\u0131 d\u00fczenleyece\u011fiz.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 a\u00e7al\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Bu dosya ba\u015flang\u0131\u00e7ta bo\u015f olabilir veya baz\u0131 \u00f6rnek yorum sat\u0131rlar\u0131 i\u00e7erebilir. Varsay\u0131lan olarak Mosquitto, 1883 numaral\u0131 portu (standart, \u015fifrelenmemi\u015f MQTT) dinler ve anonim ba\u011flant\u0131lara izin verir. G\u00fcvenlik ad\u0131mlar\u0131na ge\u00e7meden \u00f6nce bu varsay\u0131lan davran\u0131\u015flar\u0131 anlayal\u0131m.<\/p>\n<h3>Mosquitto&#8217;yu G\u00fcvenli Hale Getirme<\/h3>\n<p>Bir Mosquitto broker&#8217;\u0131n\u0131 \u00fcretim ortam\u0131nda anonim eri\u015fime a\u00e7\u0131k b\u0131rakmak b\u00fcy\u00fck bir g\u00fcvenlik riskidir. Yetkisiz ki\u015filerin veya cihazlar\u0131n broker&#8217;\u0131n\u0131za ba\u011flanmas\u0131n\u0131, mesajlar\u0131 okumas\u0131n\u0131, yay\u0131nlamas\u0131n\u0131 veya hizmet reddi (DoS) sald\u0131r\u0131lar\u0131 yapmas\u0131n\u0131 \u00f6nlemek i\u00e7in \u00e7e\u015fitli g\u00fcvenlik \u00f6nlemleri alman\u0131z \u015fartt\u0131r. Bu b\u00f6l\u00fcm, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131, TLS\/SSL \u015fifrelemesi, g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131 ve eri\u015fim kontrol listeleri (ACL&#8217;ler) gibi \u00f6nemli g\u00fcvenlik ad\u0131mlar\u0131n\u0131 ele alacakt\u0131r.<\/p>\n<h4>1. Kullan\u0131c\u0131 Kimlik Do\u011frulamas\u0131<\/h4>\n<p>Anonim eri\u015fimi devre d\u0131\u015f\u0131 b\u0131rakmak ve yaln\u0131zca bilinen kullan\u0131c\u0131lar\u0131n broker&#8217;a ba\u011flanmas\u0131na izin vermek, ilk ve en \u00f6nemli g\u00fcvenlik ad\u0131m\u0131d\u0131r. Mosquitto, kullan\u0131c\u0131 ad\u0131 ve parola tabanl\u0131 kimlik do\u011frulamas\u0131 i\u00e7in bir parola dosyas\u0131 kullanabilir.<\/p>\n<h5>Parola Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>Mosquitto, parolalar\u0131 karma\u015f\u0131k (hashed) bir formatta saklayan \u00f6zel bir parola dosyas\u0131 kullan\u0131r. Bu dosyay\u0131 <code>mosquitto_passwd<\/code> yard\u0131mc\u0131 program\u0131 ile olu\u015fturur ve y\u00f6netiriz.<\/p>\n<p>\u0130lk kullan\u0131c\u0131y\u0131 olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd mosquitto_user<\/code><\/pre>\n<p>Bu komut, <code>\/etc\/mosquitto\/passwd<\/code> yolunda yeni bir parola dosyas\u0131 olu\u015fturur (<code>-c<\/code> bayra\u011f\u0131 yeni bir dosya olu\u015fturur veya mevcut dosyay\u0131 siler). <code>mosquitto_user<\/code> ad\u0131nda bir kullan\u0131c\u0131 eklemenizi ister ve sizden bu kullan\u0131c\u0131 i\u00e7in bir parola belirlemenizi ister. Parolay\u0131 iki kez girin.<\/p>\n<p>Daha fazla kullan\u0131c\u0131 eklemek isterseniz, <code>-c<\/code> bayra\u011f\u0131n\u0131 kullanmay\u0131n, aksi takdirde mevcut dosya silinir ve yeni bir dosya olu\u015fturulur.<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd \/etc\/mosquitto\/passwd another_user<\/code><\/pre>\n<p>Bu komut, <code>another_user<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131y\u0131 mevcut parola dosyas\u0131na ekler.<\/p>\n<h5>Mosquitto&#8217;yu Parola Dosyas\u0131n\u0131 Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h5>\n<p>\u015eimdi Mosquitto&#8217;yu bu parola dosyas\u0131n\u0131 kullanacak ve anonim ba\u011flant\u0131lar\u0131 reddedecek \u015fekilde yap\u0131land\u0131rmam\u0131z gerekiyor. <code>\/etc\/mosquitto\/mosquitto.conf<\/code> dosyas\u0131n\u0131 tekrar a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyan\u0131n sonuna veya uygun bir yere a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-conf\"># Kullan\u0131c\u0131 kimlik do\u011frulamas\u0131n\u0131 etkinle\u015ftir\npassword_file \/etc\/mosquitto\/passwd\n\n<h2>Anonim ba\u011flant\u0131lar\u0131 devre d\u0131\u015f\u0131 b\u0131rak<\/h2>\nallow_anonymous false<\/code><\/pre>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydedin ve kapat\u0131n (CTRL+X, Y, Enter).<\/p>\n<h5>Mosquitto Hizmetini Yeniden Ba\u015flatma<\/h5>\n<p>Yap\u0131land\u0131rma de\u011fi\u015fikliklerinin etkili olmas\u0131 i\u00e7in Mosquitto hizmetini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>Kimlik Do\u011frulama ile Test Etme<\/h5>\n<p>Art\u0131k Mosquitto&#8217;ya ba\u011flanmak i\u00e7in bir kullan\u0131c\u0131 ad\u0131 ve parola sa\u011flaman\u0131z gerekecek. \u00d6nceki test komutlar\u0131n\u0131 kullan\u0131c\u0131 ad\u0131 ve parola ile deneyelim:<\/p>\n<pre><code class=\"language-bash\"># Abone olma\nmosquitto_sub -h localhost -t test\/topic -u mosquitto_user -P your_password\n\n<h2>Mesaj yay\u0131nlama<\/h2>\nmosquitto_pub -h localhost -t test\/topic -m \"G\u00fcvenli Mesaj\" -u mosquitto_user -P your_password<\/code><\/pre>\n<p><code>your_password<\/code> yerine <code>mosquitto_user<\/code> i\u00e7in belirledi\u011finiz parolay\u0131 yazmal\u0131s\u0131n\u0131z. E\u011fer do\u011fru kullan\u0131c\u0131 ad\u0131 ve parola ile ba\u011flan\u0131rsan\u0131z, mesajlar ba\u015far\u0131yla iletilmelidir. Yanl\u0131\u015f kimlik bilgileriyle ba\u011flanmaya \u00e7al\u0131\u015f\u0131rsan\u0131z, &#8220;Connection Refused: not authorised.&#8221; gibi bir hata mesaj\u0131 al\u0131rs\u0131n\u0131z.<\/p>\n<h4>2. TLS\/SSL \u015eifrelemesi<\/h4>\n<p>Kullan\u0131c\u0131 kimlik do\u011frulamas\u0131, kimlerin ba\u011flanabilece\u011fini kontrol ederken, TLS\/SSL \u015fifrelemesi broker ile istemciler aras\u0131ndaki ileti\u015fimin gizlili\u011fini ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flar. Bu, hassas verilerin a\u011f \u00fczerinden \u015fifresiz olarak g\u00f6nderilmesini engeller. Bu b\u00f6l\u00fcmde, Mosquitto i\u00e7in kendinden imzal\u0131 (self-signed) TLS\/SSL sertifikalar\u0131 olu\u015fturaca\u011f\u0131z ve broker&#8217;\u0131 bunlar\u0131 kullanacak \u015fekilde yap\u0131land\u0131raca\u011f\u0131z. \u00dcretim ortamlar\u0131nda genellikle g\u00fcvenilir bir Sertifika Yetkilisinden (CA) al\u0131nm\u0131\u015f sertifikalar kullan\u0131l\u0131r, ancak kendinden imzal\u0131 sertifikalar test ve geli\u015ftirme ortamlar\u0131 i\u00e7in yeterlidir.<\/p>\n<h5>SSL Sertifikalar\u0131 Olu\u015fturma<\/h5>\n<p>\u0130lk olarak, sertifikalar\u0131 saklamak i\u00e7in bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/etc\/mosquitto\/certs\nsudo chown mosquitto:mosquitto \/etc\/mosquitto\/certs<\/code><\/pre>\n<p>\u015eimdi OpenSSL kullanarak bir Sertifika Yetkilisi (CA) sertifikas\u0131, sunucu anahtar\u0131 ve sunucu sertifikas\u0131 olu\u015ftural\u0131m.<\/p>\n<p><strong>a. CA Anahtar\u0131 ve Sertifikas\u0131 Olu\u015fturma:<\/strong><br \/>\nCA, di\u011fer sertifikalar\u0131 imzalamak i\u00e7in kullan\u0131lan k\u00f6k sertifikad\u0131r.<\/p>\n<pre><code class=\"language-bash\">cd \/etc\/mosquitto\/certs\n\n<h2>CA \u00f6zel anahtar\u0131n\u0131 olu\u015ftur<\/h2>\nsudo openssl genrsa -out ca.key 2048\n\n<h2>CA sertifikas\u0131n\u0131 olu\u015ftur (365 g\u00fcn ge\u00e7erli)<\/h2>\nsudo 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\"<\/code><\/pre>\n<p><code>CN<\/code> (Common Name) alan\u0131n\u0131 kendi \u015firket veya proje ad\u0131n\u0131za g\u00f6re de\u011fi\u015ftirebilirsiniz.<\/p>\n<p><strong>b. Sunucu Anahtar\u0131 ve Sertifika \u0130mzalama \u0130ste\u011fi (CSR) Olu\u015fturma:<\/strong><br \/>\nBu, Mosquitto broker&#8217;\u0131 i\u00e7in kullan\u0131lacak anahtar ve sertifika iste\u011fidir.<\/p>\n<pre><code class=\"language-bash\"># Sunucu \u00f6zel anahtar\u0131n\u0131 olu\u015ftur\nsudo openssl genrsa -out server.key 2048\n\n<h2>Sunucu sertifika imzalama iste\u011fini olu\u015ftur<\/h2>\nsudo 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\"<\/code><\/pre>\n<p><code>CN<\/code> (Common Name) alan\u0131na Mosquitto broker&#8217;\u0131n\u0131z\u0131n hostname&#8217;ini (\u00f6rne\u011fin <code>mqtt.example.com<\/code>) veya IP adresini (\u00f6rne\u011fin <code>192.168.1.100<\/code>) girmeniz \u00e7ok \u00f6nemlidir. \u0130stemciler ba\u011flan\u0131rken bu CN&#8217;i do\u011frulayacaklard\u0131r.<\/p>\n<p><strong>c. Sunucu Sertifikas\u0131n\u0131 CA Taraf\u0131ndan \u0130mzalama:<\/strong><br \/>\n\u015eimdi CA sertifikam\u0131z\u0131 kullanarak sunucu sertifika iste\u011fini imzalayaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\"># Sunucu sertifikas\u0131n\u0131 CA taraf\u0131ndan imzala (365 g\u00fcn ge\u00e7erli)\nsudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365<\/code><\/pre>\n<p><strong>d. Dosya \u0130zinlerini Ayarlama:<\/strong><br \/>\nSertifika dosyalar\u0131n\u0131n yaln\u0131zca Mosquitto kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir oldu\u011fundan emin olmal\u0131y\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo chmod 0600 ca.key server.key\nsudo chmod 0644 ca.crt server.crt\nsudo chown mosquitto:mosquitto ca.key server.key ca.crt server.crt<\/code><\/pre>\n<h5>Mosquitto&#8217;yu TLS Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h5>\n<p>\u015eimdi Mosquitto&#8217;yu TLS \u015fifrelemesi i\u00e7in 8883 numaral\u0131 portu (standart MQTT\/TLS portu) dinleyecek \u015fekilde yap\u0131land\u0131raca\u011f\u0131z. <code>\/etc\/mosquitto\/mosquitto.conf<\/code> dosyas\u0131n\u0131 tekrar a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 dosyan\u0131n sonuna ekleyin:<\/p>\n<pre><code class=\"language-conf\"># TLS\/SSL \u015fifrelemesi i\u00e7in 8883 portunu dinle\nlistener 8883\n\n<h2>CA sertifikas\u0131 yolu<\/h2>\ncafile \/etc\/mosquitto\/certs\/ca.crt\n\n<h2>Sunucu sertifikas\u0131 yolu<\/h2>\ncertfile \/etc\/mosquitto\/certs\/server.crt\n\n<h2>Sunucu \u00f6zel anahtar\u0131 yolu<\/h2>\nkeyfile \/etc\/mosquitto\/certs\/server.key\n\n<h2>\u0130stemcilerin kendi sertifikalar\u0131n\u0131 sunmas\u0131n\u0131 zorunlu k\u0131lma (\u015fimdilik iste\u011fe ba\u011fl\u0131, test i\u00e7in false)<\/h2>\n<h2>\u00dcretim ortamlar\u0131nda kar\u015f\u0131l\u0131kl\u0131 TLS (mutual TLS) i\u00e7in true ayarlanabilir.<\/h2>\nrequire_certificate false\n\n<h2>Anonim eri\u015fim kapal\u0131 kalmaya devam etmeli<\/h2>\nallow_anonymous false<\/code><\/pre>\n<p><code>require_certificate false<\/code> ayar\u0131, istemcilerin broker&#8217;a ba\u011flanmak i\u00e7in kendi sertifikalar\u0131n\u0131 sunmalar\u0131n\u0131 zorunlu k\u0131lmaz. Bu, yaln\u0131zca sunucu taraf\u0131 \u015fifrelemesi sa\u011flar. Daha y\u00fcksek g\u00fcvenlik i\u00e7in kar\u015f\u0131l\u0131kl\u0131 TLS (mutual TLS) kullanmak isterseniz bu de\u011feri <code>true<\/code> yapman\u0131z ve her istemci i\u00e7in ayr\u0131 ayr\u0131 sertifika olu\u015fturup yap\u0131land\u0131rman\u0131z gerekir.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5>Mosquitto Hizmetini Yeniden Ba\u015flatma<\/h5>\n<p>De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Mosquitto hizmetini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>TLS ile Test Etme<\/h5>\n<p>\u015eimdi TLS \u015fifrelemesi ve kullan\u0131c\u0131 kimlik do\u011frulamas\u0131 ile Mosquitto&#8217;ya ba\u011flanmay\u0131 deneyelim. \u0130stemcilerin, broker&#8217;\u0131n sertifikas\u0131n\u0131 do\u011frulayabilmesi i\u00e7in CA sertifikas\u0131n\u0131 bilmesi gerekir.<\/p>\n<pre><code class=\"language-bash\"># Abone olma (TLS ve kimlik do\u011frulama ile)\nmosquitto_sub -h localhost -p 8883 -t test\/secure_topic --cafile \/etc\/mosquitto\/certs\/ca.crt -u mosquitto_user -P your_password\n\n<h2>Mesaj yay\u0131nlama (TLS ve kimlik do\u011frulama ile)<\/h2>\nmosquitto_pub -h localhost -p 8883 -t test\/secure_topic -m \"G\u00fcvenli ve \u015eifreli Mesaj\" --cafile \/etc\/mosquitto\/certs\/ca.crt -u mosquitto_user -P your_password<\/code><\/pre>\n<p><code>your_password<\/code> yerine do\u011fru parolay\u0131 ve <code>localhost<\/code> yerine broker&#8217;\u0131n\u0131z\u0131n IP adresini veya hostname&#8217;ini kullan\u0131n. E\u011fer her \u015fey do\u011fru yap\u0131land\u0131r\u0131ld\u0131ysa, mesajlar 8883 portu \u00fczerinden \u015fifreli bir \u015fekilde iletilmelidir.<\/p>\n<h4>3. G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h4>\n<p>Mosquitto broker&#8217;\u0131n\u0131z\u0131n yaln\u0131zca gerekli portlardan eri\u015filebilir olmas\u0131n\u0131 sa\u011flamak i\u00e7in bir g\u00fcvenlik duvar\u0131 kullanmak kritik \u00f6neme sahiptir. Debian&#8217;da yayg\u0131n olarak kullan\u0131lan g\u00fcvenlik duvar\u0131 arac\u0131 <code>UFW<\/code> (Uncomplicated Firewall)&#8217;dir.<\/p>\n<h5>UFW Kurulumu ve Etkinle\u015ftirme<\/h5>\n<p>E\u011fer UFW y\u00fckl\u00fc de\u011filse:<\/p>\n<pre><code class=\"language-bash\">sudo apt install ufw -y<\/code><\/pre>\n<p>UFW&#8217;yi etkinle\u015ftirmeden \u00f6nce SSH ba\u011flant\u0131n\u0131za izin verdi\u011finizden emin olun, aksi takdirde sunucunuzla ba\u011flant\u0131n\u0131z kesilebilir.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\nsudo ufw enable<\/code><\/pre>\n<p><code>ufw enable<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra bir uyar\u0131 g\u00f6receksiniz. <code>y<\/code> tu\u015funa basarak onaylay\u0131n.<\/p>\n<h5>MQTT Portlar\u0131na \u0130zin Verme<\/h5>\n<p>\u015eimdi Mosquitto&#8217;nun kulland\u0131\u011f\u0131 portlara izin verelim:<br \/>\n*   <strong>1883\/tcp:<\/strong> Standart, \u015fifrelenmemi\u015f MQTT portu. E\u011fer TLS kullan\u0131yorsan\u0131z ve sadece \u015fifreli ba\u011flant\u0131lara izin vermek istiyorsan\u0131z bu portu kapatabilirsiniz.<br \/>\n*   <strong>8883\/tcp:<\/strong> TLS\/SSL \u015fifrelemeli MQTT portu.<\/p>\n<pre><code class=\"language-bash\"># E\u011fer \u015fifrelenmemi\u015f MQTT kullan\u0131yorsan\u0131z:\nsudo ufw allow 1883\/tcp comment 'MQTT unencrypted'\n\n<h2>TLS\/SSL \u015fifrelemeli MQTT i\u00e7in:<\/h2>\nsudo ufw allow 8883\/tcp comment 'MQTT encrypted TLS'<\/code><\/pre>\n<p>E\u011fer 1883 portundan anonim veya \u015fifrelenmemi\u015f ba\u011flant\u0131lara tamamen izin vermek istemiyorsan\u0131z, bu kural\u0131 eklemeyin. Hatta <code>mosquitto.conf<\/code> dosyas\u0131nda bu porttaki <code>listener<\/code>&#8216;\u0131 kald\u0131rabilirsiniz.<\/p>\n<h5>G\u00fcvenlik Duvar\u0131 Durumunu Kontrol Etme<\/h5>\n<p>UFW&#8217;nin durumunu ve tan\u0131ml\u0131 kurallar\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status verbose<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da SSH, 1883\/tcp ve 8883\/tcp portlar\u0131n\u0131n izinli oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h4>4. Eri\u015fim Kontrol Listeleri (ACL&#8217;ler)<\/h4>\n<p>Kullan\u0131c\u0131 kimlik do\u011frulamas\u0131, kimlerin broker&#8217;a ba\u011flanabilece\u011fini kontrol eder. Ancak, hangi kullan\u0131c\u0131n\u0131n hangi konulara (topics) yay\u0131n yapabilece\u011fini veya abone olabilece\u011fini kontrol etmek i\u00e7in Eri\u015fim Kontrol Listeleri (ACL&#8217;ler) kullan\u0131l\u0131r. Bu, &#8220;en az ayr\u0131cal\u0131k&#8221; ilkesini uygulamak i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h5>ACL Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>ACL&#8217;leri tan\u0131mlamak i\u00e7in bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/aclfile.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki gibi \u00f6rnek ACL&#8217;ler ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-conf\"># Varsay\u0131lan olarak t\u00fcm kullan\u0131c\u0131lara okuma\/yazma eri\u015fimini reddet\n<h2>Bu sat\u0131r, herhangi bir \u00f6zel kuralda belirtilmeyen t\u00fcm konular i\u00e7in varsay\u0131lan davran\u0131\u015f\u0131 belirler.<\/h2>\n<h2>E\u011fer t\u00fcm konulara eri\u015fimi varsay\u0131lan olarak engellemek istiyorsan\u0131z bu sat\u0131r\u0131 ekleyin.<\/h2>\n<h2>topic deny all<\/h2>\n\n<h2>'admin_user' kullan\u0131c\u0131s\u0131n\u0131n t\u00fcm konulara okuma ve yazma eri\u015fimi var<\/h2>\nuser admin_user\ntopic readwrite #\n\n<h2>'sensor_temp_room1' kullan\u0131c\u0131s\u0131 sadece 'sensors\/temperature\/room1' konusuna yazabilir (yay\u0131n yapabilir)<\/h2>\nuser sensor_temp_room1\ntopic write sensors\/temperature\/room1\n\n<h2>'display_room1' kullan\u0131c\u0131s\u0131 sadece 'sensors\/temperature\/room1' konusunu okuyabilir (abone olabilir)<\/h2>\nuser display_room1\ntopic read sensors\/temperature\/room1\n\n<h2>'user_general' kullan\u0131c\u0131s\u0131 'general\/#' alt\u0131ndaki t\u00fcm konulara okuma ve yazma yapabilir<\/h2>\nuser user_general\ntopic readwrite general\/#\n\n<h2>Pattern tabanl\u0131 ACL'ler<\/h2>\n<h2>Kullan\u0131c\u0131 ad\u0131 ile konu e\u015fle\u015ftirme (\u00f6rne\u011fin, \"user\/sensor1\" sadece \"sensor1\/data\" konusuna yazabilir)<\/h2>\n<h2>pattern write %u\/data<\/h2>\n<h2>pattern read %u\/status<\/code><\/pre>\n<\/h2>\n<p><code>#<\/code> karakteri t\u00fcm konular\u0131 ifade eder. <code>readwrite<\/code> hem okuma hem yazma, <code>read<\/code> sadece okuma ve <code>write<\/code> sadece yazma izni verir. <code>%u<\/code> gibi kal\u0131plar, kullan\u0131c\u0131 ad\u0131n\u0131 veya istemci kimli\u011fini kullanarak dinamik ACL&#8217;ler olu\u015fturmaya olanak tan\u0131r.<\/p>\n<p>ACL dosyas\u0131n\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5>Mosquitto&#8217;yu ACL Dosyas\u0131n\u0131 Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h5>\n<p>ACL dosyas\u0131n\u0131 Mosquitto&#8217;ya bildirmek i\u00e7in <code>\/etc\/mosquitto\/mosquitto.conf<\/code> dosyas\u0131n\u0131 tekrar a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-conf\"># ACL dosyas\u0131n\u0131 etkinle\u015ftir\nacl_file \/etc\/mosquitto\/aclfile.conf<\/code><\/pre>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5>Mosquitto Hizmetini Yeniden Ba\u015flatma<\/h5>\n<p>ACL de\u011fi\u015fikliklerinin etkili olmas\u0131 i\u00e7in Mosquitto hizmetini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>ACL&#8217;leri Test Etme<\/h5>\n<p>ACL&#8217;leri test etmek i\u00e7in, farkl\u0131 kullan\u0131c\u0131lar olu\u015fturman\u0131z ve bunlar\u0131n tan\u0131mlad\u0131\u011f\u0131n\u0131z kurallara g\u00f6re eri\u015fim sa\u011flay\u0131p sa\u011flayamad\u0131\u011f\u0131n\u0131 kontrol etmeniz gerekir. \u00d6rne\u011fin, <code>admin_user<\/code> ve <code>sensor_temp_room1<\/code> kullan\u0131c\u0131lar\u0131n\u0131 <code>mosquitto_passwd<\/code> ile olu\u015fturun ve ard\u0131ndan bu kullan\u0131c\u0131larla ba\u011flanarak yay\u0131n ve abone olma i\u015flemlerini deneyin.<\/p>\n<pre><code class=\"language-bash\"># admin_user ile her \u015feye yay\u0131n yapabilir\nmosquitto_pub -h localhost -p 8883 -t any\/topic -m \"Admin Message\" --cafile \/etc\/mosquitto\/certs\/ca.crt -u admin_user -P admin_password\n\n<h2>sensor_temp_room1 sadece belirli bir konuya yazabilir<\/h2>\nmosquitto_pub -h localhost -p 8883 -t sensors\/temperature\/room1 -m \"25C\" --cafile \/etc\/mosquitto\/certs\/ca.crt -u sensor_temp_room1 -P sensor_password\n\n<h2>sensor_temp_room1 ba\u015fka bir konuya yazmaya \u00e7al\u0131\u015f\u0131rsa hata almal\u0131<\/h2>\nmosquitto_pub -h localhost -p 8883 -t another\/topic -m \"Failed\" --cafile \/etc\/mosquitto\/certs\/ca.crt -u sensor_temp_room1 -P sensor_password<\/code><\/pre>\n<p>Bu testler, ACL&#8217;lerinizin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve yetkisiz eri\u015fimi engelledi\u011fini do\u011frulamak i\u00e7in \u00f6nemlidir.<\/p>\n<h3>En \u0130yi Uygulamalar ve Ek G\u00fcvenlik \u00d6nlemleri<\/h3>\n<p>Mosquitto broker&#8217;\u0131n\u0131z\u0131 g\u00fcvence alt\u0131na almak i\u00e7in yukar\u0131daki ad\u0131mlar temel bir \u00e7er\u00e7eve sunar. Ancak, daha fazla g\u00fcvenlik ve operasyonel verimlilik sa\u011flamak i\u00e7in a\u015fa\u011f\u0131daki en iyi uygulamalar\u0131 ve ek \u00f6nlemleri g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z \u00f6nemlidir:<\/p>\n<p>*   <strong>D\u00fczenli G\u00fcncellemeler:<\/strong> \u0130\u015fletim sisteminizi ve Mosquitto dahil t\u00fcm yaz\u0131l\u0131mlar\u0131n\u0131z\u0131 d\u00fczenli olarak g\u00fcncelleyin. G\u00fcvenlik a\u00e7\u0131klar\u0131 s\u0131k\u00e7a ke\u015ffedilir ve yamalarla kapat\u0131l\u0131r. <code>sudo apt update && sudo apt upgrade -y<\/code> komutunu d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rmak \u00f6nemlidir.<br \/>\n*   <strong>G\u00fc\u00e7l\u00fc Parolalar:<\/strong> T\u00fcm Mosquitto kullan\u0131c\u0131lar\u0131 i\u00e7in g\u00fc\u00e7l\u00fc, karma\u015f\u0131k ve benzersiz parolalar kullan\u0131n. Parola y\u00f6neticileri bu konuda yard\u0131mc\u0131 olabilir.<br \/>\n*   <strong>En Az Ayr\u0131cal\u0131k \u0130lkesi:<\/strong> ACL&#8217;leri uygularken, her kullan\u0131c\u0131n\u0131n veya cihaz\u0131n yaln\u0131zca g\u00f6revini yerine getirmesi i\u00e7in kesinlikle gerekli olan eri\u015fim ayr\u0131cal\u0131klar\u0131na sahip oldu\u011fundan emin olun. Gereksiz izinlerden ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>Loglar\u0131 \u0130zleme:<\/strong> Mosquitto&#8217;nun loglar\u0131n\u0131 d\u00fczenli olarak izleyin. Anormal ba\u011flant\u0131 denemeleri, kimlik do\u011frulama hatalar\u0131 veya di\u011fer \u015f\u00fcpheli etkinlikler i\u00e7in loglar\u0131 kontrol edin. Mosquitto loglar\u0131 genellikle <code>\/var\/log\/mosquitto\/mosquitto.log<\/code> adresinde veya <code>journalctl -u mosquitto<\/code> komutuyla g\u00f6r\u00fcnt\u00fclenebilir.<br \/>\n*   <strong>G\u00fcvenilir CA Sertifikalar\u0131:<\/strong> \u00dcretim ortamlar\u0131nda, kendinden imzal\u0131 sertifikalar yerine Let&#8217;s Encrypt gibi \u00fccretsiz veya ticari bir Sertifika Yetkilisinden (CA) al\u0131nm\u0131\u015f g\u00fcvenilir TLS\/SSL sertifikalar\u0131 kullan\u0131n. Bu, istemcilerin broker&#8217;\u0131n kimli\u011fini kolayca do\u011frulamas\u0131na olanak tan\u0131r ve manuel sertifika kurulumu ihtiyac\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>Kullan\u0131lmayan Dinleyicileri Devre D\u0131\u015f\u0131 B\u0131rakma:<\/strong> E\u011fer t\u00fcm istemcileriniz TLS \u00fczerinden ba\u011flanabiliyorsa, 1883 numaral\u0131 porttaki \u015fifrelenmemi\u015f dinleyiciyi (<code>listener 1883<\/code>) Mosquitto yap\u0131land\u0131rma dosyas\u0131ndan kald\u0131rarak devre d\u0131\u015f\u0131 b\u0131rak\u0131n. Bu, potansiyel bir sald\u0131r\u0131 y\u00fczeyini azalt\u0131r.<br \/>\n*   <strong>Yedeklemeler:<\/strong> Mosquitto yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 (<code>mosquitto.conf<\/code>, <code>passwd<\/code> dosyas\u0131, <code>aclfile.conf<\/code> ve sertifikalar) d\u00fczenli olarak yedekleyin.<br \/>\n*   <strong>Chroot Ortam\u0131 (\u0130leri D\u00fczey):<\/strong> Daha y\u00fcksek g\u00fcvenlik gerektiren ortamlarda Mosquitto&#8217;yu bir chroot ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Bu, broker&#8217;\u0131n sistemin geri kalan\u0131ndan izole edilmesine yard\u0131mc\u0131 olur ve bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131n sistemin tamam\u0131n\u0131 etkilemesini zorla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>\u0130stemci Kimlik Do\u011frulamas\u0131 (Mutual TLS):<\/strong> <code>require_certificate true<\/code> ayar\u0131n\u0131 kullanarak kar\u015f\u0131l\u0131kl\u0131 TLS (mutual TLS) uygulay\u0131n. Bu, hem istemcinin broker&#8217;\u0131 hem de broker&#8217;\u0131n istemciyi bir sertifika arac\u0131l\u0131\u011f\u0131yla do\u011frulamas\u0131 anlam\u0131na gelir. Bu, \u00f6zellikle hassas IoT cihazlar\u0131 i\u00e7in en \u00fcst d\u00fczey g\u00fcvenlik sa\u011flar.<br \/>\n*   <strong>Keepalive ve Mesaj Boyutu Limitleri:<\/strong> DoS sald\u0131r\u0131lar\u0131n\u0131 \u00f6nlemek i\u00e7in Mosquitto yap\u0131land\u0131rmas\u0131nda <code>max_inflight_messages<\/code>, <code>max_queued_messages<\/code> ve <code>message_size_limit<\/code> gibi parametreleri ayarlayarak mesaj kuyru\u011fu ve boyutu \u00fczerinde s\u0131n\u0131rlar belirleyebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makale, Mosquitto MQTT mesajla\u015fma broker&#8217;\u0131n\u0131 Debian 10 \u00fczerine kurmak ve g\u00fcvenli hale getirmek i\u00e7in kapsaml\u0131 bir rehber sunmu\u015ftur. MQTT, IoT cihazlar\u0131 aras\u0131nda verimli ileti\u015fim i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r, ancak g\u00fcvenli bir \u015fekilde yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131nda \u00f6nemli g\u00fcvenlik riskleri ta\u015f\u0131yabilir.<\/p>\n<p>Ad\u0131m ad\u0131m kurulum s\u00fcrecinden ba\u015flayarak, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131, TLS\/SSL \u015fifrelemesi, g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131 ve eri\u015fim kontrol listeleri (ACL&#8217;ler) gibi kritik g\u00fcvenlik \u00f6nlemlerini detayl\u0131 bir \u015fekilde ele ald\u0131k. Her bir ad\u0131m\u0131n neden gerekli oldu\u011funu ve nas\u0131l uygulanaca\u011f\u0131n\u0131 a\u00e7\u0131klayarak, broker&#8217;\u0131n\u0131z\u0131n yetkisiz eri\u015fime ve veri ihlallerine kar\u015f\u0131 korunmas\u0131na yard\u0131mc\u0131 olacak sa\u011flam bir temel olu\u015fturduk.<\/p>\n<p>Unutmay\u0131n ki g\u00fcvenlik s\u00fcrekli bir s\u00fcre\u00e7tir. Broker&#8217;\u0131n\u0131z\u0131 d\u00fczenli olarak g\u00fcncellemek, loglar\u0131 izlemek ve en iyi uygulamalar\u0131 takip etmek, IoT altyap\u0131n\u0131z\u0131n uzun vadeli g\u00fcvenli\u011fini sa\u011flamak i\u00e7in hayati \u00f6neme sahiptir. Bu rehberdeki bilgileri uygulayarak, IoT projeleriniz i\u00e7in g\u00fcvenilir ve g\u00fcvenli bir MQTT ileti\u015fim omurgas\u0131 olu\u015fturabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi\nGiri\u015f\nNesnelerin \u0130nterneti (IoT) ekosisteminde ci","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-38111","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi\" \/>\n<meta property=\"og:description\" content=\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi Giri\u015f Nesnelerin \u0130nterneti (IoT) ekosisteminde ci\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-23T11:40:51+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi\",\"datePublished\":\"2026-01-23T11:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\"},\"wordCount\":2791,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\",\"name\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-23T11:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/","og_locale":"tr_TR","og_type":"article","og_title":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi","og_description":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi Giri\u015f Nesnelerin \u0130nterneti (IoT) ekosisteminde ci","og_url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-23T11:40:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi","datePublished":"2026-01-23T11:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/"},"wordCount":2791,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/","url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/","name":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-23T11:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-debian-10-uzerine-kurulumu-ve-guvenli-hale-getirilmesi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Debian 10 \u00dczerine Kurulumu ve G\u00fcvenli Hale Getirilmesi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38111"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38111\/revisions"}],"predecessor-version":[{"id":38112,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38111\/revisions\/38112"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}