iptables

Iptables voor beginners

Iptables voor beginners
Iptables is in feite de belangrijkste firewall die wordt gebruikt voor Linux-systemen, er zijn alternatieven zoals nftables, maar Iptables blijft de belangrijkste, het is zeer flexibel door directe opdrachten van de gebruiker te accepteren, u kunt indien nodig regels laden en verwijderen om het beleid van uw firewall te vergroten nauwkeurigheid.

Eigenlijk hoef je niet eens de syntaxis van Iptable te kennen om het te gebruiken, je hebt grafische tools zoals Firewall Builder die het leerproces overbodig kunnen maken, maar als de wens is om de Linux-beheerkennis te vergroten, is Iptables de eerste stap om te leren hoe je praktisch beheer beveiliging onder Linux en vereenvoudig zelfs het beheer van CISCO- of Fortigate-beveiligingsapparaten en dergelijke.

Met Iptables kunt u in principe uw systeem instrueren om een ​​verbinding te accepteren, te weigeren of door te sturen, afhankelijk van de gekozen parameters, bijvoorbeeld om alle verbindingen naar X-poort om te leiden naar een ander IP-adres, om alle verbindingen te blokkeren die afkomstig zijn van een specifiek IP, IP-bereik of naar accepteer alle verbindingen die afkomstig zijn van IP-adressen op de witte lijst en vele andere functies.

In deze tutorial leren we hoe we een webserver kunnen beschermen, hoe we verbindingen naar interne IP-adressen van ons LAN kunnen doorsturen en hoe we specifieke diensten kunnen aanbieden aan alleen op de witte lijst geplaatste IP-adressen.

Iptables installeren

Om iptables op Debian/Ubuntu-systemen te installeren, voert u gewoon " apt update && apt install iptables" uit als root of met "sudo" als prefix zoals in de volgende afbeelding.

HTTP- en HTTPS-poorten openen

Laten we allereerst alle ACCEPT-beleidsregels toevoegen, beginnend bij de webserver.

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

Voer "iptables -L" uit om onze toegevoegde regels te zien

Waar:

Iptables = roept het programma op
-EEN = voegt een regel toe
INVOER = inkomend verkeer
-p = protocol
-ddport = bestemmingspoort
-j = specificeer het "doel", het doel is het soort beleid: ACCEPT, DROP, QUEUE of RETURN.

In het voorbeeld van de afbeelding hierboven vertellen we Iptables om een ​​regel toe te voegen voor inkomend verkeer via het TCP-protocol en poorten 80 en 443 om te worden geaccepteerd.

We kunnen de opdracht wijzigen om de verbinding alleen van een specifiek IP te accepteren door de parameter "-zo”:

iptables -A INGANG -s 127.0.0.1 -p tcp --dport 80 -j ACCEPTEREN

Waar:

zo = bron
Iptables -L = geeft alle door iptables geladen regels weer
Iptables -L -v = hetzelfde met breedsprakigheid.

We kunnen onze firewall ook testen met nmap:

Zoals we kunnen zien, is poort 80 open volgens zowel "iptables -L" als Nmap.

Opmerking: voor meer informatie over het gebruik van Nmap kun je onze tutorial erover lezen

Uw server beschermen

#Open HTTP- en HTTPS-services.
iptables -A INPUT -p tcp --dport 80 -j ACCEPTEREN
iptables -A INPUT -p tcp --dport 443 -j ACCEPTEREN
#Open SSH-poortservice
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NIEUW, GEVESTIGD -j ACCEPTEREN

Waar de nieuwe parameters zijn:

-m = betekent "match" en wordt gebruikt om Iptable's extensies zoals conntrack aan te roepen, wat geen deel uitmaakt van de kernfuncties van iptable.

conntrack = Maakt het mogelijk om informatie over verbindingen te volgen, zoals specifieke adressen of in dit geval de status van de verbinding. Dit moet zorgvuldig worden gebruikt, omdat veel regels om servers te beschermen tegen sommige aanvallen conntrack gebruiken, terwijl het gebruik ervan wordt beperkt door de hardware en een dergelijke beperking kan worden gebruikt om de bronnen van de server te overbelasten.

-ctstate = bepaalt de status van de regel die overeenkomt, de mogelijke statussen zijn: NIEUW, GEVESTIGD, GERELATEERD en ONGELDIG.

#Bescherm uw SSH-service tegen brute force-aanvallen door alleen een specifiek IP-adres toe te staan
om toegang te krijgen tot iptables -A INPUT -p tcp -s X.X.X.X --dport 22 -m conntrack --ctstate NIEUW,
GEVESTIGD -j ACCEPTEREN
#Bescherm uw SSH-service tegen brute force-aanvallen door verbindingspogingen te beperken
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NIEUW -j 22-test
Iptables -A 22-test -m recent --name VERBINDINGEN --set --mask 255.255.255.255 --rbron
Iptables -A 22-test -m recent --name VERBINDINGEN --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitcount 3 -j 22-protection
Iptables -A 22-test -j ACCEPTEREN
Iptables -A 22-bescherming -j DROP

Waar:
In de eerste regel zegt onze regel “-m conntrack -ctstate NIEUW” wat betekent dat als de verbinding nieuw is, doorgaat naar de regel "22-test".

De tweede regel zegt pakketten netmask 255.255.255.255 worden genoemd als AANSLUITINGEN .

De derde regel zegt als a AANSLUITINGEN het lijkt meer dan 3 keer binnen 30 seconden, de firewall blijft de ketting toepassen 22-bescherming. De vierde regel zegt als de AANSLUITINGEN was niet meer dan 3 keer binnen 30 seconden het kan worden geaccepteerd.
Vijfde regel, die behoort tot de 22-bescherming ketting zegt te laten vallen AANSLUITINGEN als lijken meer dan 3 keer binnen 30 seconden.

Om nu te eindigen, laten we alle niet-geaccepteerde verbindingen weigeren en laten we al het uitgaande verkeer toestaan:

iptables -P UITVOER ACCEPTEREN
iptables -P INPUT DROP

Waar -P de keten van het doelwit betekent, onthoud dat het doelwit het beleid, ACCEPT, DROP, QUEUE of RETURN is. In dit geval zeggen we dat het standaardbeleid voor uitgaand verkeer is om te accepteren en het standaardbeleid voor inkomend verkeer is om te weigeren, tenzij we iets anders hebben gespecificeerd in eerdere regels. Dit is een zeer eenvoudige firewall die geen regels bevat voor veel aanvallen, voor leerdoeleinden en niet voor productie, aan het einde van het artikel voeg ik een firewall toe die ik voor productie op een server heb gebruikt, het heeft opmerkingen die elke regel uitleggen.

EEN VERBINDING MET EEN SPECIFIEKE POORT DOORSTUREN NAAR EEN SPECIFIEK IP-ADRES

Dit is ook erg handig voor desktopgebruikers die een verbinding willen maken via een specifiek apparaat, het kan zelfs nuttig zijn voor gamers, meestal doen we het vanuit de instellingen van de router, maar laten we aannemen dat het routeringsapparaat Iptables gebruikt.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT --naar-bestemming
Y.Y.Y.Y:80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.X.X.X

De bovenstaande regels roepen NAT (Network Address Translation) aan om verbindingen via protocol TCP op te geven, naar het adres X.X.X.X en poort 8080 worden omgeleid naar adres Y.Y.Y.Y, poort 80. De tweede regel geeft aan dat antwoorden naar het bronadres moeten worden verzonden (X.X.X.X). We kunnen deze regels gebruiken om toegang tot een IP-camera toe te staan, online gamen met externe netwerken mogelijk te maken, enz.

Deze tutorial was bedoeld om beginners kennis te laten maken met Iptables en legt slechts een beperkt aantal basisfuncties uit. Hieronder ziet u een voorbeeld van een goed geplande firewall die werd gebruikt voor een productieserver, van enkele van de regels die we al zagen tot complexere regels om onder andere DDoS-aanvallen te voorkomen.
De volgende tutorial zal gaan over snuiven binnen lokale netwerken, maar in een volgende tutorial zal ik enkele van de regels uitleggen die op de firewall hieronder worden toegepast.  Bedankt voor het volgen van LinuxHint.com, blijf ons volgen voor toekomstige updates over Iptables en Linux in het algemeen.

Bonus: voorbeeld van productiefirewall

iptables -F
#---- Beveiliging tegen slechte foutmelding inschakelen
/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses inschakelen
#---- Filtering omgekeerd pad inschakelen. Veiliger, maar breekt asymmetrische routering en/of IPSEC
schakel /proc/sys/net/ipv4/conf/*/rp_filter in
#---- Accepteer geen door de bron gerouteerde pakketten. Bronroutering wordt zelden gebruikt voor legitieme
doeleinden uitschakelen /proc/sys/net/ipv4/conf/*/accept_source_route
#---- Schakel acceptatie van ICMP-omleidingen uit, die kan worden gebruikt om uw routeringstabellen te wijzigen
/proc/sys/net/ipv4/conf/*/accept_redirects uitschakelen
#---- Aangezien we geen omleidingen accepteren, moet u ook geen omleidingsberichten verzenden
/proc/sys/net/ipv4/conf/*/send_redirects uitschakelen
#---- Pakketten met onmogelijke adressen negeren
/proc/sys/net/ipv4/conf/*/log_martians uitschakelen
#---- Bescherm tegen het verpakken van volgnummers en help met het meten van de retourtijd
schakel /proc/sys/net/ipv4/tcp_timestamps in
#---- Hulp tegen syn-flood DoS- of DDoS-aanvallen met bepaalde initialen
TCP-volgnummers activeren /proc/sys/net/ipv4/tcp_syncookies
#---- Gebruik selectieve ACK die kan worden gebruikt om aan te geven dat specifieke pakketten ontbreken
/proc/sys/net/ipv4/tcp_sack uitschakelen
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 kunnen we beginnen met het toevoegen van geselecteerde services aan ons firewallfilter. Het eerste zoiets
is een localhost-interface iptables -A INPUT -i lo -j ACCEPT
#We hebben de firewall verteld om alle inkomende pakketten met tcp-vlaggen GEEN te nemen en ze gewoon te DROPEN.
iptables -A INPUT -p tcp ! -m conntrack --ctstate NIEUW -j DROP
#We vertellen iptables om (-A) een regel toe te voegen aan de inkomende (INPUT) - SSH werkt op poort 50683
in plaats daarvan 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPTEREN
iptables -A INPUT -p tcp -m tcp -s specifiek ip --dport 50683 -j ACCEPTEREN
iptables -A INPUT -p tcp -m tcp -s specifiek ip --dport 50683 -j ACCEPTEREN
iptables -A INPUT -p tcp -m tcp -s specifiek ip --dport 50683 -j ACCEPTEREN
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NIEUW -m recent --set
--naam SSH -j ACCEPTEREN
iptables -A INPUT -p tcp --dport 50683 -m recent --update --seconds 60 --hitcount 4
--rttl --name SSH -j LOG --log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m recent --update --seconds 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NIEUW -m recent --set
--naam SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NIEUW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NIEUW -m recent --update
--seconden 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NIEUW -m recent --update
--seconden 60 --hitcount 4 --rttl --name SSH -j DROP
#Nu sta ik imap,en smtp toe.
-A INPUT -p tcp --dport 25 -j ACCEPT
# Staat pop- en pops-verbindingen toe
-A INPUT -p tcp --dport 110 -j ACCEPTEREN
-EEN INPUT -p tcp --dport 995 -j ACCEPTEREN
############ IMAP & IMAPS ############
-A INPUT -p tcp --dport 143 -j ACCEPT
-EEN INPUT -p tcp --dport 993 -j ACCEPT
########### MYSQL ###################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPTEREN
########## R1soft CDP-systeem ###############
iptables -A INPUT -p tcp -m tcp -s specifiek ip --dport 1167 -j ACCEPTEREN
############### uitgaand ###################
iptables -I INPUT -m conntrack --ctstate VASTGESTELD, GERELATEERD -j ACCEPTEREN
### Doorlopend toestaan, inkomend blokkeren niet gedefinieerd ###
iptables -P UITVOER ACCEPTEREN
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee /etc/iptables.test.reglement
iptables-herstel < /etc/iptables.test.rules
#service iptables herstart
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...
Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...