Enkel IPTables-konfigurasjon og eksempler på Ubuntu 16.04

Introduksjon

iptableser et kraftig verktøy som brukes til å konfigurere Linux-kjernens integrerte brannmur. Den kommer forhåndsinstallert på de fleste Ubuntu-distribusjoner, men hvis du bruker en tilpasset Ubuntu-versjon eller kjører i en beholder, må du sannsynligvis installere den manuelt.

sudo apt-get install iptables iptables-persistent

Etter installasjonen, hvis du blir spurt om du vil lagre gjeldende regler, spiller det ingen rolle for øyeblikket fordi du kommer til å fjerne eller opprette nye regler senere.

Tips

Du kan bruke netcatkommandoen (på en annen datamaskin enn serveren din) for å teste hvilke av portene dine som er åpne eller lukkede.

nc -z -w5 -v SERVER_IP PORT
  • nc er netcat-kommandoen.
  • -z bare send en pakke uten nyttelast.
  • -w5 vent opptil 5 sekunder på svar.
  • -v utførlig modus.
  • Erstatt SERVER_IPmed serveradressen din.
  • Erstatt PORTmed porten du vil teste hvis den er åpen (f.eks. 22).

På serveren din kan du bruke netstatkommandoen til å se hvilke porter som lytter etter tilkoblinger.

sudo netstat -tulpn

Merk: Selv om det netstater praktisk å finne portene du vil jobbe med, bør du være klar over applikasjonene du for øyeblikket har installert på serveren din og hvilke porter som lytter, du trenger ikke tillate hver port du finner i netstatutdataene .

Syntaks

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTlegg til en regel i INPUTkjeden, en kjede er en gruppe regler, de vi bruker mest på denne veiledningen vil være INPUT, OUTPUTog PREROUTING.
  • -p tcpsatt tcpsom protokollen denne regelen skal gjelde for, kan du også bruke andre protokoller som udp, icmpeller all.
  • -m tcpbruke tcpmodulen. iptablesstøtter tilleggsfunksjoner via moduler, hvorav noen allerede er forhåndsinstallert iptablesog andre, for eksempel geoipmodulen.
  • --dport 22kommandoene som starter med --indikerer tilleggsalternativer for den tidligere brukte modulen, i dette tilfellet vil vi fortelle tcpmodulen å bare gjelde for port 22.
  • -m geoipbruke geoipmodulen. Det vil begrense pakker på landsbasis (mer informasjon på trinn 5).
  • --src-cc PEbe geoipmodulen om å begrense de innkommende pakkene til de som kommer fra Peru. For flere landskoder søk etter ISO 3166 country codespå internett.
  • -j ACCEPTdet -jargumentet forteller iptableshva du skal gjøre hvis en pakke passer de begrensninger som er angitt i de foregående argumenter. I dette tilfellet vil det være ACCEPTdisse pakkene, andre alternativer er REJECT, DROPog mer. Du kan finne flere alternativer ved å søke iptables jump targetspå internett.

1. Grunnleggende

List opp alle regler.

sudo iptables -L

Liste alle kommandoer som ble brukt til å lage reglene som brukes for øyeblikket, nyttige for å redigere eller slette regler.

sudo iptables -S

For å slette en spesifikk regel, velg en regel fra sudo iptables -Sog erstatt den -Amed -D.

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

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

List opp alle nummererte regler i INPUTkjeden.

sudo iptables -L INPUT --line-numbers

Slett en nummerert regel.

sudo iptables -D INPUT 2

For å fjerne alle regler.

sudo iptables -F

Advarsel: du kan miste forbindelsen hvis du er koblet til med SSH .

Tøm kun regler i OUTPUTkjeden.

sudo iptables -F OUTPUT

2. Lag innledende regler

Tillat SSHeth0grensesnittet

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 bruk regel til et spesifikt grensesnitt, for å tillate fra et hvilket som helst grensesnitt å fjerne denne kommandoen.

