6-bo‘lim

Tarmoq xavfsizligi

Firewall, tarmoq segmentatsiyasi, VPN, portlar, DNS xavfsizligi va tarmoq monitoringi.

🕑 19 daqiqa o‘qish 📄 1 119 so‘z 👁 6 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Tarmoq modeli
  2. Firewall
  3. Portlar
  4. Tarmoq segmentatsiyasi
  5. SSH xavfsizligi
  6. VPN
  7. DNS xavfsizligi
  8. Tarmoq monitoringi
  9. Wi-Fi xavfsizligi
  10. Bulut tarmog'i
  11. Tarmoq xavfsizligi tekshiruv ro'yxati
  12. Xulosa

Tarmoq - tizimingizga kiradigan asosiy yo'l. Uni to'g'ri himoyalash hujum yuzasini sezilarli kamaytiradi.

Tarmoq modeli #

Tarmoq qatlamlari va tahdidlar Ilova HTTP, DNS, SMTP XSS, SQL inyeksiya, fishing Himoya: WAF, validatsiya Transport TCP, UDP, TLS SYN flood, sessiya o'g'irlash Himoya: TLS, SYN cookies Tarmoq IP, ICMP, marshrutlash IP soxtalashtirish, skanerlash Himoya: firewall, ACL Kanal Ethernet, Wi-Fi, ARP ARP zaharlash, MAC soxtalash Himoya: 802.1X, port xavfsizligi Jismoniy Kabel, uskuna Jismoniy kirish, o'g'irlash Himoya: qulf, kamera, kirish nazorati
Har bir qatlamda o'z tahdidlari va himoya vositalari bor

Firewall #

Terminal
# UFW - Ubuntu uchun sodda firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing

sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Faqat ma'lum IP dan SSH
sudo ufw delete allow 22/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp

sudo ufw enable
sudo ufw status verbose
Natija
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW IN    Anywhere                   # HTTP
443/tcp                    ALLOW IN    Anywhere                   # HTTPS
22/tcp                     ALLOW IN    203.0.113.0/24
Standart - rad etish
Terminal
sudo ufw default deny incoming

Bu eng muhim qoida: aniq ruxsat berilmagan hamma narsa bloklanadi.

Teskarisi (standart ruxsat) xavfli: yangi xizmat ishga tushsa, u avtomatik internetga ochiladi.

Firewall turiNima qiladi
Paket filtriIP va portga qarab bloklaydi
HolatliUlanish holatini kuzatadi
Ilova darajasiProtokol mazmunini tahlil qiladi
WAFVeb hujumlarini bloklaydi
Keyingi avlodHammasi + tahdid razvedkasi
Terminal
# nftables - zamonaviy Linux firewall
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'

# O'rnatilgan ulanishlarga ruxsat
sudo nft add rule inet filter input ct state established,related accept

# Loopback
sudo nft add rule inet filter input iif lo accept

# SSH faqat ma'lum tarmoqdan
sudo nft add rule inet filter input ip saddr 10.0.0.0/8 tcp dport 22 accept

# Veb
sudo nft add rule inet filter input tcp dport '{ 80, 443 }' accept

# Chegaralash bilan ICMP
sudo nft add rule inet filter input icmp type echo-request limit rate 5/second accept

Portlar #

Terminal
# Qaysi portlar ochiq?
sudo ss -tulpn
Natija
Netid  State   Local Address:Port    Process
tcp    LISTEN  0.0.0.0:22            sshd
tcp    LISTEN  0.0.0.0:80            nginx
tcp    LISTEN  0.0.0.0:443           nginx
tcp    LISTEN  127.0.0.1:3306        mysqld
tcp    LISTEN  127.0.0.1:6379        redis-server
tcp    LISTEN  0.0.0.0:9000          php-fpm      ← MUAMMO
Xizmatlar faqat kerakli interfeysda tinglasin

0.0.0.0 - barcha interfeyslarda tinglash degani, ya'ni internetdan ham.

127.0.0.1 - faqat shu server ichida.

INI
; MySQL
bind-address = 127.0.0.1

; Redis
bind 127.0.0.1

; PHP-FPM
listen = /run/php/php8.3-fpm.sock

Unix soket TCP dan tezroq va xavfsizroq - u tarmoqqa umuman chiqmaydi.

PortXizmatInternetga ochiq bo'lsinmi
22SSHFaqat ma'lum IP dan
80, 443HTTP/HTTPSHa
3306MySQLHech qachon
5432PostgreSQLHech qachon
6379RedisHech qachon
27017MongoDBHech qachon
9200ElasticsearchHech qachon
Ochiq baza - eng ko'p uchraydigan xato

