Nem IPTables-konfiguration og eksempler på Ubuntu 16.04

Introduktion

iptableser et kraftfuldt værktøj, der bruges til at konfigurere Linux-kernens integrerede firewall. Det kommer forudinstalleret på de fleste Ubuntu-distributioner, men hvis du bruger en tilpasset Ubuntu-version eller kører inde i en container, bliver du højst sandsynligt nødt til at installere den manuelt.

sudo apt-get install iptables iptables-persistent

Hvis du efter installationen bliver spurgt, om du vil gemme dine nuværende regler, er det ligegyldigt i øjeblikket, fordi du vil fjerne eller oprette nye regler senere.

Tips

Du kan bruge netcatkommandoen (på en anden computer end din server) til at teste, hvilke af dine porte der er åbne eller lukkede.

nc -z -w5 -v SERVER_IP PORT
  • nc er netcat-kommandoen.
  • -z bare send en pakke uden nyttelast.
  • -w5 vent op til 5 sekunder på et svar.
  • -v verbose tilstand.
  • Erstat SERVER_IPmed din serveradresse.
  • Erstat PORTmed den port, du vil teste, hvis den er åben (f.eks. 22).

På din server kan du bruge netstatkommandoen til at se, hvilke porte der i øjeblikket lytter efter forbindelser.

sudo netstat -tulpn

Bemærk: Selvom det netstater praktisk at finde de porte, du vil arbejde med, bør du være opmærksom på de programmer, du i øjeblikket har installeret på din server, og hvilke porte, der lytter, du behøver ikke at tillade hver port, du finder i netstatoutputtet .

Syntaks

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTføj en regel til INPUTkæden, en kæde er en gruppe regler, dem vi bruger mest i denne guide vil være INPUT, OUTPUTog PREROUTING.
  • -p tcpindstillet tcpsom den protokol, som denne regel vil gælde for, kan du også bruge andre protokoller såsom udp, icmpeller all.
  • -m tcpbruge tcpmodulet. iptablesunderstøtter yderligere funktioner via moduler, hvoraf nogle allerede er forudinstalleret med iptablesog andre, såsom geoipmodulet.
  • --dport 22kommandoerne, der starter med, --angiver yderligere muligheder for det tidligere brugte modul, i dette tilfælde vil vi fortælle tcpmodulet kun at gælde for port 22.
  • -m geoipbruge geoipmodulet. Det vil begrænse pakker på landebasis (mere information i trin 5).
  • --src-cc PEfortæl geoipmodulet at begrænse de indgående pakker til dem, der kommer fra Peru. For flere landekoder søg efter ISO 3166 country codespå internettet.
  • -j ACCEPTdet -jargument fortæller iptableshvad de skal gøre, hvis en pakke matcher de begrænsninger angivet i de tidligere argumenter. I dette tilfælde vil det ACCEPTdisse pakker, andre muligheder er REJECT, DROPog mere. Du kan finde flere muligheder ved at søge iptables jump targetspå internettet.

1. Grundlæggende

Liste over alle regler.

sudo iptables -L

Liste over alle kommandoer, der blev brugt til at oprette de aktuelt brugte regler, nyttige til at redigere eller slette regler.

sudo iptables -S

For at slette en bestemt regel skal du vælge en regel fra sudo iptables -Sog erstatte 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

Liste alle nummererede regler i INPUTkæden.

sudo iptables -L INPUT --line-numbers

Slet en nummereret regel.

sudo iptables -D INPUT 2

At rydde alle regler.

sudo iptables -F

Advarsel: du kan miste forbindelsen, hvis du er forbundet med SSH .

Ryd kun regler i OUTPUTkæden.

sudo iptables -F OUTPUT

2. Opret indledende regler

Tillad SSHeth0interface

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 anvende regel til en specifik grænseflade, for at tillade fra enhver grænseflade at fjerne denne kommando.

For at begrænse indgående pakker til en specifik 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 angiver et IP/undernet, der skal tillades forbindelser fra.

Indstil standard kæderegler.

Advarsel: Før du fortsætter, skal du sørge for, at du har anvendt de korrekte SSH-regler, hvis du arbejder på en ekstern server .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP afviser alle indgående pakker (dvs. ingen vil være i stand til at oprette forbindelse til dine kørende servere såsom Apache, SQL osv.).
  • -P FORWARD DROP nægter alle videresendte pakker (dvs. når du bruger dit system som router).
  • -P OUTPUT ACCEPTtillader alle udgående pakker (dvs. når du udfører en HTTPanmodning).

Tillad al trafik på loopback-grænsefladen ( anbefales ).

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

3. Gør reglerne vedvarende

Gem de nuværende iptablesregler.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Hvis du kører inde i en container, vil netfilter-persistentkommandoen højst sandsynligt ikke virke, så du skal omkonfigurere iptables-persistentpakken.

sudo dpkg-reconfigure iptables-persistent

4. Tillad udgående forbindelser

Tillad DNS-forespørgsler.

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

Brug statemodulet til at tillade RELATEDog ESTABLISHEDudgående pakker.

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

Tillad de ønskede porte; i dette tilfælde HTTPporte.

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

Flere porte, du måske vil bruge.

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

Bemærk: Hvis du vil tillade apt-get, kan det være nødvendigt at tillade FTPogHTTPS .

Tillad kun den returnerede trafik for RELATEDog allerede ESTABLISHEDforbindelser ( anbefales, da tovejskommunikation nogle gange er påkrævet).

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

Tillad ping-anmodninger udefra.

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 trafik på eth0port 2200til 10.0.3.21:22(nyttigt hvis du vil eksponere en SSH-server, der kører inde 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 logger ind på din server ved hjælp af SSH, vil der blive oprettet en vedvarende forbindelse (dvs. ingen nye forbindelser, selvom du er tilsluttet i mere end 1 time). Hvis du fejler og prøver at logge på igen, oprettes en ny forbindelse. Dette vil blokere kontinuerlige SSH-loginforsøg ved at begrænse nye forbindelser i timen.

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 anmodninger på port 443til port 4430(nyttigt hvis du vil binde til port 443uden 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 netværksgrænsefladen.
  • -m geoip landeblokmodul (se trin 5).

Advarsel: Brug ikke lo, OS vil kassere alle pakker, der er omdirigeret til loopback-grænsefladen .

5. Tillad eller bloker hele lande

5.1 Installer xtables-addons

Du kan installere xtables-addonsmodulet ved hjælp af forskellige metoder, du er velkommen til at bruge den installationsmetode, der fungerer bedst for dig.

  • Installer ved hjælp af apt-get.

    sudo apt-get install xtables-addons-common
    
  • Installer ved hjælp af 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
    

Byg en "lande"-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

Genstart dit system.

sudo reboot

Efter den xtables-addonser blevet installeret, efter den første genstart, kør, depmodellers vil landeblokering ikke fungere korrekt (dette er kun påkrævet for første gang).

sudo depmod 

Opret et script på for /etc/cron.monthly/geoip-updaterat opdatere geoipdatabasen månedligt.

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

Gør /etc/cron.monthly/geoip-updatereksekverbar.

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

5.2 Eksempel på regler

_Bemærk: Hvis du modtager en iptables: No chain/target/match by that namefejl, når du forsøger at anvende en geoipregel, er det muligt, at den xtables-addonsikke er installeret korrekt. Prøv en anden installationsmetode.

Bloker alle indgående pakker fra Kina, Hong Kong, Rusland og Korea.

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

Tillad indgående pakker på port 80fra alle steder undtagen landene ovenfor.

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

Tillad kun indgående pakker på ens3grænsefladen på port 22fra Peru (vælg gerne den landekode, du vil acceptere pakker fra, for eksempel UStil USA).

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

Tillad kun indgående pakker på port 443fra Peru.

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

Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Installer Lets Encrypt SSL på One-Click WordPress App

Installer Lets Encrypt SSL på One-Click WordPress App

Introduktion Lets Encrypt er en certifikatmyndighedstjeneste, der tilbyder gratis TLS/SSL-certifikater. Installationsprocessen forenkles af Certbot,

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer

Tre gratis serverkontrolpaneler (hurtig installation)

Tre gratis serverkontrolpaneler (hurtig installation)

1. Virtualmin/Webmin Virtualmin er et kraftfuldt og fleksibelt webhotel kontrolpanel til Linux og UNIX systemer baseret på den velkendte Open Source web-base

Opsætning af en Yii-applikation på Ubuntu 14.04

Opsætning af en Yii-applikation på Ubuntu 14.04

Yii er en PHP-ramme, der giver dig mulighed for at udvikle applikationer hurtigere og nemmere. Installation af Yii på Ubuntu er ligetil, da du vil lære nøjagtigt

Brug af skærm på Ubuntu 14.04

Brug af skærm på Ubuntu 14.04

Screen er et program, der tillader flere terminalsessioner inden for et vindue. Dette giver dig mulighed for at simulere flere terminalvinduer, hvor det ma

Brug af Logrotate til at administrere logfiler

Brug af Logrotate til at administrere logfiler

Introduktion Logrotate er et Linux-værktøj, der forenkler administrationen af ​​logfiler. Det kører typisk en gang om dagen via et cron-job og administrerer logbasen

Konfiguration af statisk netværk og IPv6 på CentOS 7

Konfiguration af statisk netværk og IPv6 på CentOS 7

VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Sådan installeres Gitea på Ubuntu 18.04

Sådan installeres Gitea på Ubuntu 18.04

Bruger du et andet system? Gitea er et alternativt open source, selv-hostet versionskontrolsystem drevet af git. Gitea er skrevet på Golang og er

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hvad er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheden udnyttes gennem, hvordan Linux behandler kode. Det giver en uprivilegeret bruger mulighed for at gai

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Det kan være farligt at have kun én bruger, som er root. Så lad os ordne det. Vultr giver os friheden til at gøre som vi vil med vores brugere og vores servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et letvægtsalternativ til phpMyAdmin. Til sammenligning er dens samlede pakkestørrelse 400KB mod 4,2 MB phpMyAdmin. I modsætning til phpMyAdmin, som

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 lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere