25 hyödyllistä IPtable-palomuurisääntöä jokaisen Linux-järjestelmänvalvojan tulisi tietää
Verkkoliikenteen hallinta on yksi järjestelmänvalvojien vaikeimmista tehtävistä. Hänen on määritettävä palomuuri siten, että se täyttää järjestelmän ja käyttäjien vaatimukset sekä saapuville että lähteville yhteyksille jättämättä järjestelmää alttiin hyökkäyksille.
Tässä iptables
on hyödyllinen. Iptables on Linuxin komentorivin palomuuri, jonka avulla järjestelmänvalvojat voivat hallita saapuvaa ja lähtevää liikennettä määritettävien taulukkosääntöjen avulla.
Iptables käyttää joukkoa taulukkoja, joissa on ketjuja, jotka sisältävät joukon sisäänrakennettuja tai käyttäjän määrittämiä sääntöjä. Niiden ansiosta järjestelmänvalvoja voi suodattaa järjestelmänsä verkkoliikennettä oikein.
Iptables-oppaan mukaan on tällä hetkellä kolme tyyppistä taulukkoa:
-
SUODATIN
– tämä on oletustaulukko, joka sisältää sisäänrakennetut ketjut:- INPUT – paikallisiin pistorasioihin tarkoitetut paketit
- FORWARD – järjestelmän läpi reititetyt paketit
- OUTPUT – paikallisesti luodut paketit
NAT
– taulukko, jota tarkastellaan, kun paketti yrittää luoda uuden yhteyden. Siinä on seuraavat sisäänrakennetut:- PREROUTING – käytetään paketin muuttamiseen heti sen vastaanottamisen jälkeen
- OUTPUT – käytetään muuttamaan paikallisesti luotuja paketteja
- POSTROUTING – käytetään pakettien muuttamiseen, kun ne ovat loppumassa
MANGLE
– tätä taulukkoa käytetään pakettien muuttamiseen. Ytimen versioon 2.4 asti tässä taulukossa oli vain kaksi ketjua, mutta nyt ne ovat 5:
- PREROUTING – saapuvien yhteyksien muuttamiseen
Tässä artikkelissa näet hyödyllisiä komentoja, jotka auttavat sinua hallitsemaan Linux-box-palomuuriasi iptablesin kautta. Tätä artikkelia varten aloitan yksinkertaisemmilla komennoilla ja siirryn monimutkaisempiin loppuun.
1. Käynnistä/pysäytä/käynnistä uudelleen Iptables-palomuuri
Ensinnäkin sinun pitäisi tietää, kuinka hallita iptables-palvelua eri Linux-jakeluissa. Tämä on melko helppoa:
SystemD-pohjaisissa Linux-jakeluissa
------------ On Cent/RHEL 7 and Fedora 22+ ------------
systemctl start iptables
systemctl stop iptables
systemctl restart iptables
SysVinit-pohjaisissa Linux-jakeluissa
------------ 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 IPtablesin 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 seuraavanlainen tulos:
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ää vaihtoehtoa -t
ja sen jälkeen taulukkoa, jonka haluat tarkistaa. Voit esimerkiksi tarkistaa NAT
-taulukon säännöt käyttämällä:
iptables -t nat -L -v -n
3. Estä tietty IP-osoite IPtables-palomuurissa
Jos huomaat 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
Jos sinun on vaihdettava "xxx.xxx.xxx.xxx"
todellisella IP-osoitteella. Ole erittäin varovainen suorittaessasi tätä komentoa, koska voit vahingossa estää oman IP-osoitteesi. -A
-vaihtoehto lisää säännön valitun ketjun loppuun.
Jos haluat estää vain TCP-liikenteen kyseisestä IP-osoitteesta, voit käyttää -p
-vaihtoehtoa, joka määrittää protokollan. Näin 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ä tietystä IP-osoitteesta, voit poistaa estosäännön seuraavalla komennolla:
iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
-D
-vaihtoehto poistaa yhden tai useamman säännön valitusta ketjusta. Jos haluat käyttää pidempää vaihtoehtoa, voit käyttää --delete
-komentoa.
5. Estä tietty portti IPtables-palomuurissa
Joskus saatat haluta estää saapuvat tai lähtevät yhteydet tietyssä portissa. Se on hyvä turvatoimenpide, ja sinun tulee todella miettiä sitä palomuuriasi määrittäessäsi.
Lähtevien yhteyksien estäminen tietyssä portissa:
iptables -A OUTPUT -p tcp --dport xxx -j DROP
Voit sallia saapuvat yhteydet seuraavasti:
iptables -A INPUT -p tcp --dport xxx -j ACCEPT
Vaihda molemmissa esimerkeissä "xxx"
todellisella portilla, jonka haluat sallia. Jos haluat estää UDP-liikenteen TCP:n sijaan, vaihda "tcp"
arvoksi "udp"
iptables-säännön yläpuolella.
6. Salli useita portteja IP-taulukoissa käyttämällä Multiport-toimintoa
Voit sallia useita portteja kerralla käyttämällä multiport-toimintoa. Alta löydät tällaisen säännön 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 tietylle portille IP-tableteissa
Haluat ehkä rajoittaa tietyt yhteydet tietyssä portissa tiettyyn verkkoon. Oletetaan, että haluat sallia lähtevät yhteydet portista 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 IPtablesin palomuurissa
Jotkut työnantajat haluavat estää työntekijöidensä pääsyn Facebookiin. Alla on esimerkki kuinka estää liikenne Facebookiin.
Huomaa: jos olet järjestelmänvalvoja ja sinun on noudatettava näitä sääntöjä, muista, että kollegasi saattavat lakata puhumasta 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 seuraavilla tavoilla:
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. Aseta portin edelleenlähetys IPtablesissa
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 verkkoliitännän eth0
tulevan liikenteen portista 25
porttiin 2525
. Voit vaihtaa portit tarvitsemillasi.
10. Estä verkon tulva Apache-portissa IP-tableteilla
Joskus IP-osoitteet voivat pyytää liikaa yhteyksiä verkkosivustosi verkkoportteihin. Tämä voi aiheuttaa useita ongelmia, ja voit 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 saapuvat yhteydet minuutissa arvoon 100
ja asettaa rajapurskeeksi 200
. Voit muokata rajaa ja limit-pursketta omien erityisvaatimustesi mukaan.
11. Estä saapuvat ping-pyynnöt IPtablesissa
Jotkut järjestelmänvalvojat haluavat estää saapuvat ping-pyynnöt turvallisuussyistä. Vaikka uhka ei ole niin suuri, on hyvä tietää, kuinka tällainen pyyntö voidaan estää:
iptables -A INPUT -p icmp -i eth0 -j DROP
12. Salli silmukan käyttö
Loopback-käyttö (pääsy osoitteesta 127.0.0.1
) on tärkeä, ja sinun tulee jättää se aina aktiiviseksi:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
13. Pidä lokia IP-tablettien pudonneista verkkopaketeista
Jos haluat kirjata pudonneet paketit verkkoliittymään eth0
, voit käyttää seuraavaa komentoa:
iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
Voit muuttaa "--log-prefix"
jälkeen olevaa arvoa jollakin haluamallasi 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-tableteissa
Voit estää pääsyn järjestelmääsi tietystä MAC-osoitteesta käyttämällä:
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
Tietenkin sinun on vaihdettava "00:00:00:00:00:00"
todellisella MAC-osoitteella, jonka haluat estää.
15. Rajoita samanaikaisten yhteyksien määrää IP-osoitetta kohden
Jos et halua, että yhdestä IP-osoitteesta muodostetaan liian monta samanaikaista yhteyttä tietyssä portissa, 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 enintään 3
yhteyttä asiakasta kohti. Voit tietysti muuttaa portin numeron vastaamaan eri palvelua. Myös --connlimit-above
tulee muuttaa vastaamaan vaatimustasi.
16. Hae IPtables-säännöstä
Kun olet määrittänyt iptables-sääntösi, sinun kannattaa tehdä hakuja aika ajoin ja sinun on ehkä muutettava niitä. Helppo tapa etsiä säännöistäsi on käyttää:
iptables -L $table -v -n | grep $string
Yllä olevassa esimerkissä sinun on muutettava $table
todellisella taulukolla, josta haluat etsiä, ja $string
varsinaisella merkkijonolla, jota etsit.
Tässä on esimerkki:
iptables -L INPUT -v -n | grep 192.168.0.100
17. Määrittele uusi IPTables-ketju
Iptablesin avulla voit määrittää oman ketjusi ja tallentaa siihen mukautettuja sääntöjä. Määritä ketju käyttämällä:
iptables -N custom-filter
Nyt voit tarkistaa, onko uusi suodattimesi siellä:
iptables -L
Näytelähtö
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. Tyhjennä IPtables-palomuuriketjut tai -säännöt
Jos haluat huuhdella palomuuriketjusi, voit käyttää:
iptables -F
Voit huuhdella ketjut tietystä taulukosta seuraavilla tavoilla:
iptables -t nat -F
Voit muuttaa "nat"
todellisen taulukon kanssa, mitkä ketjut haluat tyhjentää.
19. Tallenna IPtables-säännöt tiedostoon
Jos haluat tallentaa palomuurisäännöt, voit käyttää iptables-save
-komentoa. Voit tallentaa ja tallentaa sääntöjä tiedostoon seuraavilla tavoilla:
iptables-save > ~/iptables.rules
On sinun päätettävissäsi, minne tallennat tiedoston ja miten annat sille nimen.
20. Palauta IPtables-säännöt tiedostosta
Jos haluat palauttaa iptables-sääntöjen luettelon, voit käyttää komentoa 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-yhteensopivuutta varten
Joidenkin järjestelmänvalvojien on ehkä määritettävä palvelimensa PCI-yhteensopiviksi. Eri PCI-yhteensopivuuden toimittajat asettavat monia vaatimuksia, mutta yleisiä on 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ä olet tekemässä:
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 estämään myös 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: varmistaaksesi, että täytät PCI-toimittajasi vaatimukset, tarkista heidän raporttinsa huolellisesti ja noudata vaadittuja sääntöjä. Joissakin tapauksissa saatat joutua estämään UDP-liikenteen myös tietyissä porteissa.
22. Salli vakiintuneet ja liittyvät yhteydet
Koska verkkoliikenne on erillinen saapuvan ja lähtevän liikenteen osalta, haluat sallia vakiintuneen ja siihen liittyvän saapuvan liikenteen. Tee se saapuville yhteyksille 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-taulukoissa
On mahdollista, että jotkin verkkopaketit merkitään kelpaamattomiksi. Jotkut ihmiset saattavat mieluummin kirjata nämä paketit lokiin, mutta toiset haluavat pudottaa ne. Voit pudottaa virheelliset paketit käyttämällä:
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
24. Estä verkkoliitäntä
Joissakin järjestelmissä voi olla useampi kuin yksi verkkoliitäntä. Voit rajoittaa pääsyä kyseiseen verkkoliitäntään tai estää yhteydet 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 sähköpostit IPTablesin kautta käytöstä
Jos järjestelmäsi ei lähetä sähköposteja, voit estää SMTP-porttien lähtevät portit. 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 tärkeää oppia ainakin iptablesin perusteet. Jos haluat löytää yksityiskohtaisempaa tietoa iptablesista ja sen vaihtoehdoista, on erittäin suositeltavaa lukea sen käyttöopas:
man iptables
Jos uskot, että meidän pitäisi lisätä lisää komentoja tähän luetteloon, jaa ne kanssamme lähettämällä ne alla olevaan kommenttiosaan.