16.6 Sunucu işlemleri

16.6.1 adactl

adactl, sunucuya kurulan işletim aracıdır (/usr/local/sbin/adactl; kurulum dizini varsayılan olarak /opt/ada-classification). sudo ile çalıştırın. Her komut --help kabul eder.

Güvenebileceğiniz tasarım kuralları:

  • Önce ölç, sonra değiştir. Yıkıcı komutlar ne yapacaklarını listeler ve sunucunun ana makine adını yazmanızı ister; her yıkıcı komutta --dry-run kullanılabilir.
  • Komut satırında veya ekranda gizli bilgi yok. Parolalar ve parola ifadeleri 0600 izinli dosyalardan okunur (--password-file, --passphrase-file). Açık istek üzerine gizli bilgi yazdıran yalnızca iki komut vardır: admin initial-password ve backup key create.
  • Çıkış kodları: 0 başarılı · 1 hata (iş yarıda kaldı) · 2 bekleyen iş / bulgular · 3 ön koşul veya kullanım hatası — hiçbir şey değiştirilmedi.
Görev Komut
Neyin kurulu ve çalışır olduğu, bekleyen işler (lisans eksik, yedek anahtarı eksik, ilk parola değiştirilmemiş …) sudo adactl status [--json]
Kurulum sağlığı (izinler, compose, beş hizmet, /healthz, şema, ajan paketleri, gözcü, sıkılaştırma profili) sudo adactl verify [--json]
İlk açılış yönetici parolası (bir kez gösterilir) sudo adactl admin initial-password
Lisans sudo adactl license request · license install <license.lic> --accept-eula <version> [--password-file <f>] · license status
TLS sertifikaları sudo adactl cert csr --scope admin\|client --password-file <f> · cert install <cert.pem> --password-file <f> · cert import --cert <pem> --key <pem> --password-file <f> [--chain <pem>]
Ajan kayıt belirteci sudo adactl token show [--out <file>] (0600 izinli bir dosyaya yazar; setup_token_viewed olarak kaydedilir) · token rotate [--grace <days>] (varsayılan 14; kayıtlı ajanlar etkilenmez)
Konsol oturumu olmadan tam yedek sudo adactl backup full --passphrase-file <f> [--out <dir>] (varsayılan /var/backups/ada)
Yedek anahtarı sudo adactl backup key create
Dahili kök CA sudo adactl ca status · ca backup --passphrase-file <f> · ca restore <file> --passphrase-file <f> · ca rotate --passphrase-file <f>
Ana makine tarafı destek paketi sudo adactl support [--out <file.tar.gz>] [--lines N]
Sıkılaştırma taban çizgisi (salt okunur) sudo adactl harden [--json] [--modules <list>] [--list]
Yükseltme / geri alma sudo adactl upgrade <release-dir> --passphrase-file <f> · sudo adactl rollback [<version>]
Konteyner kayıtları sudo adactl logs [ada-api\|ada-web\|ada-db\|ada-docker-guard\|ada-ml] [--lines N]
Doğru projede docker compose sudo adactl compose -- <args>
Giden entegrasyonlar sudo adactl integrations [status] · integrations start\|stop smtp\|syslog\|directory (API’yi yeniden başlatır; yapılandırılmamış bir entegrasyonu başlatmayı reddeder)
SSH karşılama ekranı sudo adactl motd show\|remove\|install
Kaldırma sudo adactl uninstall (veri birimlerini korur) · uninstall --purge --passphrase-file <f> (şifreli bir kurtarma arşivi yazdıktan sonra tüm verileri yok eder) · purge-volumes · factory-reset --yes-i-lose-the-root-ca
Elle yapılmış kurulumu devralma sudo adactl adopt <dir> [--dry-run]

16.6.2 Destek paketleri: konsol ve ana makine

Konsol ⬇ Support bundle (bölüm 16.1.6) sudo adactl support
Gereksinim Yönetici oturumu Ana makinede root; konsol çalışmıyorken de çalışır
İçerik Sunucu durumu, System günlükleri, konteyner kayıtlarının son satırları, ayıklanmış yapılandırma, ajan envanteri, denetim sayıları İşletim sistemi/saat/disk/RAM, Docker ve compose sürümleri ve durumu, konteyner inceleme (inspect) özetleri (yalnızca ortam değişkeni adları), konteyner kayıtlarının son satırları, değerleri maskelenmiş .env anahtar adları, secrets/ izinleri, ağ dinleyicileri, /healthz, /api/version, /api/status, fabrika temizliği raporu, gözcü durumu ve günlüğü
Çıktı zip ada-support-<host>-<date>.tar.gz (0600)
Ayıklama Anahtar tabanlı + bilinen gizli değerler Anahtar tabanlı + bilinen gizli değerler (değer katmanı için sudo gerekir; aksi hâlde value layer: degraded yazar)

