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:
-
FILTER
- see on vaiketabel, mis sisaldab sisseehitatud ahelaid:- INPUT - kohalikele pistikupesadele mõeldud paketid
- EDASI - süsteemi kaudu suunatavad paketid
- OUTPUT - kohapeal loodud paketid
- PREROUTING - kasutatakse paketi muutmiseks kohe pärast selle kättesaamist
- OUTPUT - kasutatakse kohapeal loodud pakettide muutmiseks
- POSTROUTING - kasutatakse pakettide muutmiseks, kui need hakkavad kustuma
- PREROUTING - sissetulevate ühenduste muutmiseks
- OUTPUT - kohapeal loodud pakettide muutmiseks
- INPUT - sissetulevate pakettide jaoks
- POSTROUTING - pakettide muutmiseks, kui need hakkavad kustuma
- 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 tabelisNAT
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õrku192.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
porti25
portini2525
. 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äärtuseks200
. 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.