6. Tarmoq va SSH — 30 ta masala
Faqat laboratoriya mashinasida
Tarmoq va SSH sozlamalarini noto'g'ri o'zgartirsangiz, mashinaga masofadan kirish yo'qoladi. Ish serverida bunday mashq qilmang; konsolga kirish imkoningiz bo'lsin.
Interfeys nomi (enp0s3, eth0) va IP manzillar sizda boshqacha bo'ladi: misollardagi qiymatlarni o'zingiznikiga almashtiring.
Interfeys, manzil va marshrut
1. Barcha interfeyslar va ularning IP manzillarini qisqa ko'rinishda chiqaring.
Misol: enp0s3 UP 10.0.2.15/24
2. Default gateway (standart shlyuz) manzilini toping.
Misol: default via 10.0.2.2 dev enp0s3
3. Bitta interfeysni o'chirib, qayta yoqing va holatini tekshiring.
Misol: state DOWN → state UP.
Yechim
Asosiy (SSH ulangan) interfeysni o'chirmang: sessiya uziladi.4. enp0s8 ga vaqtincha 192.168.56.20/24 manzilini qo'shing va qayta ishga tushirgach nima bo'lishini ayting.
Misol: ip -br addr da yangi manzil ko'rinadi.
Yechim
ip addr add faqat xotiradagi holatni o'zgartiradi: reboot yoki tarmoq xizmati qayta ishga tushganda yo'qoladi. Doimiy sozlama — netplan yoki NetworkManager orqali.
5. Tinglab turgan (listen) barcha TCP portlarni va ularni ochgan jarayonlarni ko'rsating.
Misol: LISTEN 0 128 0.0.0.0:22 ... users:(("sshd",pid=1021,fd=3))
Yechim
-l listen, -t TCP, -n raqamli (DNS'siz), -p jarayon. 0.0.0.0:22 — hamma interfeysdan, 127.0.0.1:5432 — faqat mahalliy kirish mumkin. [::]:22 — IPv6.
6. Xizmat faqat localhost da emas, tashqaridan ham ochiqligini ss natijasidan qanday bilasiz?
Misol: 127.0.0.1:6379 — yopiq, 0.0.0.0:6379 — ochiq.
Yechim
Local manzil ustuniga qarang.127.0.0.1 ga bog'langan xizmatga tashqaridan ulanib bo'lmaydi. Ma'lumotlar bazasi 0.0.0.0 da ochiq bo'lsa, firewall bilan yopilmagan holda xavfli.
7. Hozirgi o'rnatilgan (ESTABLISHED) TCP ulanishlar sonini toping.
Misol: 3
DNS va tekshiruv
8. example.com ning IPv4 manzilini faqat raqamlarda oling.
Misol: 93.184.216.34
9. Xuddi shu nomni Google DNS (8.8.8.8) orqali so'rang va lokal resolver natijasi bilan solishtiring.
Misol: natijalar farq qilsa, lokal DNS muammosi yoki kesh.
10. Domenning pochta serverlarini (MX) toping.
Misol: 10 mail.example.com.
11. dig va getent hosts natijalari farq qilishi mumkin. Nima uchun va qaysi biri ilovalar ko'radigan natijani beradi?
Misol: /etc/hosts dagi yozuv getent da bor, dig da yo'q.
Yechim
dig faqat DNS serverga so'rov yuboradi. getent hosts — tizim resolver'idan (NSS) o'tadi: /etc/hosts, keyin DNS, ya'ni ilovalar ko'radigan natija. "Brauzerda ochiladi, dig da topilmaydi" holatida aynan shu farq sabab.
12. Tizim qaysi DNS server(lar)dan foydalanayotganini ko'ring.
Misol: DNS Servers: 10.0.2.3
Yechim
systemd-resolved bor tizimda/etc/resolv.conf ko'pincha 127.0.0.53 ni ko'rsatadi: bu mahalliy stub, haqiqiy serverlar resolvectl da.
13. Veb-serverning faqat HTTP status kodini oling (sahifani ko'rsatmasdan).
Misol: 200
Yechim
Faqat sarlavhalar uchun:curl -I URL. Batafsil (TLS, so'rov/javob): curl -v URL.
14. db.example.local ning 5432-porti ochiq ekanini tekshiring (ping ishlamasa ham).
Misol: Connection to ... 5432 port [tcp/postgresql] succeeded!
Yechim
ping ICMP ni tekshiradi, port ochiq-yopiqligini emas. Ko'p firewall'lar ICMP'ni to'sadi, shuning uchun ping o'tmasligi xizmat ishlamayotganini bildirmaydi.
15. "Connection refused" va "Connection timed out" farqini tushuntiring.
Misol: refused — mashina javob berdi, port yopiq; timed out — javob yo'q.
Yechim
Refused — paket manzilga yetdi, lekin portda tinglovchi yo'q (xizmat to'xtagan yoki boshqa portda). Timed out — javob umuman kelmayapti: firewall paketni tashlayapti (DROP), marshrut yo'q yoki mashina o'chiq.
16. Internetga chiqolmayapti. Muammoni qatlamma-qatlam toping: 4 ta ping / tekshiruv ketma-ketligini yozing.
Misol: qaysi bosqichda to'xtashiga qarab sabab aniqlanadi.
Yechim
ping -c 2 127.0.0.1 # tarmoq steki
ping -c 2 10.0.2.2 # gateway (ip route show default dan)
ping -c 2 8.8.8.8 # internet, DNS'siz
ping -c 2 example.com # DNS bilan
8.8.8.8 o'tib, example.com o'tmasa — DNS muammosi.
17. Paket manzilga qaysi yo'l bilan borishini ko'ring va qayerda to'xtashini aniqlang.
Misol: har bir hop uchun qator, * * * — javob yo'q.
18. Mashina nomini web01 ga o'zgartiring va saqlanganini tekshiring.
Misol: hostnamectl → Static hostname: web01.
19. Ubuntu'da netplan konfiguratsiyasini xavfsiz sinab ko'ring: noto'g'ri bo'lsa avtomatik qaytsin.
Misol: Do you want to keep these settings?
Yechim
try yangi sozlamani qo'llaydi va tasdiqlamasangiz (120 soniya) eskisiga qaytaradi. netplan apply esa darhol qo'llaydi: masofaviy mashinada xato qilsangiz, bog'lanish yo'qoladi.
SSH
20. ed25519 kalit juftligini yarating.
Misol: ~/.ssh/id_ed25519 (maxfiy) va ~/.ssh/id_ed25519.pub (ochiq).
Yechim
Maxfiy kalitni hech kimga bermang, parol (passphrase) qo'yish tavsiya etiladi. Faqat.pub ni serverga qo'yasiz.
21. Ochiq kalitni serverga o'rnating va parolsiz kiring.
Misol: Number of key(s) added: 1.
Yechim
ssh-copy-id [email protected]
ssh [email protected]
~/.ssh/authorized_keys ga qo'shiladi.
22. ~/.ssh/config da web taxallusini yarating: ssh web ishlasin.
Misol: ssh web → [email protected] ga ulanadi.
Yechim
23. Kalit bilan kirish ishlamayapti, parol so'ralyapti. Serverdagi ruxsatlarni tekshiring va to'g'rilang.
Misol: ~/.ssh — 700, authorized_keys — 600.
Yechim
sshd ruxsatlari juda keng bo'lsa (masalan, guruh yoza oladigan ~/.ssh) kalitni e'tiborsiz qoldiradi. Sababni sudo journalctl -u ssh yoki ssh -v da ko'rasiz (Authentication refused: bad ownership or modes).
24. Ulanish nega rad etilayotganini mijoz tomonidan batafsil ko'ring.
Misol: debug1: Offering public key ....
Yechim
ssh -vvv [email protected]
publickey,password) qabul qilgani ko'rinadi.
25. sshd konfiguratsiyasini tekshirib, root bilan kirish va parol bilan kirishni o'chiring. Qaysi buyruq xavfsiz qo'llaydi?
Misol: sshd -t hech narsa chiqarmaydi (xato yo'q).
Yechim
/etc/ssh/sshd_config da:
Ehtiyot bo'ling
Parol bilan kirishni o'chirishdan oldin kalit bilan kirish ishlashini tekshiring va joriy sessiyani yopmang, ikkinchi terminalda sinab ko'ring. Aks holda serverga kira olmay qolasiz.
26. Serverdagi localhost:5432 (PostgreSQL) ga o'z kompyuteringizdan 15432 port orqali SSH tunnel ochib ulaning.
Misol: psql -h 127.0.0.1 -p 15432 ishlaydi.
Yechim
ssh -N -L 15432:localhost:5432 [email protected]
-L — mahalliy port yo'naltirish, -N — buyruq bajarmasdan faqat tunnel. Ma'lumotlar bazasini internetga ochmay, shifrlangan kanal orqali ulanish usuli.
27. Faylni masofaviy serverga nusxalang, so'ng katalogni rsync bilan sinxronlang: avval nima o'zgarishini ko'rib oling.
Misol: --dry-run hech narsa yozmaydi, faqat ro'yxat beradi.
Yechim
scp report.txt [email protected]:/tmp/
rsync -avz --dry-run ~/lab/proj/ [email protected]:/tmp/proj/
rsync -avz ~/lab/proj/ [email protected]:/tmp/proj/
/ muhim: proj/ — ichidagilarni, proj — katalogning o'zini nusxalaydi. --delete qo'shsangiz, manzilda ortiqcha fayllar o'chadi: avval --dry-run.
28. Serverning o'ziga birinchi marta ulanganda chiqadigan "authenticity of host can't be established" ogohlantirishi nimani bildiradi?
Misol: ECDSA key fingerprint is SHA256:....
Yechim
ssh [email protected]
cat ~/.ssh/known_hosts
yes deysiz. Keyingi safar kalit o'zgargan bo'lsa, REMOTE HOST IDENTIFICATION HAS CHANGED chiqadi: bu serverni qayta o'rnatish yoki man-in-the-middle belgisi bo'lishi mumkin.
29. ufw bilan standart holatda kiruvchi trafikni taqiqlang, SSH va 80-portga ruxsat bering, yoqing va holatini ko'ring.
Misol: Status: active, 22/tcp ALLOW, 80/tcp ALLOW.
Yechim
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw enable
sudo ufw status verbose
Ehtiyot bo'ling
ufw enable dan oldin SSH portiga ruxsat bering, aks holda masofaviy ulanish uziladi.
30. SSH ga brute-force urinishlarini cheklash uchun ufw ning tezlik chekloviga ega qoidasini yoqing.
Misol: 22/tcp LIMIT.