For å begrense innkommende pakker til en spesifikk IP (dvs. 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 spesifiserer en IP/subnett for å tillate tilkoblinger fra.

Angi standard kjederegler.

Advarsel: før du fortsetter, sørg for at du har brukt de riktige SSH-reglene hvis du arbeider på en ekstern server .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP nekter alle innkommende pakker (dvs. ingen vil kunne koble seg til dine kjørende servere som Apache, SQL osv.).
  • -P FORWARD DROP nekter alle videresendte pakker (dvs. når du bruker systemet som ruter).
  • -P OUTPUT ACCEPTtillater alle utgående pakker (dvs. når du utfører en HTTPforespørsel).

Tillat all trafikk på loopback-grensesnitt ( anbefales ).

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

3. Gjør regler vedvarende

Lagre gjeldende iptablesregler.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Hvis du kjører inne i en container, vil netfilter-persistentkommandoen mest sannsynlig ikke fungere, så du må konfigurere iptables-persistentpakken på nytt.

sudo dpkg-reconfigure iptables-persistent

4. Tillat utgående tilkoblinger

Tillat DNS-spørringer.

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

Bruk statemodulen til å tillate RELATEDog ESTABLISHEDutgående pakker.

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

Tillat de ønskede portene; i dette tilfellet, HTTPporter.

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

Flere porter du kanskje vil bruke.

  • FTP: tcp ved port 21
  • HTTPS: tcp ved port 443
  • DHCP: utp ved port 67
  • NTP: udp ved port 123

Merk: Hvis du vil tillate apt-get, kan det være nødvendig å tillate FTPogHTTPS .

Tillat returnert trafikk kun for RELATEDog allerede ESTABLISHEDtilkoblinger ( anbefales fordi noen ganger toveiskommunikasjon er nødvendig).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Andre nyttige regler

Tillat ping-forespørsler utenfra.

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

Videresend trafikk på eth0port 2200til 10.0.3.21:22(nyttig hvis du ønsker å eksponere en SSH-server som kjører inne i en container).

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

Hvis du lykkes med å logge på serveren din ved å bruke SSH, vil en vedvarende tilkobling opprettes (dvs. ingen nye tilkoblinger selv om du er tilkoblet i mer enn 1 time). Hvis du mislykkes og prøver å logge på igjen, opprettes en ny tilkobling. Dette vil blokkere kontinuerlige SSH-påloggingsforsøk ved å begrense nye tilkoblinger per time.

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

Omdiriger alle forespørsler på port 443til port 4430(nyttig hvis du vil binde til port 443uten 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 nettverksgrensesnittet.
  • -m geoip landsblokkmodul (se trinn 5).

Advarsel: Ikke bruk lo, OS vil forkaste alle pakker som er omdirigert til loopback-grensesnittet .

5. Tillat eller blokker hele land

5.1 Installer xtables-addons

Du kan installere xtables-addonsmodulen ved hjelp av ulike metoder, bruk gjerne den installasjonsmetoden som passer best for deg.

  • Installer ved hjelp av apt-get.

    sudo apt-get install xtables-addons-common
    
  • Installer ved hjelp av module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Installer fra kilden.

    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
    

Bygg en "land"-database.

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

Start systemet på nytt.

sudo reboot

Etter at den xtables-addonshar blitt installert, etter den første omstarten, kjør depmodellers vil landsblokkering ikke fungere ordentlig (dette er bare nødvendig for første gang).

sudo depmod 

Lag et skript på for /etc/cron.monthly/geoip-updaterå oppdatere geoipdatabasen månedlig.

#!/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

Gjør /etc/cron.monthly/geoip-updaterkjørbar.

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

5.2 Eksempelregler

_Merk: Hvis du får en iptables: No chain/target/match by that namefeilmelding når du prøver å bruke en geoipregel, er det mulig at den xtables-addonsikke er riktig installert. Prøv en annen installasjonsmetode.

Blokker alle innkommende pakker fra Kina, Hong Kong, Russland og Korea.

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

Tillat innkommende pakker på port 80fra alle steder bortsett fra landene ovenfor.

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

Tillat innkommende pakker på ens3grensesnittet på port 22kun fra Peru (velg gjerne landskoden du vil godta pakker fra, for eksempel USfor USA).

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

Tillat innkommende pakker på port 443kun fra Peru.

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

Sett opp Cacti på Debian Jessie

Sett opp Cacti på Debian Jessie

Introduksjon Cacti er et åpen kildekode overvåkings- og grafverktøy som er fullt basert på RRD-data. Gjennom Cacti kan du overvåke nesten alle typer enheter

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Introduksjon Lets Encrypt er en sertifikatmyndighetstjeneste som tilbyr gratis TLS/SSL-sertifikater. Installasjonsprosessen forenkles av Certbot,

Sett opp iRedMail på Debian Wheezy

Sett opp iRedMail på Debian Wheezy

Bruker du et annet system? Denne opplæringen viser deg hvordan du installerer gruppevaren iRedMail på en ny installasjon av Debian Wheezy. Du bør bruke en serve

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

1. Virtualmin/Webmin Virtualmin er et kraftig og fleksibelt kontrollpanel for webhotell for Linux- og UNIX-systemer basert på den velkjente Open Source-nettbasen

Bruker skjermen på Ubuntu 14.04

Bruker skjermen på Ubuntu 14.04

Skjerm er et program som tillater flere bruk av terminalsesjoner i ett vindu. Dette lar deg simulere flere terminalvinduer der det ma

Bruke Logrotate til å administrere loggfiler

Bruke Logrotate til å administrere loggfiler

Introduksjon Logrotate er et Linux-verktøy som forenkler administrasjonen av loggfiler. Den kjører vanligvis en gang om dagen via en cron-jobb, og administrerer loggbasen

Installere Docker CE på Ubuntu 16.04

Installere Docker CE på Ubuntu 16.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hva er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheten utnyttes gjennom hvordan Linux behandler kode. Det gjør det mulig for en uprivilegert bruker å gai

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Å ha bare én bruker, som er root, kan være farlig. Så la oss fikse det. Vultr gir oss friheten til å gjøre som vi vil med våre brukere og våre servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et lett alternativ til phpMyAdmin. Til sammenligning er dens totale pakkestørrelse 400 KB, mot 4,2 MB med phpMyAdmin. I motsetning til phpMyAdmin, som

Slik installerer du GoAccess på Ubuntu 16.04

Slik installerer du GoAccess på Ubuntu 16.04

Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Denne artikkelen er en del av en todelt serie om installasjon og konfigurering av Nagios på Ubuntu 14.04. Del 1: Nagios Server Del 2: Oversikt over ekstern vert Nagio

Sett opp tidssone og NTP på Ubuntu 14.04

Sett opp tidssone og NTP på Ubuntu 14.04

Vultr-servere kan ikke distribueres med tidssonen/datoen/klokkeslettet du trenger på serveren din. Heldigvis kan vi manuelt stille inn tidssonen for å forhindre problemer

Distribuer en Meteor-applikasjon på Ubuntu

Distribuer en Meteor-applikasjon på Ubuntu

Denne artikkelen vil lede deg gjennom distribusjon av Meteor-appen din til en Vultr VPS som kjører Ubuntu 14.04. Det kan også fungere på andre Linux-distribusjoner (forsøk a

Arbeide med Linux-funksjoner

Arbeide med Linux-funksjoner

Introduksjon Linux-funksjoner er spesielle attributter i Linux-kjernen som gir prosesser og binære kjørbare spesifikke rettigheter som er normale

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Noen arkitekturer med høy tilgjengelighet krever en flytende IP-adresse. Denne funksjonaliteten er tilgjengelig på Vultr-plattformen når privat nettverk har bee

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Innledning Enkelte scenarier krever at du oppretter brukere med lese- og skrivetilgang til en enkelt katalog kun via FTP. Denne artikkelen vil vise deg hvordan t

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Node.js-applikasjoner er populære for deres evne til å skalere. Å kjøre flere samtidige prosesser på flere servere gir lavere ventetid og større oppetid

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Bruker du et annet system? LibreNMS er et fullverdig åpen kildekode-nettverksovervåkingssystem. Den bruker SNMP for å hente data fra forskjellige enheter. En variant

Stopp DHCP fra å endre resolv.conf

Stopp DHCP fra å endre resolv.conf

For DHCP-brukere kan det hende du trenger å redigere /etc/resolv.conf for å bruke andre navneservere. Deretter, etter en periode (eller etter en omstart av systemet)

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer