Kaip atidaryti prievadą Linux sistemoje: ufw ir iptables
Kad atidarytumėte prievadą (portą) Linux sistemoje, paprasčiausia naudoti ufw: sudo ufw allow 443/tcp. Tikslesnei kontrolei tinka iptables: sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT. Toliau — abu būdai su taisyklių išsaugojimu ir patikra, kad prievadas liktų atviras ir po perkrovimo.
1 būdas. ufw (paprasta ugniasienė)
ufw — antstatas virš iptables su aiškia sintakse, pagal numatymą pasiekiamas Ubuntu ir Debian sistemose.
1 žingsnis. Patikrinkite būseną
sudo ufw status verbose
Jei ufw neaktyvus, prieš įjungdami būtinai leiskite SSH, kitaip prarasite prieigą:
sudo ufw allow 22/tcp
sudo ufw enable
2 žingsnis. Atidarykite reikiamą prievadą
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
Atidaryti UDP prievadą arba diapazoną:
sudo ufw allow 53/udp
sudo ufw allow 6000:6010/tcp
Leisti prievadą tik iš vieno IP:
sudo ufw allow from 203.0.113.5 to any port 5432 proto tcp
3 žingsnis. Patikrinkite taisykles
sudo ufw status numbered
Pašalinti taisyklę pagal numerį:
sudo ufw delete 3
2 būdas. iptables (žemo lygio kontrolė)
iptables suteikia visišką taisyklių grandinių kontrolę.
Atidaryti prievadą
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Teisingiau leisti tik naujus ir jau užmegztus ryšius:
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Taisyklių peržiūra
sudo iptables -L INPUT -n --line-numbers
Taisyklės šalinimas
sudo iptables -D INPUT 2
iptables taisyklių išsaugojimas
Pagal numatymą iptables taisyklės po perkrovimo dingsta. Išsaugokite jas su paketu netfilter-persistent:
sudo apt install iptables-persistent
sudo netfilter-persistent save
ufw ar iptables: ką pasirinkti
| Kriterijus | ufw | iptables |
|---|---|---|
| Paprastumas | didelis | mažas |
| Lankstumas | vidutinis | maksimalus |
| Taisyklių išsaugojimas | automatinis | reikia netfilter-persistent |
| Tinka | tipinėms užduotims | sudėtingoms NAT/maršrutizavimo schemoms |
Nemaišykite rankinių iptables taisyklių su ufw tame pačiame serveryje — valdykite ugniasienę vienu įrankiu.
Įvardytos programos ir ufw profiliai
ufw geba dirbti ne tik su prievadų numeriais, bet ir su paruoštais programų profiliais. Prieinamų sąrašas:
sudo ufw app list
Atidaryti programos prievadus viena taisykle (pavyzdžiui, visą Nginx — 80 ir 443):
sudo ufw allow "Nginx Full"
Tai patogiau nei prisiminti prievadų numerius ir mažina rašybos klaidos riziką.
Prisijungimų dažnio ribojimas (rate limiting)
ufw geba riboti naujų prisijungimų prie prievado dažnį — naudinga SSH, kad būtų sunkiau brukti slaptažodžius. Taisyklė limit blokuoja IP, kuris per 30 sekundžių sukuria 6 ar daugiau prisijungimų:
sudo ufw limit 22/tcp
Tai nepakeičia patikimo autentifikavimo raktais, bet sumažina automatinių bandymų triukšmą.
Patikra, kad prievadas atviras
Vietoje tarnyba turi klausyti prievado:
sudo ss -tulpn | grep :443
Iš išorės patikrinkite pasiekiamumą iš kito kompiuterio:
nmap -p 443 203.0.113.10
Dažni klausimai
Atidariau prievadą, bet iš išorės jis nepasiekiamas — kodėl?
Prievadas atviras ugniasienėje, bet tarnyba jo neklauso arba veikia antra ugniasienė (tiekėjo debesies saugumo grupė). Patikrinkite ss -tulpn ir tinklo nustatymus valdymo skyde.
ufw enable nutraukė mano SSH — ką daryti?
Prieš įjungdami ufw visada pridėkite ufw allow 22/tcp. Jei prieiga prarasta, atkurkite ją per KVM konsolę.
iptables taisyklės po perkrovimo dingo — ką daryti?
iptables pats taisyklių neišsaugo. Įdiekite iptables-persistent ir įvykdykite netfilter-persistent save.
Kaip laikinai uždaryti prievadą?
ufw sistemoje — sudo ufw deny 443/tcp arba pašalinkite leidžiančią taisyklę. iptables — pašalinkite taisyklę komanda -D.
Ar reikia atidaryti prievadą išeinantiems ryšiams? Ne, pagal numatymą OUTPUT politika leidžia išeinantį srautą. Atidaromi būtent gaunamieji (INPUT) tarnybų prievadai.
Reikia serverio su root prieiga ir savo ugniasiene? Paleiskite VPS su Linux skiltyje VPS nuoma arba užsakykite Serverių administravimą.