Tarkibga o'tish

Lab: foydalanuvchi hayot sikli, parol siyosati va cheklangan sudo

Foydalanuvchi va guruh hisoblari, Parol siyosatlari va sudo xavfsizligi maqolalarining har biri akkaunt hayot siklining bir qismini ko'rib chiqdi. Bu lab bitta real holat uchun — muddati cheklangan ish, cheklangan imtiyozlar va toza, audit qilinadigan offboarding bilan pudratchini ishga qabul qilish — butun hayot siklini boshidan oxirigacha bosib o'tadi. Chunki LFCS uslubidagi vazifada aynan alohida olingan biror buyruq emas, shu ketma-ketlik tekshiriladi va production operatsiyalarida ham aynan shu sodir bo'ladi.

Maqsad va yakuniy natija

Bu lab oxirida siz pudratchi akkauntini (contractor1) quyidagilar bilan ishga tushirgan bo'lasiz:

  • standart qiymatlarga qoldirilmagan, aniq o'rnatilgan home katalog va shell;
  • 14 kundan keyin muddati tugaydigan va keyingi kirishda o'zgartirilishi shart bo'lgan parol;
  • to'liq root emas, aynan ikkita buyruq bilan cheklangan sudo huquqi;
  • akkauntni uning fayllarini yo'q qilmasdan bloklaydigan, hujjatlashtirilgan va tekshirilgan offboarding tartibi.

Topologiya va boshlang'ich holat

O'z akkauntingiz uchun sudo huquqi bor bitta lab VM yoki container.

Talablar

  • chage va passwd (shadow-utils tarkibida, standart holatda mavjud);
  • sudo qoidalarini xavfsiz tahrirlash uchun visudo.

Xavfsizlik va snapshot haqida eslatma

Warning

Bu lab /etc/sudoers.d/ ni o'zgartiradi va sudo huquqiga ega haqiqiy, ishlaydigan akkaunt yaratadi. sudoers fayllarini har doim oddiy matn muharriri bilan emas, visudo yoki visudo -f bilan tahrirlang. visudo saqlashdan oldin fayl sintaksisini tekshiradi va buzilgan faylni saqlashni rad etadi. Bu administratorlar tasodifan hamma uchun sudo ni qulflab qo'yishining eng keng tarqalgan usulining oldini oladi. Boshlashdan oldin xato qilinsa, tizimga qaytishning mustaqil yo'li (ikkinchi ochiq root sessiyasi) borligini tasdiqlang.

1-qadam: akkauntni aniq sozlamalar bilan yaratish

sudo useradd -m -d /home/contractor1 -s /bin/bash -c "Contractor - Q3 engagement" contractor1
sudo passwd contractor1

-c bu akkaunt kimga tegishli va nega mavjud ekanini tavsiflovchi izohni yozib qo'yadi. Har qanday nostandart akkaunt uchun buni qilishga arziydi, chunki olti oydan keyin usiz "bu akkaunt nega mavjud" degan savolga javob berish ancha qiyinroq bo'ladi.

Tekshirish:

getent passwd contractor1
contractor1:x:1002:1002:Contractor - Q3 engagement:/home/contractor1:/bin/bash

2-qadam: parolni 14 kunlik muddat bilan o'rnatish va birinchi kirishda o'zgartirishga majburlash

sudo chage -M 14 -d 0 contractor1

-M 14 parolning maksimal muddatini 14 kunga o'rnatadi. -d 0 esa oxirgi o'zgartirilgan sanani epoch’ga o'rnatadi va bu 14 kunlik oynadan qat’i nazar, aynan keyingi kirishda parolni o'zgartirishga majburlaydi. Bu administrator o'rnatgan vaqtinchalik parol keyinchalik hech qachon haqiqatan ishlatiladigan parol bo'lib qolmasligini kafolatlashning standart usuli.

Tekshirish:

sudo chage -l contractor1
Last password change                    : password must be changed
Password expires                        : password must be changed
Password inactive                       : never
Account expires                         : never
Minimum number of days between password change : 0
Maximum number of days between password change : 14

3-qadam: akkauntning qat’iy amal qilish muddatini o'rnatish

Pudratchi bilan ishning tugash sanasi ma’lum. Akkauntning shunchaki paroli eskirib qolmasligi kerak — ish tugagach, kimdir uni qo'lda o'chirishni eslab qolishi shart bo'lmagan holda, u butunlay ishlashdan to'xtashi kerak.

sudo chage -E "$(date -d '+90 days' +%Y-%m-%d)" contractor1
sudo chage -l contractor1 | grep "Account expires"
Account expires                         : Oct 27, 2026

-E akkauntning mutlaq amal qilish muddati sanasini o'rnatadi. Bu sanadan keyin akkaunt 2-qadamda o'rnatilgan parolning o'z muddat siklidan mustaqil ravishda umuman tizimga kira olmaydi. Bu kimdir to'g'ri kuni usermod -L ni qo'lda ishga tushirishni eslab qolishiga tayanish o'rniga "bu odamning kirish huquqi ma’lum sanada tugashi kerak" holati uchun to'g'ri himoya vositasi.

4-qadam: sudo'ni aynan ikkita buyruq bilan cheklash

contractor1 ga bitta aniq ilova servisini qayta ishga tushirish va uning holatini tekshirish kerak — boshqa hech narsa emas.

sudo visudo -f /etc/sudoers.d/contractor1
contractor1 ALL=(root) NOPASSWD: /usr/bin/systemctl restart myapp.service, /usr/bin/systemctl status myapp.service
sudo chmod 0440 /etc/sudoers.d/contractor1

sudo xavfsizligi maqolasida ko'rib chiqilganidek, bu cheklov biror ma’noga ega bo'lishi uchun har bir binary’ning shunchaki buyruq nomini emas, to'liq absolyut yo'lini ko'rsatish shart. sudo aynan berilgan yo'lga moslashtiradi. Qoidadagi ochiq systemctl va contractor1 nazorat qiladigan PATH birgalikda aks holda uni aldab, butunlay boshqa binary’ga yo'naltirishi mumkin.

Tekshirish:

sudo -l -U contractor1
User contractor1 may run the following commands on this host:
    (root) NOPASSWD: /usr/bin/systemctl restart myapp.service, /usr/bin/systemctl status myapp.service
su - contractor1
sudo systemctl status myapp.service
sudo systemctl stop myapp.service
Sorry, user contractor1 is not allowed to execute '/usr/bin/systemctl stop myapp.service' as root on this host.

status va restart buyruqlari aynan cheklanganidek muvaffaqiyatli bajariladi. Hech qachon ruxsat berilmagan stop esa to'g'ri rad etiladi. Bu sudoers qoidasi aynan o'zi aytgan narsani qilayotganini va undan kengroq hech narsa qilmayotganini tasdiqlaydi.

exit

Amaliy vaziyat: ish oxirida offboarding

Muammo. Pudratchining ishi bugun, 3-qadamda o'rnatilgan chage -E muddatidan uch kun oldin tugaydi. Kirish huquqi darhol tugashi kerak, lekin akkaunt fayllari to'g'ridan-to'g'ri o'chirilmasdan, saqlash muddati davomida saqlanib qolishi kerak.

Biror narsani o'zgartirishdan oldin joriy holatni tekshirish:

id contractor1
sudo chage -l contractor1

Buyruq — parolni bloklash va muddatni darhol tugatish:

sudo usermod -L contractor1
sudo chage -E "$(date +%Y-%m-%d)" contractor1

usermod -L parolni bloklaydi (/etc/shadow dagi hash oldiga ! qo'yib, parol bilan kirishning oldini oladi). Amal qilish muddatini bugungi sanaga o'rnatish esa bundan buyon akkauntdan har qanday paroldan mustaqil ravishda umuman foydalanib bo'lmasligini ta’minlaydi.

Tekshirish:

sudo passwd -S contractor1
contractor1 L 07/29/2026 0 14 7 -1

Faqat birinchisini emas, har bir maydonni o'qing: L — bloklash holati (L bloklangan, P ishlatiladigan parol, NP parol yo'q); 07/29/2026 — parol oxirgi marta o'zgartirilgan sana; keyin tartib bilan minimal muddat (0), maksimal muddat (14, 2-qadamdan), ogohlantirish davri (7 kun) va faolsizlik davri (-1, o'chirilgan). Bloklashni tasdiqlaydigan narsa boshidagi L, lekin 2-qadamdagi parol muddati siyosati hali ham amalda ekanini bir qarashda tasdiqlash imkonini beradigan narsa — maksimal muddat va o'zgartirish sanasi maydonlari.

usermod -L ning o'zi akkauntni to'liq o'chirib qo'ymaydi

Intervyuerlar yodlangan javoblarni haqiqiy tushunishdan ajratish uchun aynan shu nozik nuqtadan foydalanadi: usermod -L faqat parol hash’ini bloklaydi. U kalitga asoslangan SSH login’ga ham, allaqachon ochiq turgan har qanday sessiyaga ham, akkauntga tegishli cron/at vazifalariga ham hech narsa qilmaydi. ~/.ssh/authorized_keys da ruxsat etilgan SSH kaliti bor hujumchi (yoki pudratchi) passwd -S L deb ko'rsatadigan akkauntga baribir kira oladi. Bu lab aynan shuning uchun usermod -L ni chage -E "$(date +%Y-%m-%d)" bilan birga ishlatadi: akkaunt amal qilish muddati autentifikatsiya usulidan qat’i nazar login stack tomonidan majburlanadi va -L ochiq qoldirgan kalitga asoslangan yo'lni yopadi. Parolni bloklash zarur, lekin yetarli emas. Har doim haqiqiy kirishga urinish bilan tekshiring (quyida) va qat’iy offboarding uchun akkauntning ruxsat etilgan kalitlarini ham olib tashlang yoki bekor qiling.

