Uygulama

Warpgate’i kullanarak Bastion Sunucu Kurulumu

‘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.