Internetda o'n minglab parolsiz Redis, MongoDB va Elasticsearch serverlari topiladi.

Sabab: bu xizmatlar tarixan standart holatda autentifikatsiyasiz ishlagan va 0.0.0.0 da tinglagan.

Yangi server o'rnatganingizda birinchi navbatda portlarni tekshiring.

Tarmoq segmentatsiyasi #

Uch qatlamli tarmoq DMZ (demilitarizatsiya zonasi) Nginx Yuk balanseri Internetdan kiriladi - eng xavfli zona Ilova zonasi PHP-FPM Fon vazifalar Faqat DMZ dan kiriladi Ma'lumot zonasi MySQL Redis Faqat ilova zonasidan kiriladi
Bir zona buzilsa, keyingisiga o'tish qiyinlashadi
Terminal
# Ilova serveri faqat baza serveriga chiqa oladi
sudo ufw allow out to 10.0.2.10 port 3306 proto tcp
sudo ufw deny out to 10.0.2.0/24

# Baza serveri faqat ilova serverlaridan kirishga ruxsat beradi
sudo ufw allow from 10.0.1.0/24 to any port 3306 proto tcp
sudo ufw deny 3306
Chiquvchi trafikni ham cheklang

Ko'pchilik faqat kiruvchi trafikni cheklaydi.

Lekin server buzilgan bo'lsa, hujumchi undan:

  • Ma'lumotni tashqariga yuboradi
  • Boshqa serverlarni skanerlaydi
  • Kripto qazish dasturini yuklab oladi
  • Buyruq serveriga ulanadi

Chiquvchi cheklov bu harakatlarni to'sadi.

SSH xavfsizligi #

Terminal
# /etc/ssh/sshd_config
Port 22
Protocol 2

# Parol bilan kirishni butunlay o'chirish
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes

# root sifatida kirishni taqiqlash
PermitRootLogin no

# Faqat ma'lum foydalanuvchilar
AllowUsers husanboy jasur

# Bo'sh parolni taqiqlash
PermitEmptyPasswords no

# Urinishlar soni
MaxAuthTries 3
MaxSessions 5

# Bo'sh sessiyani yopish
ClientAliveInterval 300
ClientAliveCountMax 2

# Zamonaviy algoritmlar
KexAlgorithms [email protected],diffie-hellman-group16-sha512
Ciphers [email protected],[email protected]
MACs hmac-sha2-512[email protected],hmac-sha2-256[email protected]
Terminal
sudo sshd -t          # sozlamani tekshirish
sudo systemctl reload sshd
Parol bilan SSH - eng katta xavf

Internetga ochiq SSH portiga kuniga minglab parol sinash urinishi keladi.

Kalit bilan kirish:

  • Parol umuman ishlatilmaydi
  • Kuch bilan hujum imkonsiz
  • Qulayroq (parol yozish shart emas)
Terminal
ssh-keygen -t ed25519 -C "husanboy@ish-noutbuk"
ssh-copy-id [email protected]

Keyin PasswordAuthentication no ni yoqing.

Terminal
# fail2ban - avtomatik bloklash
sudo apt install fail2ban
INI
# /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5
backend  = systemd

[sshd]
enabled = true
port    = 22
maxretry = 3
bantime  = 86400

[nginx-limit-req]
enabled = true
filter  = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 10
Terminal
sudo fail2ban-client status sshd
Natija
Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed:     1847
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 14
   |- Total banned:     312

VPN #

VPN - shifrlangan tunnel Xodim uydan ishlaydi Ochiq internet Shifrlangan tunnel Ichki tarmoq 10.0.0.0/8 VPN - hamma narsani hal qilmaydi Xodim qurilmasi zararlangan bo'lsa, VPN uni ichki tarmoqqa olib kiradi
VPN - transport himoyasi, kirish nazorati emas
INI
# WireGuard - zamonaviy va sodda VPN
# /etc/wireguard/wg0.conf

[Interface]
Address = 10.100.0.1/24
ListenPort = 51820
PrivateKey = <server_maxfiy_kaliti>
PostUp = ufw route allow in on wg0 out on eth0
PostDown = ufw route delete allow in on wg0 out on eth0

[Peer]
# Husanboy
PublicKey = <mijoz_ochiq_kaliti>
AllowedIPs = 10.100.0.2/32

[Peer]
# Jasur
PublicKey = <mijoz2_ochiq_kaliti>
AllowedIPs = 10.100.0.3/32
Terminal
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
sudo wg show
WireGuard nima uchun afzal?
OpenVPNWireGuard
Kod hajmi~600 000 satr~4 000 satr
TezlikO'rtachaYuqori
SozlashMurakkabSodda
AuditQiyinOson
Zamonaviy kriptografiyaSozlanadiO'rnatilgan

Kam kod - kam zaiflik. WireGuard yadro darajasida ishlaydi va juda tez.

DNS xavfsizligi #

Terminal
# DNS so'rovni tekshirish
dig dokon.uz +short
dig dokon.uz MX +short
dig dokon.uz TXT +short
YozuvVazifasi
SPFKim sizning nomingizdan xat yubora oladi
DKIMXat imzosi
DMARCSPF/DKIM buzilganda nima qilish
CAAKim sertifikat chiqara oladi
Natija
; SPF - faqat shu serverlar xat yubora oladi
dokon.uz.  TXT  "v=spf1 ip4:203.0.113.10 include:_spf.google.com -all"

; DMARC - buzilgan xatlarni rad etish
_dmarc.dokon.uz.  TXT  "v=DMARC1; p=reject; rua=mailto:[email protected]; pct=100"

; CAA - faqat Let's Encrypt sertifikat chiqarsin
dokon.uz.  CAA  0 issue "letsencrypt.org"
dokon.uz.  CAA  0 iodef "mailto:[email protected]"
SPF va DMARC siz domeningizdan soxta xat yuborish oson

Hujumchi [email protected] nomidan buxgalteriyaga xat yuborib, pul o'tkazishni so'rashi mumkin.

SPF va DMARC bo'lsa, bunday xat qabul qiluvchi serverda rad etiladi.

Boshlang: p=none (faqat kuzatish) → p=quarantinep=reject.

Terminal
# DNSSEC tekshiruvi
dig dokon.uz +dnssec +short
DNS zaharlash

Hujumchi DNS javobini soxtalashtirib, foydalanuvchini o'z serveriga yo'naltirishi mumkin.

Himoya:

  • DNSSEC - DNS javoblarini imzolash
  • DoH/DoT - DNS so'rovlarini shifrlash
  • HSTS - brauzer faqat HTTPS ishlatadi
  • Sertifikat tekshiruvi - soxta server sertifikatga ega bo'lmaydi

Tarmoq monitoringi #

Terminal
# Faol ulanishlar
sudo ss -tunp | head -20

# Odatiy bo'lmagan chiquvchi ulanishlar
sudo ss -tunp state established | grep -v -E ':(80|443|53) '

# Real vaqtda trafik
sudo iftop -i eth0

# Paketlarni tahlil qilish
sudo tcpdump -i eth0 -nn 'port 3306'
Terminal
# Serverdan chiqayotgan katta hajmdagi ma'lumot
sudo iftop -i eth0 -P -N
Nimani kuzatish kerak?
BelgiNima anglatishi mumkin
Kutilmagan chiquvchi ulanishBuyruq serveriga ulanish
Katta hajmdagi chiquvchi trafikMa'lumot o'g'irlash
Ichki tarmoqni skanerlashLateral harakat
Odatiy bo'lmagan portlarBackdoor
Tungi vaqtdagi faollikAvtomatlashtirilgan hujum
DNS so'rovlarining ko'payishiDNS tunnellash
Terminal
# Suricata - hujumlarni aniqlash tizimi
sudo apt install suricata
sudo suricata-update
sudo systemctl enable --now suricata

# Ogohlantirishlarni ko'rish
sudo tail -f /var/log/suricata/fast.log

Wi-Fi xavfsizligi #

ProtokolHolati
WEPButunlay buzilgan
WPABuzilgan
WPA2-PSKZaif parolda ochiladi
WPA2-EnterpriseYaxshi
WPA3Eng yaxshi
Ochiq Wi-Fi - xavfli

Ochiq tarmoqda barcha shifrlanmagan trafik ko'rinadi.

Bundan tashqari, hujumchi mashhur tarmoq nomi bilan (Free_WiFi, Airport_WiFi) soxta kirish nuqtasi yaratishi mumkin.

Himoya:

  1. Faqat HTTPS saytlar
  2. VPN ishlating
  3. Avtomatik ulanishni o'chiring
  4. Muhim ishlarni ochiq tarmoqda qilmang
