iptables

Iptables for begyndere

Iptables for begyndere
Iptables er dybest set den vigtigste firewall, der bruges til Linux-systemer, der er alternativer som nftables, men Iptables forbliver den vigtigste, det er meget fleksibelt ved at acceptere direkte kommandoer fra brugeren, du kan indlæse og aflaste regler efter behov for at øge din firewalls politikker nøjagtighed.

Faktisk behøver du ikke engang at kende Iptables syntaks for at bruge den, du har grafiske værktøjer som Firewall Builder, som kan gøre læringsprocessen unødvendig, men hvis ønsket er at øge Linux-administrationsviden, er Iptables det første skridt til at lære, hvordan man praktisk administrere sikkerhed under Linux og endda lette administration af CISCO eller Fortigate sikkerhedsenheder og lignende.

Iptables giver dig grundlæggende mulighed for at instruere dit system om at acceptere, afvise eller videresende en forbindelse afhængigt af valgte parametre, for eksempel at omdirigere alle forbindelser til X-port til en anden IP-adresse, at blokere alle forbindelser, der kommer fra et specifikt IP, IP-område eller til accepter alle forbindelser, der kommer fra hvidlistede IP-adresser blandt mange andre funktioner.

I denne vejledning lærer vi, hvordan man beskytter en webserver, hvordan man videresender forbindelser til interne IP-adresser fra vores LAN, og hvordan man kun tilbyder specifikke tjenester til godkendte IP-adresser.

Installation af Iptables

For at installere iptables på Debian / Ubuntu-systemer skal du bare køre "apt update && apt install iptables" som root eller med "sudo" som præfiks som i det følgende billede.

Åbning af HTTP- og HTTPS-porte

Først og fremmest kan vi tilføje alle ACCEPT-politikker, der starter med webserveren.

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

For at se vores regler tilføjet kør “iptables -L”

Hvor:

Iptables = kalder programmet
-EN = tilføjer en regel
INDGANG = indgående trafik
-s = protokol
-ddport = destinationsport
-j = angiv “målet”, målet er typen af ​​politik: ACCEPT, DROP, KØ eller RETUR.

Så på eksemplet af billedet ovenfor fortæller vi Iptables at tilføje en regel for indgående trafik gennem TCP-protokol og porte 80 og 443, der skal accepteres.

Vi kan ændre kommandoen for kun at acceptere forbindelsen fra en bestemt IP ved at tilføje parameteren “-s”:

iptables -A INPUT -s 127.0.0.1-p tcp --dport 80 -j ACCEPT

Hvor:

s = kilde
Iptables -L = viser alle iptables-indlæste regler
Iptables -L -v = det samme med bredhed.

Vi kan også teste vores firewall med nmap:

Som vi kan se, er port 80 åben både i henhold til “iptables -L” og Nmap.

Bemærk: For mere information om Nmap-brug kan du læse vores vejledning om det

Beskyttelse af din server

# Åbn HTTP- og HTTPS-tjenester.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Åbn SSH Port Service
iptables -A INPUT -p tcp --dport 22 -m tilslutning --ctstate NY, OPRETTET -j ACCEPT

Hvor de nye parametre er:

-m = betyder "match" og bruges til at kalde Iptables udvidelser som conntrack, som ikke er en del af iptables kernefunktioner.

tilslutning = Gør det muligt at spore information om forbindelser som specifikke adresser eller i dette tilfælde forbindelsens tilstand. Dette skal bruges omhyggeligt, da mange regler for at forsvare servere fra nogle angreb bruger conntrack, mens det er begrænset af hardwaren, og en sådan begrænsning kan bruges til at overbelaste serverens ressourcer.

-ctstate = bestemmer tilstanden for den regel, der skal matche, de mulige tilstande er: NY, OPRETTET, RELATERET og UGYLDIG.

