PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables script



darktr00per
22.12.02, 11:33
Hallo, und zwar wollte ich mal fragen ob mir einer bei meinem kleinen iptables script helfen bisher funktioniert es irgendwie nicht! Ich will das erst alles geblockt wird was über eth0 kommt und dann ssh, samba, apache und ftp freigeschalten wird!



#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

# module laden
/sbin/insmod iptable_nat &> /dev/null
/sbin/insmod ip_conntrack &> /dev/null
/sbin/insmod ip_conntrack_ftp &> /dev/null
/sbin/insmod ip_nat_ftp &> /dev/null

iptables --flush
iptables -t nat --flush

# alles löschen
iptables -F

# ICMP: ping, wichtige Fehlerpakete
iptables -A FORWARD -p ICMP --icmp-type 0 -j ACCEPT
iptables -A FORWARD -p ICMP --icmp-type 3 -j ACCEPT
iptables -A FORWARD -p ICMP --icmp-type 5 -j ACCEPT
iptables -A FORWARD -p ICMP --icmp-type 11 -j ACCEPT

# SMB im internen netzwerk erlauben
iptables -A INPUT -i eth0 -p tcp --dport 137:139 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 137:139 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 137:139 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 137:139 -j ACCEPT

# ssh erlauben
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT

# telnet erlauben
iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 23 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 23 -j ACCEPT

# apache erlauben
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT

# webmin erlauben
iptables -A INPUT -i eth0 -p tcp --dport 2324 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 2324 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 2324 -j ACCEPT

# den rest fallen lassen
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
iptables -L

Berufspenner
22.12.02, 11:52
Hi

Ich verschieb das mal. In den Bereich 'Sicherheit' passt das doch etwas besser.

Cu

b-tommy
22.12.02, 13:21
hiho;

ohne rückrouten wird's schwierig :-)

die defaultrules setzt du mit
iptables -P INPUT DROP

das gleiche mit output und forward

die rückroute setzt du mit
iptables -A INPUT -i eth0 -p tcp --dport 1023: -m state --state ESTABLISHED (wenn gewünscht noch RELATED) -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 1023: -m state ---state ESTABLISHED (wenn gewünscht noch RELATED) -j ACCEPT

ciao

tommy

darktr00per
22.12.02, 19:35
thx erstmal aber was meint man eigentlich mit diesen rückrouten und was bezwecken die???


ach ja da hätte ich gleich nochmal ne Frage passt vielleicht nicht direkt dazu aber naja!

Ehm geht es mit iptables oder sonst was einfach nur bestimmten IP Adressen den Zugriff zum System über ftp, apache oder samba zu erlauben???

cane
22.12.02, 22:59
Ja klar geht das.
Bei deiner Linux Distribution ist bestimmt ein HowTo zu iptables dabei ansonsten google mal.
Aus dem Kopf kann ich Dir dass auch nicht sagen.

mfg
cane

HangLoose
23.12.02, 00:24
moin moin


thx erstmal aber was meint man eigentlich mit diesen rückrouten und was bezwecken die???

mit diesen *rückrouten* läßt du pakete, die zu einer bestehenden verbindung gehören, passieren => -m state --state ESTABLISHED


Ehm geht es mit iptables oder sonst was einfach nur bestimmten IP Adressen den Zugriff zum System über ftp, apache oder samba zu erlauben???

ja das geht mittels -s für source-ip oder eben -d für destination-ip. du solltest diese ip's am anfang des scripts aber als variable bekannt machen. bei den ip's hat sich schnell mal ein zahlendreher etc. eingeschlichen und du suchst dich anschließend dumm und dämlich.

set Friends = (192.168.0.1 192.168.0.3 192.168.0.6)

iptables -A INPUT -i eth0 -s $Friends -p tcp --dport 22 -j ACCEPT



Gruß HL

cane
23.12.02, 01:01
@HangLoose

Du hast deine Hausaufgaben gemacht;)
Sogar mit Variable...

cane

HangLoose
23.12.02, 01:05
@cane

ich hab jetzt notgedrungen eine linuxfreie woche und hoffe mal wieder ein wenig zum lesen zu kommen ;)



Gruß HL

cane
23.12.02, 01:17
@ HangLoose

