iptables && asterisk

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

iptables && asterisk

Beitrag von LeifEriccson » 31.07.2006 13:34:04

hallo allerseits

habe asterisk auf einem externen server konfiguriert, läuft. kann mich auch von überall dahin verbinden benutze SJphone unter OS X oder unter windows.
mein problem ist folgendes, in meinem netzwerk zuhause habe ich einen linux router mit iptables am laufen, der für normale anwendungen, http(s) ssh ftp ... wunderbar tut, aber leider für voip nicht. habe port 5060 im prerouting freigegeben und leite den an die adresse meiner WinXP kiste, aber leider kann sich mein sip client nicht am asterisk authentifizieren. standardmäßig sind alle meine ports geblockt. müsste ich ausser dem 5060 für sip noch mehr aufmachen, und auf welchem protokoll läuft das dann ...
vll. findet sich ja jemand der ein ähnlich gelagertes problem schon gelöst hat und mir weiterhelfen kann

mfg leifericcson
the tendency is to push it as far as you can

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.07.2006 13:55:43

Hast du in deinem Iptables-Skript denn Regeln, die Loggen, was du an Paketen verwirfst?
Da wuerde ich mal ansetzen, wenn das nicht klappt. Eventuell werden da Pakete verworfen, die nicht verworfen werden sollten.

LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

Beitrag von LeifEriccson » 31.07.2006 15:52:08

hm wie logge ich denn pakete mit iptables? muss gestehen, dass ich einfache sachen mit iptables schon machen kann, aber sobald es ins detail geht ich dann doch eher ein brett vorm kopf habe

mfg leifericcson
the tendency is to push it as far as you can

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.07.2006 16:06:30

Eigentlich ganz einfach: du packst ans Ende einer Regel ein -j LOG.
Pakete, die auf die Regel matchen werden dann geloggt.
Wie du das bei dir am schlauesten machst, kann ich dir nicht sagen, da ich nicht weiss, wie dein Regelset aussieht.
Mal angenommen, du nutzt fuers Verwerfen von unerwuenschten Paketen die Default-Policy DROP, dann sollte es so klappen:

Code: Alles auswählen

iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
Damit loggst du alle Pakete, die in den Chains INPUT/OUTPUT noch nicht auf eine andere Regel gemachted haben.

Wenn du das ganze selber dropst (also mit -j REJECT oder -j DROP), dann musst du die LOG-Regeln vor diesen anderen Regeln einfuegen.

LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

Beitrag von LeifEriccson » 31.07.2006 17:18:05

wunderbar im logging ist nichts aufgetaucht, und mein asterisk will an 10.10.10.2 (rechner mit softphone) übertragen, dementsprechend würde das prerouting und portforwarding funktionieren, aber eigtl. hätte ich gerne das er an meine offizielle ip überträgt und von dort dann das ganze weiter an 10.10.10.2:5060 geschickt wird

mfg leifericcson
the tendency is to push it as far as you can

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Beitrag von chroiss » 31.07.2006 18:59:42

Das Steuerungsprotokoll SIP läuft auf 5060 UDP.
Du brauchst diesen Port nicht prerouten.
Dein CLIENT versucht sich ja zu verbinden und initiiert damit die Verbindung. Da du aller wahrscheinlichkeit mit masquerading arbeitest , findet dein router den Rückweg automatisch.

Dein externer Server muss natürlich den Port 5060 UDP aufhaben....

Doch wenn du zuhause die Forward Kette vorerst komplett auf Drop

Code: Alles auswählen

 iptables -t filter -P FORWARD DROP
gesetzt hast , musst du deinem Rechner das natürlich wieder explizit erlauben...

Code: Alles auswählen

 iptabels -A FORWARD -i $INTDEV -p udp -s interne_ip --dport 5060 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $EXTDEV -o $INTDEV -d interne_ip -p udp --dport 5060 -j ACCEPT
( Hat man "normalerweise" aber aus... bzw. auf ACCEPT)

Um Gespräche zu führen musst du zusätzlich aber noch an die RTP Ports denken ( siehe /etc/asterisk/rtp.conf)


Kurze Zusammenfassung :

Auf Router die Policy Forward ACCEPT setzen
Auf externen Rechner 5060 UDP aufmachen
und schon solltest du dich wenigstens einloggen können...

gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

Beitrag von LeifEriccson » 31.07.2006 20:02:56

ok nochmal

hier meine iptables regeln:

export PATH=$PATH:/usr/local/sbin/iptables

# Firewall initialization...
# Clear all the firewall rules...
iptables --flush

# Zero the packets and byte counters in all chains...
iptables --zero

#Prerouting

