PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [iptables] pakete auf geschlossene ports blockiern



maconey
10.09.03, 13:55
hallo!

wie kann ich mit iptables packete die auf einen port gehen der geschlossen ist protokollieren?

(ohne alle offenen ports freizugeben und dann alles andre zu loggen)

ich hab leider nix gefunden wie das geht :-/


vllt noch anders erklärt:
ich geb das ein:
14:34:13 [root@mac] /home/matze> telnet localhost 1234
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused


und will dann im protokoll mehr oder weniger stehen haben:

da hat einer versucht auf port 1234 zuzugreifen, das ging aber leider nicht da der port geschlossen ist.

ich hoff das is verständlich :-)

grüssle,

maconey

derRichard
10.09.03, 14:10
hallo!

einfach ein -j LOG machen.
zb:
iptables -A INPUT -i eth0 -p tcp --dport 1234 -j LOG

//richard

Jasper
10.09.03, 14:13
iptables -A <chain> -p <proto> --dport <port> -j LOG --log-prefix "closed port accessed : "

-j

maconey
10.09.03, 14:18
verflixt, ich hab mich doch falsch ausgedrückt (bzw. was vergessen)

ich will alle ports geloggt haben die nicht geöffnet sind... wie man einen einzelnen port loggt ist klar, ich will nur die ports geloggt haben die nicht geöffnet sind...

also alle ports sollen geloggt werden, nur eben die nicht die geöffnet sind...

trotzdem danke...

gruss,

maconey

Thomas Engelke
10.09.03, 14:32
Fällt die Entscheidung, ob ein Port "geschlossen" ist, nicht zu exakt dem Zeitpunkt, an dem du das Paket "-j DROP"st? Dann geht dies nicht, da genau dies ja das Paket verwirft.

AD!

maconey
10.09.03, 14:37
es muss aber doch ne möglichkeit geben alle pakete die reinkommen und nicht mehr rausgehen (also verworfen werden) zu protokollieren?!

(ich meine nicht die pakete die von meinen eigenen regeln verworfen werden, sondern die auf "ungültige" ports gehen)

penguin007
10.09.03, 14:47
Hi


Kennst du Portsentry wenn nicht probier mal das vielleicht hilft es dir weiter.
Dann schaut ein log so aus:

TCP Blocked
1061975605 - 08/27/2003 11:13:25 Host: 212.42.75.59/212.42.75.59 Port: 1080 TCP Blocked

Wenn du sowas meinst wenn nicht dann eben nicht
:ugly:

Cu

maconey
10.09.03, 14:52
das kommt dem ganzen schon relativ nah... ich will aber alle ports geloggt haben und nicht nur ein paar...
danke...

penguin007
10.09.03, 14:56
Du kannst bei diesem Prog. einstellen welche also wenn du alle haben willst dann schreib alle auf in die conf viel spass ;)

baba

maconey
10.09.03, 15:06
genau das will ich vermeiden...
und wenn ich irgendein programm starte das nen port öffnen will hab ich auch pech gehabt...

penguin007
10.09.03, 15:07
Tja dann viel spass noch bei der suche wenn du was neues weisst dann post it

:D

Thomas Engelke
10.09.03, 15:08
Dann läßt sich natürlich auch dasselbe per iptables machen. Ich dachte, es geht darum, keine statische Liste der gesperrten Ports irgendwo hinterlegen zu müssen, da sich diese nach maconeys Verständnis aus der Verarbeitung ergibt? Oder habe ich das falsch verstanden?

AD!

P.S.: Vielleicht gibt es doch eine Möglichkeit. Du könntest dir eine eigene Rules chain eröffnen (man iptables für die Details), die

1. Loggt
2. DROPt

und diese als Standardtarget hinterlegen. Normalerweise ist das ja DROP (oder, in seltenen Fällen) ACCEPT.

maconey
10.09.03, 15:08
und das da geht leider auch ned:
iptables -A INPUT -m state --state INVALID -j LOG

(auch wenns linux schluckt)

och menno, des kann doch ned so schwer sein :-/

maconey
10.09.03, 15:12
@thomas, du hast mich richtig verstanden...

ne statische liste bringt mir nix... und der linuxkernel muss doch wissen was gedroppt wird und was ned? :ugly:

Thomas Engelke
10.09.03, 15:13
Original geschrieben von maconey
... und der linuxkernel muss doch wissen was gedroppt wird und was ned?

