Stunnel, TLS tünelleri oluşturmak için harika bir araçtır, ancak Ubuntu’da doğru bir şekilde kurmak biraz zorlayıcı olabilir. Bu kılavuz, stunnel’ı Ubuntu üzerinde, özellikle de Ubuntu 18.04 Server’da nasıl kurup yapılandıracağınızı gösterecek. Ancak, adımların küçük ayarlamalarla diğer Ubuntu sürümlerine ve hatta farklı Linux dağıtımlarına da uygulanabileceğini unutmayın. Eğer başka kurulumlarla başarılı olursanız, lütfen benimle paylaşın, böylece bu kılavuzu güncelleyebilirim.
Stunnel Kurulumu
Stunnel’ı kurmak oldukça basittir. Bunun için Ubuntu’nun varsayılan deposunu kullanacağız:
sudo sh -c 'apt-get update && apt-get install stunnel4'
Kurulum sırasında, stunnel4
kullanıcı hesabı, başlangıç betiği ve logrotate yapılandırması gibi gerekli bileşenler de oluşturulacaktır. Ayrıca, paketteki birkaç betik, ppp bağlantı durum değişikliklerini yönetmek için (stunnel işlemini yeniden başlatarak) kullanılmaktadır.
Stunnel – Manuel Mod
Stunnel, yapılandırma dosyası ile birlikte manuel olarak çağrılabilir ve çalışacaktır. Örneğin, yapılandırma dosyasının /etc/stunnel/stunnel.conf
dizininde bulunduğunu varsayalım. Aşağıdaki komut bu dosyayı çalıştıracaktır:
sudo stunnel /etc/stunnel/stunnel.conf
Bu örnekte, stunnel’ı root olarak çalıştırıyoruz. Stunnel, bir kullanıcı olarak da çalıştırılabilir (eğer herhangi bir özel yere yazma veya ayrıcalıklı portlar açma işlemi yapmıyorsa), ancak daha iyi bir yöntem var:
Stunnel’ı, önce root olarak çalıştırıp daha sonra setuid/setgid
kullanarak ayrıcalıklarını bırakmak en iyi uygulamadır. Bu şekilde, başlangıçta ayrıcalıklı işlemleri (örneğin, 1024 altındaki portları açma) kullanma avantajını elde ederiz ve sonra ayrıcalıkları bırakabiliriz.
Stunnel – Başlangıç Modu
Stunnel paketinin sağladığı işlevsellikten tam olarak yararlanmak istiyorsak, tüm yapılandırma dosyalarını /etc/stunnel
dizinine koymalı ve .conf
uzantısına sahip olmalıyız.
Bunun ardından, bazı ayarlamalarla sağlanan başlangıç betiği, her .conf
dosyası için ayrı bir stunnel örneği başlatacaktır. Stunnel yazarına göre, bir kontrol arayüzü (apache2ctl’ye benzer bir yapı) tanıtıldığında, her *.conf için ayrı süreçler çalıştırmak gereksiz hale gelecektir.
Bunun yerine, tek bir stunnel.conf
dosyası kullanmalı ve bu dosyaya include = @sysconfdir@/stunnel/conf.d
eklemelisiniz. Şu an için, ayrı yapılandırma dosyaları için farklı stunnel örnekleri çalıştırmak desteklenmektedir, ancak çoğu durumda tek bir stunnel örneği, farklı hizmetler için hem istemci hem de sunucu işlevselliği sağlamak için kullanılabilir. Ne kadar harika!
Bu makalenin geri kalanı, bir stunnel.conf dosyası kullandığımızı varsaymaktadır. Ancak, birden fazla örnek başlatmak için gerekli bilgileri de vereceğim (çünkü bazı genel seçenekler her örnek için yalnızca bir kez ayarlanabilir).
Yapılandırma Dosyası Formatı
Yapılandırma dosyası olarak /etc/stunnel/
dizinine koyacağımız stunnel.conf
adında bir dosya kullanacağız.
Bu, tipik bir stunnel yapılandırma dosyasıdır ve stunnel yapılandırma dosyası formatına uygun olmalıdır. Ancak, stunnel’ın başlangıç betiği ile uyumlu çalışması için yapılandırma dosyasını oluştururken bazı kurallara uymanız gerekir:
- foreground: Başlangıç betiğini kullanmak istiyorsanız, foreground seçeneğini kullanmamalısınız.
- setuid/setgid: Paket tarafından zaten oluşturulmuş olan
stunnel4
adında bir kullanıcıyı setuid/setgid parametresi olarak kullanın. - pid: Başlangıç betiğinin düzgün çalışabilmesi için, her örneğin ayrı bir pid dosyasına sahip olması gerekir. Tek bir örnek için bunu
/var/run/stunnel4/stunnel.pid
olarak ayarlayın. - output: Stunnel çıktı mesajlarını diske kaydetmek mümkündür.
/var/log/stunnel4/
dizini, stunnel çıktı dosyalarını saklamak için ayrılmıştır. Belirtilen dosya .log uzantısına sahip olmalıdır. Bu klasörde eski log dosyalarını arşivlemek ve silmek için gerekli logrotate betiği zaten mevcuttur. Her örneğin farklı bir çıktı dosyası kullanması gerekecektir. Varsayılan örneğiniz için/var/log/stunnel4/stunnel.log
kullanın.
Yapılandırma Dosyası Örneği
Referans olarak bir örnek dosya sunuyorum:
pid = /var/run/stunnel4/stunnel.pid
output = /var/log/stunnel4/stunnel.log
setuid = stunnel4
setgid = stunnel4
# https://www.stunnel.org/faq.html
socket = r:TCP_NODELAY=1
socket = l:TCP_NODELAY=1
debug = 4
[yahoo_imaps-client]
client = yes
accept = 127.0.0.1:143
connect = imap.mail.yahoo.com:993
# Bu, ca-certificates paketini gerektirir
CApath = /etc/ssl/certs/
verifyChain = yes
checkHost = imap.mail.yahoo.com
[ssh_tls-server]
accept = 2222
connect = 127.0.0.1:22
PSKsecrets = /etc/stunnel/stunnel.secrets
Varsayılan Ayarları Belirleme
/etc/default/stunnel
dosyası, her şeyi bir araya getiren yapı. En azından bu dosyada “ENABLED” değerini “1” olarak ayarlamanız gerekir ki stunnel başlangıç betiği etkinleşsin.
Aşağıda, her ayarın açıklamasıyla birlikte listesi bulunmaktadır:
ENABLED=0
# Bunu 1 olarak ayarlayın, böylece stunnel başlangıç betiği çalıştırılacak.
FILES="/etc/stunnel/*.conf"
# Stunnel başlangıç betiği tarafından kullanılan yapılandırma dosyalarının konumu ve dosya uzantıları.
OPTIONS=""
# Başlangıç betiği tarafından stunnel örneklerine iletilecek ekstra seçenekler.
RLIMITS=""
# Stunnel örnekleri için bazı sınırlar belirleyebilirsiniz. Daha fazla detay için dosyanın iç yorumuna ve Bash belgesine bakın.
PPP_RESTART=0
# Bunu 1 olarak ayarlayın, böylece ppp yeniden başlatma betikleri (ppp bağlantı durumu değiştiğinde stunnel örneklerini yeniden başlatır) etkinleşir.
Örneği Test Etme
Artık hizmeti test etmeye hazırsınız:
Öncelikle, hizmetin durduğundan emin olun:
sudo systemctl stop stunnel4.service
Hizmeti başlatın:
sudo systemctl start stunnel4.service
Hizmetin durumunu kontrol edin (burada, stunnel örneğinin aktif olduğunu ve birkaç son log mesajını göreceksiniz):
systemctl status stunnel4.service
Çıktı şöyle görünebilir:
● stunnel4.service - LSB: Start or stop stunnel 4.x (TLS tunnel for network daemons)
Loaded: loaded (/etc/init.d/stunnel4; generated)
Active: active (running) since Fri 2019-03-29 01:10:00 UTC; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 1840 ExecStart=/etc/init.d/stunnel4 start (code=exited, status=0/SUCCESS)
Tasks: 4 (limit: 4915)
CGroup: /system.slice/stunnel4.service
├─1785 /usr/bin/stunnel4 /etc/stunnel/stunnel.conf
└─1865 /usr/bin/stunnel4 /etc/stunnel/stunnel_2.conf
Hizmetin başlangıçta etkinleştirildiğinden emin olun:
sudo systemctl enable stunnel4.service
Hepsi bu kadar! Stunnel’ı kullanmanın keyfini çıkarın!
Her zamanki gibi, bu makale hakkında düşündüklerinizi duymak isterim. Lütfen aşağıda benimle paylaşın.