Jednostavna konfiguracija IPTables i primjeri na Ubuntu 16.04

Uvod

iptablesje moćan alat koji se koristi za konfiguriranje integriranog vatrozida Linux kernela. Dolazi unaprijed instaliran na većini Ubuntu distribucija, no ako koristite prilagođenu verziju Ubuntua ili radite unutar spremnika, najvjerojatnije ćete ga morati ručno instalirati.

sudo apt-get install iptables iptables-persistent

Nakon instalacije, ako budete upitani želite li spremiti vaša trenutna pravila, to trenutno nije važno jer ćete kasnije ukloniti ili kreirati nova pravila.

Savjeti

Možete koristiti netcatnaredbu (na drugom računalu od vašeg poslužitelja) za testiranje koji su vaši portovi otvoreni ili zatvoreni.

nc -z -w5 -v SERVER_IP PORT
  • nc je naredba netcat.
  • -z samo pošaljite paket bez tereta.
  • -w5 pričekajte do 5 sekundi za odgovor.
  • -v opširni način.
  • Zamijenite SERVER_IPadresom vašeg poslužitelja.
  • Zamijenite PORTportom koji želite testirati je li otvoren (npr 22. ).

Na vašem poslužitelju možete koristiti netstatnaredbu da vidite koji portovi trenutno osluškuju veze.

sudo netstat -tulpn

Napomena: Iako netstatje zgodno pronaći portove s kojima želite raditi, trebali biste biti svjesni aplikacija koje ste trenutno instalirali na vašem poslužitelju i koji portovi slušaju, ne morate dopustiti svaki port koji pronađete u netstatizlazu .

Sintaksa

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTdodajte pravilo u INPUTlanac, lanac je skupina pravila, ona koja najčešće koristimo u ovom vodiču bit će INPUT, OUTPUTi PREROUTING.
  • -p tcpako postavite tcpkao protokol na koji će se ovo pravilo primjenjivati, možete koristiti i druge protokole kao što su udp, icmpili all.
  • -m tcpkoristiti tcpmodul. iptablespodržava dodatne značajke putem modula, od kojih su neki već unaprijed instalirani, iptablesa drugi, kao što je geoipmodul.
  • --dport 22naredbe koje počinju s --označavaju dodatne opcije za prethodno korišteni modul, u ovom slučaju ćemo reći tcpmodulu da se primjenjuje samo na port 22.
  • -m geoipkoristiti geoipmodul. To će ograničiti pakete na temelju zemlje (više informacija u koraku 5).
  • --src-cc PErecite geoipmodulu da ograniči dolazne pakete na one koji dolaze iz Perua. Za više kodova zemalja potražite ISO 3166 country codesna internetu.
  • -j ACCEPT-jargument govori iptablesšto učiniti ako paket odgovara ograničenjima navedenim u prethodnim argumentima. U ovom slučaju to će biti ACCEPTti paketi, druge opcije su REJECT, DROPi više. Više opcija možete pronaći pretraživanjem iptables jump targetsna internetu.

1. Osnove

Navedite sva pravila.

sudo iptables -L

Navedite sve naredbe koje su korištene za stvaranje trenutno korištenih pravila, korisnih za uređivanje ili brisanje pravila.

sudo iptables -S

Za brisanje određenog pravila odaberite pravilo iz sudo iptables -Si zamijenite ga -As -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Navedite sva numerirana pravila u INPUTlancu.

sudo iptables -L INPUT --line-numbers

Izbrišite pravilo s brojevima.

sudo iptables -D INPUT 2

Za brisanje svih pravila.

sudo iptables -F

Upozorenje: možete izgubiti vezu ako ste povezani putem SSH-a .

Očistite samo pravila u OUTPUTlancu.

sudo iptables -F OUTPUT

2. Napravite početna pravila

Dopusti SSHna eth0sučelju

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 primijeniti pravilo na određeno sučelje, kako bi se omogućilo uklanjanje ove naredbe s bilo kojeg sučelja.

Za ograničavanje dolaznih paketa na određeni IP (tj 10.0.3.1/32.).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 specificira IP/podmrežu iz koje se dopuštaju veze.

Postavite zadana pravila lanca.

Upozorenje: prije nego što nastavite, provjerite jeste li primijenili ispravna SSH pravila ako radite na udaljenom poslužitelju .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP odbija sve dolazne pakete (tj. nitko se neće moći spojiti na vaše pokrenute poslužitelje kao što su Apache, SQL, itd.).
  • -P FORWARD DROP odbija sve proslijeđene pakete (tj. kada koristite svoj sustav kao usmjerivač).
  • -P OUTPUT ACCEPTdopušta sve odlazne pakete (tj. kada izvršite HTTPzahtjev).

