If-Koubou

Iesācēja rokasgrāmata iptables, Linux ugunsmūris

Iesācēja rokasgrāmata iptables, Linux ugunsmūris (Kā)

Iptables ir ārkārtīgi elastīga ugunsmūra lietderība, kas veidota Linux operētājsistēmām. Neatkarīgi no tā, vai esat iesācējs Linux ģenerators vai sistēmas administrators, droši vien iespējams, ka iptables var būt lieliska lieta jums. Lasiet tālāk, jo mēs parādīsim, kā konfigurēt visvienkāršāko Linux ugunsmūri.

Fotoattēls ar Eziomana.

Par iptables

iptables ir komandrindas ugunsmūra lietderība, kas izmanto politikas ķēdes, lai atļautu vai bloķētu datplūsmu. Kad savienojums mēģina izveidot sevi savā sistēmā, iptables meklē sarakstu savā sarakstā, lai tas atbilstu. Ja tas to neatrod, tas piesaista noklusējuma darbību.

iptables gandrīz vienmēr ir iepriekš instalēts jebkurā Linux izplatīšanā. Lai to atjauninātu / instalētu, vienkārši izgūstiet iptables pakotni:

sudo apt-get instalēt iptables

Ir GUI alternatīvas iptables, piemēram, Firestarter, bet iptables nav īsti tik grūti, ja jums ir dažas komandas uz leju. Jūs vēlaties būt ļoti piesardzīgiem, konfigurējot iptables noteikumus, jo īpaši, ja jūs esat SSH serverī, jo viena nepareiza komanda var pastāvīgi bloķēt jūs, kamēr tā nav manuāli fiksēta fiziskajā iekārtā.

Ķēdes veidi

iptables izmanto trīs dažādas ķēdes: ievadi, pārsūtīšanu un izvadi.

Ievade - Šo ķēdi izmanto, lai kontrolētu ienākošo savienojumu darbību. Piemēram, ja lietotājs mēģina SSH uz jūsu datoru / serveri, iptables mēģinās saskaņot IP adresi un portu ar ievades ķēdes noteikumu.

Uz priekšu - Šī ķēde tiek izmantota ienākošajiem savienojumiem, kurus faktiski piegādā uz vietas. Domājiet par maršrutētāju - dati tiek vienmēr nosūtīti uz to, bet retos gadījumos tas tiešām ir paredzēts tieši maršrutētājam; dati tiek vienkārši pārsūtīti uz mērķi. Ja vien jūs neredzat kādu maršrutēšanu, NATing vai kaut ko citu savā sistēmā, kurai nepieciešama pārsūtīšana, jūs pat neizmantojat šo ķēdi.

Ir viens drošs uguns veids, kā pārbaudīt, vai jūsu sistēma izmanto / pieprasa priekšējo ķēdi.

iptables -L -v

Iepriekšējais ekrānuzņēmums ir serveris, kas darbojas jau vairākas nedēļas, un tam nav ierobežojumu ienākošajiem vai izejošajiem savienojumiem. Kā redzat, ievades ķēde ir apstrādājusi 11GB pakešu un izvades ķēde ir apstrādājusi 17GB. No otras puses, priekšējā ķēde nebija apstrādājusi vienu paketi. Tas ir tāpēc, ka serveris neveic nekādu pārsūtīšanu vai tiek izmantots kā caurlaides ierīce.

Izeja - Šī ķēde tiek izmantota izejošajiem savienojumiem. Piemēram, ja jūs mēģināt ping waytogeek.com, iptables pārbaudīs produkcijas ķēdi, lai uzzinātu, kādi ir noteikumi attiecībā uz ping un howtogeek.com, pirms pieņemt lēmumu atļaut vai noraidīt savienojuma mēģinājumu.

Caveat

Pat ja ārējā uzņēmēja pingēšana, šķiet, ir kaut kas tāds, kas tikai jāpārtrauc produkcijas ķēdei, paturiet prātā, ka, lai atgrieztos datus, tiks izmantota ievades ķēde. Izmantojot iptables, lai bloķētu sistēmu, atcerieties, ka daudziem protokoliem būs nepieciešama divvirzienu komunikācija, tāpēc pareizi jākonfigurē gan ievades, gan izvades ķēdes. SSH ir kopīgs protokols, ko cilvēki aizmirst par abām ķēdēm.

