- Struktūra un plūsma: tabulas, ķēdes un satiksmes plūsma
- Noteikumi un politika: komandas, spēles un galvenie mērķi
- NAT un publicēšana: SNAT/MASQUERADE un DNAT reālās pasaules scenārijos
- Droša konstrukcija: funkcionāla demilitarizēta zona un labas ekspluatācijas prakses
Ja pārvaldāt Linux distributīvus, lai aizsargātu savu drošību un privātumu , agrāk vai vēlāk jums būs jātiek galā ar iptables. Šī pakešu filtrēšanas sistēma ir klasiskā GNU/Linux ugunsmūra sirds , kas spēj izlemt, kāda datplūsma ienāk, iziet vai tiek pārsūtīta starp tīkliem. Pareizi konfigurēts, tas ir kā augsti kvalificēts durvju sargs pie jūsu tīkla ieejas, kas nevainojami un ar ķirurģisku precizitāti nodrošina jūsu noteikumu ievērošanu.
Turpmākajās rindās atradīsiet pilnīgu un atjauninātu rokasgrāmatu, kas aptver būtiskākos jautājumus: ugunsmūra koncepcijas , Netfilter, tabulas un ķēdes, pakešu plūsmu, galvenās komandas, noteikumu paplašinājumus un papildu mērķus , kā arī praktiskus scenārijus, piemēram, NAT, pāradresācijas, noklusējuma politikas un funkcionējošu DMZ. Viss ir izskaidrots skaidrā, bet precīzā valodā, lai jūs to varētu nekavējoties piemērot savai infrastruktūrai.
Ugunsmūri kontekstā: no naktsklubu atkritējiem līdz demilitarizētajai zonai (DMZ)
Ugunsmūris būtībā ir filtrs starp tīkliem, kas piemēro noteikumus, lai noteiktu katras paketes likteni. Iedomājieties to kā naktskluba uzraugu ar kontrolsarakstu : ja pakete atbilst kritērijiem, tā tiek nodota; ja nē, tā tiek noraidīta. Šī metafora palīdz saprast, ka svarīga ir noteikumu loģika un secība, kādā tie tiek novērtēti.
Tīkla dizainā dažas topoloģijas ir drošākas par citām. DMZ (demilitarizētā zona) ir starpposma tīkls, kurā tiek mitināti publiski pakalpojumi (piemēram, tīmekļa vietne vai FTP serveris), atdalot tos no korporatīvā lokālā tīkla. Kāpēc? Jo, ja uzbrucējs apdraudētu publisku serveri, segmentācija neļautu viņam iegūt tiešu piekļuvi pārējam iekšējam tīklam.
Linux kā ugunsmūris: Netfilter un iptables
Linux kodolā ir iekļauts Netfilter — ietvars ar āķiem pakešu pārtveršanai un manipulēšanai . Lietotāja vidē iptables ir utilīta, kas nosaka noteikumus, ko kodols piemēros datplūsmai. Šī kodola/lietotāja atdalīšana nodrošina augstu veiktspēju ar lielu elastību.
Ir lietderīgi atšķirt utilītas pēc protokola: iptables (IPv4), ip6tables (IPv6), arptables (ARP) un ebtables (Ethernet kadri) . Kodolā kopīgais modulis ir x_tables, kas koplieto paplašinājumu un mērķu saskaņošanas loģiku. Vēsturiska piezīme: iptables aizstāja ipchains, un nftables, savukārt, nomainīja iptables kodola 3.13 versijā , lai gan iptables joprojām tiek plaši izmantots daudzās sistēmās.
Lai darbotos, jums būs nepieciešamas administratora privilēģijas. Palaist iptables kā root (vai ar sudo), parasti iekšā /usr/sbin/iptables (Debian/atvasinājumi) vai /sbin/iptables (Red Hat/atvasinājumi). Oficiālā dokumentācija ir pieejama šeit: man iptables un vietnē netfilter.org.
iptables struktūra: tabulas, ķēdes un noteikumi
Iptables organizē savu loģiku tabulās, kas sastāv no ķēdēm, kas piepildītas ar noteikumiem . Katrs noteikums nosaka atbilstības nosacījumus un mērķi, kas jāpiemēro, kad pakete sakrīt.
- Filtrēt tabulu (pēc noklusējuma, tīra filtrēšana)
- INPUT: uz pašu ierīci novirzītā satiksme.
- Uz priekšu: satiksme, kas iet caur iekārtu (maršrutēšana).
- REZULTĀTS: lokāli ģenerēta datplūsma.
- Nat tabula (adreses tulkošana; novērtēta, izmantojot jaunus savienojumus)
- PRIEKŠREIZĒŠANApirms maršruta izvēles; ideāli piemērots DNAT/porta pāradresācijai.
- REZULTĀTS: lokāli ģenerētas paketes pirms maršrutēšanas.
- POSTROUTINGpēc maršrutēšanas; tipiski SNAT/MASQUERADE.
- Mangrovju galds (smalka galvenes pielāgošana: TOS, TTL, marķēšana utt.)
- PIRMS MARŠRUTA IZVĒLE, IEVADE, UZ PRIEKŠU, IZVADE, PĒCMARŠRUTA IZVĒLE: pieejams viscaur.
- Neapstrādāta tabula (savienojuma izsekošanas vadība/savienojuma izsekošana)
- PRIEKŠREIZĒŠANA y REZULTĀTS: lai atzīmētu datplūsmu, kas conntrack jāizlaiž.
Kad pakete sasniedz ķēdi, tā tiek secīgi salīdzināta ar katru noteikumu ; ja tas atbilst, tās mērķis tiek izpildīts un šķērsošana tiek pārtraukta. Ja tā sasniedz beigas, neatrodot atbilstību nevienam noteikumam, un ķēde ir iepriekš definēta, tiek piemērota šai ķēdei noklusējuma ķēdes politika.
Pakešu plūsma: kur tās iet un kad
Izpratne par datplūsmas ceļu ir ļoti svarīga, lai pareizi piemērotu noteikumus. Pakete, kas atstāj jūsu lokālo tīklu un dodas uz internetu, parasti tiek apstrādāta šādi: vispirms IEPRIEKŠĒJA MARŠRUTA PĀRVADĀŠANA (iespējams, DNAT/mangle), tad PĀRSŪTĪŠANA (tranzīta filtrēšana), un pirms atstāšanas no ierīces tā tiek apstrādāta PĒCMARŠRUTĀ (SNAT/MASQUERADE, ja piemērojams).
Un otrādi, ja galamērķis ir pats ugunsmūris, maršruts būs PREROUTING → INPUT ; ja tas nāk no lokālās iekārtas, maršruts būs OUTPUT → PĒCROUTING . Šis mentālais ietvars ietaupa jums galvassāpes, ja kaut kas neiet kopā.
Pamatkomandas: saraksta izveide, notīrīšana, izveide un noklusējuma politikas
Lai pārbaudītu pašreizējo stāvokli, lietojumi iptables -L (pēc izvēles) -v detaļām un -n (lai neatrisinātu nosaukumus)Varat arī izveidot un dzēst ķēdes, izmantojot -N y -X attiecīgi un iestatiet noklusējuma politikas ar -P.
Kad jāsāk no nulles, tīri noteikumi ar -F (skalot) un, ja piemērojams, skaitītājus. Atcerieties, ka varat norādīt tabulas ar -t un specifiskas ķēdes; piemēram, iptables -F -t nat NAT vajadzībām.
Definējot noteikumus, visizplatītākās iespējas ir vienkāršas: -A pīle, -I ievietot, -R aizstāj un -D izdzēstPēc tam pievienojat selektorus, piemēram, -p (protokols), -s/-d (izcelsmes/galamērķa) -i/-o (saskarnes) un mērķi ar -j (piemēram, PIEŅEMT, ATMEST vai NORAIDĪT).
the noklusējuma politikas definēt, kas notiek, ja neviens noteikums neatbilst. Tipiska pastiprināta shēma resursdatorā būtu šāda INPUT DROP, FORWARD DROP, OUTPUT ACCEPT, bloķēt visu ienākošo, izņemot to, kas ir skaidri atļauts un ļaujot tam, kas iznāk.
Atbilstības paplašinājumi (-m): TCP, UDP, ICMP, MAC, stāvokļa un daudzportu
Iptables paplašina savus filtrus ar atbilstošiem moduļiem, izmantojot -m. TCP protokols ļauj regulēt portus un karodziņus.: --dport/--sport y --syn piemēram, jauniem pieslēguma atvērumiem.
UDP protokolam var ierobežot arī avota un mērķa portus . Klasisks piemērs: 80./443. porta atvēršana tīmekļa serverim vai izejošo DNS vaicājumu atļaušana 53./UDP portā.
Ar ICMP, --icmp-type ļauj atšķirt veidus (piemēram, atbalss pieprasījums y atbalss-atbilde (pingiem). Tas ir noderīgi, lai veiktu diagnostiku, neatstājot durvis atvērtas pilnam ICMP.
Ir arī modulis mac filtrēt pēc MAC adreses ar --mac-sourceNoderīgi, ja vēlaties autorizēt pārvaldītu datoru ar dinamisko IP adresi, lai tas varētu nosūtīt ping ziņojumu uz ugunsmūri, nepaļaujoties uz IP adresi.
Un, iespējams, vissvarīgākais operatīvajā līmenī, modulis state (vai savienoties) ar --state NEW, ESTABLISHED, RELATEDTas ļauj atļaut atbildes no jau izveidotiem savienojumiem, ievērojami samazinot nepieciešamo noteikumu skaitu.
Lai grupētu ostas, multiport pievienot --sports y --dports ar komatiem atdalītiem sarakstiemVienā noteikumā ir ērti atvērt HTTP, HTTPS un SSH.
Mērķi, kas pārsniedz ACCEPT/DROP: NAT un uzņēmums
Papildus pieņemšanai vai noraidīšanai iptables var pārrakstīt adreses un portus , lai savienotu privātus tīklus ar internetu vai reklamētu iekšējos pakalpojumus.
MASKURADE (At POSTROUTING no galda nat) aizstāj avota IP adresi ar ugunsmūra izejas IP adresi, ideāli piemērots, ja publiskā IP adrese ir dinamiska (DHCP). Šis ir tipisks izejošais NAT visam lokālajam tīklam (LAN).
SNAT (arī iekšā POSTROUTING) skaidri nosaka avota IP adresi/portu ar --to-source. To izmanto, ja jums ir statiska publiska IP adrese. un jūs vēlaties precīzi kontrolēt tulkojumu.
DNAT (At PREROUTING o OUTPUT) nomainiet mērķa IP adresi ar --to-destination. Tās ir slavenās "atvērtās ostas".Jūs saņemat datplūsmu publiskajā IP adresē un novirzāt to uz serveri demilitarizētajā zonā (DMZ), piemēram, iekšēju vietni ar adresi 192.168.1.2.
Vienkāršs piemērs: datplūsmas filtrēšana starp diviem tīkliem
Iedomājieties ierīci, kas darbojas kā maršrutētājs/ugunsmūris starp diviem apakštīkliem. Ja vēlaties, lai tikai B resursdators sazinātos ar C un tikai caur TCP, galds būs filter un pareizā virkne ir FORWARD, jo caur iekārtu iet satiksme.
Vispirms FORWARD protokolā tiktu piemērota noklusējuma DROP politika un pēc tam TCP protokolā tiktu skaidri autorizēta B→C datplūsma (un, ja piemērojams, C→B). Šis modelis "pēc noklusējuma aizliegt un atļaut minimālo apjomu" ir stabilas drošības pamats.
Ikdienas gadījumi uz mēles: tipiski noteikumi
Vārteja ar divām saskarnēm, piemēram eth1 (lokālais tīkls) un eth0 (plašu tīkls), parasti ir jāpārsūta paketes no lokālā tīkla uz internetu. Lai to izdarītu, tas pievieno FORWARD -i eth1 -o eth0 -j ACCEPT, Un atļauj tikai atpakaļgaitā ESTABLISHED,RELATED ar -m state.
Pašā ugunsmūrī ieteicams autorizēt ienākošā datplūsma, kas ir atbilde uz izejošajiem savienojumiem ar INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTun vienmēr atļaut atgriezenisko saiti: INPUT -i lo -j ACCEPT.
Lai atļautu lokālā tīkla datoriem pārlūkot, lietojiet izejošo NAT: -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source X.Y.Z.W (o MASQUERADE (ja IP adrese ir dinamiska). Tas pārvērš privātās IP adreses uz jūsu publisko IP adresi.
Pamata aizsardzības pasākums ir bloķēt ienākošās WAN paketes ar nepareizām avota IP adresēm (jūsu pašu publiskā IP adrese, privātie diapazoni 192.168.0.0/24, 127.0.0.0/8 utt.), jo tās parasti norāda uz viltošanu.
Lai ugunsmūrī atklātu pakalpojumus (piemēram, SMTP 25, HTTP 80, HTTPS 443 vai SSH 22), varat atļaut TCP paketes ar SYN karodziņu uz šīm mērķa portāmJa vēlaties sašaurināt meklēšanu pēc galamērķa IP adreses, pievienojiet -d uz pakalpojuma IP adresi.
Tipiski infrastruktūras pakalpojumi ietver DHCP (trafiku no 68. līdz 67. portam) lokālā tīkla saskarnē un DNS no autoritatīvā atrisinātāja (UDP 53), ja filtrēšana notiek pēc avota. Šie porti ļauj klientiem iegūt IP adreses un atrisināt nosaukumus.
Ja nepieciešams bloķēt piekļuvi, ienākošo SSH/Telnet ziņojumu nomešana ir vienkārša; varat arī NORAIDĪT izejošos ziņojumus uz bloķētām IP adresēm lokālajā tīklā, lai sūtītājs saņemtu noraidījuma paziņojumu.
Pakalpojuma instalēšana un pārvaldība Red Hat/CentOS sistēmās
Mantotajās vidēs ar CentOS/RHEL 5/6 bija pietiekami, lai instalēt ar yum -y install iptablesLai gan daudzi jaunie mūsdienu distribūcijas dod priekšroku nftables, iptables joprojām ir sastopamas ražošanas sistēmās un ierīcēs.
Integrācija ar SysV pakalpojumi atļauts pārvaldīt un saglabāt noteikumus: service iptables start|stop|restart y service iptables save, ietaupot /etc/sysconfig/iptablesLai iespējotu sāknēšanas laikā: chkconfig iptables on 2.–5. līmenī.
Mūsdienu sistēmās, lai gan apvalki mainās , ideja saglabājas: definēt noteikumus, tos pārbaudīt un saglabāt , lai tie pārdzīvotu atkārtotu palaišanu, izmantojot sistēmas rīkus vai skriptus.
Precīza noteikumu uzskaitīšana, dzēšana un rediģēšana
Lai skatītu statusu ar noteikumu numuriem, lietojumi iptables -L --line-numbers -n -vTādā veidā jūs varat dzēst pēc indeksa ar -D INPUT 3 vai aizstāt ar -R bez apjukuma.
Ja nepieciešama selektīva dzēšana, Notīriet tikai to ķēdi vai dēli, kas pieskaras (-F FORWARD o -F -t nat). Izvairieties no attālinātām globālām pārbaudēm bez “drošības tīkla”, pretējā gadījumā varat zaudēt SSH piekļuvi.
Parasti vispirms ieviesiet noteikumus, kas atļauj jūsu SSH sesiju , pakāpeniski piemērojiet izmaiņas un izmantojiet atcelšanas logu (piemēram, cron uzdevums, kas atjauno noteikumus 5 minūšu laikā, ja tos neveicat).
Noturība ar iptables-save un iptables-restore
Lai saglabātu iestatījumus, iptables-save > /ruta/backup/iptables.rules Ģenerē mašīnlasāmu visu tabulu izgāztuvi. Tas ir ideāli piemērots izmaiņu kontrolei un migrācijai.
Lai to uzlādētu, izmantojiet iptables-restore < /ruta/backup/iptables.rulesSāknēšanas atjaunošanu var automatizēt, izmantojot systemd, init skriptus vai cron uzdevumu. @reboot, nodrošinot, ka ugunsmūris paliek aktīvs pēc pārstartēšanas.
Pievienojiet šai labai darbības praksei: darbojas ar atbilstošām privilēģijām, saglabājiet failus ārpus /tmp un pielāgojiet tos videi (pareizas saskarnes un apakštīkli), lai izvairītos no pārsteigumiem.
Demilitarizētā zona detalizēti: pilnīgs un reālistisks piemērs
Pieņemsim, ka Linux ugunsmūris ir savienots ar maršrutētāju "viena lietotāja" režīmā (bez NAT) ar trim saskarnēm: eth0 (LAN 192.168.1.1/24), eth1 (DMZ 192.168.2.1/24) un eth2 (WAN ar IP, ko nodrošina DHCP) . DMZ atrodas Apache tīmekļa serveris (192.168.2.2) un FTP serveris (192.168.2.3).
Politikas mērķi: publicēt HTTP/HTTPS un FTP no demilitarizētās zonas internetā , atļaut SSH administrēšanu no lokālā tīkla (LAN) uz ugunsmūri un atļaut lokālajam tīklam (LAN) pārlūkot (HTTP/HTTPS), pārsūtīt failus, izmantojot FTP, un atrisināt DNS. Visa pārējā piekļuve ir liegta.
Vispārīgi runājot: iekšā filtrs/UZ PRIEKŠU ļauj LAN→WAN tranzītu ar atbildi, un WAN→DMZ tikai uz publicētajām pieslēgvietām ar ESTABLISHED,RELATED atbildes. Iekšā nat/PIRMS MARŠRUTA, piemēro DNAT publicēšanas pakalpojumiem; nat/POSTROUTING, SNAT/MASQUERADE LAN/DMZ izvadei.
Atvērumu piemēri: DNAT 80/443 uz 192.168.2.2 un 21/20 (atkarībā no režīma) uz 192.168.2.3 ar atbilstošo FORWARD Atļaujot šīs pieslēgvietas. Nodrošiniet FTP vadības un datu kanālus (aktīvos/pasīvos) vai ierobežojiet pasīvo diapazonu un atspoguļojiet to ugunsmūrī.
Lokālajam tīklam: ļauj izbraukt uz 80., 443., 21. un 53. ceļu un tā atgriešanas, piemērojot izejošo NAT POSTROUTINGUgunsmūrī autorizējiet Ienākošais SSH tikai no apakštīkla 192.168.1.0/24 un bloķē nevēlamu piekļuvi no WAN.
Neaizmirstiet par higiēnu: DROP uz nederīgiem diapazoniem WAN tīklā (privātais, atgriezeniskās saites, jūsu pašu publiskais) un reģistrējiet tikai to, kas jūs interesē. Ar ierobežojošām noklusējuma politikām un minimālu atvēršanu jūsu atkarību ierobežojums tiek samazināts līdz minimumam.
Laba prakse un darbības triki
Vienmēr strādājiet ar plānu: dokumentējiet, ko atļaujat un kāpēc , pārbaudiet paredzamo plūsmu ar vienkāršu diagrammu un piemērojiet noteikumus pareizā secībā, lai izvairītos no pārklāšanās.
Izmantojiet moduļu kombināciju ar galvu: state/conntrack atbildēm, tcp con --syn atverēs, un multiport grupētTādā veidā jūs vienkāršosiet un samazināsiet neatbilstību risku.
Vidēs ar biežām izmaiņām apsveriet iespēju atdalīt noteikumus pēc funkcijas: pielāgotas ķēdes (ar -N) izsaukumus no INPUT/OUTPUT/FORWARD, lai gabalu saglabāšana vai maiņa būtu tīrāka.
Daudzās distribūcijās notiek pāreja uz nftables, taču, ja jūsu platforma/produkts izmanto iptables, rūpīga šo komponentu izpratne dos jums pilnīgu kontroli . Un, ja veiksiet migrāciju, jūs viegli sapratīsiet līdzvērtīgu mentālo karti nftables.
Ņemot vērā apgūto, jums tagad ir stabils pamats iptables ieviešanai un uzturēšanai ražošanas vidē: jūs saprotat arhitektūru (tabulas, ķēdes un plūsmas), jūs pārvaldāt svarīgākās komandas, varat ieviest NAT un publicēt, izmantojot DNAT/SNAT, un jūs zināt, kā iestatīt drošu DMZ . Pēc tam atliek to pielāgot savām īpašajām vajadzībām, regulāri auditēt un uzturēt noteikumus tikpat skaidrus kā tīkla modeli.