# Masqerading...
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -j MASQUERADE -d ! 10.10.10.0/24
iptables -t nat -I POSTROUTING -j MASQUERADE -d ! 10.10.11.0/24
iptables -A FORWARD -j ACCEPT -s 10.10.10.0/24 -d 0.0.0.0/0
iptables -A FORWARD -j ACCEPT -s 0.0.0.0/0 -d 10.10.10.0/24
iptables -A FORWARD -i eth0 -p udp -s 10.10.10.2 --dport 5060 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d 10.10.10.2 -p udp --dport 5060 -j ACCEPT
#iptables -A FORWARD -j ACCEPT -s 10.10.11.0/24 -d 0.0.0.0/0
#iptables -A FORWARD -j ACCEPT -s 0.0.0.0/0 -d 10.10.11.0/24
iptables -A FORWARD -j DROP

#tcp & udp allow

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT -o eth1
iptables -A INPUT -j ACCEPT -i lo
iptables -A OUTPUT -j ACCEPT -o lo
iptables -A INPUT -j ACCEPT -i eth0
iptables -A OUTPUT -j ACCEPT -o eth0
iptables -A INPUT -j ACCEPT -i eth2
iptables -A OUTPUT -j ACCEPT -o eth2
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 4242
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 6889
iptables -A INPUT -j ACCEPT -p tcp -i eth0 --destination-port 67
iptables -A OUTPUT -j ACCEPT -p tcp -o eth0 --destination-port 67
iptables -A INPUT -j ACCEPT -p udp -i eth0 --destination-port 67
iptables -A OUTPUT -j ACCEPT -p udp -o eth0 --destination-port 67
iptables -A INPUT -j ACCEPT -p tcp -i eth0 --destination-port 68
iptables -A OUTPUT -j ACCEPT -p tcp -o eth0 --destination-port 68
iptables -A INPUT -j ACCEPT -p udp -i eth0 --destination-port 68
iptables -A OUTPUT -j ACCEPT -p udp -o eth0 --destination-port 68
iptables -A OUTPUT -j ACCEPT -p tcp -o eth1 --destination-port 21
iptables -A OUTPUT -j ACCEPT -p udp -o eth1 --destination-port 21
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 21
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 21
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 113
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 143
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 993
iptables -A INPUT -j ACCEPT -p tcp -i eth1 --destination-port 123
iptables -A INPUT -j ACCEPT -p udp -i eth1 --destination-port 123
iptables -P INPUT DROP
iptables -P OUTPUT DROP


laut aussage meines asterisk servers komme ich zu ihm hin, aber asterisk zeigt mir immer noch meine interne ip adresse an. als softphone client benutze ich das sjphone von http://www.sjlabs.com

wäre cool wenn euch noch was einfällt

mfg leifericcson
the tendency is to push it as far as you can

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Beitrag von chroiss » 31.07.2006 20:39:54

sowas habe ich noch nie gesehen ,komische schreibweise....

mach mal aus

Code: Alles auswählen

iptables -t nat -I POSTROUTING -j MASQUERADE -d ! 10.10.10.0/24
iptables -t nat -I POSTROUTING -j MASQUERADE -d ! 10.10.11.0/24 

Code: Alles auswählen

iptables -t nat -A POSTROUTING -o $EXTDEV -s 10.10.10.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $EXTDEV -s 10.10.11.0/24 -j MASQUERADE
und testweise aus

Code: Alles auswählen

iptables -A FORWARD -j DROP
ein

Code: Alles auswählen

iptables -A FORWARD -j ACCEPT
insgesamt sieht deine firewall n wenig seltsam aus...

will ich mich aber nich einmischen ... ;-)

chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

Beitrag von LeifEriccson » 31.07.2006 21:18:32

hi chroiss

danke für deine unterstützung, aber leider hat das ganze noch immer nicht zu einem ergebnis geführt. inwiefern ist die schreibweise meiner regeln ungewöhnlich?

eigtl. sollte ich das problem doch auch mit einem stun server lösen können nur leider kam mein debian paket ohne man pages daher. weiß jemand wo ich ne bsp. config finden kann. falls jemand noch eine idee zu meinem iptables problem hat werde ich das auch gerne versuchen.

mfg leifericcson
the tendency is to push it as far as you can

LeifEriccson
Beiträge: 21
Registriert: 11.10.2005 11:57:18

Beitrag von LeifEriccson » 31.07.2006 21:39:20

danke nochmal an alle die mir geholfen haben, aber zu meiner schande war mein denkansatz falsch, es lag nicht an der firewall, sondern an der konfiguration des asterisk users.
seit ich in die sip.conf bei dem entsprechenden user nat=yes eingetragen habe, kann ich mich regisitrieren, jetzt kommt dann hoffentlich das sprechen dran, und danach das videophonieren.

N-JoY leifericcson
the tendency is to push it as far as you can

Antworten