Validatie iptables script

Heb je problemen met het instellen van je netwerk, bedraad of draadloos, dan kan je hier altijd terecht!
Plaats reactie
boran_blok
Elite Poster
Elite Poster
Berichten: 1143
Lid geworden op: 09 maa 2011, 16:04
Uitgedeelde bedankjes: 17 keer
Bedankt: 104 keer
Te Koop forum

Ik heb mij via ovh een vpsje aangeschaft om wat mee te spelen. Nue zie ik dat standaard die dingen knal op het internet zitten, dus wou ik dat wat dicht timmeren dmv iptables.

Echter, ik ben een totale leek op dat vlak, dus wou ik eens vragen of er nog iets zou schelen aan het volgende setup script:

Code: Selecteer alles

#!/bin/sh

#sets up basic port blocking of everythinge except ovh critical stuff and SSH

iptables -F

#allow incoming responses of outgoing requests
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow incoming SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# OVH specific rules for server monitoring
iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.sbg.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.bhs.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source 92.222.39.250 -j ACCEPT

#reject all other traffic
iptables -A INPUT -i eth0 -j DROP
Voor zover ik begrijp is OUTPUT alles uitgaand, en voor mijn part mag dat allemaal open.

Maar het FORWARD gedeelte versta ik niet helemaal of daar iets voor nodig zou zijn.

Alvast bedankt voor enige assistentie.
TomG
Elite Poster
Elite Poster
Berichten: 2173
Lid geworden op: 06 jun 2005, 18:33
Locatie: Zwevegem
Uitgedeelde bedankjes: 476 keer
Bedankt: 106 keer

Zoals er al in de commentaar staat: SSH staat open, evenals ping vanaf aantal ovh hosts. Verder staat inkomend verkeer open als het gerelateerd is aan uitgaand verkeer.

Als je nog services draait die bereikbaar moeten zijn op je server, kopieer je maar gewoon de SSH regel en pas je de poort aan.

De FORWARD chain heb je maar nodig als je je server als router gaat gebruiken voor zover ik weet... Heb je niet van doen in meeste gevallen dus.
Tim.Bracquez
Elite Poster
Elite Poster
Berichten: 3202
Lid geworden op: 05 dec 2010, 15:09
Bedankt: 450 keer

Je kan ook CSF gebruiken, dat maakt het véél makkelijker.

IP's toevoegen voor de 'allow list' en poorten zelf eenvoudig instellen wat open/toe moet. Extra opties zoals IP's met een slechte reputatie blokkeren, teveel login-pogingen etc...
Link: http://configserver.com/cp/csf.html
Gebruikersavatar
xming
Pro Member
Pro Member
Berichten: 434
Lid geworden op: 06 okt 2005, 10:35
Uitgedeelde bedankjes: 9 keer
Bedankt: 47 keer

FORWARD is voor alle verkeer dat langs je box passeert (bij het routen), dus noch INPUT noch OUTPUT verkeer. Shorewall (http://shorewall.net/) is een iets gemakkelijker tool om netfilters te configureren.
Gebruikersavatar
Sub Zero
Administrator
Administrator
Berichten: 6181
Lid geworden op: 15 sep 2002, 12:14
Locatie: Herzele
Uitgedeelde bedankjes: 74 keer
Bedankt: 121 keer

Ik zou op zijn minst toch ook wel alles op de loopback interface toelaten. Desnoods kan je op SSH een soort rate limit zetten. Een voorbeeldje:

Code: Selecteer alles

# Allow limited SSH from the outside
iptables -N LIMIT_SSH
iptables --append INPUT     --protocol tcp --dport 22 --in-interface eth0 --jump LIMIT_SSH
iptables --append LIMIT_SSH --source mijn.thuis.ip.adres --jump ACCEPT
iptables --append LIMIT_SSH --match recent --name SSH  --set --rsource
iptables --append LIMIT_SSH --match recent --update --seconds 60 --hitcount 3 --name SSH --rsource --jump LOG --log-level warning --log-prefix "SSH LOGIN ATTEMPT "
iptables --append LIMIT_SSH --match recent --update --seconds 60 --hitcount 3 --name SSH --rsource --jump DROP
iptables --append LIMIT_SSH --jump ACCEPT
Hiermee kun je 3 TCP sessies per minuut opbouwen. Aangezien je per sessie ook nog eens 3x kan proberen kun je 9 wachtwoorden proberen brute forcen per minuut.
Gebruikersavatar
bitbite
Premium Member
Premium Member
Berichten: 562
Lid geworden op: 18 dec 2012, 14:01
Uitgedeelde bedankjes: 38 keer
Bedankt: 42 keer

De reject-all-other wordt klassiek gedaan door een default policy (-P). Het is ook goed om die expliciet in te stellen in je script, want nu ga je er van uit dat het al gedaan is.

Outbound: als je enkel je eigen progamma's draait en 't is een machine om te spelen, dan kan dat wel open staan. Ga je serieuze dingen doen of hosting doen van brol van derden, dan is het wel leuk om dat te blokkeren/limiteren/...

Schiet ook jezelf niet in je voet.. Als je hiermee gaat experimenteren maak bvb een scriptje dat je machine reboot (of firewall hersteld naar oorspronkelijke toestand) na X minuten. Sluit je jezelf toch buiten dan kan je zo de boel nog redden. Test ook zeker na elke verandereing of je nog nieuwe ssh-connecties kan opbouwen (dit noemen ze ervaring..)
boran_blok
Elite Poster
Elite Poster
Berichten: 1143
Lid geworden op: 09 maa 2011, 16:04
Uitgedeelde bedankjes: 17 keer
Bedankt: 104 keer
Te Koop forum

Wel, als ik de default policy opzet op DROP met bovenstaand script wordt alles geblokkeerd.

Dit is wat ik eerst had en dus alles blokkeert hoewel het volgens mij niet zou mogen:

Code: Selecteer alles


#!/bin/sh

#sets up basic port blocking of everythinge except ovh critical stuff and SSH

iptables -F

#reject all other traffic
iptables -P INPUT DROP

#allow incoming responses of outgoing requests
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow incoming SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# OVH specific rules for server monitoring
iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.sbg.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source proxy.bhs.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --source 92.222.39.250 -j ACCEPT
enkel een reboot cleart inderdaad de iptables en laat weer toegang toe.
Gebruikersavatar
xming
Pro Member
Pro Member
Berichten: 434
Lid geworden op: 06 okt 2005, 10:35
Uitgedeelde bedankjes: 9 keer
Bedankt: 47 keer

reboot hoeft niet, gebruik het volgende scriptje om netfilers te resetten

Code: Selecteer alles

#!/bin/sh
#
# Configurations
#
IPTABLES="/sbin/iptables"

#
# reset the default policies in the filter table.
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
# reset the default policies in the nat table.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# reset the default policies in the mangle table.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# flush all the rules in the filter and nat tables.
#
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
#
# erase all chains that's not default in filter and nat table.
#
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
Om je eigen scripts te testen, probeer de volgende:

Code: Selecteer alles

sh firewall.on ; sleep 120;  sh firewall.reset
waar firewall.on je eigen script is en firewall.reset bovenstaand scriptje.

Met iptables -P INPUT DROP en iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT, zou toch ssh toegelaten moeten zijn, probeer eens volgende

Code: Selecteer alles

sh firewall.on ; iptables -L -n -v > debug.txt; sleep 120;  sh firewall.reset
en probeer te sshen tijdens die sleep 120, daarna inhoud van debug.txt nakijken of hier posten.
Gebruikersavatar
Heronic
Elite Poster
Elite Poster
Berichten: 2748
Lid geworden op: 20 okt 2003, 16:41
Locatie: Bij mijn vrouw
Uitgedeelde bedankjes: 426 keer
Bedankt: 208 keer

In theorie altijd drop boven reject verkiezen en niet standaard poorten gebruiken.
Dit helpt natuurlijk niet/weinig bij een volledige scan.
“Insanity is my only means of relaxation "
My excuse? Being dunk. Whats yours?
Gebruikersavatar
bitbite
Premium Member
Premium Member
Berichten: 562
Lid geworden op: 18 dec 2012, 14:01
Uitgedeelde bedankjes: 38 keer
Bedankt: 42 keer

Ik zie echt niet wat er mis is. Het enige wat ik kan bedenken is dat je iets van localhost nodig hebt (bvb een dns cache/forwarder ofzo) om connecties terug te aanvaarden. Ik zou hierom (en eigenlijk in't algemeen zonder gegronde tegenindicatie) een iptables -I INPUT -i lo -j ACCEPT doen.

Misschien dat je best-practices gewijs nog wel even best expliciet "iptables -F INPUT" specifieert (en de andere tables, mocht je daar ook mee beginnen werken)
boran_blok
Elite Poster
Elite Poster
Berichten: 1143
Lid geworden op: 09 maa 2011, 16:04
Uitgedeelde bedankjes: 17 keer
Bedankt: 104 keer
Te Koop forum

Bon, ik heb dus gevonden waarom mijn default drop policy alles dicht smeet.

output van ifconfig -a:

Code: Selecteer alles

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3381 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3381 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:318866 (311.3 KiB)  TX bytes:318866 (311.3 KiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0$
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255$
          inet6 addr: 2001:41d0:52:100::1127/56 Scope:Global
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:79886 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76137 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6627248 (6.3 MiB)  TX bytes:7946900 (7.5 MiB)
venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0$
          inet addr:92.222.39.19  P-t-P:92.222.39.19  Bcast:92.222.39.255  Mask$
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
Met andere woorden, ik zit de verkeerde netwerk adapter te configurerern.

Bij dit script werkt dus alles wel naar behoren:

Code: Selecteer alles

#!/bin/sh

#sets up basic port blocking of everythinge except ovh critical stuff and SSH

#reset input chain
iptables -F INPUT

#reject all other traffic
iptables -P INPUT DROP

#allow loopback traffic
iptables -I INPUT -i lo -j ACCEPT

#allow incoming responses of outgoing requests
iptables -A INPUT -i venet0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow incoming SSH
iptables -A INPUT -i venet0 -p tcp --dport 22 -j ACCEPT

# OVH specific rules for server monitoring
iptables -A INPUT -i venet0 -p icmp --source proxy.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source proxy.sbg.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source proxy.bhs.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source ping.ovh.net -j ACCEPT
iptables -A INPUT -i venet0 -p icmp --source 92.222.39.250 -j ACCEPT
Plaats reactie

Terug naar “Netwerken en Security”