Skip to content

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

Yechim

ip -br addr
ifconfig eskirgan; zamonaviy tizimlarda ip ishlatiladi.

2. Default gateway (standart shlyuz) manzilini toping.
Misol: default via 10.0.2.2 dev enp0s3

Yechim
ip route show default

3. Bitta interfeysni o'chirib, qayta yoqing va holatini tekshiring.
Misol: state DOWN → state UP.

Yechim

sudo ip link set enp0s8 down
ip -br link show enp0s8
sudo ip link set enp0s8 up
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

sudo ip addr add 192.168.56.20/24 dev enp0s8
ip -br addr show enp0s8
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

sudo ss -ltnp
-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

sudo ss -ltn | grep 6379
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

Yechim

ss -tn state established | tail -n +2 | wc -l
tail -n +2 sarlavha qatorini tashlaydi.

DNS va tekshiruv

8. example.com ning IPv4 manzilini faqat raqamlarda oling.
Misol: 93.184.216.34

Yechim
dig +short A example.com

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.

Yechim
dig +short example.com
dig +short example.com @8.8.8.8

10. Domenning pochta serverlarini (MX) toping.
Misol: 10 mail.example.com.

Yechim

dig +short MX gmail.com
Son — ustuvorlik: kichigi birinchi.

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

echo "10.9.9.9 test.local" | sudo tee -a /etc/hosts
getent hosts test.local
dig +short test.local
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

resolvectl status
cat /etc/resolv.conf
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

curl -o /dev/null -s -w '%{http_code}\n' https://example.com
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

nc -zv db.example.local 5432
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

curl -v http://127.0.0.1:9999
curl -v --max-time 5 http://10.255.255.1
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
Gateway'gacha o'tmasa — lokal sozlama/kabel. 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.

Yechim
traceroute example.com
tracepath example.com

18. Mashina nomini web01 ga o'zgartiring va saqlanganini tekshiring.
Misol: hostnamectl → Static hostname: web01.

Yechim
sudo hostnamectl set-hostname web01
hostnamectl

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

sudo netplan try
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

ssh-keygen -t ed25519 -C "student@lab"
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

Kalit serverdagi ~/.ssh/authorized_keys ga qo'shiladi.

22. ~/.ssh/config da web taxallusini yarating: ssh web ishlasin.
Misol: ssh web → [email protected] ga ulanadi.

Yechim
cat >> ~/.ssh/config <<'EOF'
Host web
    HostName 192.168.56.10
    User student
    IdentityFile ~/.ssh/id_ed25519
EOF
chmod 600 ~/.ssh/config
ssh web

23. Kalit bilan kirish ishlamayapti, parol so'ralyapti. Serverdagi ruxsatlarni tekshiring va to'g'rilang.
Misol: ~/.ssh — 700, authorized_keys — 600.

Yechim

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
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

Mijoz qaysi kalitlarni taklif qilgani, server qaysi usullarni (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:

PermitRootLogin no
PasswordAuthentication no
sudo sshd -t
sudo systemctl reload ssh

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/
Manba oxiridagi / 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
Mijoz bu server kalitini hali ko'rmagan. Barmoq izini (fingerprint) boshqa ishonchli yo'l bilan solishtirib, 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.

Yechim

sudo ufw limit 22/tcp
sudo ufw status
limit bir IP dan 30 soniyada 6 va undan ko'p ulanish urinishini bloklaydi. Kuchliroq himoya uchun fail2ban.