Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ Biçim [Keep a Changelog](https://keepachangelog.com/) esas alınmıştır.

- Gerçek Ubuntu 26.04 VM (ubuntutest, linux-hardening'li, doğrudan playbook): `durum` → `preview` → `apply` → bağımsız doğrulama → ikinci `preview` `changed=0` → `geri_yukle` ✅ (timezone ve NTP drop-in'i; ayrıntı README).

- Gerçek Ubuntu 26.04 VM, ikinci tur: `tr_TR.UTF-8` ile `locale-gen` yolu, 2 NTP kaynağı, `ausearch -k time-change` kaydı (`/etc/localtime` CREATE/DELETE), ikinci `preview` `changed=0`, `geri_yukle` ✅. Geri yükleme üretilmiş locale'leri silmez (`locale -a` hâlâ `tr_TR.utf8`; beklenen).

### Denenmedi
- Gerçek Debian 13 VM; sshpocket menüsünden uçtan uca; locale **değişikliği** gerçek VM'de (VM zaten `en_US.UTF-8` idi); birden çok NTP kaynağı; `ausearch` ile `time-change` kaydı; ufw giden-reddi açıkken davranış. LAB'da chrony servisi başlamadığı için LAB'da NTP **senkronu** denenmedi.
- Gerçek Debian 13 VM; sshpocket menüsünden uçtan uca; `locales` paketinin gerçek VM'de kurulum yolu (VM'de zaten kuruluydu); 3'ten fazla NTP kaynağı; ufw giden-reddi açıkken davranış. LAB'da chrony servisi başlamadığı için LAB'da NTP **senkronu** denenmedi.

### Bilinen sınırlar
- Ubuntu 26.04'te doğrudan `ansible-playbook --ask-become-pass` sudo-rs yüzünden zaman aşımına düşer: `-e ansible_become_exe=/usr/bin/sudo.ws` (sshpocket menüsünde doğrulanmadı).
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Parola/anahtar değişkeni yoktur.

## Yedek ve geri yükleme (kapsamı dürüstçe)
- `apply`, **değişecek** yolları değiştirmeden önce `/var/backups/utility/<UTC tarih>/` altına alır: dizin `0700`, dosyalar ve `manifest.json` `0600`. Değişiklik yoksa yedek alınmaz.
- `geri_yukle` **üretilmiş locale'leri silmez**: gerçek VM'de geri yüklemeden sonra `locale -a` hâlâ `tr_TR.utf8` gösterdi (beklenen).
- `geri_yukle` **yalnızca dosyaları** geri yazar: `/etc/localtime`, `/etc/timezone`, `/etc/default/locale`, `/etc/locale.conf`, `/etc/locale.gen`, chrony `conf.d`/`sources.d` altındaki dosyalar. Yedek alındığında var olmayan dosya silinir. Başka bir yola yazmaz (kurcalanmış manifest dahil), bozuk yedeği özet kontrolüyle reddeder.
- **Geri almaz:** kurulan paketleri (`chrony`, `locales`), `locale-gen` ile üretilmiş locale'leri, çalışan servis durumunu, geçmiş log zaman damgalarını. Yedekten sonra elle yapılan değişikliklerin üzerine yazar.
- Zamanlayıcılı rollback yoktur. Yanlış NTP kaynağının en kötü sonucu saat senkronunun kaybıdır (ssh sertifikaları, TOTP, apt "Not live until" etkilenebilir); erişim kaybı değil.
Expand All @@ -56,9 +57,10 @@ Bilinen etkileşimler (kaynak: Ubuntu 26.04 chrony dosyaları ve linux-hardening
| Aynı LAB, `LAB_BASE=debian:trixie` konteyneri | 13/13 geçti; bu **Debian 13 VM doğrulaması değildir** (konteynerde `systemd-timesyncd` yok, chrony servisi başlamaz) |
| `bats test/backup.bats` (yedek betiği birim testleri), `test/run-all.sh` | yeşil |
| Gerçek VM: ubuntutest (Ubuntu 26.04, linux-hardening uygulanmış; doğrudan playbook) | ✅ `durum` → `preview` (`degisen=2 plan=timezone+ntp`, auditd uyarısı görüldü) → `apply` (`changed` yazanlar yalnızca timezone+ntp) → bağımsız ssh doğrulaması → ikinci `preview` `changed=0` → `geri_yukle` (saat dilimi ve utility.sources geri geldi). Yedek dizin 0700, manifest 0600; `files/` boştu (değişen yollar sembolik bağ ve olmayan dosyalardı) |
| Gerçek VM: **denenmeyenler** | locale **değişikliği** (VM zaten `en_US.UTF-8` idi: `locales`/`locale-gen` yolu VM'de denenmedi), birden çok `utility_ntp_servers`, `ausearch` ile `time-change` kaydı (uyarı görüldü, kayıt bakılmadı), ufw giden-reddi açıkken davranış |
| Gerçek VM: ubuntutest, **ikinci tur** (`tr_TR.UTF-8` + 2 NTP kaynağı + saat dilimi) | ✅ `preview` `degisen=3 plan=timezone+locale+ntp`; `apply` `locale-gen` gerçekten çalıştı (`locales` zaten kuruluydu, kurulum yolu denenmedi); `/etc/default/locale` → `../locale.conf` bağı bozulmadı, LANG `locale.conf` içinde; `locale -a` `tr_TR.utf8`; chrony 2 utility kaynağı + Canonical NTS kaynakları; ikinci `preview` `changed=0`; `geri_yukle` `geri_yuklenen=6` (Etc/UTC, LANG=en_US.UTF-8, locale.gen satırı yorumda, utility.sources silindi). `ausearch -k time-change`: `/etc/localtime` CREATE/DELETE kaydı alındı. `preview` diff'inde `/etc/default/locale` için görünen "mode 0777→0644" sembolik bağın lstat izninden gelir, hedef zaten 0644 ve apply'da değişmedi |
| Gerçek VM: **denenmeyenler** | `locales` paketinin kurulum yolu, 3'ten fazla NTP kaynağı, ufw giden-reddi açıkken davranış |
| **Gerçek VM: düz Debian 13** | **denenmedi** |
| linux-hardening ile birlikte | kısmen: yukarıdaki VM hardening'liydi (auditd aktif); ufw giden-reddi ve `ausearch` denenmedi |
| linux-hardening ile birlikte | kısmen: yukarıdaki VM hardening'liydi (auditd aktif, `time-change` kaydı alındı); ufw giden-reddi denenmedi |
| sshpocket menüsünden uçtan uca | **denenmedi** (kilit PR'ından sonra) |

LAB'ın sınırları: chrony.service konteynerde başlamaz (`ConditionVirtualization=!container`), bu yüzden LAB'da NTP **senkronu** denenemez; yalnızca yapılandırma, paket ve idempotans denenir. Çekirdek paylaşılır; `--privileged` yalnızca bu LAB içindir.
Expand Down
2 changes: 2 additions & 0 deletions docs/vm-turu.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,7 @@ ssh KULLANICI@IP 'timedatectl; grep ^LANG= /etc/default/locale; cat /etc/chrony/
## Ardından: linux-hardening uygulanmış VM'de birlikte
Aynı sıra; ek olarak `sudo ausearch -k time-change` (saat dilimi değişince kayıt beklenir) ve ufw giden trafik reddi açıkken 123/udp (ve Ubuntu varsayılan NTS kaynakları için 4460/tcp) davranışı not edilir.

Durum: Ubuntu 26.04'te `time-change` kaydı (`/etc/localtime` CREATE/DELETE) iki turdan sonra **doğrulandı**; ufw giden-reddi hâlâ **denenmedi**.

## Bilinen sorunlar
- **Ubuntu 26.04, `--ask-become-pass`:** sudo varsayılan olarak `sudo-rs`; Ansible'ın parola istemini tanıyamaz ve `Timeout (12s) waiting for privilege escalation prompt` ile düşer. Çözüm: `-e ansible_become_exe=/usr/bin/sudo.ws` (linux-hardening `docs/known-issues.md` ile aynı). sshpocket menüsünün bunu kendisi çözüp çözmediği **doğrulanmadı**.