Terminal
# Mehmon tarmog'ini ajratish
# Ichki tarmoqqa kirishni bloklash
iptables -A FORWARD -i wlan1 -o eth0 -d 10.0.0.0/8 -j DROP
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT

Bulut tarmog'i #

HCL
# Terraform: xavfsizlik guruhlari
resource "aws_security_group" "veb" {
  name = "veb-serverlar"

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port       = 22
    to_port         = 22
    protocol        = "tcp"
    security_groups = [aws_security_group.bastion.id]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_security_group" "baza" {
  name = "baza-serverlar"

  # Faqat veb serverlardan
  ingress {
    from_port       = 3306
    to_port         = 3306
    protocol        = "tcp"
    security_groups = [aws_security_group.veb.id]
  }

  # Chiquvchi trafik yo'q
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = []
  }
}
Bastion server

SSH uchun bitta kirish nuqtasi:

Natija
Internet → Bastion (SSH) → Ichki serverlar

Afzalliklari:

  • Faqat bitta server internetga ochiq
  • Barcha kirishlar bir joyda jurnalga yoziladi
  • Qo'shimcha autentifikatsiya qo'yish oson
Terminal
ssh -J [email protected] husanboy@10.0.1.15

Tarmoq xavfsizligi tekshiruv ro'yxati #

Server ishga tushirilgandan keyin
TalabBajarildi
Firewall yoqilgan, standart - rad etish
Faqat kerakli portlar ochiq
Baza va kesh 127.0.0.1 da tinglaydi
SSH parol bilan kirish o'chirilgan
SSH root uchun taqiqlangan
fail2ban o'rnatilgan
Chiquvchi trafik cheklangan
Tarmoq segmentlarga bo'lingan
SPF, DKIM, DMARC sozlangan
CAA yozuvi qo'shilgan
TLS 1.2+ majburiy
Monitoring va ogohlantirish ishlaydi
Terminal
#!/bin/bash
# tarmoq-tekshiruvi.sh

echo "=== Ochiq portlar ==="
sudo ss -tulpn | grep LISTEN

echo -e "\n=== 0.0.0.0 da tinglayotgan xizmatlar ==="
sudo ss -tulpn | grep '0.0.0.0' | grep -v -E ':(80|443|22) '

echo -e "\n=== Firewall holati ==="
sudo ufw status verbose

echo -e "\n=== fail2ban ==="
sudo fail2ban-client status 2>/dev/null || echo "O'rnatilmagan"

echo -e "\n=== SSH sozlamalari ==="
sudo sshd -T | grep -E '^(passwordauthentication|permitrootlogin|maxauthtries)'

echo -e "\n=== Oxirgi muvaffaqiyatsiz kirishlar ==="
sudo grep "Failed password" /var/log/auth.log | tail -5
Amaliy topshiriq
  1. Virtual mashinada UFW o'rnating va sozlang.
  2. Standart siyosatni "rad etish" ga o'zgartiring.
  3. ss -tulpn bilan ochiq portlarni ko'ring.
  4. 0.0.0.0 da tinglayotgan xizmatni 127.0.0.1 ga o'tkazing.
  5. SSH kalit yarating va parol bilan kirishni o'chiring.
  6. fail2ban o'rnating va holatini tekshiring.
  7. WireGuard VPN sozlang (ikki mashina orasida).
  8. Domeningiz uchun SPF va DMARC yozuvlarini qo'shing.
  9. dig bilan DNS yozuvlarini tekshiring.
  10. Yuqoridagi tekshiruv skriptini ishga tushiring.

Xulosa #

  • Firewall standarti - rad etish, aniq ruxsat berilganigina o'tsin.
  • Baza, kesh va ichki xizmatlar 127.0.0.1 da tinglasin.
  • Ochiq baza portlari - eng ko'p uchraydigan xato.
  • Chiquvchi trafikni ham cheklang - ma'lumot o'g'irlashni to'sadi.
  • Tarmoqni segmentlarga bo'ling: DMZ, ilova, ma'lumot.
  • SSH da parol bilan kirishni o'chiring, faqat kalit.
  • fail2ban avtomatik bloklash uchun.
  • WireGuard - sodda, tez va zamonaviy VPN.
  • VPN - transport himoyasi, kirish nazorati emas.
  • SPF, DKIM, DMARC domeningizdan soxta xat yuborishni to'sadi.
  • Kutilmagan chiquvchi ulanishlar - buzilish belgisi.
  • Bulutda xavfsizlik guruhlari bilan segmentatsiya qiling.

Keyingi bo'limda operatsion tizim xavfsizligini ko'ramiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.