Fotografija tvrtke ezioman.
O iptablesu
iptables je uslužni program vatrozida naredbenog retka koji koristi lance pravila kako bi dopustio ili blokirao promet. Kada se veza pokuša uspostaviti na vašem sustavu, iptables traži pravilo na popisu kako bi se podudarala s njim. Ako ga ne pronađe, pribavlja zadanu radnju.
iptables gotovo uvijek dolazi unaprijed instaliran na bilo kojoj Linux distribuciji. Da biste ga ažurirali / instalirali, samo preuzmite paket iptables:
sudo apt-get install iptables
Postoje GUI alternative iptables poput Firestarter, ali iptables nije stvarno toliko teško nakon što imate nekoliko naredbi dolje. Želite biti izuzetno oprezni prilikom konfiguriranja pravila iptables, osobito ako ste SSH'd na poslužitelju, jer jedna pogrešna naredba može vas trajno zaključati sve dok se ne ručno fiksira na fizičkom stroju.
Vrste lanaca
iptables koristi tri različita lanca: ulaz, naprijed i izlaz.
Ulazni - Ovaj lanac koristi se za kontrolu ponašanja za dolazne veze. Na primjer, ako korisnik pokuša SSH u vaš PC / poslužitelj, iptables će pokušati podudarati IP adresu i priključak s pravilom u ulaznom lancu.
Naprijed - Ovaj lanac koristi se za dolazne veze koje se zapravo ne isporučuju lokalno. Razmislite o usmjerivaču - podaci se uvijek šalju na njega, ali rijetko zapravo su predviđeni za sam router; podaci se upućuju samo na cilj. Ako ne radite neku vrstu usmjeravanja, NATinga ili nešto drugo na vašem sustavu koji zahtijeva prosljeđivanje, nećete ni koristiti ovaj lanac.
Postoji jedan siguran način da provjerite da li vaš sustav koristi / treba naprijed lanac.
iptables -L -v
Izlaz - Ovaj lanac koristi se za odlazne veze. Na primjer, ako pokušate pingati howtogeek.com, iptables će provjeriti svoj izlazni lanac kako bi vidio koja su pravila vezana za ping i howtogeek.com prije donošenja odluke o dopuštenju ili odbijanju pokušaja spajanja.
Upozorenje
Iako pinging vanjski domaćin izgleda kao nešto što bi samo trebalo proći kroz izlazni lanac, imajte na umu da će za vraćanje podataka ulazni lanac također biti korišten. Kada koristite iptables za zaključavanje vašeg sustava, imajte na umu da će mnogi protokoli zahtijevati dvosmjernu komunikaciju, tako da će ulazni i izlazni lanci morati biti ispravno konfigurirani. SSH je zajednički protokol koji ljudi zaboravljaju dopustiti na oba lanca.
Ponašanje zadanog lanca pravila
Prije nego što odete i konfigurirate određena pravila, odlučite odlučiti što želite da zadani ponašanje tri lanca bude. Drugim riječima, što želite učiniti iptables ako veza ne podudara s nekim postojećim pravilima?
Da biste vidjeli koji su vaši lanci pravila trenutačno konfigurirani za neusporediv promet, pokrenite
iptables -L
naredba.
Više puta nego ne, poželite da vaš sustav prema zadanim postavkama prihvaća veze. Ako prethodno niste promijenili pravila lanca pravila, ta bi postavka već trebala biti konfigurirana. U svakom slučaju, ovdje je naredba za prihvaćanje veza prema zadanim postavkama:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
Ako propustite pravilo prihvaćanja, tada možete koristiti iptables da biste poništili određene IP adrese ili brojeve porta, a nastavili prihvaćati sve ostale veze. Doći ćemo do tih naredbi za minutu.
Ako biste radije poništili sve veze i ručno odredili one koje želite omogućiti za povezivanje, trebali biste promijeniti propuštenu pravila svojih lancera. To će vjerojatno biti korisno samo za poslužitelje koji sadrže osjetljive podatke i samo se s njima povezuju iste IP adrese.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Odgovori specifični za vezu
S vašim zadanim postavkama lanca konfiguriran, možete početi dodavati pravila za iptables tako da zna što učiniti kada naiđe na vezu od ili na određenu IP adresu ili priključak. U ovom vodiču idemo na tri najosnovnija i najčešće korištena "odgovora".
Prihvatiti - Dopusti vezu.
Pad - Spustite vezu, ponašajte se kao da se nikada nije dogodilo. To je najbolje ako ne želite da izvor shvati da vaš sustav postoji.
Odbiti - Ne dopuštajte vezu, ali vratite pogrešku. To je najbolje ako ne želite da se neki izvor poveže s vašim sustavom, ali želite da znaju da vam je vatrozid blokirao.
Najbolji način da se pokaže razlika između ova tri pravila je pokazati kako izgleda kada PC pokuša pingati Linux stroj s iptables konfiguriranim za svaku od tih postavki.
Dopuštanje veze:
Dopuštanje ili blokiranje specifičnih veza
Pomoću konfiguracije lanaca pravila sada možete konfigurirati iptables da biste dopustili ili blokirali određene adrese, raspone adresa i priključke. U tim ćemo primjerima postaviti veze
DROP
ali ih možete prebaciti
ACCEPT
ili
REJECT
ovisno o vašim potrebama i kako ste konfigurirali lanac pravila.
Napomena: U ovim primjerima koristit ćemo
iptables -A
dodati pravila postojećem lancu. iptables počinje na vrhu popisa i prolazi kroz svako pravilo dok ne pronađe onaj koji odgovara. Ako trebate umetnuti pravilo iznad drugog, možete upotrijebiti
iptables -I [chain] [number]
da biste odredili broj koji bi trebao biti na popisu.
Povezivanje s jedne IP adrese
Ovaj primjer pokazuje kako blokirati sve veze s IP adrese 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Povezivanje s nizom IP adresa
Ovaj primjer pokazuje kako blokirati sve IP adrese u rasponu mreže 10.10.10.0/24. Možete koristiti mrežnu masku ili standardnu zapletnu oznaku kako biste odredili raspon IP adresa.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
ili
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Povezivanje s određenim priključkom
Ovaj primjer pokazuje kako blokirati SSH veze od 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
Možete zamijeniti "ssh" s bilo kojim protokolom ili brojem porta.
-p tcp
dio koda govori iptablesu kakvu vezu protokol koristi. Ako ste blokirali protokol koji koristi UDP umjesto TCP, tada
-p udp
umjesto toga.
Ovaj primjer pokazuje kako blokirati SSH veze s bilo koje IP adrese.
iptables -A INPUT -p tcp --dport ssh -j DROP
Države veze
Kao što smo ranije spomenuli, puno protokola zahtijeva dvosmjernu komunikaciju. Na primjer, ako želite omogućiti SSH veze na vaš sustav, ulazni i izlazni lanci trebaju dodati pravilo. Ali, što ako samo želite da SSH koji ulazi u svoj sustav bude dopušten? Neće li dodati pravilo izlaznog lanca također dopustiti izlazne SSH pokušaja?
Tamo dolaze države veze, koje vam pružaju mogućnost da trebate dopustiti dvosmjernu komunikaciju, ali dopuštaju samo uspostavljanje veza. Pogledajte ovaj primjer, gdje su SSH veze OD 10.10.10.10 dopuštene, ali SSH veze NE 10.10.10.10 nisu. Međutim, sustavu je dozvoljeno slanje natrag informacija preko SSH sve dok je sjednica već uspostavljena, što omogućuje SSH komunikaciju između ta dva domaćina.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT
Spremanje promjena
Promjene koje napravite na vašim pravilima iptables bit će izbrisane sljedeći put kada se servis iptables ponovno pokrene, osim ako ne izvršite naredbu za spremanje promjena. Ova naredba može se razlikovati ovisno o vašoj distribuciji:
Ubuntu:
sudo /sbin/iptables-save
Red Hat / CentOS:
/sbin/service iptables save
Ili
/etc/init.d/iptables save
Ostale naredbe
Popis trenutno konfiguriranih pravila za iptables:
iptables -L
Dodavanje
-v
opcija će vam dati informacije o paketu i bajtu i dodati
-n
popis će sve numerički. Drugim riječima - nazivi hosta, protokoli i mreže navedeni su kao brojevi.
Da biste izbrisali sva trenutačno konfigurirana pravila, možete izdati naredbu za ispiranje.
iptables -F