Politikas ķēdes noklusējuma uzvedība

Pirms ieiet un konfigurēt konkrētus noteikumus, jūs vēlaties izlemt, ko vēlaties, lai trīs ķēdes būtu noklusējuma darbības. Citiem vārdiem sakot, ko jūs vēlaties iptables darīt, ja savienojums neatbilst esošajiem noteikumiem?

Lai redzētu, kādas ir jūsu politikas ķēdes pašlaik konfigurēt ar nesaskaņotu datplūsmu, palaidiet iptables-l komandu

Kā jūs varat redzēt, mēs arī izmantojām grep komandu, lai sniegtu mums tīrāku produkciju. Šajā ekrānuzņēmumā mūsu ķēdes pašlaik tiek veidotas, lai pieņemtu satiksmi.

Vairāk reizes nekā nē, jūs vēlaties, lai jūsu sistēma pieņemtu savienojumus pēc noklusējuma. Ja vien jūs iepriekš neesat mainījis politikas ķēdes noteikumus, šis iestatījums jau ir jākonfigurē. Katrā ziņā, šeit ir komanda pieņemt savienojumus pēc noklusējuma:

iptables - politika INPUT PRIORITĀTE
iptables - politika IZEJIETIES PIEŅEM
iptables --politika FORWARD ACCEPT

Ja noklusējat pieņemšanas noteikumu, tad varat izmantot iptables, lai noraidītu konkrētas IP adreses vai portu numurus, turpinot pieņemt visus pārējos savienojumus. Mēs nokļūsim šajās komandās pēc minūtes.

Ja jūs drīzāk noliegtu visus savienojumus un manuāli norādītu, kurus no tiem vēlaties atļaut savienot, jums vajadzētu mainīt noklusējuma politiku jūsu ķēdēs. Tas, visticamāk, būtu noderīgi serveriem, kuros ir konfidenciāla informācija, un vienīgi tiem, kam ir vienādas IP adreses.

iptables --politika INPUT DROP
iptables - politika Izlaist Drop
iptables --politika FORWARD DROP

Savienojuma specifiskas atbildes

Ar konfigurēto noklusējuma ķēdes politiku jūs varat sākt pievienot iptables noteikumus, lai tā zinātu, ko darīt, saskaroties ar konkrētu IP adresi vai portu. Šajā ceļvedī mēs apskatīsim trīs visbūtiskākos un bieži lietotos "atbildes".

Pieņemt - Atļaut savienojumu.

Piliens - Nolaiž savienojumu, rīkoties tāpat kā tas nekad nav noticis. Vislabāk, ja nevēlaties, lai avots saprastu, ka jūsu sistēma pastāv.

Noraidīt - Neatļaut pieslēgumu, bet nosūtīt atpakaļ kļūdu. Tas ir vislabāk, ja nevēlaties, lai konkrēts avots izveidotu savienojumu ar jūsu sistēmu, bet jūs vēlaties, lai viņi zinātu, ka jūsu ugunsmūris to bloķēja.

Labākais veids, kā parādīt atšķirību starp šiem trim noteikumiem, ir parādīt, kas tas izskatās, kad dators mēģina pingot Linux datoru ar iptables, kas konfigurētas katram no šiem iestatījumiem.

Piešķirt savienojumu:

Savienojuma noņemšana:

Noraidot savienojumu:

Konkrētu savienojumu atļaušana vai bloķēšana

Konfigurējot savas politikas ķēdes, tagad varat konfigurēt iptables, lai atļautu vai bloķētu konkrētas adreses, adreses diapazonus un porti. Šajos piemēros mēs iestatīsim savienojumus ar DROP, bet jūs varat to pārslēgt uz PIEKRĪT vai Atteikties, atkarībā no jūsu vajadzībām un kā jūs konfigurējāt savas politikas ķēdes.