Hab Dir grad eine private message geschickt.
Wollt's nur mal grad hier erwähnen weil ich ja nicht weiß ob Du die Benachrichtigungsfunktion aktiviert hast...
...
...
cane

darktr00per
23.12.02, 12:17
HI, also danke mal bisher das mit dem blocken von einzelnen IP's hat mir geholfen!

Aber das Script funktioniert immernoch nicht ich blocke erst alles dann werden einzelne ports freigeschalten und trotzdem kann ich von ausen auf nichts zugreifen da alles geblockt wird!



#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

# module laden
/sbin/insmod iptable_nat &> /dev/null
/sbin/insmod ip_conntrack &> /dev/null
/sbin/insmod ip_conntrack_ftp &> /dev/null
/sbin/insmod ip_nat_ftp &> /dev/null

iptables --flush
iptables -t nat --flush

# alles löschen
iptables -F

iptables -A INPUT -i eth0 -p tcp --dport 1023: -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 1023: -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 1023: -m state --state RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 1023: -m state --state RELATED -j ACCEPT

# SMB im internen netzwerk erlauben
iptables -A INPUT -i eth0 -p tcp --dport 137:139 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 137:139 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 137:139 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 137:139 -j ACCEPT

# ssh erlauben
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT

# telnet erlauben
iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 23 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 23 -j ACCEPT

# apache erlauben
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT

# webmin erlauben
iptables -A INPUT -i eth0 -p tcp --dport 2324 -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --dport 2324 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 2324 -j ACCEPT

# den rest fallen lassen
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -L

DaGrrr
23.12.02, 12:38
Hallo,

ich bin zwar kein iptables script Profi....

ich vermisse aber die interne Kommunikation:

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

diese Zeilen Fehlen Dir.
Nach meinem Kenntnisstand wird ohne dieses nüx laufen.
Wie gesagt, bin kein Profi.

Greets
DaGrrr

Jasper
23.12.02, 16:32
Original geschrieben von HangLoose

set Friends = (192.168.0.1 192.168.0.3 192.168.0.6)

iptables -A INPUT -i eth0 -s $Friends -p tcp --dport 22 -j ACCEPT


hast du das obige auch mal ausprobiert?

-j

darktr00per
23.12.02, 18:25
Ich glaube ihr versteht mich falsch, ich will ja nur alles blocken und dann explizit ein paar Ports öffnen wie Port 80 den Samba Port, webadmin halt wie im oberen zitat beschrieben, aber irgendwie blockt er trotzdem alles und lässt nichts durch

HangLoose
23.12.02, 20:36
moin moin

@Jasper


hast du das obige auch mal ausprobiert?

nein ich hab das nur mal schnell von oben kopiert, um das prinzip mit den variablen zu verdeutlichen ;)


set friends = (xxx.xxx.xx.xx xxx.xxx.xxx.xx)

set p_ssh = 1000:1023 # ssh *highports* festlegen



IPTABLES -A INPUT -i ppp0 -s $Friends -p TCP --sport $p_ssh --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


IPTABLES -A OUTPUT -o ppp0 -d $Friends -p TCP -dport $p_ssh --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT


beispiel für den zugriff auf den firewall rechner vom inet aus, mit der beschränkung auf 2 ip adressen.


Gruß HL

Jasper
23.12.02, 23:50
Original geschrieben von HangLoose

nein ich hab das nur mal schnell von oben kopiert, um das prinzip mit den variablen zu verdeutlichen ;)


für jede ip muss aber eine iptables regel erzeugt werden:

friends = "xxx.xxx.xx.xx xxx.xxx.xxx.xx"
for f in ${friends}; do
IPTABLES -A INPUT -i ppp0 -s $f -p TCP --sport $p_ssh --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
done

ist bash-syntax. oder in csh:

set friends=(xxx.xxx.xx.xx xxx.xxx.xxx.xx)
foreach f ($friends)
IPTABLES -A INPUT -i ppp0 -s $f -p TCP --sport $p_ssh --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
end

-j

HangLoose
24.12.02, 00:08
@Jasper


für jede ip muss aber eine iptables regel erzeugt werden:

up's da hast du natürlich recht. danke für den hinweis :)


naja von shell scripting hab ich noch weniger ahnung wie von iptables ;)



Gruß HL