Tek bir ajan için tanılamayı Agents sayfasında ajanın ayrıntı panelinden isteyin; ajan, sunucunun sakladığı bir zip dosyası yükler (ajan başına son 3 dosya, 30 gün).

16.6.3 Ana makine gözcüsü

Ürün içindeki tüm sağlık denetimleri ve uyarılar API sunucusunun içinde çalışır. API’nin kendisi çöker veya takılırsa bunu fark eden ana makine gözcüsüdür (host watchdog). Ana makinede standart kurulumla kurulan bir systemd zamanlayıcısıdır (ada-watchdog.timer, dakikada bir); yalnızca curl ve Docker CLI gerektirir.

Yön Davranış
Denetim https://127.0.0.1/healthz adresini çağırır ve durumu sınıflandırır: API çalışmıyor, web çalışmıyor, veritabanına erişilemiyor, başlatılıyor, Docker çalışmıyor.
E-posta Settings → Email altındaki SMTP ayarlarını kullanır; bu ayarlar otomatik olarak veri birimine yansıtılır (API çalışmıyorken de okunabilir; son geçerli kopya önbellekte tutulur). .env içindeki ADA_WATCHDOG_SMTP_* yansının yerine geçer.
Ne zaman Art arda 3 başarısız denetimden sonra ilk e-posta, kesinti sürdükçe 120 dakikada bir hatırlatma, tek bir RECOVERED e-postası. Ayarlanabilir: ADA_WD_FAILS_BEFORE_ALERT, ADA_WD_REMIND_MIN.
Kendini onarma Varsayılan olarak açık (ADA_WD_AUTOHEAL): konteyner kapanmış veya sağlıksızsa ada-api, ada-web ya da ada-docker-guard konteynerini yeniden başlatır; hizmet başına 15 dakikada en fazla bir kez (ADA_WD_HEAL_WINDOW_MIN). Veritabanına asla dokunmaz ve veritabanına erişilemezken API’yi asla yeniden başlatmaz.
Konsol Status sayfasındaki Host Watchdog satırı (bölüm 16.1.3).
Ana makinede doğrulama systemctl list-timers ada-watchdog.timer · journalctl -t ada-watchdog -n 5
Elle kurulum sudo sh deploy/watchdog/install-watchdog.sh (kurulum dizininde)

adactl upgrade ve adactl rollback çalıştıkları süre boyunca gözcüyü duraklatır ve her çıkış yolunda yeniden başlatır.

16.6.4 Sunucuyu yükseltme

Sunucuyu ajanlardan önce yükseltin. Desteklenen yol adactl upgrade’dir.

Başlamadan önce (yaklaşık 5 dakika):

  1. sudo adactl status — 0 çıkış kodu bekleyen bir iş olmadığı anlamına gelir; schema ve rollback base satırlarını ve boş disk alanını not edin.
  2. sudo adactl verify.
  3. Şifreli bir tam yedek alın: sudo adactl backup full --passphrase-file /root/backup.pass (sunucunun dışına kopyalayın).
  4. Kurulumdan veya son rotasyondan bu yana alınmış bir kök CA yedeğinin sunucu dışında bulunduğundan emin olun; yoksa sudo adactl ca backup --passphrase-file /root/ca.pass.
  5. Sürüm notlarını okuyun.

Yükseltme:

tar -xf ada-release-<version>.tar
sudo adactl upgrade ./ada-release-<version> --dry-run
sudo adactl upgrade ./ada-release-<version> --passphrase-file /root/backup.pass