Dopusti sav promet na sučelju povratne petlje ( preporučeno ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Neka pravila budu postojana

Spremite trenutna iptablespravila.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Ako radite unutar spremnika, netfilter-persistentnaredba najvjerojatnije neće raditi, pa morate ponovno konfigurirati iptables-persistentpaket.

sudo dpkg-reconfigure iptables-persistent

4. Dopustite odlazne veze

Dopusti DNS upite.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Koristite statemodul za dopuštanje RELATEDi ESTABLISHEDodlazne pakete.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Dopustite željene portove; u ovom slučaju HTTPportovi.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Više portova koje biste mogli upotrijebiti.

  • FTP: tcp na portu 21
  • HTTPS: tcp na portu 443
  • DHCP: udp na portu 67
  • NTP: udp na portu 123

Napomena: Ako želite dopustiti apt-get, možda će biti potrebno dopustiti FTPiHTTPS .

Dopusti vraćeni promet samo za RELATEDi već ESTABLISHEDveze ( preporučeno jer je ponekad potrebna dvosmjerna komunikacija).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Ostala korisna pravila

Dopusti ping zahtjeve izvana.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Prosljeđivanje prometa na eth0portu 2200na 10.0.3.21:22(korisno ako želite izložiti SSH poslužitelj koji radi unutar spremnika).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Ako se uspješno prijavite na svoj poslužitelj korištenjem SSH-a, stvorit će se trajna veza (tj. nema novih veza čak i ako ste povezani dulje od 1 sata). Ako ne uspijete i pokušate se ponovno prijaviti, stvorit će se nova veza. To će blokirati kontinuirane pokušaje SSH prijave ograničavanjem novih veza po satu.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Preusmjerite sve zahtjeve s porta 443na port 4430(korisno ako se želite vezati na port 443bez root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 mrežno sučelje.
  • -m geoip modul državnog bloka (pogledajte korak 5).

Upozorenje: Nemojte koristiti lo, OS će odbaciti sve pakete preusmjerene na sučelje povratne petlje .

5. Dopustite ili blokirajte cijele zemlje

5.1 Instalirajte xtables-addons

xtables-addonsModul možete instalirati raznim metodama, slobodno koristite metodu instalacije koja vam najbolje odgovara.

  • Instalirajte pomoću apt-get.

    sudo apt-get install xtables-addons-common
    
  • Instalirajte pomoću module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Instalirajte iz izvora.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Izgradite bazu podataka o "zemljama".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Ponovno pokrenite sustav.

sudo reboot

Nakon što xtables-addonsje uspješno instaliran, nakon prvog ponovnog pokretanja, pokrenite, depmodinače blokiranje zemlje neće raditi ispravno (ovo je potrebno samo prvi put).

sudo depmod 

Napravite skriptu na adresi /etc/cron.monthly/geoip-updaterza ažuriranje geoipbaze podataka mjesečno.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Napravite /etc/cron.monthly/geoip-updaterizvršnu.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Primjeri pravila

_Napomena: Ako primate iptables: No chain/target/match by that namepogrešku kada pokušavate primijeniti geoippravilo, moguće je da xtables-addonsnije ispravno instalirano. Pokušajte s drugom metodom instalacije.

Blokirajte sve dolazne pakete iz Kine, Hong Konga, Rusije i Koreje.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Dopustite dolazne pakete na portu 80sa svih strana osim iz gore navedenih zemalja.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Dopustite dolazne pakete na ens3sučelju na portu 22samo iz Perua (slobodno odaberite pozivni broj zemlje iz koje želite prihvatiti pakete, na primjer, USza Sjedinjene Države).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Dopusti dolazne pakete na portu 443samo iz Perua.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT

Instalirajte Plesk na CentOS 7

Instalirajte Plesk na CentOS 7

Korištenje drugog sustava? Plesk je vlasnička upravljačka ploča web hosta koja omogućuje korisnicima da administriraju svoje osobne i/ili klijentske web stranice, baze podataka

Postavite Cacti na Debian Jessie

Postavite Cacti na Debian Jessie

Uvod Cacti je alat otvorenog koda za praćenje i crtanje koji se u potpunosti temelji na RRD podacima. Putem Cactusa možete pratiti gotovo sve vrste uređaja

Instalirajte Lets Encrypt SSL na WordPress aplikaciju jednim klikom

Instalirajte Lets Encrypt SSL na WordPress aplikaciju jednim klikom

Uvod Lets Encrypt je usluga za izdavanje certifikata koja nudi besplatne TLS/SSL certifikate. Certbot pojednostavljuje proces instalacije,

Kako postaviti Tekkit Classic Server na Ubuntu 16.10

Kako postaviti Tekkit Classic Server na Ubuntu 16.10

Korištenje drugog sustava? Što je Tekkit Classic? Tekkit Classic je modpack za igru ​​koju svi znaju i vole; Minecraft. Sadrži neke od ver

Postavite iRedMail na Debian Wheezy

Postavite iRedMail na Debian Wheezy

Korištenje drugog sustava? Ovaj vodič će vam pokazati kako instalirati grupni softver iRedMail na novu instalaciju Debian Wheezyja. Trebali biste koristiti servis

Izrada Jekyll bloga na Ubuntu 16.04

Izrada Jekyll bloga na Ubuntu 16.04

Korištenje drugog sustava? Jekyll je izvrsna alternativa WordPressu za bloganje ili dijeljenje sadržaja. Ne zahtijeva nikakve baze podataka i vrlo je jednostavan i

Kako postaviti nenadzirane nadogradnje na Debianu 9 (protežu)

Kako postaviti nenadzirane nadogradnje na Debianu 9 (protežu)

Korištenje drugog sustava? Ako kupite Debian poslužitelj, uvijek biste trebali imati najnovije sigurnosne zakrpe i ažuriranja, bez obzira spavate li ili ne

Kako instalirati i konfigurirati PHP 7.0 ili PHP 7.1 na Ubuntu 16.04

Kako instalirati i konfigurirati PHP 7.0 ili PHP 7.1 na Ubuntu 16.04

PHP i povezani paketi najčešće su korištene komponente prilikom postavljanja web poslužitelja. U ovom članku ćemo naučiti kako postaviti PHP 7.0 ili PHP 7.1 o

Kako instalirati Squid proxy na CentOS

Kako instalirati Squid proxy na CentOS

Squid je popularan besplatni program za Linux koji vam omogućuje stvaranje web proxyja za prosljeđivanje. U ovom vodiču vidjet ćete kako instalirati Squid na CentOS da vas preokrene

Kako instalirati Lighttpd (LLMP Stack) na CentOS 6

Kako instalirati Lighttpd (LLMP Stack) na CentOS 6

Uvod Lighttpd je fork Apachea koji ima za cilj da bude puno manje intenzivan prema resursima. Lagan je, otuda mu i naziv, i prilično je jednostavan za korištenje. Instaliraj

Korištenje zaslona na Ubuntu 14.04

Korištenje zaslona na Ubuntu 14.04

Screen je aplikacija koja omogućuje višestruko korištenje terminalskih sesija unutar jednog prozora. To vam omogućuje da simulirate više prozora terminala gdje je ma

Postavite svoj vlastiti DNS poslužitelj na Debian/Ubuntu

Postavite svoj vlastiti DNS poslužitelj na Debian/Ubuntu

Ovaj vodič objašnjava kako postaviti DNS poslužitelj pomoću Bind9 na Debianu ili Ubuntu. U cijelom članku u skladu s tim zamijenite your-domain-name.com. Na th

Konfiguriranje statičkog umrežavanja i IPv6 na CentOS 7

Konfiguriranje statičkog umrežavanja i IPv6 na CentOS 7

VULTR je nedavno napravio promjene na svojoj strani i sada bi sve trebalo raditi dobro iz kutije s omogućenim NetworkManagerom. Želite li onemogućiti

Promjena Icinga2 za korištenje modela Master/Client na CentOS 6 ili CentOS 7

Promjena Icinga2 za korištenje modela Master/Client na CentOS 6 ili CentOS 7

Icinga2 je moćan sustav nadzora, a kada se koristi u modelu master-client, može zamijeniti potrebu za provjerama praćenja na temelju NRPE. Glavni klijent

Postavite Red5 Media Server na Ubuntu 16.04

Postavite Red5 Media Server na Ubuntu 16.04

Korištenje drugog sustava? Red5 je medijski poslužitelj otvorenog koda implementiran u Javi koji vam omogućuje pokretanje Flash višekorisničkih aplikacija kao što je live streamin

Prevedite i instalirajte Nginx s modulom PageSpeed ​​na Debian 8

Prevedite i instalirajte Nginx s modulom PageSpeed ​​na Debian 8

U ovom članku ćemo vidjeti kako sastaviti i instalirati Nginx mainline iz službenih izvora Nginxa s modulom PageSpeed, koji vam omogućuje da

Kako instalirati Vanilla Forum na Ubuntu 16.04

Kako instalirati Vanilla Forum na Ubuntu 16.04

Korištenje drugog sustava? Vanilla forum je aplikacija otvorenog koda napisana u PHP-u. Potpuno je prilagodljiv, jednostavan za korištenje i podržava eksterne

Kako instalirati Kanboard na Ubuntu 18.04 LTS

Kako instalirati Kanboard na Ubuntu 18.04 LTS

Korištenje drugog sustava? Uvod Kanboard je besplatni softver za upravljanje projektima otvorenog koda koji je dizajniran za olakšavanje i vizualizaciju

Kako instalirati Kanboard na Debian 9

Kako instalirati Kanboard na Debian 9

Korištenje drugog sustava? Uvod Kanboard je besplatni softver za upravljanje projektima otvorenog koda koji je dizajniran za olakšavanje i vizualizaciju

Kako instalirati Giteu na Debian 9

Kako instalirati Giteu na Debian 9

Korištenje drugog sustava? Gitea je alternativni sustav za kontrolu verzija otvorenog koda s vlastitim hostom koji pokreće Git. Gitea je napisana na Golangu i jest

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više