Boshidagi L akkaunt bloklanganini tasdiqlaydi. U shunchaki bloklangan deb ko'rsatilmasdan, haqiqatan rad etilishini tasdiqlash uchun kirishga urinib ko'ring (yoki boshqa sessiyadan su - contractor1 qiling).

Xulosa. Akkaunt /home/contractor1 yoki uning fayllarini o'chirmasdan to'liq o'chirib qo'yildi. Bu eskirgan kirish huquqini ochiq qoldirish bilan saqlash yoki audit siyosati offboarding'dan keyin ma’lum muddat saqlashni talab qilishi mumkin bo'lgan ma’lumotlarni yo'q qilish o'rtasidagi to'g'ri o'rta yo'l.

Troubleshooting bo'yicha maslahatlar

  • sudoers fayli to'g'ri ko'rinsa ham, sudo -l -U contractor1 hech narsa ko'rsatmaydi. Fayl ruxsatlarini ls -l /etc/sudoers.d/contractor1 bilan tekshiring. sudo sudoers.d/ dagi guruh yoki hamma yoza oladigan har qanday faylni jimgina e’tiborsiz qoldiradi. Bu noto'g'ri sozlangan ruxsat tufayli qoidani tasodifan buzib qo'yishga imkon bermaslik uchun himoya chorasi.
  • visudo saqlashni rad etadi va sintaksis xatosi haqida xabar beradi. Bu visudo o'z ishini qilyapti. Saqlashni majburlash o'rniga ko'rsatilgan qator raqamini diqqat bilan o'qing. visudo dan tashqarida tahrirlangan buzilgan sudoers fayli har bir foydalanuvchini sudo dan qulflab qo'yishi mumkin. Agar shu tizimda root’ga yagona yo'l sudo bo'lsa, bu root’ning o'z sudo kirishini ham qamrab oladi.
  • chage -E o'tgan sanaga o'rnatilgandan keyin ham akkaunt tizimga kira oladigandek ko'rinadi. Tizim soati va vaqt zonasi to'g'ri ekanini tasdiqlang (timedatectl). Noto'g'ri tizim soati bilan solishtirilgan akkaunt amal qilish muddati oldindan aytib bo'lmaydigan tarzda ishlashi mumkin.

Orqaga qaytarish va tozalash

sudo rm -f /etc/sudoers.d/contractor1
sudo userdel -r contractor1

Yakuniy baholash mezoni

Quyidagilarning hammasi bajarilsa, bu lab yakunlangan hisoblanadi:

  • contractor1 ning paroli birinchi kirishda o'zgartirishni talab qilishi tasdiqlangan (chage -l "must be changed" ni ko'rsatadi);
  • akkauntda ham parol muddati (14 kun), ham alohida o'rnatilgan qat’iy akkaunt amal qilish muddati sanasi bor;
  • sudo -l -U contractor1 aynan ikkita cheklangan buyruqni ko'rsatadi va undan kengroq hech narsani ko'rsatmaydi;
  • contractor1 sifatida cheklanmagan sudo buyrug'ini ishga tushirishga urinish rad etiladi;
  • offboarding'dan keyin passwd -S contractor1 akkauntni bloklangan (L) deb ko'rsatadi va home katalog hali ham mavjud.

Mashqlar

  1. Ikkinchi pudratchi — contractor2 uchun 1–4-qadamlarni takrorlang va unga boshqa juft cheklangan buyruqlarni bering. sudo -l -U bilan ikki pudratchining sudo qoidalari bir-biriga to'g'ri kelmasligini tasdiqlang.
  2. chage -l dan foydalanib, parol muddati tugaganda (-M) va akkauntning o'zi muddati tugaganda (-E) nima sodir bo'lishi o'rtasidagi farqni tushuntiring va ikkalasini emas, faqat bittasini xohlaydigan real vaziyatni tasvirlab bering.
  3. Yuqoridagi offboarding vaziyati aynan nimani o'zgartirganini tavsiflaydigan, olti oydan keyin uni ko'rib chiqadigan auditor qo'shimcha kontekstsiz tushuna oladigan tarzda change-management tiketiga yoziladigan bitta jumlani yozing.

Manbalar