‘Atlama sunucusu veya atlama kutusu’ olarak da bilinen bir bastion sunucusu, güvenlik duvarının dışına veya siber saldırılara dayanacak özel ağ arayüzleriyle donatılmış askerden arındırılmış bir bölgeye (DMZ) yerleştirilen bir sunucudur. İki güvenlik duvarı varsa, savunma sunucusu iki güvenlik duvarı arasına yerleştirilir. Bastion sunucuları bir proxy sunucusu, yük dengeleyici veya Posta sunucuları, Web sunucuları, FTP sunucuları, VPN sunucuları ve DNS sunucuları gibi çevre erişim kontrolü güvenliği sağlayan bir sistem olarak çalıştırılabilir. Kullanıcıların iç ağda yer alan korumalı sistemlere erişimini sağlayan kural setlerine sahiptirler.
Bastion sunucuları genellikle sistemlerin internetten gelen saldırı yüzeyini azaltır. Bilgisayar ağını dışarıdan gelen saldırılara veya diğer güvenlik ihlallerine karşı tarayarak doğrudan kamuya açık bir ağdan adreslenebilecek tek bilgisayar olarak belirlenmiş bir veya daha fazla bilgisayar olabilir. Sunucunun ihtiyaç duymadığı gereksiz hesapları ve uygulamaları kaldırarak güvenlik açıklarının olasılığını en aza indirmek için dışarıdan erişim düzeyine sahip olacak şekilde özel olarak yapılandırılmıştır. Dolayısıyla, dışarıdan bir kullanıcının korunan sisteme erişebilmesi için, özel sisteme bağlanabilecekleri savunma ana bilgisayarının doğrudan IP adresine SSH aracılığıyla bağlanmak için kimlik doğrulama ayrıntılarına sahip olmaları gerekir.
Warpgate, DMZ’de konuşlandırılan Linux için bir SSH, HTTPS ve MySQL bastion sunucusudur. Dahili bir web kullanıcı arayüzü ile Rust Programlama dilinde yazılmıştır. Bir atlama ana bilgisayarı olarak işlev görmez, bunun yerine bağlantılarınızı doğrudan hedefe iletir. Yani DMZ’de ana makineyi kurduğunuzda, kullanıcı hesaplarını ekler ve bunları ağ içindeki belirli ana bilgisayarlara ve URL’lere atarsınız. Tek bir pakettir ve özel istemci uygulamalarına veya bağımlılıklarına ihtiyaç duymaz. Yerleşik Web kullanıcı arayüzü, Warpgate tarafından kaydedilen (isteğe bağlı olarak) daha sonra tekrar oynatılabilen oturumları kolayca görüntülemek için kullanılır. Günlükleri incelemek ve canlı oturumları listelemek için de kullanabilirsiniz.
Warpgate’i Linux sistemine yükleyin
Linux için kurulumu sürümler sayfasından indirin ve /usr/bin/warpgate olarak kaydedin. Alternatif olarak en son paketi indirmek için aşağıdaki wget yardımcı programını kullanın.
wget https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux -O warpgate
sudo mv warpgate /usr/bin/warpgate
Aşağıdaki komutla dosyayı çalıştırılabilir hale getirin;
sudo chmod +x /usr/bin/warpgate
Çalıştığını doğrulayın.
$ warpgate --version
warpgate 0.7.0
Warpgate Jump Sunucusunu Yapılandırma
Warpgate’i etkileşimli modda ayarlamak için aşağıdaki komutu çalıştırın. Uygulama verilerinin depolanacağı dizini seçmeniz ve HTTP, SSH ve MySQL bağlantılarını dinlemek için bağlantı noktalarını seçmeniz istenecektir. Kullanım yardımını görebilirsiniz.
$ warpgate --help
USAGE:
warpgate [OPTIONS] <SUBCOMMAND>
OPTIONS:
-c, --config <CONFIG> [default: /etc/warpgate.yaml]
-d, --debug
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
check Create a password hash for use in the config file
client-keys Show Warpgate's SSH client keys
help Print this message or the help of the given subcommand(s)
recover-access Reset password and auth policy for a user
run Run Warpgate
setup Run first-time setup and generate a config file
test-target Test the connection to a target host
unattended-setup Run first-time setup non-interactively
Buradan ayrıca oturumların kaydedilip kaydedilmeyeceğini seçebilir ve yönetici kullanıcı için bir şifre belirleyebilirsiniz.
warpgate setup
Çıktı aşağıdakine benzer bir şekilde görünmelidir.
17:16:35 INFO Welcome to Warpgate 0.7.0
17:16:35 INFO Let's do some basic setup first.
17:16:35 INFO The new config will be written in /etc/warpgate.yaml.
17:16:35 INFO * Paths can be either absolute or relative to /etc.
✔ Directory to store app data (up to a few MB) in · /var/lib/warpgate
✔ Endpoint to listen for HTTP connections on · 0.0.0.0:8888
17:16:40 INFO You will now choose specific protocol listeners to be enabled.
17:16:40 INFO
17:16:40 INFO NB: Nothing will be exposed by default -
17:16:40 INFO you'll set target hosts in the config file later.
✔ Accept SSH connections? · yes
✔ Endpoint to listen for SSH connections on · 0.0.0.0:2222
✔ Accept MySQL connections? · yes
✔ Endpoint to listen for MySQL connections on · 0.0.0.0:33306
✔ Do you want to record user sessions? · yes
✔ Set a password for the Warpgate admin user · ********
17:17:13 INFO Generated configuration:
---
sso_providers: []
recordings:
enable: true
path: /var/lib/warpgate/recordings
external_host: ~
database_url: "sqlite:/var/lib/warpgate/db"
ssh:
enable: true
listen: "0.0.0.0:2222"
keys: /var/lib/warpgate/ssh-keys
host_key_verification: prompt
http:
enable: true
listen: "0.0.0.0:8888"
certificate: /var/lib/warpgate/tls.certificate.pem
key: /var/lib/warpgate/tls.key.pem
mysql:
enable: true
listen: "0.0.0.0:33306"
certificate: /var/lib/warpgate/tls.certificate.pem
key: /var/lib/warpgate/tls.key.pem
log:
retention: 7days
send_to: ~
config_provider: database
17:17:13 INFO Saved into /etc/warpgate.yaml
17:17:13 INFO Using config: "/etc/warpgate.yaml"
17:17:13 INFO Migrating config file into the database
17:17:13 INFO Generating Ed25519 host key
17:17:13 INFO Generating RSA host key
17:17:14 INFO Generating Ed25519 client key
17:17:14 INFO Generating RSA client key
17:17:15 INFO Generating a TLS certificate
17:17:15 INFO
17:17:15 INFO Admin user credentials:
17:17:15 INFO * Username: admin
17:17:15 INFO * Password: <your password>
17:17:15 INFO
17:17:15 INFO You can now start Warpgate with:
17:17:15 INFO warpgate --config /etc/warpgate.yaml run
Systemd servisini hazırlama
Warpgate’i systemd’ye eklemek ve otomatik olarak başlatılmasını sağlamak için aşağıdaki komutu çalıştırın:
cat <<EOF > /etc/systemd/system/warpgate.service
[Unit]
Description=Warpgate
After=network.target
StartLimitIntervalSec=0
[Service]
Type=notify
Restart=always
RestartSec=5
ExecStart=/usr/bin/warpgate --config /etc/warpgate.yaml run
[Install]
WantedBy=multi-user.target
EOF
Değişiklikleri uygulamak için sistem arka plan programını yeniden yükleyin:
sudo systemctl daemon-reload
Daha sonra aşağıdaki komutla hizmeti başlatıp etkinleştirin.
sudo systemctl enable --now warpgate
Servis durumunu aşağıdaki komutla kontrol edebilirsiniz.
$ systemctl status warpgate
● warpgate.service - Warpgate
Loaded: loaded (/etc/systemd/system/warpgate.service; enabled; vendor pres>
Active: active (running) since Wed 2022-11-16 20:17:18 EAT; 4min 31s ago
Main PID: 16999 (warpgate)
Tasks: 10 (limit: 9457)
Memory: 8.0M
CPU: 54ms
CGroup: /system.slice/warpgate.service
└─16999 /usr/bin/warpgate --config /etc/warpgate.yaml run
Warpgate Web Konsoluna Erişim
https://<host>:8888/@warpgate/admin adresinden tarayıcınıza gidin. Varsayılan kullanıcı adı admin, şifre ise kurulum sırasında belirlediğiniz şifredir.
Aşağıdaki sayfa görüntülenir. Warpgate’i Yönet’e tıklayın:
Oturum ana sayfası aşağıda gösterilmiştir.
Eğer siz de benim gibi karanlık tema tutkunuysanız, sağ altta o anda otomatik tema modunda olduğunu gösteren simgeye tıklayarak karanlık temaya geçebilirsiniz.
Oturum ana sayfası artık aşağıdaki gibi görünecektir.
SSH Hedefleri Ekle
Config > Add a target.’e gidin ve ardından Hedef ekle’ye tıklayın.
Yeni hedefe bir ad verin. Daha sonra Create Target‘a tıklayın.
Kimlik doğrulama bilgileri de dahil olmak üzere bağlantı ayrıntılarını ekleyin. Ardından Update Configuration‘ye tıklayın.
Hedef, ona erişmesine izin verilen kullanıcılar için Warpgate ana sayfasında görünmelidir:
Bağlantının ayrıntılarını almak için girişe tıklayın.
Bağlantıların çalışması için hedef ana bilgisayarın güvenmesi gereken Warpgate’in sahip olduğu SSH anahtarlarına da erişebilirsiniz.
HTTP Hedefleri Ekle
Config > Targets > Add a target‘ye gidin ve yeni HTTP hedefine bir ad verin.
URL’yi ve TLS’nin gerekli olup olmayacağını veya reddedileceğini de içeren yapılandırma ayrıntılarını doldurun. Daha sonra Update Configuration‘ye tıklayın.
Hedef Warpgate’in ana sayfasında görünmelidir:
Hedef adına tıklarsanız bağlantı ayrıntılarını görüntüleyebilirsiniz.
MySQL Hedefleri Ekleme
Confige gidin ve ardından Add a Target.’ye tıklayın. Hedefe bir ad verin ve Tür altında MySQL’i seçin, ardından Hedef oluştur’a tıklayın.
Hedef ana bilgisayar IP adresi de dahil olmak üzere erişim ayrıntılarını kimlik doğrulama ayrıntılarıyla birlikte düzenleyin. İşiniz bittiğinde Update configuration‘ye tıklayın.
Yeni hedef, aşağıda gösterildiği gibi yapılandırma ana sayfasında görünecektir.
Hedefe tıkladığınızda erişim talimatlarını görüntüleyebilirsiniz.
Kullanıcının Şifresini Değiştirme
Config > Users > admin‘e gidin ve parola kimlik bilgilerinin yanındaki Değiştir’e tıklayın;
Bir şifre girin ve ardından Kaydet’e tıklayın.
Kullanıcı Ekleme
Config > Users’a gidin ve ardından Kullanıcı Ekle düğmesine tıklayın.
Kullanıcı adını girin ve Create User‘a tıklayın.
Daha sonra kullanıcı için bir şifre oluşturun. Şifre Ekle’ye tıklayın.
Şifreyi girin ve ardından Kaydet’e tıklayın.
Roller Ekleme
Config > Roles’e gidin ve ardından Rol ekle düğmesine tıklayın.
Rolün adını girin ve ardından Create role‘a tıklayın.
Rol daha sonra oluşturulacak ve aşağıda gösterilecektir.
Daha sonra role bir kullanıcı eklemek için kullanıcıya tıklayın, ardından rollerin üzerinde aşağı kaydırın ve istediğiniz rolün düğmesini değiştirin ve ardından Update‘ye tıklayın.
Warpgate’i Docker aracılığıyla yükleme
Önkoşullar:
- image name: ghcr.io/warp-tech/warpgate
- Volumes required: /data
- Ports: 2222, 8888
Sisteminizde Docker yüklüyken Warpgate kurulumu için aşağıdaki komutu çalıştırın.
docker run --rm -it -v <data dir>:/data ghcr.io/warp-tech/warpgate setup
Warpgate’i aşağıdaki komutla çalıştırın.
docker run --rm --name warpgate -p <host https port>:8888 -p <host ssh port>:2222 -it -v <data dir>:/data ghcr.io/warp-tech/warpgate
Özet
Bastion sunucuları, siber saldırıları ve kötü niyetli izinsiz girişleri önlemek için güvenlik duvarının üstüne özel ağınıza ekstra bir güvenlik katmanı ekler. Warpgate, çok fazla yapılandırma gerektirmediğinden ve oturumları, günlükleri ve daha fazlasını gözden geçirmek için kullanabileceğiniz isteğe bağlı bir web yöneticisi kullanıcı arayüzüyle birlikte geldiğinden, size bir bastion sunucu kurmanız için kolay bir seçenek sunar. Warpgate, özel olarak biçimlendirilmiş kimlik bilgilerine sahip bağlantıları alır, ardından kullanıcının kimliğini yerel olarak doğrular ve doğrudan hedefe bağlanır. Başarılı bir bağlantı, isteğe bağlı olarak oturumu kaydederken her iki tarafın da birbirine bağlanmasını sağlar.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.