25 Noderīgi IPtable ugunsmūra noteikumi, kas jāzina katram Linux administratoram
konfigurējiet ugunsmūri tā, lai tas atbilstu sistēmas un lietotāju prasībām gan ienākošajiem, gan izejošajiem savienojumiem, neatstājot sistēmu neaizsargātu pret uzbrukumiem.
Šeit noder iptables
. Iptables ir Linux komandrindas ugunsmūris, kas ļauj sistēmas administratoriem pārvaldīt ienākošo un izejošo datplūsmu, izmantojot konfigurējamu tabulas kārtulu kopu.
Programmā Iptables tiek izmantotas tabulu kopas, kurās ir ķēdes, kurās ir iebūvētu vai lietotāja definētu kārtulu kopa. Pateicoties viņiem, sistēmas administrators var pareizi filtrēt savas sistēmas tīkla trafiku.
Saskaņā ar iptables rokasgrāmatu pašlaik ir 3 veidu tabulas:
-
FILTER
- šī ir noklusējuma tabula, kurā iekļautas iebūvētās ķēdes:- INPUT - paketes, kas paredzētas vietējām kontaktligzdām
- FORWARD - paketes, kas tiek virzītas caur sistēmu
- OUTPUT - lokāli ģenerētas paketes
- PREROUTING - izmanto pakešu maiņai, tiklīdz tā ir saņemta
- OUTPUT - izmanto, lai mainītu lokāli ģenerētas paketes
- POSTROUTING - izmanto pakešu maiņai, kad tās gatavojas iziet
- PREROUTING - ienākošo savienojumu mainīšanai
- OUTPUT - lokāli ģenerētu pakešu mainīšanai
- INPUT - ienākošajām paketēm
- POSTROUTING - pakešu maiņai, kad tās gatavojas iziet
- FORWARD - paketēm, kuras tiek virzītas caur lodziņu
Šajā rakstā jūs redzēsiet dažas noderīgas komandas, kas palīdzēs pārvaldīt Linux lodziņa ugunsmūri, izmantojot iptables. Šī raksta vajadzībām es sākšu ar vienkāršākām komandām un ietu uz sarežģītāku līdz beigām.
1. Start/Stop/Restart Iptables ugunsmūri
Pirmkārt, jums jāzina, kā pārvaldīt iptables pakalpojumu dažādos Linux izplatījumos. Tas ir diezgan viegli:
------------ 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. Pārbaudiet visus IPtables ugunsmūra noteikumus
Ja vēlaties pārbaudīt esošos noteikumus, izmantojiet šādu komandu:
# iptables -L -n -v
Tam vajadzētu atgriezt līdzīgu izvadi kā zemāk:
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
Ja vēlaties pārbaudīt noteiktas tabulas kārtulas, varat izmantot opciju
-t
, kam seko pārbaudāmā tabula. Piemēram, lai pārbaudītu kārtulas tabulāNAT
, varat izmantot:# iptables -t nat -L -v -n
3. Bloķējiet konkrētu IP adresi IPtables ugunsmūrī
Ja atrodat neparastu vai ļaunprātīgu darbību no IP adreses, varat bloķēt šo IP adresi ar šādu kārtulu:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
Kur jāmaina
"xxx.xxx.xxx.xxx"
ar faktisko IP adresi. Esiet ļoti uzmanīgs, izpildot šo komandu, jo jūs varat nejauši bloķēt savu IP adresi. Opcija-A
pievieno kārtulu atlasītās ķēdes beigās.Gadījumā, ja vēlaties bloķēt tikai TCP trafiku no šīs IP adreses, varat izmantot opciju
-p
, kas norāda protokolu. Tādā veidā komanda izskatīsies šādi:# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
4. Atbloķējiet IP adresi IPtables ugunsmūrī
Ja esat nolēmis, ka vairs nevēlaties bloķēt pieprasījumus no konkrētas IP adreses, varat izdzēst bloķēšanas kārtulu ar šādu komandu:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
Opcija
-D
izdzēš vienu vai vairākas kārtulas no atlasītās ķēdes. Ja vēlaties izmantot garāku opciju, varat izmantot--delete
.5. Bloķējiet IPtables ugunsmūra specifisko portu
Dažreiz jūs varat bloķēt ienākošos vai izejošos savienojumus noteiktā ostā. Tas ir labs drošības pasākums, un, izveidojot ugunsmūri, jums patiešām vajadzētu padomāt par šo jautājumu.
Lai bloķētu izejošos savienojumus noteiktā porta lietojumā:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP
Lai atļautu ienākošo savienojumu izmantošanu:
# iptables -A INPUT -p tcp --dport xxx -j ACCEPT
Abos piemēros mainiet
"xxx"
ar faktisko portu, kuru vēlaties atļaut. Ja vēlaties bloķēt UDP trafiku, nevis TCP, vienkārši mainiet"tcp"
ar"udp"
iepriekš minētajā kārtulā iptables.6. Atļaujiet vairākiem portiem IPtable, izmantojot Multiport
Varat atļaut vairākas ostas vienlaikus, izmantojot multiport, zemāk jūs varat atrast šādu kārtulu gan ienākošajiem, gan izejošajiem savienojumiem:
# 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. Atļaut konkrētu tīkla diapazonu noteiktā IPtable portā
Varat ierobežot noteiktus savienojumus noteiktā ostā ar konkrētu tīklu. Pieņemsim, ka vēlaties atļaut izejošos savienojumus portā
22
ar tīklu192.168.100.0/24
.To var izdarīt ar šo komandu:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
8. Bloķējiet Facebook IPtables ugunsmūrī
Daži darba devēji labprāt bloķē saviem darbiniekiem piekļuvi Facebook. Zemāk ir sniegts piemērs, kā bloķēt datplūsmu uz Facebook.
Piezīme: Ja esat sistēmas administrators un jums jāpiemēro šie noteikumi, ņemiet vērā, ka kolēģi var pārtraukt ar jums runāt :)
Vispirms atrodiet Facebook izmantotās IP adreses:
# host facebook.com facebook.com has address 66.220.156.68
# whois 66.220.156.68 | grep CIDR CIDR: 66.220.144.0/20
Pēc tam jūs varat bloķēt šo Facebook tīklu, izmantojot:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP
Paturiet prātā, ka Facebook izmantotais IP adrešu diapazons jūsu valstī var atšķirties.
9. Iestatiet portu pārsūtīšanu IPtable
Dažreiz jūs varētu vēlēties pārsūtīt viena pakalpojuma trafiku uz citu ostu. To var panākt ar šādu komandu:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
Iepriekš minētā komanda pārsūta visu ienākošo trafiku tīkla saskarnē
eth0
no porta25
uz portu2525
. Jūs varat mainīt ostas ar tām, kas jums nepieciešamas.10. Bloķējiet tīkla applūšanu Apache portā ar IPtable
Dažreiz IP adreses var pieprasīt pārāk daudz savienojumu ar jūsu vietnes tīmekļa portiem. Tas var izraisīt vairākas problēmas, un, lai novērstu šādas problēmas, varat izmantot šādu kārtulu:
# iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
Iepriekš minētā komanda ierobežo ienākošos savienojumus no minūtes līdz
100
un iestata ierobežojuma sēriju200
. Jūs varat rediģēt limitu un limitu pārsprāgt atbilstoši savām specifiskajām prasībām.11. Bloķējiet ienākošos ping pieprasījumus IPtable
Daži sistēmas administratori drošības apsvērumu dēļ labprāt bloķē ienākošos ping pieprasījumus. Kaut arī draudi nav tik lieli, ir labi zināt, kā bloķēt šādu pieprasījumu:
# iptables -A INPUT -p icmp -i eth0 -j DROP
12. Atļaut piekļuvi atgriezeniskai saitei
Piekļuve atgriezeniskai saitei (piekļuve no
127.0.0.1
) ir svarīga, un jums vienmēr jāatstāj tā aktīva:# iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT
13. Uzturiet IPtables nomestu tīkla pakešu žurnālu
Ja vēlaties reģistrēt nomestās paketes tīkla saskarnē
eth0
, varat izmantot šādu komandu:# iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
Vērtību pēc
"--log-prefix"
varat mainīt ar kaut ko pēc savas izvēles. Ziņojumi tiek reģistrēti mapē/var/log/messages
, un tos varat meklēt, izmantojot:# grep "IPtables dropped packets:" /var/log/messages
14. Bloķējiet piekļuvi konkrētai MAC adresei IPtable
Piekļuvi savai sistēmai var bloķēt no konkrētas MAC adreses, izmantojot:
# iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
Protams, jums būs jāmaina
"00: 00: 00: 00: 00: 00" 00 "
ar faktisko MAC adresi, kuru vēlaties bloķēt.15. Ierobežojiet vienlaicīgu savienojumu skaitu vienā IP adresē
Ja jūs nevēlaties, lai no vienas IP adreses konkrētajā ostā būtu izveidots pārāk daudz vienlaikus savienojuma, varat izmantot tālāk norādīto komandu:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
Iepriekš minētā komanda katram klientam ļauj izveidot ne vairāk kā
3
savienojumus. Protams, jūs varat mainīt porta numuru, lai tas atbilstu dažādiem pakalpojumiem. Arī--connlimit-above
ir jāmaina, lai tas atbilstu jūsu prasībām.16. Meklēt IPtables Rule
Kad esat definējis savus iptables noteikumus, laiku pa laikam vēlaties meklēt, un, iespējams, būs jāmaina tie. Vienkāršs veids, kā meklēt savos noteikumos, ir izmantot:
# iptables -L $table -v -n | grep $string
Iepriekš minētajā piemērā jums būs jāmaina
$table
ar faktisko tabulu, kurā vēlaties meklēt, un$string
ar faktisko virkni, kuru meklējat.Šeit ir piemērs:
# iptables -L INPUT -v -n | grep 192.168.0.100
17. Definējiet jaunu IPTables ķēdi
Izmantojot iptables, varat definēt savu ķēdi un tajā saglabāt pielāgotus noteikumus. Lai definētu ķēdi, izmantojiet:
# iptables -N custom-filter
Tagad varat pārbaudīt, vai jūsu jaunais filtrs ir:
# 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 IPtables ugunsmūra ķēdes vai noteikumi
Ja vēlaties izskalot ugunsmūra ķēdes, varat izmantot:
# iptables -F
Jūs varat noskalot ķēdes no konkrētas galda ar:
# iptables -t nat -F
Varat mainīt
"nat"
ar faktisko tabulu, kuras ķēdes vēlaties izskalot.19. Saglabājiet IPtables kārtulas failā
Ja vēlaties saglabāt ugunsmūra kārtulas, varat izmantot komandu
iptables-save
. Lai kārtulas saglabātu un saglabātu failā, varat izmantot sekojošo:# iptables-save > ~/iptables.rules
Kur jūs glabājat failu un kā to nosauksit, atkarīgs no jums.
20. Atjaunojiet IPtables noteikumus no faila
Ja vēlaties atjaunot iptables kārtulu sarakstu, varat izmantot
iptables-atjaunot
. Komanda izskatās šādi:# iptables-restore < ~/iptables.rules
Protams, ceļš uz jūsu noteikumu failu var būt atšķirīgs.
21. IPtables iestatīšana PCI atbilstības noteikumiem
Dažiem sistēmas administratoriem var būt nepieciešams konfigurēt savus serverus kā PCI savietojamus. Dažādiem PCI atbilstības pārdevējiem ir daudz prasību, taču ir maz kopīgu.
Daudzos gadījumos jums būs nepieciešama vairāk nekā viena IP adrese. Vietnes IP adresei būs jāpiemēro tālāk minētie noteikumi. Esiet īpaši piesardzīgs, lietojot zemāk minētos noteikumus, un izmantojiet tos tikai tad, ja esat pārliecināts, ko darāt:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP
Ja izmantojat cPanel vai līdzīgu vadības paneli, iespējams, būs jābloķē arī tā porti. Šeit ir piemērs:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP
Piezīme. Lai pārliecinātos, ka atbilstat PCI pārdevēja prasībām, uzmanīgi pārbaudiet viņa ziņojumu un piemērojiet nepieciešamos noteikumus. Dažos gadījumos jums var būt nepieciešams bloķēt UDP trafiku arī noteiktās ostās.
22. Atļaut izveidot un saistītus savienojumus
Tā kā ienākošā un izejošā tīkla trafiks ir atsevišķs, jūs vēlaties atļaut izveidoto un saistīto ienākošo trafiku. Ienākošajiem savienojumiem dariet to ar:
# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Izejošai lietošanai:
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
23. Nometiet nederīgas paketes IPtables
Iespējams, ka dažas tīkla paketes tiek atzīmētas kā nederīgas. Daži cilvēki, iespējams, izvēlas reģistrēt šīs paketes, bet citi izvēlas tās nomest. Lai atmestu nederīgas paketes, varat izmantot:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
24. Bloķēt savienojumu tīkla saskarnē
Dažām sistēmām var būt vairākas tīkla saskarnes. Jūs varat ierobežot piekļuvi šim tīkla interfeisam vai bloķēt savienojumus no noteiktas IP adreses.
Piemēram:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP
Mainiet “xxx.xxx.xxx.xxx” ar faktisko IP adresi (vai tīklu), kuru vēlaties bloķēt.
25. Atspējot izejošās vēstules, izmantojot IPTables
Ja jūsu sistēmai nevajadzētu sūtīt nevienu e-pastu, varat bloķēt izejošās ostas SMTP portos. Piemēram, jūs varat izmantot šo:
# iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT
Secinājums
Iptables ir spēcīgs ugunsmūris, no kura jūs viegli varat gūt labumu. Katram sistēmas administratoram ir svarīgi apgūt vismaz iptables pamatus. Ja vēlaties atrast sīkāku informāciju par iptables un tā iespējām, ieteicams izlasīt rokasgrāmatu:
# man iptables
Ja jūs domājat, ka mums vajadzētu pievienot vairāk komandu šim sarakstam, lūdzu, kopīgojiet tos ar mums, iesniedzot tos zemāk esošajā komentāru sadaļā.