Gözetimsiz çalıştırmalar için --yes ekleyin. Araç ölçülü adımlarla çalışır:

  1. Ön koşullar: root, sağlıklı yığın, Docker Compose ≥ 2.24, imajlar ve sürüm arşivi için boş disk alanı.
  2. Sürüm paketinin tamamı /var/lib/ada/releases/<version>/ altına kopyalanır (geri alma buradan okur; böylece daha sonra harici dosyalara gerek kalmaz) ve /usr/local/sbin/adactl yeni araca yönlendirilir.
  3. İmajlar yüklenir ve bildirime (manifest) göre doğrulanır; henüz hiçbir şey değiştirilmez.
  4. Yeni imajın uygulayacağı veritabanı geçişleri sayılır. En az bir tane varsa tam yedek zorunludur (--passphrase-file gereklidir; atlama seçeneği yoktur). Sayılamazlarsa yükseltme durur.
  5. Kurulum seti mevcut kurulumun üzerine yerleştirilir; .env (ADA_VERSION hariç), secrets/ ve ajan paketlerine asla dokunulmaz.
  6. Ajan paketleri, ADA_VERSION, tek bir up -d, sağlık beklemesi.

3 çıkış kodu hiçbir şeyin değiştirilmediği anlamına gelir. Herhangi bir adım başarısız olursa bu sunucuya özgü geri alma komutu ekrana yazdırılır.

Doğrulama (yaklaşık 3 dakika): sudo adactl status, sudo adactl verify, readlink -f /usr/local/sbin/adactl (yeni sürüm dizinini göstermelidir), curl -sk https://127.0.0.1/healthz → {"status":"ok"}. Konsolda Status sayfasını (sürüm, DB şeması, çevrim içi ajanlar) ve denetim kaydının zincir rozetini kontrol edin.

Geri alma: sudo adactl rollback [--dry-run], önceki sürümü /var/lib/ada/releases/ altından geri yükler. Önce veritabanı şemasını hedef imajla karşılaştırır; veritabanında eski imajın bilmediği geçişler varsa geri alma reddedilir ve bunun yerine geri yükleme yolu (yükseltme öncesi .adabk dosyasını eski sürüme geri yüklemek) yazdırılır.

16.6.5 Denetim zincirini ana makineden doğrulama

Konsol, Audit Log her yüklendiğinde zinciri doğrular. Lisansı olmayan bir sunucuda (API’nin HTTP 423 döndürdüğü durumda) doğrulamayı konteynerin içinden yapın:

sudo adactl compose -- exec ada-api node dist/cli-audit-verify.js --json

Çıkış kodları: 0 zincir sağlam · 2 zincir kırık (bütünlük bulgusu; ayrıca audit-verify-findings.log dosyasına eklenir) · 1 ölçülemedi (ortamı düzeltip yeniden deneyin — bu bir bütünlük bulgusu değildir) · 3 kullanım hatası.

16.6.6 Ana makine sıkılaştırması

sudo adactl harden, ana makineyi H-01 … H-25 denetimlerine göre ölçer (CIS Ubuntu ve CIS Docker ile eşlenmiştir; container, apparmor, firewall, auditd, journald, sshd, apt, perms, time, docker, sysctl, db, tls, backup gibi modüller) ve her bulgu için düzeltme komutunu yazdırır. Hiçbir şeyi değiştirmez. 2 çıkış kodu “kurulum bozuk” değil, “bulgular var” anlamına gelir; standart bir Ubuntu ana makinesinde birkaç uyarı kurumunuzun ana makine politikasına ilişkin kararlardır.

Uygulama, kurulum dizinindeki deploy/harden.sh ile yapılan ayrı ve bilinçli bir adımdır:

Komut Etkisi
sudo sh deploy/harden.sh --apply --dry-run Planı yazdırır; hiçbir şey yazmaz.
sudo sh deploy/harden.sh --apply Bir geri alma günlüğü ve bir ölü adam (dead-man) zamanlayıcısıyla 8 denetimi uygular (auditd kuralları, journald kalıcılığı, apt, dosya izinleri, saat eşitlemesi, Docker daemon.json, sysctl, yedek dizini).
sudo sh deploy/harden.sh --confirm <run-id> Hâlâ oturum açabildiğinizi kanıtladıktan sonra ölü adam zamanlayıcısını iptal eder.
sudo sh deploy/harden.sh --revert Son çalıştırmayı geri alır.
sh deploy/harden.sh --recipe --modules sshd,firewall --mgmt-cidr <cidr> Bilerek otomatikleştirilmemiş denetimler (SSH, güvenlik duvarı, 9443 bağlantı noktasının bir yönetim ağına bağlanması) için bir uygulama kılavuzu (runbook) yazdırır.