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:
-
FILTER
- tämä on oletustaulukko, joka sisältää sisäänrakennetut ketjut seuraaville:- INPUT - paikallisiin pistorasioihin tarkoitetut paketit
- FORWARD - järjestelmän kautta reititetyt paketit
- OUTPUT - paikallisesti luodut paketit
- PREROUTING - käytetään paketin muuttamiseen heti, kun se on vastaanotettu
- OUTPUT - käytetään paikallisesti tuotettujen pakettien muuttamiseen
- POSTROUTING - käytetään pakettien muuttamiseen niiden sammuessa
- PREROUTING - saapuvien yhteyksien muuttamiseen
- OUTPUT - paikallisesti tuotettujen pakettien muuttamiseen
- INPUT - saapuville paketeille
- POSTROUTING - pakettien muuttamiseen niiden sammuessa
- 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ötNAT
-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
verkkoon192.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
portista25
porttiin2525
. 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 arvoon200
. 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.