Teleport'u kurmak, karmaşık VPN yapılandırmalarından çok daha basittir. Bu rehberde, Linux (Ubuntu/Debian) tabanlı bir sunucuda en temel Teleport Community Edition kurulumunu ve bir SSH n...
Teleport'u kurmak, karmaşık VPN yapılandırmalarından çok daha basittir. Bu rehberde, Linux (Ubuntu/Debian) tabanlı bir sunucuda en temel Teleport Community Edition kurulumunu ve bir SSH nodunu nasıl dahil edeceğimizi inceleyeceğiz.
1. Hazırlık ve Kurulum
Teleport, Go ile yazılmış tek bir binary dosyasıdır. Paket yöneticinizi kullanarak hızlıca yükleyebilirsiniz.
# Teleport public key'ini ekleyelim
sudo curl https://apt.releases.teleport.dev/gpg \
-o /usr/share/keyrings/teleport-archive-keyring.asc
# Repository'yi listeye ekleyelim
echo "deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/ubuntu $(lsb_release -cs) stable main" \
| sudo tee /etc/apt/sources.list.d/teleport.list
sudo apt update
sudo apt install teleport
2. Teleport'u Yapılandırma (Auth & Proxy)
Teleport'un çalışması için bir "Auth Service" (Kimlik otoritesi) ve "Proxy Service" (Giriş kapısı) gerekir. En basit haliyle bir konfigürasyon dosyası oluşturalım:
sudo teleport configure -o /etc/teleport.yaml --cluster-name=teleport.local
Bu komut, varsayılan ayarlarla bir yapılandırma dosyası oluşturur. Ardından servisi başlatalım:
sudo systemctl start teleport
sudo systemctl enable teleport
3. İlk Kullanıcıyı Oluşturma ve MFA Kaydı
Teleport'ta şifre yoktur, ancak ilk girişi yapabilmek için bir kullanıcı davet linki oluştururuz. Güvenlik gereği Teleport MFA (Multi-Factor Authentication) zorunlu kılar.
# 'admin' adında, yetkili bir kullanıcı oluşturalım
sudo tctl users add admin --roles=editor,access --logins=root,ubuntu,ec2-user
Çıktı: Size bir URL verecektir (Örn: https://teleport.example.com:3080/web/newuser/...). Bu linke tıklayarak tarayıcı üzerinden şifrenizi belirleyebilir ve QR kodunu taratıp MFA (Google Authenticator vb.) kaydınızı yapabilirsiniz.
4. Altyapıya Yeni Bir Sunucu (Node) Eklemek
Şimdi asıl sihir burada başlıyor. Başka bir sunucuyu bu panele eklemek için SSH anahtarı kopyalamak yerine, Teleport'un güvenli "Token" sistemini kullanıyoruz.
Ana Sunucuda (Auth Server):
sudo tctl tokens add --type=node
Bu komut size kısa ömürlü bir token ve bir yükleme komutu verir.
Hedef Sunucuda (Node):
Verilen komutu hedef sunucuda çalıştırdığınızda, o sunucu artık Teleport paneline dahil olur. Artık terminalden şu şekilde bağlanabilirsiniz:
tsh ssh root@target-server
5. Teknik Konfigürasyonun Püf Noktaları
| Özellik | Neden Önemli? | Ayar Lokasyonu |
| Session Recording | Yapılan her hareketin izlenmesi için. | teleport.yaml -> session_recording |
| Audit Log | Denetimlerde kimin ne yaptığını kanıtlamak için. | /var/lib/teleport/log |
| RBAC | Kullanıcıların sadece kendi departmanlarına ait sunucuları görmesi için. | tctl create roles.yaml |
6. "tsh" Tool: Terminaldeki Gücünüz
Teleport sadece bir web arayüzü değil, terminal severler için tsh adında harika bir CLI aracı sunar.
-
tsh login --proxy=teleport.example.com: Kimlik doğrulaması yapar. -
tsh ls: Erişebildiğiniz tüm sunucuları, veri tabanlarını ve K8s cluster'larını listeler. -
tsh join <session-id>: Bir arkadaşınızın terminal oturumuna canlı olarak katılıp beraber kod yazmanızı (pair programming) sağlar.
ne yaptık?
Bu kurulumla birlikte artık altyapınızda:
-
SSH Key yönetimi bitti.
-
Statik şifreler tarih oldu.
-
Her bağlantı MFA ile korunuyor.
-
Tüm işlemler kaydediliyor.
güvenlik...
Teleport’un en güçlü olduğu iki alana geldik. Geleneksel yöntemlerde PostgreSQL için kullanıcı şifreleri, Kubernetes için ise .kube/config dosyalarındaki statik sertifikalar (kube-token) büyük birer güvenlik açığıdır.
Teleport ile bu süreci "kısa ömürlü sertifikalar" ve "tek bir kimlik (SSO)" üzerine kuruyoruz. İşte adım adım teknik yapılandırma:
1. Senaryo: PostgreSQL Veri Tabanını Teleport'a Bağlamak
Bu yapılandırmada Teleport, veri tabanı ile kullanıcı arasında bir "Identity-Aware Proxy" görevi görür.
A. Adım: Veri Tabanı Servisini Başlatma
Teleport yüklü olan sunucuda (veya veri tabanına erişimi olan bir node üzerinde) teleport.yaml dosyasını şu şekilde güncelliyoruz:
db_service:
enabled: "yes"
databases:
- name: "finans-prod"
description: "Üretim Ortamı PostgreSQL Veri Tabanı"
protocol: "postgres"
uri: "localhost:5432" # DB'nin adresi
labels:
env: "prod"
dept: "finance"
B. Adım: Erişim Sağlama
Terminalinizden (tsh yüklü makineden) şu komutlarla bağlanabilirsiniz:
-
Giriş yap:
tsh login --proxy=teleport.example.com -
DB'leri listele:
tsh db ls -
DB'ye bağlan:
tsh db login finans-prod -
Sorgu çalıştır:
tsh db connect finans-prod(Bu komut otomatik olarakpsqlaracını açar ve sertifikaları arkada yönetir.)
2. Senaryo: Kubernetes Cluster'ı Teleport'a Eklemek
Teleport, kubectl komutlarını Proxy üzerinden tüneller ve kimlik doğrulaması yapmayan kullanıcıların cluster'a erişimini engeller.
A. Adım: Teleport Agent Kurulumu (Helm ile)
Kubernetes cluster'ınızın içine Teleport agent'ını kurmak en temiz yöntemdir:
helm install teleport-agent teleport/teleport-kube-agent \
--set roles=kube \
--set proxyAddr=teleport.example.com:443 \
--set authToken=YOUR_JOIN_TOKEN \
--set kubeClusterName=k8s-prod
B. Adım: Güvenli Erişim
Agent bağlandıktan sonra, artık hiçbir kubeconfig dosyasına ihtiyacınız kalmaz:
-
Cluster listesini gör:
tsh kube ls -
Cluster'a giriş yap:
tsh kube login k8s-prod -
Standart komutları kullan:
kubectl get pods
🔐 Neden Bu Yöntemi Seçmelisiniz? (Teknik Avantajlar)
| Özellik | PostgreSQL Uygulaması | Kubernetes Uygulaması |
| Kimlik Denetimi | DB kullanıcısı değil, gerçek kişi loglanır. | K8s User/Group yetkileri Teleport rollerine bağlanır. |
| Şifre Yönetimi | pg_hba.conf içinde sadece Teleport'un CA'sı yetkilendirilir. |
Statik tokenlar yerine kısa ömürlü cert-auth kullanılır. |
| Denetim (Audit) | Çalıştırılan her SQL sorgusu loglanır. | Her exec oturumu ve API çağrısı kaydedilir. |
| Erişim Kısıtı | Sadece mesai saatlerinde erişim gibi kısıtlar eklenebilir. | Sadece belirli namespace'lere erişim yetkisi (RBAC) verilir. |