# Beskyt din SSH-tjeneste mod brutale kraftangreb ved kun at tillade en bestemt IP
for at få adgang til iptables -A INPUT -p tcp -s X.x.x.X --dport 22 -m tilslutning --ctstate NY,
ETABLERET -j ACCEPT
# Beskyt din SSH-tjeneste mod brutale kraftangreb ved at begrænse forbindelsesforsøg
Iptables -A INPUT -p tcp -m tcp --port 22 -m tilslutning --ctstate NY -j 22-test
Iptables -A 22-test -m nylig --navn FORBINDELSER - sæt --maske 255.255.255.255 - kilde
Iptables -A 22-test -m nylig --navn FORBINDELSER --check --mask 255.255.255.255
--rkilde --sekunder 30 --hitcount 3 -j 22-beskyttelse
Iptables -A 22-test -j ACCEPT
Iptables -A 22-beskyttelse -j DROP

Hvor:
I den første linie siger vores regel “-m forbindelsesbane -stat tilstand NY ” hvilket betyder, at hvis forbindelsen er ny, så gå videre til reglen "22-test".

Den anden linje siger pakker netmaske 255.255.255.255 er navngivet som FORBINDELSER .

Den tredje linje siger, hvis en FORBINDELSER er synes mere end 3 gange inden for 30 sekunder, fortsætter firewallen med at anvende kæden 22-beskyttelse. Den fjerde linje siger, om FORBINDELSER synes ikke at være over 3 gange inden for 30 sekunder, det kan accepteres.
Femte linje, som hører til 22-beskyttelse kæde siger at falde FORBINDELSER hvis synes mere end 3 gange inden for 30 sekunder.

Lad os nu afslutte alle ikke-accepterede forbindelser, og lad os tillade al udgående trafik:

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

Hvor -P betyder målets kæde, husk at målet er politikken, ACCEPT, DROP, KØ eller RETUR. I dette tilfælde siger vi, at standardpolitikken for udgående trafik er at acceptere, og standardpolitikken for indgående trafik er at afvise, medmindre vi specificerede noget andet i tidligere regler. Dette er en meget grundlæggende firewall, som ikke indeholder regler for mange angreb, til læringsformål og ikke til produktion. I slutningen af ​​artiklen vedhæfter jeg en firewall, jeg brugte til produktion på en server, den har kommentarer, der forklarer hver regel.

Videresendelse af en forbindelse til en specifik havn til en specifik IP-adresse

Dette er meget nyttigt også for desktopbrugere, der ønsker at oprette en forbindelse gennem en bestemt enhed, det kan være nyttigt selv for spillere, normalt gør vi det fra routerens indstillinger, men lad os antage, at routerenheden kører Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.x.x.X --dport 8080 -j DNAT - til destination
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --til kilde X.x.x.x

Ovenstående regler påkalder NAT (Network Address Translation) for at specificere forbindelser via protokol TCP til adressen X.x.x.X og port 8080 omdirigeres til adresse Y.Y.Y.Y, port 80. Den anden regel specificerer svar skal sendes til kildeadressen (X.x.x.X). Vi kan bruge disse regler til at give adgang til et IP-kamera, for at muliggøre onlinespil med eksterne netværk osv.

Denne tutorial var beregnet til at introducere begyndere til Iptables og forklarer kun et begrænset antal grundlæggende funktioner. Nedenfor kan du se en prøve af en velplanlagt firewall, der blev brugt til en produktionsserver, den inkluderer fra nogle af de regler, vi allerede har set, til mere komplekse regler for at forhindre DDoS-angreb blandt andre.
Den næste tutorial vil snuse i lokale netværk, men på en næste tutorial forklarer jeg nogle af de regler, der gælder for firewallen nedenfor.  Tak fordi du fulgte LinuxHint.com, fortsæt med at følge os for fremtidige opdateringer om Iptables og Linux generelt.

Bonus: Prøve på produktions firewall

iptables -F
# ---- Aktiver dårlig fejlmeddelelsesbeskyttelse
aktiver / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Aktiver filtrering af omvendt sti. Sikrere, men bryder asymetrisk routing og / eller IPSEC
aktiver / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Accepter ikke kildestyrede pakker. Kildedirigering bruges sjældent til legitim
deaktiver / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Deaktiver accept af ICMP-omdirigering, som kan bruges til at ændre dine routingtabeller
deaktiver / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Da vi ikke accepterer omdirigeringer, skal du heller ikke sende omdirigere beskeder
deaktiver / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Ignorer pakker med umulige adresser
deaktiver / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Beskyt mod indpakning af sekvensnumre og hjælp rundmåling af tid
aktiver / proc / sys / net / ipv4 / tcp_timestamps
# ---- Hjælp mod syn-flood DoS eller DDoS angreb ved hjælp af bestemte valg af initial
TCP-sekvensnumre aktiverer / proc / sys / net / ipv4 / tcp_syncookies
# ---- Brug selektiv ACK, som kan bruges til at angive, at specifikke pakker mangler
deaktiver / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
#Nu kan vi begynde at tilføje udvalgte tjenester til vores firewallfilter. Den første sådan ting
er en localhost interface iptables -A INPUT -i lo -j ACCEPT
#Vi bad firewallen om at tage alle indkommende pakker med tcp-flag INGEN og bare SLIP dem.
iptables -A INPUT -p tcp ! -m forbindelsesbane --ctstate NY -j DROP
#Vi beder iptables om at tilføje (-A) en regel til det indgående (INPUT) - SSH fungerer på port 50683
i stedet for 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifik ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifik ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifik ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NY -m nylig - sæt
--navn SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m nylig --opdatering - sekunder 60 --hitcount 4
--rttl --navn SSH -j LOG --log-præfiks "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m nylig --opdatering - sekunder 60 --hitcount 4
--rttl --navn SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NY -m nylig - sæt
--navn SSH
iptables -A INPUT -p tcp --dport 50683 -m konntrack --ctstate NY -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NY -m nylig --opdatering
--sekunder 60 --hitcount 4 --rttl --navn SSH -j ULOG --ulog-præfiks SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NY -m nylig --opdatering
--sekunder 60 --hitcount 4 --rttl --navn SSH -j DROP
#Nu tillader jeg imap og smtp.
-EN INPUT -p tcp --dport 25 -j ACCEPT
# Tillader pop- og pop-forbindelser
-EN INPUT -p tcp --dport 110 -j ACCEPT
-EN INPUT -p tcp --dport 995 -j ACCEPT
############ IMAP & IMAPS ##############
-EN INPUT -p tcp --dport 143 -j ACCEPT
-EN INPUT -p tcp --dport 993 -j ACCEPT
########### MYSQL ######################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## R1soft CDP System #################
iptables -A INPUT -p tcp -m tcp -s specifik ip --dport 1167 -j ACCEPT
################ udgående #######################
iptables -I INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
### Tillad løbende, bloker indgående ikke defineret ###
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -L -n
iptables-gem | tee / etc / iptables.prøve.regler
iptables-gendannelse < /etc/iptables.test.rules
#service iptables genstart
Installer nyeste Dolphin Emulator til Gamecube & Wii på Linux
Dolphin Emulator giver dig mulighed for at spille dine valgte Gamecube & Wii-spil på Linux Personal Computers (PC). Som en frit tilgængelig og open s...
Sådan bruges GameConqueror Cheat Engine i Linux
Artiklen dækker en vejledning om brug af GameConqueror-snydemotoren i Linux. Mange brugere, der spiller spil på Windows, bruger ofte "Cheat Engine" -a...
Bedste spilkonsolemulatorer til Linux
Denne artikel viser en liste over populære spilkonsolemuleringssoftware, der er tilgængelig til Linux. Emulation er et softwarekompatibilitetslag, der...