Aşağıdaki betik her açılışta tüm kullanıcıların parolalarının rasgele bir parola ile ayarlanmasını sağlıyor. Böylece EBA QR veya USB Key ile oturum açıldığında oluşan kullanıcı hesaplarının parolaları her başlatmada rasgele bir değere ayarlanacak.
Betik yalnızca user id’si 1000’den büyük olan kullanıcı hesaplarının parolalarının değiştirilmesini sağlıyor. etapadmin ve root kullanıcılarının parolalarında bir değişiklik yapmıyor. Kullanıcıların user id’lerini görmek için passwd dosyasına bakabilirsiniz.
cat /etc/passwd
Aşağıdaki adımları gerçekleştirebilmek için öncelikle root kullanıcısına geçiş yapın.
sudo su etapadmin
sudo su
1. Script’in oluşturulması
nano /usr/local/sbin/randomize_passwords.sh
#!/bin/bash
# Minimum UID değeri (örnek: 1000 normal kullanıcılar için)
MIN_UID=1000
LOG_FILE="/var/log/randomize_passwords.log"
echo "==== $(date) - Password rotation started ====" >> $LOG_FILE
# UID'si MIN_UID'den büyük kullanıcıları al
awk -F: -v min_uid="$MIN_UID" '
{
if ($3 > min_uid && $3 < 65534)
print $1
}' /etc/passwd | while read user; do
# Rastgele 16 karakter parola üret
NEW_PASS=$(openssl rand -base64 16)
# Parolayı değiştir
echo "$user:$NEW_PASS" | chpasswd
echo "User: $user Password changed." >> $LOG_FILE
done
echo "==== Completed ====" >> $LOG_FILE
2.Script’e Çalıştırma Yetkisi Ver
sudo chmod +x /usr/local/sbin/randomize_passwords.sh
3. systemd Servisi Oluştur
sudo nano /etc/systemd/system/randomize-passwords.service
[Unit]
Description=Randomize User Passwords at Boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/randomize_passwords.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
Bu script’in açılışta otomatik çalışmasını sağlayarak EBA QR veya USB Key (usb-login) ile oluşturulan kullanıcı hesaplarının parolalarının da değiştirilmesini sağlamış olduk.
4. Servisi Aktifleştir
sudo systemctl daemon-reload
sudo systemctl enable randomize-passwords.service
Test etmek için:
sudo systemctl start randomize-passwords.service
cat /var/log/randomize_passwords.log
