Anzeige:
Ergebnis 1 bis 14 von 14

Thema: iptables -> ICQ funktioniert nicht

  1. #1
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433

    iptables -> ICQ funktioniert nicht

    Hallo zusammen,

    ich beschäftige mich gerade mit iptables, habe alle Policies auf DROP gesetzt und möchte nun ICQ-Datenverkehr erlauben. Ethereal sagt mir, Pakete gehen zu Port 5190 (Destination-Port) und kommen vom Server natürlich wieder von Port 5190.

    Insgesamt habe ich folgendes Script:

    Code:
    # Alle Regeln löschen
    iptables -F
    
    # Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    # Eingehende Verbindungen - INPUT-chain
    
    #ICMP
    iptables -A INPUT -p icmp -j ACCEPT
    
    # TCP
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT				    #SSH
    iptables -A INPUT -p tcp --sport 5190 -j ACCEPT				    #ICQ
    
    # Ausgehende Verbindungen - OUTPUT-chain
    
    # ICMP
    iptables -A OUTPUT -p icmp -j ACCEPT
    
    # TCP
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT                              #FTP Data
    iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT                              #FTP Control
    iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT                              #SSH
    iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT				    #SMTP
    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT			            #HTTP
    iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT				    #POP
    iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT			            #HTTPS
    iptables -A OUTPUT -p tcp --dport 5190 -j ACCEPT		            #ICQ
    
    # UDP
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT				    #DNS
    Damit funktioniert ICQ nicht obwohl ich Pakete von Source-Port 5190 und Pakete an Destination-Port 5190 zulasse. Ich habe jetzt mehrmals mit Ethreal den Datenverkehr dafür kurz mitgeschnitten - andere Ports werden nicht verwendet.

    Wenn ich die iptables wieder flushe, fällt auf, das ich die Policies bei INPUT und OUTPUT auf ACCEPT setzen muss, damit ICQ wieder funktioniert.

    Kann mir bitte jemand helfen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    Nunja, zum einen würde ich zum schluss noch eine Policy setzen, welche alle restlichen Pakete auf REJECT setzt. Ist freundlicher und die Programme wissen gleich das sie abgewiesen werden.

    Zum anderen, war da mal sowas in der FAQ (obs noch aktuell ist weiß ich nicht, denke aber ja):

    Client to server Communication:
    This is done via port 5190 TCP to login.icq.com (please note- allow a bi-directional connection to the port for login.icq.com and not any specific IP address, since it stands for more than one IP address).

    Client to client communication:

    Client to client connection is done using the TCP protocol, using port range 1024-65535. This means that the client needs an open listening port within the mentioned range-- 1024-65535.

  3. #3
    Hasta Siempre Comandante Avatar von CheGuevara
    Registriert seit
    Mar 2002
    Ort
    Neuenhof
    Beiträge
    733
    Zitat Zitat von jacky0815
    Nunja, zum einen würde ich zum schluss noch eine Policy setzen, welche alle restlichen Pakete auf REJECT setzt. Ist freundlicher und die Programme wissen gleich das sie abgewiesen werden.
    Das ist zwar freundlicher, bietet aber eine Angriffsfläche. Wenn jemand weiss, dass dort ein PC ist (wird durch einen REJECT benachrichtigt), ist die warscheinlichkeit grösser das ein Angriff erfolgt.

    Gruss
    Che
    Ich plädiere für mehr "Open Source" in Badeanstalten. ;)

  4. #4
    Registrierter Benutzer Avatar von steve-e
    Registriert seit
    Mar 2004
    Beiträge
    605
    Ports auf denen kein Dienst läuft lassen sich auch so gut angreifen.

    Ne mal ehrlich. Die Diskussion hatten wir schon öfters.

  5. #5
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    Ich meinte ehr so, weil er von innen ja viel gesperrt hat (OUTPUT). Da weiß der Benutzer des Rechners ja, dass der Rechner da ist. Das Programm, welches er eventuell verwenden will connectet sich aber tot, weil keine Rückantwort

  6. #6
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433
    Client to server Communication:
    This is done via port 5190 TCP to login.icq.com (please note- allow a bi-directional connection to the port for login.icq.com and not any specific IP address, since it stands for more than one IP address).
    Das habe ich gemacht der Port 5190 TCP ist für ausgehende Pakete auf.

    Client to client communication:

    Client to client connection is done using the TCP protocol, using port range 1024-65535. This means that the client needs an open listening port within the mentioned range-- 1024-65535.
    Läuft bei ICQ nicht alles über den Server, wieso dann Client to Client communication? Des Weiteren lasse ich ja auch Pakete durch, die den Quellport 5190 haben (eingehende Pakete). Wozu sollte ich dann eine Range von 1024-65535 öffnen?

  7. #7
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    Wo steht denn das die Kommunikation von port 5190 kommt?
    Ein Browser z.B. kommuniziert auch nicht von port 80 aus, wenn der zu port 80 will, sondern nimmt sich ports oberhalb von 1024.
    das --sport 5190 kannst du dir - so glaube ich - sparen. Bis jetzt hab ich sowas nur bei udp gebraucht.

  8. #8
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433
    Wo steht denn das die Kommunikation von port 5190 kommt?
    Der ICQ-Server läuft doch auf Port 5190 und Ethereal bestätigt mir das.

    Erstes Paket:
    S-port: Zufallsport
    D-port: 5190

    Reply des Servers:
    S-port: 5190
    D-port: der vorher gewählte Zufallsport

    Genau das erlaube ich doch hier:

    iptables -A INPUT -p tcp --sport 5190 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 5190 -j ACCEPT

    Was mache ich jetzt falsch?

  9. #9
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    iptables -A INPUT -p tcp --sport 5190 -j ACCEPT
    sollte überflüssig sein, da du ja bestehende Verbindungen durchlässt.

    Nun ist die Frage: Kannst du nicht connecten zu icq, oder nur nicht mit anderen Leuten kommunizieren? Für letzteres Problem, hab ich dir bereits eine Lösung aufgezeigt.

  10. #10
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433
    Hm ok das hab ich mir gedacht, dass ist das mit sport weglassen kann, denn bei FTP-Sessions, wo ja auch eine TCP Verbindung besteht, brauche ich die Regel ja auch nicht, da ich es bereits erlaube (oder auch bei HTTP).

    Mein Problem ist erstmal, dass ich gar nicht zu ICQ connecten kann, ich benutze Kopete.

  11. #11
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    Mal eine ganz dumme Frage. Arbeitest nur du mit dem PC? Wenn ja, warum sperrst du dann alles nach auße hin? Ich würde nur von außen beschränken.

  12. #12
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433
    Nein es ist nicht der einzige PC und es geht mir ums Prinzip: Die Dinge, die ich brauche, möchte ich erlauben - der Rest soll gesperrt sein.

  13. #13
    Registrierter Benutzer
    Registriert seit
    Nov 2001
    Beiträge
    680
    Gut, dann solltest du dich näher mit dem Thema beschäftigen. Ich kann jetzt nur raten warum kopete nicht geht, aber hier ein paar grundlegenden Ansätze:

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    sollte immer rein, am besten gleich nach iptables -P ...

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    Dies hast du bei dir eingebaut, warum? Damit lässt du doch im Prinzip alle Kommunikation von innen nach außen zu. Die einzelnen Freigaben weiter unten sind dann nur noch redundant und überflüssig.
    Im übrigen schreibst du ja, dass du genau dies nicht willst

    Dann ist natürlich noch interessant wie du ins Netz gehst. Hast du einen router? Spielt der PC selbst router? usw

    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
    Da fehlt das entsprechende Gegenstück mit INPUT (weil udp ja ein verbindungsloses Protokoll ist also:
    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    desweiteren werden größere Anfragen auch per tcp bearbeitet:
    iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
    Wie du sieht, könnten deine Probleme schon auf 2 Dinge zurückzuführen sein.
    1. keine lo-kommunikation zugelassen (keine ahunug ob kopete damit was anstellt)
    2. DNS-Auflösung hat nicht funktioniert.

  14. #14
    Linuxnewbie Avatar von Cerox
    Registriert seit
    Sep 2005
    Ort
    Nähe Köln
    Beiträge
    433
    Also ich kann mich jetzt mit dem ICQ-Server verbinden - es lag tatsächlich an dem Loopback.

    Dies hast du bei dir eingebaut, warum? Damit lässt du doch im Prinzip alle Kommunikation von innen nach außen zu. Die einzelnen Freigaben weiter unten sind dann nur noch redundant und überflüssig.
    Im übrigen schreibst du ja, dass du genau dies nicht willst
    Ja du hast Recht, fällt mir beim genaueren Hinsehen auch auf - dann werde ich das rausnehmen. Ich dachte ich muss zusätzlich zu den einzelnen Protkollen, die ich erlauben will (z.B. HTTP, SSH etc. nach außen) sagen, dass Pakete von hergestellten TCP-Verbindungen auch angenommen werden sollen. Im Endeffekt werden so ja alle angenommen - danke für den Hinweis.

    Dann ist natürlich noch interessant wie du ins Netz gehst. Hast du einen router? Spielt der PC selbst router? usw
    Der PC soll in Zukunft Router spielen. Zuerst möchte ich aber einen vernünftigen Paketfilter am Laufen haben - erst dann werde ich mich um NAT kümmern und dies in das Script mit einbinden. Ich teste den Paketfilter so lange auch lokal auf meinem Rechner.

    Da fehlt das entsprechende Gegenstück mit INPUT (weil udp ja ein verbindungsloses Protokoll ist also:

    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    Auf meinem Rechner läuft kein DNS Server, was soll er dann mit Paketen an Zielport 53 anfangen? Die DNS-Auflösung funktioniert definitiv. Wenn dann müsste ich das ja auf den sport beziehen.

    Ich poste mal mein abgeändertes Script:

    Code:
    # Alle Regeln löschen
    iptables -F
    
    # Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    # Loopback
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # Logging
    iptables -A INPUT -j LOG -m limit --limit 4/s --log-prefix "Input: "
    iptables -A OUTPUT -j LOG -m limit --limit 4/s --log-prefix "Output: "
    iptables -A FORWARD -j LOG -m limit --limit 4/s --log-prefix "Forward: "
    
    # Eingehende Verbindungen - INPUT-chain
    
    # ICMP
    iptables -A INPUT -p icmp -j ACCEPT
    
    # TCP
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp -d 192.168.1.2 --dport 22 -j ACCEPT		    #SSH
    
    # Ausgehende Verbindungen - OUTPUT-chain
    
    # ICMP
    iptables -A OUTPUT -p icmp -j ACCEPT
    
    # TCP
    iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT                           #FTP
    iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT                              #SSH
    iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT				    #SMTP
    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT			            #HTTP
    iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT				    #POP
    iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT			            #HTTPS
    iptables -A OUTPUT -p tcp --dport 5190 -j ACCEPT		            #ICQ
    
    # UDP
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT				    #DNS
    Jetzt werden eingehende Paket akzeptiert, die zu einer bereits hergestellten Verbindung gehören. Das heißt, die Verbindung muss zuerst von mir hergestellt werden - und da lasse ich ja nur bestimmte Protokolle in der OUTPUT-chain zu.

    Noch eine Frage:
    Wie kann ich den Ort für die Log-Dateien festlegen, ich hätte gerne drei separate Dateien für die Logs. Es braucht nur geloggt werden, was verworfen (gedroppt) wird.
    Geändert von Cerox (17.12.05 um 17:31 Uhr)

Ähnliche Themen

  1. htb traffic control script von CT
    Von Hellek im Forum Router und Netzaufbau
    Antworten: 8
    Letzter Beitrag: 29.10.04, 15:55
  2. Probleme mit iptables und gentoo-sources
    Von smog_at im Forum Router und Netzaufbau
    Antworten: 4
    Letzter Beitrag: 25.06.04, 08:59
  3. ftpserver + iptables
    Von HellTron im Forum Sicherheit
    Antworten: 6
    Letzter Beitrag: 18.04.04, 00:11
  4. Antworten: 6
    Letzter Beitrag: 15.10.03, 23:38
  5. zuviel logging bei iptables
    Von der_angler im Forum Router und Netzaufbau
    Antworten: 2
    Letzter Beitrag: 24.09.03, 00:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •