Skräddarsydda iptables-dumpar!

Trädvy Permalänk
Medlem
Plats
Australien
Registrerad
Sep 2004

Skräddarsydda iptables-dumpar!

Tja tja

Tyckte att det skulle bli roligt att sätta upp en server med brandvägg och konfa den med iptables. Har läst http://www.faqs.org/docs/iptables som är en oehört bra guide för såväl nybörjare som erfarna. Men innan jag sätter mig ner för att börja skriva from scratch tänkte jag det skulle vara lärofullt att kika lite på era iptables regler - sådana ni själva har skrivit och gärna med kommentarer så man förstår lite av varför ni skrivit på det sättet (kanske på ställen som är mer klyddiga då).

Vet att det finns sådana att ladda hem från nätet men det är alltid kul att ta del av andra "vanliga användares" idéer och påhittigheter än de tråkiga professionella som inte har ett enda fel i sina brandväggar och som är så paranoida att dom har lika många regler i brandväggen som antalet mynt dom får i lön

Skulle också helst vilja att ni postar med iptables-kommando syntax d.v.s. med samma uppläggning som man faktiskt skriver när man sätter in reglen t.e.x:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Detta för att nybörjarna (jag då bl.a.) kan lära mig av hur man skriver.

Annars tackar jag på förhand.

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002

Mitt script är förhoppningsvis så pass säkert att jag törs visa upp det.

http://www.68k.se/martin/firewall.txt

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2002

Såhär ser min /etc/rc.d/rc.firewall ut (har kommenterat lite). Jag utgick från ett ganska minimalt firewall-script med NAT, slet bort lite saker jag inte tyckte jag behövde, och lade till lite annat.

#!/bin/bash HOME_IF=eth1 WORLD_IF=eth0 HOME_NET=192.168.0.0/24 #Stoppa in lite kernelmoduler som kan behövas modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp #Tillåt allt iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P OUTPUT ACCEPT #Spola köerna (ifall de finns sen tidigare) iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X #Blockera diverse protokoll från att smita ut # SMB / Windows filesharing iptables -A FORWARD -p tcp --sport 137:139 -j DROP iptables -A FORWARD -p udp --sport 137:139 -j DROP # NFS Mount Service (TCP/UDP 635) iptables -A FORWARD -p tcp --sport 635 -j DROP iptables -A FORWARD -p udp --sport 635 -j DROP # NFS (TCP/UDP 2049) iptables -A FORWARD -p tcp --sport 2049 -j DROP iptables -A FORWARD -p udp --sport 2049 -j DROP # Portmapper (TCP/UDP 111) iptables -A FORWARD -p tcp --sport 111 -j DROP iptables -A FORWARD -p udp --sport 111 -j DROP # Blockera saker från att komma in från omvärlden iptables -A INPUT -i $WORLD_IF -p tcp --dport 139 -j REJECT --reject-with tcp-reset iptables -A INPUT -i $WORLD_IF -p tcp --dport 445 -j REJECT --reject-with tcp-reset #Diverse DNAT (forward av en massa portar till en annan burk. Både TCP och UDP. iptables -t nat -A PREROUTING -i $WORLD_IF -p tcp --dport 4000:4500 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p udp --dport 4000:4500 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p tcp --dport 1214 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p udp --dport 1214 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p tcp --dport 6881:6890 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p udp --dport 6881:6890 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p tcp --dport 56881:56999 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -i $WORLD_IF -p udp --dport 56881:56999 -j DNAT --to 192.168.0.2 #SNAT-maskeraden för de andra burkarnas välbefinnande iptables -t nat -A POSTROUTING -o $WORLD_IF -j MASQUERADE # Se till så att forwardingen är på echo 1 >/proc/sys/net/ipv4/ip_forward

Min dator är tuffare än din.

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Dec 2001

Inte någon kod men ett sätt att skydda sig mer är att sätta att burken inte själv får prata med omvärlden, detta stoppar om någon lyckats hacka apache/php:n och vill dra hem något fult perl-script

Lite kod som inte jag själv skrivit men som _borde_ blocka ddos attacker.

iptables -N DDoS # Define custom chain for possible DDoS attacks iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] " iptables -A DDoS -j DROP

Trädvy Permalänk
Medlem
Registrerad
Nov 2004

Mitt script är mycket enkelt:

#!/bin/bash iptables -F iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j REJECT iptables -A INPUT -p tcp --dport 9176 -j ACCEPT iptables -A INPUT -p udp --dport 9176 -j ACCEPT iptables -A INPUT -p tcp --dport 4000 -j ACCEPT iptables -A INPUT -p tcp --dport 40000:40009 -j ACCEPT iptables -A INPUT -j LOG --log-prefix " INPUT_CHAIN "

4000 och 40000-40009 är för en ftp-server (för att passive-mode ska funka för klienterna). Jag får väl erkänna att jag glömt vad jag behövde port 9176 till... oh well... Kanske dags för ny revision av scriptet.
Jag sätter reglerna genom att köra scriptet och därefter köra "/etc/init.d/iptables save" (Gentoo).

Trädvy Permalänk
Medlem
Plats
Stockholm, Täby
Registrerad
Jul 2001
Citat:

Ursprungligen inskrivet av peppelorum
Inte någon kod men ett sätt att skydda sig mer är att sätta att burken inte själv får prata med omvärlden, detta stoppar om någon lyckats hacka apache/php:n och vill dra hem något fult perl-script

Lite kod som inte jag själv skrivit men som _borde_ blocka ddos attacker.

iptables -N DDoS # Define custom chain for possible DDoS attacks iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] " iptables -A DDoS -j DROP

En grej till som du bör använda dig av om du är orolig för DDoS är "TCP syncookies". Det är bara att aktivera i kärnan och aktivera via proc...

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Dec 2001

Dags att bygga på lite..

Blocka ssh efter tre felaktiga inloggningsförsök.

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 60 --hitcount 3 --rttl -j DROP iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

Då får de tre försök, sedan blockas ipadressen i 60s. Det gjorde åtminstone mina loggar mycket kortare.

Skrivet av Svanteson i http://forum.sweclockers.com/showthread.php?s=&postid=5876210...

Trädvy Permalänk
Medlem
Registrerad
Jul 2001
Citat:

Ursprungligen inskrivet av peppelorum
Lite kod som inte jag själv skrivit men som _borde_ blocka ddos attacker.

Själva målet med en DoS-attack är ju att den ska hindra andra legitima anslutningar, vilket den kommer att göra så småningom även om du kastar paketen direkt. Men jag ska inte vara kinkig

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Mar 2003

IPTABLES="/sbin/iptables" # Flush rules $IPTABLES -F $IPTABLES -X # Set standard policies $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT # Drop invalid packets $IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A INPUT -m state --state INVALID -j DROP $IPTABLES -A OUTPUT -m state --state INVALID -j DROP # Drop all 127.0.0.1 packets not going through lo $IPTABLES -A INPUT -i ! lo -s 127.0.0.1 -j DROP $IPTABLES -A INPUT -i ! lo -d 127.0.0.1 -j DROP $IPTABLES -A OUTPUT -o ! lo -s 127.0.0.1 -j DROP $IPTABLES -A OUTPUT -o ! lo -d 127.0.0.1 -j DROP # Accept ICMP echo-request $IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT # Accept loopback $IPTABLES -A INPUT -i lo -j ACCEPT # Allow established connections $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Accept incoming to port 4112 (DC) $IPTABLES -A INPUT -p tcp --dport 4112 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 4112 -j ACCEPT # Reject other incoming data $IPTABLES -A INPUT -j REJECT

Trädvy Permalänk
Medlem
Plats
Uppland
Registrerad
Jul 2003

Hej.

En fråga det är väl bättre att blockera allt IN som default såg någon kod upp över

#Tillåt allt iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT

Ska det se ut så eller ska man ha DROp på dom där och sen öppna bara dom portarna som behövs?

Jag är helt ny på att sitta med iptables, har suttit på shorewall och openbsd tidigare men vill testa runt lite mer så jag får en överblick själv vad jag tycker fungerar smidigast.

Mvh Dax

Server: HPE Gen8 / Ubuntu 17.04 Plex-server Lagrings-server
Brandvägg: Unifi USG Pro 4
Wifi: Unifi AP x 3

Trädvy Permalänk
Medlem
Plats
Motala
Registrerad
Aug 2002
Citat:

Ursprungligen inskrivet av Dax
Hej.

En fråga det är väl bättre att blockera allt IN som default såg någon kod upp över

#Tillåt allt iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT

Ska det se ut så eller ska man ha DROp på dom där och sen öppna bara dom portarna som behövs?

Jag är helt ny på att sitta med iptables, har suttit på shorewall och openbsd tidigare men vill testa runt lite mer så jag får en överblick själv vad jag tycker fungerar smidigast.

Mvh Dax

Ja jag kör då DROP på forward och input policyn i alla fall. För att sedan öppna upp de portar som jag behöver.

Trädvy Permalänk
Medlem
Plats
Uppland
Registrerad
Jul 2003

Är det enkelt att sätta upp NAT kopplingen mellan eth0(adsl) och eth1?

Mvh Dax

Server: HPE Gen8 / Ubuntu 17.04 Plex-server Lagrings-server
Brandvägg: Unifi USG Pro 4
Wifi: Unifi AP x 3

Trädvy Permalänk
Medlem
Plats
Slottsbron
Registrerad
Jan 2002

jag kör med "monmotha"-scriptet vilket är lätt att sätta upp och så vitt jag vet är det nog säkert...

peter@server ~ $ uptime
22:26:14 up 30 days, 21:28, 4 users, load average: 21.77, 42.33, 26.94