25 kasulikku IPtable'i tulemüüri reeglit peaks teadma iga Linuxi administraator


konfigureerige tulemüür nii, et see vastaks süsteemi ja kasutajate nõuetele nii sissetulevate kui ka väljuvate ühenduste jaoks, jätmata süsteemi rünnakute suhtes haavatavaks.

Siit tulevad iptables kasuks. Iptables on Linuxi käsurea tulemüür, mis võimaldab süsteemiadministraatoritel hallata sissetulevat ja väljaminevat liiklust konfigureeritavate tabelireeglite komplekti kaudu.

Iptables kasutab tabelite komplekti, millel on ketid, mis sisaldavad sisseehitatud või kasutaja määratud reegleid. Tänu neile saab süsteemiadministraator oma süsteemi võrguliiklust korralikult filtreerida.

IPptablesi käsiraamatu järgi on praegu kolme tüüpi tabeleid:

    1. FILTER - see on vaiketabel, mis sisaldab sisseehitatud ahelaid:
      1. INPUT - kohalikele pistikupesadele mõeldud paketid
      2. EDASI - süsteemi kaudu suunatavad paketid
      3. OUTPUT - kohapeal loodud paketid

      1. PREROUTING - kasutatakse paketi muutmiseks kohe pärast selle kättesaamist
      2. OUTPUT - kasutatakse kohapeal loodud pakettide muutmiseks
      3. POSTROUTING - kasutatakse pakettide muutmiseks, kui need hakkavad kustuma

      1. PREROUTING - sissetulevate ühenduste muutmiseks
      2. OUTPUT - kohapeal loodud pakettide muutmiseks
      3. INPUT - sissetulevate pakettide jaoks
      4. POSTROUTING - pakettide muutmiseks, kui need hakkavad kustuma
      5. EDASI - kasti kaudu suunatavate pakettide jaoks

      Selles artiklis näete mõningaid kasulikke käske, mis aitavad teil Linuxi kasti tulemüüri hallata iptable'i kaudu. Selle artikli jaoks alustan lihtsamatest käskudest ja lähen lõpuni keerukamale.

      1. Käivitage/peatage/taaskäivitage Iptablesi tulemüür

      Esiteks peaksite teadma, kuidas hallata iptablesi teenust erinevates Linuxi distributsioonides. See on üsna lihtne:

      ------------ On Cent/RHEL 7 and Fedora 22+ ------------
      # systemctl start iptables
      # systemctl stop iptables
      # systemctl restart iptables
      
      ------------ On Cent/RHEL 6/5 and Fedora ------------
      # /etc/init.d/iptables start 
      # /etc/init.d/iptables stop
      # /etc/init.d/iptables restart
      

      2. Kontrollige kõiki IPtable'i tulemüüri reegleid

      Kui soovite oma olemasolevaid reegleid kontrollida, kasutage järgmist käsku:

      # iptables -L -n -v
      

      See peaks tagastama järgmise väljundiga sarnase väljundi:

      Chain INPUT (policy ACCEPT 1129K packets, 415M bytes)
       pkts bytes target prot opt in out source destination 
       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
      Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
       pkts bytes target prot opt in out source destination 
       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
      Chain OUTPUT (policy ACCEPT 354K packets, 185M bytes)
       pkts bytes target prot opt in out source destination

      Kui eelistate kontrollida konkreetse tabeli reegleid, võite kasutada valikut -t , millele järgneb tabel, mida soovite kontrollida. Näiteks tabelis NAT olevate reeglite kontrollimiseks võite kasutada järgmist.

      # iptables -t nat -L -v -n
      

      3. Blokeerige IPtable'ide tulemüüris konkreetne IP-aadress

      Kui leiate IP-aadressilt ebatavalise või kuritarvitava tegevuse, saate selle IP-aadressi järgmise reegliga blokeerida:

      # iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      Kus peate muutma \"xxx.xxx.xxx.xxx \" tegeliku IP-aadressiga. Olge selle käsu käivitamisel väga ettevaatlik, kuna võite omaenda IP-aadressi kogemata blokeerida. Valik -A lisab reegli valitud ahela lõppu.

      Kui soovite blokeerida ainult selle IP-aadressi TCP-liikluse, võite kasutada protokolli määravat suvandit -p . Nii näeb käsk välja selline:

      # iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
      

      4. Avage IP-aadresside blokeerimine IPtable'i tulemüüris

      Kui olete otsustanud, et te ei soovi enam konkreetselt IP-aadressilt päringuid blokeerida, võite blokeerimisreegli kustutada järgmise käsuga:

      # iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      Valik -D kustutab valitud ahelast ühe või mitu reeglit. Kui eelistate kasutada pikemat valikut, võite kasutada käsku --delete .

      5. Blokeerige IPtable'ide tulemüüri konkreetne port

      Mõnikord võiksite blokeerida sissetulevad või väljuvad ühendused kindlas pordis. See on hea turvameede ja tulemüüri seadistamisel peaksite sellele küsimusele tõesti mõtlema.

      Konkreetse pordi väljuvate ühenduste blokeerimine:

      # iptables -A OUTPUT -p tcp --dport xxx -j DROP
      

      Sissetulevate ühenduste kasutamise lubamiseks toimige järgmiselt.

      # iptables -A INPUT -p tcp --dport xxx -j ACCEPT
      

      Mõlemas näites muutke \"xxx \" tegeliku pordiga, mille soovite lubada. Kui soovite TCP asemel blokeerida UDP-liikluse, muutke ülaltoodud iptables-reeglis lihtsalt \"tcp \" koodiga \"udp \" .

      6. Lubage Multiport'i abil IP-tabelitel mitu pordi

      Allpool saate lubada mitu pordi, kasutades multiporti. Sellise reegli leiate nii sissetulevate kui ka väljaminevate ühenduste kohta:

      # iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
      # iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT
      

      7. Luba konkreetne võrgupiirkond IPtabelite teatud pordis

      Võib-olla soovite piirata konkreetse pordi teatud ühendusi antud võrguga. Oletame, et soovite lubada väljuvad ühendused porti 22 võrku 192.168.100.0/24 .

      Saate seda teha selle käsuga:

      # iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
      

      8. Blokeerige Facebook IPtablesi tulemüüris

      Mõned tööandjad soovivad blokeerida oma töötajatele juurdepääsu Facebookile. Allpool on näide, kuidas blokeerida liiklus Facebooki.

      Märkus. Kui olete süsteemiadministraator ja peate neid reegleid rakendama, pidage meeles, et teie kolleegid võivad teiega rääkimise lõpetada :)

      Esmalt leidke Facebooki kasutatavad IP-aadressid:

      # host facebook.com 
      facebook.com has address 66.220.156.68
      
      # whois 66.220.156.68 | grep CIDR
      CIDR: 66.220.144.0/20
      

      Seejärel saate selle Facebooki võrgu blokeerida:

      # iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP
      

      Pidage meeles, et Facebooki kasutatav IP-aadresside vahemik võib teie riigis erineda.

      9. Pordi edastamise seadistamine IPtabelites

      Mõnikord võiksite suunata ühe teenuse liikluse teise sadamasse. Selle saate saavutada järgmise käsuga:

      # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
      

      Ülaltoodud käsk edastab kogu sissetuleva liikluse võrguliidesel eth0 porti 25 portini 2525 . Võite muuta pordid vajalikega.

      10. Blokeerige IPtabelitega Apache'i pordi võrguuputus

      Mõnikord võivad IP-aadressid nõuda liiga palju ühendusi teie veebisaidi veebipordide suunas. See võib põhjustada mitmeid probleeme ja selliste probleemide vältimiseks võite kasutada järgmist reeglit:

      # iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
      

      Ülaltoodud käsk piirab sissetulevaid ühendusi minutist väärtuseni 100 ja seab piiripurske väärtuseks 200 . Piirangut ja piiripursket saate muuta vastavalt oma konkreetsetele nõuetele.

      11. Blokeerige IPtable'i sissetulevad pingitaotlused

      Mõned süsteemiadministraatorid soovivad blokeerida sissetulevad pingitaotlused turvalisuse tõttu. Ehkki oht pole nii suur, on hea teada, kuidas sellist taotlust blokeerida.

      # iptables -A INPUT -p icmp -i eth0 -j DROP
      

      12. Luba loopback-juurdepääs

      Loopback-juurdepääs (juurdepääs 127.0.0.1 -lt) on oluline ja peate selle alati aktiivseks jätma:

      # iptables -A INPUT -i lo -j ACCEPT
      # iptables -A OUTPUT -o lo -j ACCEPT
      

      13. Hoidke IPtabelites kadunud võrgupakettide logi

      Kui soovite mahajäetud paketid võrguliidesele eth0 sisse logida, võite kasutada järgmist käsku:

      # iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
      

      Väärtust \"- log-prefix \" järel saate millegagi oma valitud järgi muuta. Sõnumid logitakse sisse kataloogis /var/log/messages ja saate neid otsida:

      # grep "IPtables dropped packets:" /var/log/messages
      

      14. Blokeerige IP-tabelites juurdepääs konkreetsele MAC-aadressile

      Saate blokeerida juurdepääsu oma süsteemile konkreetselt MAC-aadressilt, kasutades:

      # iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
      

      Muidugi peate muutma \"00: 00: 00: 00: 00: 00: 00 \" tegeliku MAC-aadressiga, mille soovite blokeerida.

      15. Piirake samaaegsete ühenduste arvu IP-aadressi kohta

      Kui te ei soovi, et antud pordil oleks ühest IP-aadressist loodud liiga palju samaaegset ühendust, võite kasutada järgmist käsku:

      # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
      

      Ülaltoodud käsk lubab ühe kliendi kohta ühendada ainult 3 . Muidugi saate muuta pordi numbrit, et see vastaks teisele teenusele. Samuti tuleks vastavalt vajadusele muuta --connlimit-above .

      16. Otsige IPtables-reeglist

      Kui olete oma iptablesi reeglid määranud, soovite aeg-ajalt otsida ja võib-olla peate neid muutma. Reeglite järgi otsimiseks on lihtne viis kasutada:

      # iptables -L $table -v -n | grep $string
      

      Ülaltoodud näites peate muutma $table tegeliku tabeliga, milles soovite otsida, ja $string tegeliku stringiga, mida otsite.

      Siin on näide:

      # iptables -L INPUT -v -n | grep 192.168.0.100
      

      17. Määratlege uus IPTable-ketid

      Iptablesi abil saate määratleda oma keti ja salvestada sellesse kohandatud reeglid. Ahela määratlemiseks kasutage järgmist.

      # iptables -N custom-filter
      

      Nüüd saate kontrollida, kas teie uus filter on olemas:

      # iptables -L
      
      Chain INPUT (policy ACCEPT)
      target prot opt source destination
      
      Chain FORWARD (policy ACCEPT)
      target prot opt source destination
      Chain OUTPUT (policy ACCEPT)
      target prot opt source destination
      Chain custom-filter (0 references)
      target prot opt source destination

      18. Flush IPtablesi tulemüüriketid või reeglid

      Kui soovite oma tulemüüri ketid loputada, võite kasutada järgmist.

      # iptables -F
      

      Konkreetse laua ketid saate loputada:

      # iptables -t nat -F
      

      \"nat \" saate muuta selle tabeliga, milliseid ahelaid soovite loputada.

      19. Salvestage IPtable-reeglid faili

      Kui soovite oma tulemüüri reeglid salvestada, võite kasutada käsku iptables-save . Reeglite faili salvestamiseks ja salvestamiseks saate kasutada järgmist.

      # iptables-save > ~/iptables.rules
      

      See, kuhu faili salvestate ja kuidas sellele nime panete, on teie otsustada.

      20. Taastage failidest IPtable-reeglid

      Kui soovite taastada iptables-reeglite loendi, saate kasutada koodi iptables-restore . Käsk näeb välja selline:

      # iptables-restore < ~/iptables.rules
      

      Muidugi võib reeglite faili tee olla erinev.

      21. IPtable'i seadistamine PCI-vastavusreeglid

      Mõni süsteemiadministraator võib nõuda oma serverite konfigureerimist PCI-kompileerivaks. Erinevad PCI nõuetele vastavate müüjate nõuded on palju, kuid levinud on vähe.

      Paljudel juhtudel peab teil olema mitu IP-aadressi. Saidi IP-aadressi jaoks peate rakendama alltoodud reegleid. Olge allolevate reeglite kasutamisel eriti ettevaatlik ja kasutage neid ainult siis, kui olete kindel, mida teete:

      # iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP
      

      CPaneli või sarnase juhtpaneeli kasutamisel peate võib-olla ka selle porti blokeerima. Siin on näide:

      # iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports  2082,2083,2095,2096,2525,2086,2087 -j DROP
      

      Märkus. Veendumaks, et vastate oma PCI-müüja nõuetele, kontrollige hoolikalt tema aruannet ja rakendage nõutavaid reegleid. Mõnel juhul peate võib-olla ka teatud sadamates blokeerima UDP-liikluse.

      22. Luba loodud ja seotud ühendused

      Kuna sissetuleva ja väljamineva võrgu liiklus on eraldatud, soovite lubada sissetoodud ja seotud sissetulevat liiklust. Sissetulevate ühenduste puhul tehke seda järgmiselt:

      # iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
      

      Väljaminevaks kasutamiseks:

      # iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
      

      23. Vigaste pakettide viskamine IP-tabelitesse

      Mõni võrgupakett võib olla märgitud kehtetuks. Mõni inimene võib eelistada nende pakettide logimist, kuid teine eelistab neid visata. Pakettide tühistamiseks võite kasutada järgmist.

      # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 
      

      24. Blokeerige ühendus võrguliidesel

      Mõnes süsteemis võib olla mitu võrguliidest. Võite piirata juurdepääsu sellele võrguliidesele või blokeerida ühendused teatud IP-aadressilt.

      Näiteks:

      # iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP
      

      Muutke\"xxx.xxx.xxx.xxx" tegeliku IP-aadressiga (või võrguga), mille soovite blokeerida.

      25. Keela IPTable-ide kaudu väljuvad kirjad

      Kui teie süsteem ei peaks ühtegi meilisõnumit saatma, võite blokeerida SMTP-porti väljuvad pordid. Näiteks saate seda kasutada:

      # iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT
      

      Järeldus

      Iptables on võimas tulemüür, millest saate hõlpsalt kasu saada. Iga süsteemiadministraatori jaoks on ülioluline õppida vähemalt iptable'i põhitõdesid. Kui soovite üksikasjalikumat teavet iptablesi ja selle võimaluste kohta, soovitame lugeda selle käsiraamatut:

      # man iptables
      

      Kui arvate, et peaksime sellesse loendisse lisama rohkem käske, jagage neid meiega, esitades need allpool olevas kommentaaride jaotises.