Schon. Aber ein Paket wird für ihn auch erst zu einem DROP-Paket, wenn er innerhalb der Verarbeitungskette auf eine Regel stößt, die als Target DROP angibt. Es gibt keine Möglichkeit, eine Verarbeitung an genau diesem Punkt anzusetzen. Warum geht meine vorherige Methode nicht?

AD!

maconey
10.09.03, 15:14
hehe, vielleicht noch ein böses kommentar zur motivation... unter windows mit fast jeder beliebigen firewall gehts... :-)

Thomas Engelke
10.09.03, 15:23
Ich klink' mich dann hier aus. Viel Spaß noch.

AD!

maconey
10.09.03, 15:55
ich habs mal probiert wie thomas gemeint hat, aber so ganz funzt das leider nicht... :-/


#!/bin/sh
ipt=/sbin/iptables

#alle alten regeln löschen
$ipt --flush
$ipt -X
$ipt -N DEFAULT
$ipt -N LOGGER

#alles wird in der chain default bearbeitet
$ipt -A INPUT -j DEFAULT

#für localhost alles erlauben
$ipt -A DEFAULT -i lo -j ACCEPT

#bestehende verbindungen sind erlaubt
$ipt -A DEFAULT -m state --state RELATED,ESTABLISHED -j ACCEPT

#der rest geht zum logger
$ipt -A DEFAULT -j LOGGER

# in "LOGGER" wird alles protokolliert und gedropt

$ipt -A LOGGER -p tcp -m tcp -j LOG
$ipt -A LOGGER -p udp -m udp -j LOG
$ipt -A LOGGER -p icmp -m icmp --icmp-type ping -j LOG

$ipt -A LOGGER -p tcp -m tcp -j DROP
$ipt -A LOGGER -p udp -m udp -j DROP
$ipt -A LOGGER -p icmp -m icmp --icmp-type ping -j DROP


das sieht dann so aus:


17:05:14 [root@mac] /home/matze> iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DEFAULT all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain DEFAULT (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOGGER all -- anywhere anywhere

Chain LOGGER (1 references)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp LOG level warning
LOG udp -- anywhere anywhere udp LOG level warning
LOG icmp -- anywhere anywhere icmp echo-request LOG level warning
DROP tcp -- anywhere anywhere tcp
DROP udp -- anywhere anywhere udp
DROP icmp -- anywhere anywhere icmp echo-request

Jasper
10.09.03, 17:41
Original geschrieben von maconey
@thomas, du hast mich richtig verstanden...

ne statische liste bringt mir nix... und der linuxkernel muss doch wissen was gedroppt wird und was ned? :ugly:

nein, das weiss er eben nicht, weil der kernel nix droppt. droppen ist so ziemlich das schlechteste, was man bei einem paketfilter falsch machen kann. es gibt ein, zwei ausnahmen, zugegeben.

der ip-stack antwortet auf ein syn-paket an einen geschlossenen port entweder mit TCP-RST (tcp) oder icmp-dest-unreach (tcp,udp). du müsstest solche _ausgehenden_ pakete mitloggen. dann bekommst du das was du willst.

-j

maconey
11.09.03, 07:41
dann werden die pakete aber doch verworfen, da sie nicht an irgendwelchen anwendungsprogramme bzw. ans betriebsystem weitergegeben werden... ;-)

hm, das probier ich glaub glatt mal...

danke!

maconey
11.09.03, 08:20
hm, mit verbindungen die von ausserhalb kommen funktionierts bei tcp, udp weiss ich leider nicht sicher...

die regeln hab ich verwendet:
iptables -A OUTPUT -p icmp -j LOG
iptables -A OUTPUT -p tcp --tcp-flags ALL RST -j LOG

(bei icmp weiss ich leider nicht welchen typ ich verwenden muss)

und lokale verbindungen auf ungültige ports erwisch ich so auch ned... :-(

gibts da keine "saubere" lösung??



09:16:27 [root@mac] /home/matze/mldonkey/incoming> iptables -L -v
Chain INPUT (policy ACCEPT 87938 packets, 37M bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 106K packets, 18M bytes)
pkts bytes target prot opt in out source destination
14 1230 LOG icmp -- any any anywhere anywhere LOG level warning
71 2840 LOG tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/RST LOG level warning

maconey
14.06.04, 23:57
also entweder versteh ich mein problem falsch oder ich hab die lösung: (ist ja auch ein weilchen her... :D)


...
[regeln die bestimmte verbindungen/ports/protokolle zulassen]
...
iptables -P INPUT DROP 1>&2
iptables -A INPUT -j LOG 1>&2