![„Kontaktų sekimo programos“! Ar norite tokių savo telefone?](/f/33d62df3055a740bc5eb01254b90b18d.png?width=100&height=100)
Tinklo srauto valdymas yra vienas sunkiausių darbų, su kuriais turi susidurti sistemos administratoriai. Jis privalo sukonfigūruoti užkardą tokiu būdu, kad jis atitiktų sistemos ir vartotojų reikalavimus tiek gaunamiems, tiek išeinantiems ryšiams, nepalikdamas sistemos pažeidžiamos atakoms.
Tai kur iptables
Naudinga. „Iptables“ yra „Linux“ komandinės eilutės užkarda, leidžianti sistemos administratoriams valdyti gaunamą ir išeinantį srautą naudojant konfigūruojamų lentelių taisyklių rinkinį.
„Iptables“ naudoja lentelių rinkinį, kuriame yra grandinės, kuriose yra integruotų arba vartotojo apibrėžtų taisyklių rinkinys. Jų dėka sistemos administratorius gali tinkamai filtruoti savo sistemos tinklo srautą.
Pagal „iptables“ vadovą šiuo metu yra 3 tipų lentelės:
FILTRAS
- tai numatytoji lentelė, kurioje yra integruotos grandinės, skirtos: NAT
- lentelė, į kurią kreipiamasi, kai paketas bando sukurti naują ryšį. Jame yra įmontuota: MANGLE
- ši lentelė naudojama paketams keisti. Iki branduolio versijos 2.4 šioje lentelėje buvo tik dvi grandinės, tačiau dabar jos yra 5: Šiame straipsnyje pamatysite keletą naudingų komandų, kurios padės valdyti „Linux“ dėžutės užkardą naudojant „iptables“. Šiame straipsnyje aš pradėsiu nuo paprastesnių komandų ir pereisiu prie sudėtingesnių.
Pirma, turėtumėte žinoti, kaip valdyti „iptables“ paslaugą skirtinguose „Linux“ platinimuose. Tai gana paprasta:
„Cent/RHEL 7“ ir „Fedora 22+“ # systemctl paleiskite „iptables“. # systemctl sustabdyti „iptables“. # systemctl iš naujo paleiskite „iptables“.
„Cent/RHEL 6/5“ ir „Fedora“ # /etc/init.d/iptables start # /etc/init.d/iptables stop. # /etc/init.d/iptables paleiskite iš naujo.
Jei norite patikrinti esamas taisykles, naudokite šią komandą:
# iptables -L -n -v.
Tai turėtų grąžinti išvestį, panašią į žemiau pateiktą:
Grandinės įvestis (politika ACCEPT 1129K paketai, 415 mln. Baitų) pkts baitai tikslinis prot opt in out šaltinio tikslas 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
Grandinė FORWARD (politika ACCEPT 0 paketų, 0 baitų) pkts bytes target prot opt in out source source 0 0 ACCEPT all - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
Grandinės išvestis (politika ACCEPT 354K paketai, 185 mln. Baitų) pkts baitai tikslinis prot opt in out šaltinio tikslas
Jei norite patikrinti konkrečios lentelės taisykles, galite naudoti -t
parinktį, po kurios pateikiama lentelė, kurią norite patikrinti. Pavyzdžiui, norėdami patikrinti taisykles NAT
lentelę, galite naudoti:
# iptables -t nat -L -v -n.
Jei radote neįprastą ar įžeidžiančią veiklą iš IP adreso, galite užblokuoti tą IP adresą laikydamiesi šios taisyklės:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
Kur reikia keisti "xxx.xxx.xxx.xxx"
su tikruoju IP adresu. Būkite labai atsargūs vykdydami šią komandą, nes galite netyčia užblokuoti savo IP adresą. The -A
parinktis prideda taisyklę pasirinktos grandinės pabaigoje.
Jei norite tik užblokuoti TCP srautą iš to IP adreso, galite naudoti -p
parinktis, nurodanti protokolą. Tokiu būdu komanda atrodys taip:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
Jei nusprendėte, kad nebenorite blokuoti užklausų iš konkretaus IP adreso, galite ištrinti blokavimo taisyklę naudodami šią komandą:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP.
The -D
parinktis ištrina vieną ar daugiau taisyklių iš pasirinktos grandinės. Jei norite naudoti ilgesnę parinktį, galite ją naudoti --Ištrinti
.
Kartais galbūt norėsite blokuoti įeinančius ar išeinančius ryšius tam tikrame prievade. Tai gera saugumo priemonė, ir jūs tikrai turėtumėte pagalvoti apie tai kurdami užkardą.
Norėdami užblokuoti išeinančius ryšius konkrečiame prievade, naudokite:
# iptables -A OUTPUT -p tcp --port xxx -j DROP.
Norėdami leisti įeinančius ryšius, naudokite:
# iptables -A INPUT -p tcp --port xxx -j ACCEPT.
Abu pavyzdžiai keičiasi "xxx"
su uostu, kurį norite leisti. Jei norite blokuoti UDP eismas, o ne TCP, tiesiog pakeisti "tcp"
su "udp"
aukščiau esančioje „iptables“ taisyklėje.
Galite leisti kelis prievadus vienu metu naudodami daugiaportas, žemiau rasite tokią taisyklę tiek gaunamiems, tiek išeinantiems ryšiams:
# iptables -A INPUT -p tcp -m multiport --ports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport -sportas 22,80,443 -j ACCEPT.
Galbūt norėsite apriboti tam tikrus konkretaus prievado ryšius su tam tikru tinklu. Tarkime, kad norite leisti išeinančius ryšius uoste 22
į tinklą 192.168.100.0/24
.
Tai galite padaryti naudodami šią komandą:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --portport 22 -j ACCEPT.
Kai kurie darbdaviai mėgsta užblokuoti prieigą Facebook savo darbuotojams. Žemiau yra pavyzdys, kaip užblokuoti srautą į „Facebook“.
Pastaba: Jei esate sistemos administratorius ir jums reikia taikyti šias taisykles, atminkite, kad jūsų kolegos gali nustoti su jumis kalbėtis :)
Pirmiausia suraskite „Facebook“ naudojamus IP adresus:
# host facebook.com facebook.com adresas 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
Tada galite užblokuoti tą „Facebook“ tinklą:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP.
Atminkite, kad „Facebook“ naudojamas IP adresų diapazonas jūsų šalyje gali skirtis.
Kartais galbūt norėsite peradresuoti vienos paslaugos srautą į kitą uostą. Tai galite pasiekti naudodami šią komandą:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --port 25 -j REDIRECT -į 2525 prievadą.
Aukščiau pateikta komanda persiunčia visą gaunamą srautą tinklo sąsajoje eth0
, iš uosto 25
į uostą 2525
. Prievadus galite pakeisti reikiamais.
Kartais IP adresai gali pareikalauti per daug prisijungimų prie jūsų svetainės žiniatinklio prievadų. Tai gali sukelti daugybę problemų ir išvengti tokių problemų, galite naudoti šią taisyklę:
# iptables -A INPUT -p tcp --port 80 -m limit -limit 100/minute -limit -burst 200 -j ACCEPT.
Aukščiau pateikta komanda apriboja gaunamus ryšius nuo minutės iki 100
ir nustato ribos sprogimą 200
. Galite redaguoti ribą ir apribojimo seriją pagal savo konkrečius reikalavimus.
Kai kurie sistemos administratoriai dėl saugumo problemų nori blokuoti gaunamas „ping“ užklausas. Nors grėsmė nėra tokia didelė, gerai žinoti, kaip užblokuoti tokią užklausą:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
Atgalinė prieiga (prieiga iš 127.0.0.1
) yra svarbus ir visada turėtumėte palikti jį aktyvų:
# iptables -A INPUT -i lo -j ACCEPT. # iptables -A OUTPUT -o lo -j ACCEPT.
Jei norite užregistruoti iškritusius paketus tinklo sąsajoje eth0
, galite naudoti šią komandą:
# iptables -A INPUT -i eth0 -j LOG --log -prefiksas "IPtable iškrito paketai:"
Po to galite pakeisti vertę "-dienoraščio priešdėlis"
su kažkuo jūsų pasirinkimu. Pranešimai yra prisijungę /var/log/messages
ir galite jų ieškoti naudodami:
# grep "IPtables iškėlė paketus:"/var/log/messages.
Galite užblokuoti prieigą prie sistemos iš konkretaus MAC adreso naudodami:
# iptables -A INPUT -m mac --mac -source 00: 00: 00: 00: 00: 00 -j DROP.
Žinoma, reikės pasikeisti "00:00:00:00:00:00"
su faktiniu MAC adresu, kurį norite užblokuoti.
Jei nenorite, kad tam tikrame prievade būtų sukurtas per daug vienu metu naudojamo ryšio iš vieno IP adreso, galite naudoti toliau nurodytą komandą:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit -above 3 -j REJECT.
Aukščiau pateikta komanda leidžia ne daugiau kaip 3
ryšiai vienam klientui. Žinoma, galite pakeisti prievado numerį, kad jis atitiktų skirtingas paslaugas. Taip pat -neapribotas aukščiau
turėtų būti pakeistas, kad atitiktų jūsų reikalavimus.
Apibrėžę „iptables“ taisykles, retkarčiais norėsite ieškoti ir gali tekti jas pakeisti. Paprastas būdas ieškoti pagal savo taisykles yra naudoti:
# iptables -L $ table -v -n | grep $ eilutė.
Aukščiau pateiktame pavyzdyje turėsite pakeisti $ lentelė
su tikra lentele, kurioje norite ieškoti ir $ eilutė
su tikra eilute, kurios ieškote.
Štai pavyzdys:
# iptables -L INPUT -v -n | grep 192.168.0.100.
Naudodami „iptables“ galite apibrėžti savo grandinę ir joje išsaugoti pasirinktines taisykles. Norėdami apibrėžti grandinę, naudokite:
# „iptables -N“ pasirinktinis filtras.
Dabar galite patikrinti, ar yra naujas filtras:
# iptables -L.
Grandinės įvestis (politika ACCEPT) tikslinis prot opt šaltinio tikslas.
Grandinė FORWARD (politika ACCEPT) tikslinis prot opt šaltinio tikslas
Grandinės išvestis (politika ACCEPT) tikslinis prot opt šaltinio tikslas
Grandinė pasirinktinis filtras(0 nuorodų) tikslinis prot opt šaltinio tikslas
Jei norite praplauti ugniasienės grandines, galite naudoti:
# iptables -F.
Galite praplauti grandines iš konkrečios lentelės:
# iptables -t nat -F.
Galite pasikeisti "nat"
su tikra lentele, kurią grandines norite praplauti.
Jei norite išsaugoti užkardos taisykles, galite naudoti iptables-išsaugoti
komandą. Norėdami išsaugoti ir išsaugoti taisykles faile, galite naudoti šiuos veiksmus:
# iptables-save> ~/iptables.rules.
Tik nuo jūsų priklauso, kur failą laikysite ir kaip jį pavadinsite.
Jei norite atkurti „iptables“ taisyklių sąrašą, galite naudoti iptables-atkurti
. Komanda atrodo taip:
# iptables-restoreŽinoma, kelias į taisyklių failą gali būti kitoks.
21. Nustatykite „IPtables“ PCI atitikties taisykles
Kai kuriems sistemos administratoriams gali prireikti sukonfigūruoti savo serverius, kad jie atitiktų PCI. Įvairių PCI atitikties tiekėjų keliami daug reikalavimų, tačiau yra keletas bendrų.
Daugeliu atvejų turėsite turėti daugiau nei vieną IP adresą. Svetainės IP adresui turėsite taikyti toliau pateiktas taisykles. Būkite ypač atsargūs naudodami toliau pateiktas taisykles ir naudokite jas tik tuo atveju, jei esate tikri, ką darote:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP.Jei naudojate „cPanel“ ar panašų valdymo skydelį, gali tekti užblokuoti ir jo prievadus. Štai pavyzdys:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP.Pastaba: Norėdami įsitikinti, kad atitinkate savo PCI pardavėjo reikalavimus, atidžiai patikrinkite jo ataskaitą ir laikykitės reikiamų taisyklių. Kai kuriais atvejais gali tekti blokuoti UDP srautą ir tam tikruose uostuose.
22. Leisti užmegztus ir susijusius ryšius
Kadangi tinklo srautas gaunant ir siunčiant yra atskiras, norėsite leisti nustatytą ir susijusį gaunamą srautą. Įeinantiems ryšiams darykite taip:
# iptables -A INPUT -m conntrack --ctstate ĮSTEIGTA, SUSIJĘ -j PRIIMTI.Išvažiavimui:
# iptables -A OUTPUT -m conntrack --state State ISTABLISHED -j ACCEPT.23. Įmeskite netinkamus paketus į „IPtable“
Kai kurie tinklo paketai gali būti pažymėti kaip netinkami. Kai kurie žmonės gali mieliau registruoti tuos paketus, tačiau kiti nori juos mesti. Norėdami atmesti paketus, galite naudoti:
# iptables -A INPUT -m conntrack --state State INVALID -j DROP24. Blokuoti ryšį tinklo sąsajoje
Kai kurios sistemos gali turėti daugiau nei vieną tinklo sąsają. Galite apriboti prieigą prie tos tinklo sąsajos arba blokuoti ryšius iš tam tikro IP adreso.
Pavyzdžiui:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.Keisti „Xxx.xxx.xxx.xxx“ su faktiniu IP adresu (arba tinklu), kurį norite užblokuoti.
25. Išjunkite siunčiamus laiškus naudodami „IPTables“
Jei jūsų sistema neturėtų siųsti el. Laiškų, galite blokuoti išeinančius SMTP prievadų prievadus. Pavyzdžiui, galite tai naudoti:
# iptables -A OUTPUT -p tcp --ports 25 465 587 -j REJECT.Išvada
„Iptables“ yra galinga užkarda, kuria galite lengvai pasinaudoti. Kiekvienam sistemos administratoriui labai svarbu išmokti bent „iptables“ pagrindai. Jei norite rasti išsamesnės informacijos apie „iptables“ ir jo parinktis, labai rekomenduojama perskaityti jo vadovą:
# vyras iptables.Jei manote, kad į šį sąrašą turėtume įtraukti daugiau komandų, pasidalykite jomis su mumis, pateikdami jas žemiau esančiame komentarų skyriuje.