Piezīme: šajos piemēros mēs izmantosim iptables -A pievienot esošās ķēdes noteikumus. iptables sākas saraksta augšdaļā un iet cauri katram noteikumam, līdz tas atrod to, kas atbilst tam. Ja jums ir nepieciešams ievietot noteikumu virs cita, varat to izmantot iptables -I [ķēde] [skaitlis] lai norādītu numuru, kas tam vajadzētu būt sarakstā.

Savienojumi no vienas IP adreses

Šis piemērs parāda, kā bloķēt visus savienojumus no IP adreses 10.10.10.10.

iptables-INPUT -s 10.10.10.10 -j DROP

Savienojumi no virknes IP adreses

Šis piemērs parāda, kā bloķēt visas IP adreses 10.10.10.0/24 tīkla diapazonā. Lai norādītu IP adrešu diapazonu, varat izmantot tīkla skalošanu vai standarta slīpsvītru.

iptables-INPUT -s 10.10.10.0/24 -j DROP

vai

iptables-INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Savienojumi ar konkrētu ostu

Šis piemērs parāda, kā bloķēt SSH savienojumus no 10.10.10.10.

iptables-INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Jūs varat aizstāt "ssh" ar jebkuru protokolu vai porta numuru. The -p tcp daļa no koda pasaka iptables, kāda veida savienojums protokols izmanto. Ja jūs bloķējāt protokolu, kas izmanto UDP, nevis TCP, tad -p udp vietā būtu nepieciešams.

Šis piemērs parāda, kā bloķēt SSH savienojumus no jebkura IP adreses.

iptables-INPUT -p tcp --dport ssh -j DROP

Savienojuma valstis

Kā minēts iepriekš, daudziem protokoliem ir nepieciešama divpusēja saziņa. Piemēram, ja jūs vēlaties atļaut SSH savienojumus ar savu sistēmu, ievades un izvades ķēdēm būs vajadzīgs viņiem pievienots noteikums. Bet, ja jūs tikai vēlaties, lai SSH, kas nonāk jūsu sistēmā, tiktu atļauta? Vai produkta ķēdē netiks pievienots noteikums, kas pieļauj arī izejošos SSH mēģinājumus?

Tas ir, ja savienojumu valstis nāk, kas dod jums iespējas, ka jums ir nepieciešams, lai atļautu divvirzienu saziņu, bet tikai ļauj vienvirziena savienojumus izveidot. Apskatiet šo piemēru, ja SSH savienojumi no 10.10.10.10 ir atļauti, bet SSH savienojumi uz 10.10.10.10 nav. Tomēr sistēmai ir atļauts nosūtīt informāciju, izmantojot SSH, tik ilgi, kamēr sesija jau ir izveidota, un SSH komunikācija ir iespējama starp šiem diviem saimniekiem.

iptables-INPUT -p tcp --dport ssh -s 10.10.10.10 -m valsts - valsts NEW, IESTĀDE -j PIEŅEMT

iptables-OUTPUT -p tcp --portport 22 -d 10.10.10.10 -m valsts - valsts izveidota -j PIEŅEMT

Saglabāt izmaiņas

Izmaiņas, ko veicat iptables noteikumiem, tiks pārtrauktas nākamajā reizē, kad iptables pakalpojums tiks atsākts, ja vien jūs neizpildīsit komandu, lai saglabātu izmaiņas. Šī komanda var atšķirties atkarībā no jūsu izplatīšanas:

Ubuntu:

sudo / sbin / iptables-save

Red Hat / CentOS:

/ sbin / service iptables saglabāt

Or

/etc/init.d/iptables saglabājiet

Citas komandas

Uzskaitiet pašlaik konfigurētos iptables noteikumus:

iptables-l

Pievienojot -v opcija sniegs jums pakešu un baitu informāciju un pievienosit -n uzskaitīs visu skaitliski. Citiem vārdiem sakot - resursdatora nosaukumi, protokoli un tīkli tiek uzskaitīti kā cipari.

Lai notīrītu visus pašlaik konfigurētos noteikumus, jūs varat izdot flush komandu.

iptables -F