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-runkullanı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-passwordvebackup key create. - Çıkış kodları:
0başarılı ·1hata (iş yarıda kaldı) ·2bekleyen 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):
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.sudo adactl verify.- Şifreli bir tam yedek alın:
sudo adactl backup full --passphrase-file /root/backup.pass(sunucunun dışına kopyalayın). - 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. - 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:
- Ö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ı.
- 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/adactlyeni araca yönlendirilir. - İmajlar yüklenir ve bildirime (manifest) göre doğrulanır; henüz hiçbir şey değiştirilmez.
- Yeni imajın uygulayacağı veritabanı geçişleri sayılır. En az bir
tane varsa tam yedek zorunludur
(
--passphrase-filegereklidir; atlama seçeneği yoktur). Sayılamazlarsa yükseltme durur. - Kurulum seti mevcut kurulumun üzerine yerleştirilir;
.env(ADA_VERSIONhariç),secrets/ve ajan paketlerine asla dokunulmaz. - Ajan paketleri,
ADA_VERSION, tek birup -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. |