25 hyödyllistä IPtable-palomuurisääntöä, jonka jokaisen Linux-järjestelmänvalvojan tulisi tietää


määritä palomuuri siten, että se täyttää sekä saapuvien että lähtevien yhteyksien järjestelmän ja käyttäjien vaatimukset jättämättä järjestelmää alttiiksi hyökkäyksille.

Täältä iptables ovat käteviä. Iptables on Linux-komentorivin palomuuri, jonka avulla järjestelmänvalvojat voivat hallita saapuvaa ja lähtevää liikennettä määritettävien taulukon sääntöjen avulla.

Iptables käyttää joukkoa taulukoita, joissa on ketjuja, jotka sisältävät joukon sisäänrakennettuja tai käyttäjän määrittämiä sääntöjä. Heidän ansiostaan järjestelmänvalvoja voi suodattaa järjestelmänsä verkkoliikenteen oikein.

IPptables-käsikirjan mukaan tällä hetkellä on 3 tyyppistä taulukkoa:

    1. FILTER - tämä on oletustaulukko, joka sisältää sisäänrakennetut ketjut seuraaville:
      1. INPUT - paikallisiin pistorasioihin tarkoitetut paketit
      2. FORWARD - järjestelmän kautta reititetyt paketit
      3. OUTPUT - paikallisesti luodut paketit

      1. PREROUTING - käytetään paketin muuttamiseen heti, kun se on vastaanotettu
      2. OUTPUT - käytetään paikallisesti tuotettujen pakettien muuttamiseen
      3. POSTROUTING - käytetään pakettien muuttamiseen niiden sammuessa

      1. PREROUTING - saapuvien yhteyksien muuttamiseen
      2. OUTPUT - paikallisesti tuotettujen pakettien muuttamiseen
      3. INPUT - saapuville paketeille
      4. POSTROUTING - pakettien muuttamiseen niiden sammuessa
      5. Eteenpäin - paketin kautta reititetyille paketeille

      Tässä artikkelissa näet hyödyllisiä komentoja, jotka auttavat sinua hallitsemaan Linux-ruutusi palomuuria iptablesin kautta. Tätä artikkelia varten aloitan yksinkertaisemmilla komennoilla ja menen monimutkaisempaan loppuun asti.

      1. Käynnistä/pysäytä/käynnistä Iptables-palomuuri

      Ensinnäkin sinun pitäisi tietää, miten hallita iptables-palvelua eri Linux-jakeluissa. Tämä on melko helppoa:

      ------------ 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. Tarkista kaikki IPtables-palomuurisäännöt

      Jos haluat tarkistaa olemassa olevat säännöt, käytä seuraavaa komentoa:

      # iptables -L -n -v
      

      Tämän pitäisi palauttaa samanlainen lähtö kuin alla:

      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

      Jos haluat tarkistaa tietyn taulukon säännöt, voit käyttää -t -vaihtoehtoa ja sen jälkeen tarkistettavaa taulukkoa. Voit esimerkiksi tarkistaa säännöt NAT -taulukosta käyttämällä:

      # iptables -t nat -L -v -n
      

      3. Estä tietty IP-osoite IPtable-palomuurissa

      Jos löydät epätavallisen tai loukkaavan toiminnan IP-osoitteesta, voit estää kyseisen IP-osoitteen seuraavalla säännöllä:

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

      Missä "xxx.xxx.xxx.xxx" on vaihdettava todellisella IP-osoitteella. Ole erittäin varovainen, kun suoritat tämän komennon, koska voit vahingossa estää oman IP-osoitteesi. Vaihtoehto -A lisää säännön valitun ketjun loppuun.

      Jos haluat estää vain TCP-liikenteen tältä IP-osoitteelta, voit käyttää protokollaa määrittävää -p -vaihtoehtoa. Tällä tavalla komento näyttää tältä:

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

      4. Poista IP-osoitteen esto IPtables-palomuurissa

      Jos olet päättänyt, että et enää halua estää pyyntöjä tietyltä IP-osoitteelta, voit poistaa estosäännön seuraavalla komennolla:

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

      Vaihtoehto -D poistaa yhden tai useamman säännön valitusta ketjusta. Jos haluat käyttää pidempää vaihtoehtoa, voit käyttää --delete .

      5. Estä IPtable-palomuurin tietty portti

      Joskus haluat ehkä estää saapuvat tai lähtevät yhteydet tietyssä portissa. Se on hyvä turvatoimenpide, ja sinun pitäisi todella miettiä tätä asiaa palomuuria asennettaessa.

      Lähtevien yhteyksien estäminen tietyllä portilla:

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

      Saapuvien yhteyksien salliminen:

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

      Vaihda molemmissa esimerkeissä "xxx" todelliseen sallittavaan porttiin. Jos haluat estää UDP-liikenteen TCP: n sijaan, muuta vain "tcp" -merkillä "udp" yllä olevassa iptables-säännössä.

      6. Salli useita portteja IP-pöydissä Multiport-toiminnolla

      Voit sallia useita portteja kerralla käyttämällä moniporttia. Alla on tällainen sääntö sekä saapuville että lähteville yhteyksille:

      # 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. Salli tietty verkkoalue IPt-taulukoiden tietyssä portissa

      Voit halutessasi rajoittaa tietyn portin tietyt yhteydet tiettyyn verkkoon. Oletetaan, että haluat sallia lähtevät yhteydet portissa 22 verkkoon 192.168.100.0/24 .

      Voit tehdä sen tällä komennolla:

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

      8. Estä Facebook IPtables-palomuurissa

      Jotkut työnantajat haluavat estää työntekijöidensä pääsyn Facebookiin. Alla on esimerkki liikenteen estämisestä Facebookiin.

      Huomaa: Jos olet järjestelmänvalvoja ja sinun on sovellettava näitä sääntöjä, muista, että kollegasi saattavat lopettaa puhumisen kanssasi :)

      Etsi ensin Facebookin käyttämät IP-osoitteet:

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

      Voit sitten estää kyseisen Facebook-verkon:

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

      Muista, että Facebookin käyttämä IP-osoitealue voi vaihdella maassasi.

      9. Määritä porttisiirto IP-taulukoissa

      Joskus saatat haluta siirtää yhden palvelun liikenteen toiseen porttiin. Voit saavuttaa tämän seuraavalla komennolla:

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

      Yllä oleva komento välittää kaiken saapuvan liikenteen verkkoliitännässä eth0 portista 25 porttiin 2525 . Voit muuttaa portteja tarvitsemillasi porteilla.

      10. Estä verkon tulva Apache-portissa IP-taulukoilla

      Joskus IP-osoitteet saattavat pyytää liikaa yhteyksiä verkkosivustosi portteihin. Tämä voi aiheuttaa useita ongelmia ja estää tällaiset ongelmat käyttämällä seuraavaa sääntöä:

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

      Yllä oleva komento rajoittaa saapuvien yhteyksien määrän minuutista arvoon 100 ja asettaa rajapurskeen arvoon 200 . Voit muokata rajaa ja raja-pursketta omien erityisvaatimusten mukaan.

      11. Estä saapuvat ping-pyynnöt IP-taulukoissa

      Jotkut järjestelmänvalvojat haluavat estää saapuvat ping-pyynnöt tietoturvaongelmien vuoksi. Vaikka uhka ei ole niin suuri, on hyvä tietää, kuinka estää tällainen pyyntö:

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

      12. Salli loopback-käyttö

      Silmukan käyttö (pääsy 127.0.0.1 -kohdasta) on tärkeä, ja sinun tulisi aina jättää se aktiiviseksi:

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

      13. Pidä lokia pudotetuista verkkopaketeista IP-taulukoissa

      Jos haluat kirjata pudotetut paketit verkkokäyttöliittymään eth0 , voit käyttää seuraavaa komentoa:

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

      Voit muuttaa arvoa "--log-prefix" jälkeen millä tahansa valitsemallasi tavalla. Viestit kirjataan hakemistoon /var/log/messages ja voit etsiä niitä seuraavilla tavoilla:

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

      14. Estä pääsy tiettyyn MAC-osoitteeseen IP-taulukoissa

      Voit estää pääsyn järjestelmään tietystä MAC-osoitteesta käyttämällä:

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

      Tietysti sinun on vaihdettava "00: 00: 00: 00: 00: 00" 00 " todellisella estettävällä MAC-osoitteella.

      15. Rajoita samanaikaisten yhteyksien määrää IP-osoitetta kohti

      Jos et halua, että tietystä portista muodostuu liikaa samanaikaista yhteyttä yhdestä IP-osoitteesta, voit käyttää alla olevaa komentoa:

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

      Yllä oleva komento sallii korkeintaan 3 -yhteydet asiakasta kohti. Tietenkin voit muuttaa portin numeron vastaamaan eri palvelua. Myös --connlimit-above tulisi muuttaa vastaamaan vaatimuksiasi.

      16. Etsi IPtables-säännöstä

      Kun olet määrittänyt iptables-säännöt, sinun on aika ajoin tehtävä hakuja ja niitä on ehkä muutettava. Helppo tapa etsiä säännöistäsi on käyttää:

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

      Yllä olevassa esimerkissä sinun on vaihdettava $table todelliseen taulukkoon, josta haluat etsiä, ja $string todelliseen merkkijonoon, jota etsit.

      Tässä on esimerkki:

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

      17. Määritä uusi IPTable-ketju

      Iptablesin avulla voit määrittää oman ketjun ja tallentaa siihen mukautetut säännöt. Määritä ketju käyttämällä:

      # iptables -N custom-filter
      

      Nyt voit tarkistaa, onko uusi suodatin olemassa:

      # 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. Huuhtele IPtable-palomuuriketjut tai -säännöt

      Jos haluat huuhdella palomuuriketjut, voit käyttää:

      # iptables -F
      

      Voit huuhdella ketjut tietystä pöydästä seuraavilla tavoilla:

      # iptables -t nat -F
      

      Voit vaihtaa "nat" sen taulukon kanssa, jonka ketjut haluat huuhdella.

      19. Tallenna IPtables-säännöt tiedostoon

      Jos haluat tallentaa palomuurisäännöt, voit käyttää iptables-save -komentoa. Voit tallentaa ja tallentaa säännöt tiedostoon seuraavilla tavoilla:

      # iptables-save > ~/iptables.rules
      

      Sinusta riippuu, mihin tiedosto tallennetaan ja miten se nimetään.

      20. Palauta IPtables-säännöt tiedostosta

      Jos haluat palauttaa luettelon iptables-säännöistä, voit käyttää iptables-restore . Komento näyttää tältä:

      # iptables-restore < ~/iptables.rules
      

      Tietysti polku sääntötiedostoon voi olla erilainen.

      21. Määritä IPtables-säännöt PCI-yhteensopivuudelle

      Jotkin järjestelmänvalvojat saattavat joutua määrittelemään palvelimensa PCI-yhteensopiviksi. Eri PCI-yhteensopivuusmyyjät asettavat monia vaatimuksia, mutta yleisiä on vain vähän.

      Monissa tapauksissa sinulla on oltava useampi kuin yksi IP-osoite. Sinun on sovellettava alla olevia sääntöjä sivuston IP-osoitteeseen. Ole erityisen varovainen käyttäessäsi alla olevia sääntöjä ja käytä niitä vain, jos olet varma mitä teet:

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

      Jos käytät cPanelia tai vastaavaa ohjauspaneelia, saatat joutua myös estämään sen portit. Tässä on esimerkki:

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

      Huomaa: Varmista, että täytät PCI-toimittajan vaatimukset, tarkista heidän raporttinsa huolellisesti ja noudata vaadittuja sääntöjä. Joissakin tapauksissa joudut ehkä myös estämään UDP-liikenteen tietyissä satamissa.

      22. Salli vakiintuneet ja niihin liittyvät yhteydet

      Koska saapuva ja lähtevä verkkoliikenne on erillistä, sinun on sallittava vakiintunut ja siihen liittyvä saapuva liikenne. Saapuvien yhteyksien tapauksessa tee se seuraavasti:

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

      Lähtevään käyttöön:

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

      23. Pudota virheelliset paketit IP-taulukoihin

      Jotkut verkkopaketit voidaan merkitä virheellisiksi. Jotkut ihmiset haluavat mieluummin kirjata nämä paketit, mutta toiset haluavat pudottaa ne. Jos haluat pudottaa virheelliset paketit, voit käyttää:

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

      24. Estä yhteys verkkoliitännässä

      Joissakin järjestelmissä voi olla useampi kuin yksi verkkoliitäntä. Voit rajoittaa pääsyä kyseiseen verkkoliitäntään tai estää yhteyksiä tietystä IP-osoitteesta.

      Esimerkiksi:

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

      Muuta ”xxx.xxx.xxx.xxx” todellisella IP-osoitteella (tai verkolla), jonka haluat estää.

      25. Poista lähtevät viestit käytöstä IPTablesin kautta

      Jos järjestelmän ei pitäisi lähettää sähköpostia, voit estää lähtevät portit SMTP-porteissa. Voit esimerkiksi käyttää tätä:

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

      Johtopäätös

      Iptables on tehokas palomuuri, josta voit helposti hyötyä. Jokaisen järjestelmänvalvojan on elintärkeää oppia ainakin iptablesin perusteet. Jos haluat löytää tarkempia tietoja iptablesista ja sen vaihtoehdoista, on erittäin suositeltavaa lukea sen käyttöohjeet:

      # man iptables
      

      Jos luulet meidän lisäävän lisää komentoja tähän luetteloon, jaa ne meille lähettämällä ne alla olevaan kommenttiosioon.