Gå til innhold

Slippe gjennom tilkoblinger med iptables


LarsM

Anbefalte innlegg

Hei!

 

Etter å ha lest flere sample scripts, og skummet noen guider, har jeg skrevet mitt eget ganske enkle script for bruk sammen med iptables. Problemet er at det tilsynelatende er for strengt og lar ikke tilkoblinger via SSH utenfra slippe gjennom. Noen idé angående hva dette skyldes?

 

#!/bin/sh

# Setting variables
echo " Setting variables... "
IPTABLES=/sbin/iptables
EXTIF=eth1
INTIF=eth0
INTRNG=192.168.1.0/24
UNIVERSE=0/0

# Delete existing rules
echo " Deleting existing rules... "
$IPTABLES -X

# Configure default policies
echo " Setting default policies... "
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# Flush all rules
echo " Flushing all rules... "
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -F -t nat

# Rules

# Forward packets from INTIF to EXTIF
echo " Setting specified rules... "
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

# Forward packets that are a part of an existing or related connection
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permit packages to the firewall that are existing or related
$IPTABLES -A INPUT -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow inputs to the firewall from all internal network interfaces
$IPTABLES -A INPUT -i $INTIF -s $UNIVERSE -d $UNIVERSE -j ACCEPT
$IPTABLES -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT

# Enable masquerading
$IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE

# Catch ip spoofers
$IPTABLES -A INPUT -i $EXTIF -s $INTRNG -j DROP
$IPTABLES -A INPUT -i $EXTIF -s 127.0.0.1/8 -j DROP

# Accept tcp packets on desired ports
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT

# Answer to ping queries
$IPTABLES -A INPUT -p icmp -j ACCEPT

# DHCP server
$IPTABLES -A INPUT -i $INTIF -p tcp --sport 68 --dport 67 -j ACCEPT
$IPTABLES -A INPUT -i $INTIF -p udp --sport 68 --dport 67 -j ACCEPT

# Deny everything we haven't specified
$IPTABLES -A INPUT -s $UNIVERSE -d $UNIVERSE -p udp -j DROP
$IPTABLES -A INPUT -s $UNIVERSE -d $UNIVERSE -p tcp -j DROP
echo " Done loading firewall rules... "

 

eth0 er interfacet mot det lokale nettet, samt der DHCP-tjeneren kjøres, mens eth1 er eksponert ut og innehaver av IP-en SSH-tilkoblingen skal skje mot. I tillegg kan jeg nevne at boksen min heller ikke svarer på ping requests utenfra, noe jeg også ikke er helt sikker på hvorfor den ikke gjør.

Lenke til kommentar
Videoannonse
Annonse

Enkelt forklart (er trøtt og bør legge meg), så har du reglene i feil rekkefølge. Alt som kommer inn blir, per det scriptet, droppet med mindre det hører til en connection du allerede har laget, og vil ikke bli evaluert i takt med dine etterfølgende regler (for å tillate ICMP og ssh).

Du må sette alt du har lyst til å la slippe igjennom over linjen over denne:

$IPTABLES -A INPUT -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

 

Forøvrig er det ikke noe vits i å sette alt til DROP på bunnen der, du har satt det som default policy for INPUT :)

Lenke til kommentar
Enkelt forklart (er trøtt og bør legge meg), så har du reglene i feil rekkefølge. Alt som kommer inn blir, per det scriptet, droppet med mindre det hører til en connection du allerede har laget, og vil ikke bli evaluert i takt med dine etterfølgende regler (for å tillate ICMP og ssh).

Du må sette alt du har lyst til å la slippe igjennom over linjen over denne:

$IPTABLES -A INPUT -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

 

Forøvrig er det ikke noe vits i å sette alt til DROP på bunnen der, du har satt det som default policy for INPUT :)

5155812[/snapback]

Dessverre, men situasjonen er den samme.

 

Bare som en test, så satte jeg nå POLICY på INPUT til ACCEPT, men uten hell. Det later til at det ikke er iptables som sperrer for tilkoblinger.

 

Kan det være routeren mellom Internett og tjeneren? Sistnevnte er satt som DMZ og mottar den offentlige IP-en som den stod rett ut mot nettet. Routeren er levert av NGT og av typen Speedtouch 516.

Lenke til kommentar

Slik du forklarer det så regner jeg med at du ikke trenger å styre med NAT og portforwarding på routern, men du er nødt til å åpne for ssh i filtersettet - det er egentlig like greit å åpne for alt annet enn 23 (eller nå hvilken port som blir brukt til konfigurasjon av routern).

 

Som siste utvei kan du se hva iptables -L sier, og prøve firewallen med en side som portscanner. Shields Up! pleier å virke :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...