Diese Seite wurde von http://www.wh-netz.de/knowledgebase/OIdentD.de.htm gedruckt.
Alle Inhalte unterliegen dem Copyright von WH-Netz e.V.
DE

Ident-Daemon für NAT-User

Inhalt:

Was ist Ident

Manche IRC(net)-/ftp-/SMTP-/???-Server verlangen eine erfolgreiche Ident-Response, um auf sie zuzugreifen. Z.B. wird nur eine Verbindung pro IP-Adresse ins IRCnet zugelassen, jedoch weitere, wenn jeweils eine andere Ident-Response geliefert werden kann.

Ident, auch auth(entication) genannt, laeuft auf 113/tcp, hat trotz des Namens aber nichts mit Authentifizierung zu tun. Da diese Ident-Requests als neue Anfragen (SYN-Pakete) reinkommen, muss also schonmal TCP-Port 113 offen sein, da ist nix mit ESTABLISHED oder RELATED.

Hosts, die geNATtet auf solche Server zugreifen, koennen selbst natuerlich keine Ident-Response liefern, schliesslich hat man nur einen TCP-Port 113, den man nicht auf alle forwarden kann.

Was also tun, damit eine Ident-Response geliefert werden kann und die geNATteten Rechner so auf diese Server kommen?

http://www.zugschlus.de/zmna/auth

Installation

oidentd installieren; bei Debian genuegt dazu der uebliche apt-get|aptitude-Befehl.

Fuer RPM-kisten gibt's oidentd-2.0.4-fr3.i386.rpm, oidentd-2.0.4-fr3.src.rpm, worauf sich hier jetzt auch bezogen wird. (TODO: Debians oidentd checken)

Normalerweise verlaeuft eine Ident-Abfrage in etwa so:

  $ telnet remote 113
  Trying ...
  Connected to localhost.
  Escape character is '^]'.
  42,23
  42 , 23 : USERID : UNIX : hanswurst
  quit
  Connection closed by foreign host.
Mit 42,23 wird die Src-/Dst-Port-Kombination genannt, wovon der User/Prozess in Erfahrung gebracht werden soll, der dahintersteckt. Im Beispiel gibt's also gerade eine TCP-Verbindung zwischen dem eigenen Rechner und dem Host remote auf den Ports 42 und 23, die der Benutzer "hanswurst" geöffnet hat, wie die Antwort zeigt. Anstatt "quit" koennten noch direkt weitere Anfragen gestellt werden.

Folgende Moeglichkeiten sind fuer einen Masq-Router also denkbar:

  • Die Ident-Anfrage wird weitergeleitet zu dem geNATteten Host, der die Verbindung aufgebaut hat, und dessen Antwort wird dann an den anfragenden Server zurueckgegeben. Ist nicht besonders schoen, weil nicht so performant, fehleranfaellig, und jeder User muss sich um seinen eigenen Identd kuemmern (was aber evtl. auch wieder sinnvoll sein kann). Damit arbeitet der Identd auf dem Masq-Router dann also quasi als Proxy.
  • Einfacher ist es, wenn der Router einfach selbst (irgend)eine Antwort gibt. Wenn eine bestimmte Antwort gegeben werden soll, dann braucht man eine Tabelle (masqrouter:/etc/oidentd_masq.conf) in der pro maskierter IP-Adresse eine Ident-Response (USER OS-TYPE) steht. Wir waehlen als USER den DNS-Hostname zur 10er-IP-Adresse und als OS-TYPE "UNKNOWN".

Debian

In der Datei /etc/default/oident trägt man ungefähr folgendes ein:
OIDENT_OPTIONS="-m "
OIDENT_USER=nobody
OIDENT_GROUP=root
#OIDENT_BEHIND_PROXY=yes

Red-Hat

Der oidentd aus oidentd-2.0.4-fr3.i386.rpm bringt ein Init-Script (/etc/init.d/identd) mit, das fuer Red Hat Linux release 8.0 (Psyche) u.a. leicht angepasst werden muss:

@@ -26,7 +26,8 @@

 [ -x /usr/sbin/oidentd ] || exit 0

-IDENTDOPTS="-q -u nobody -g nobody"
+# "-m" was added and "-g nobody" was commented in order to make oidentd work as required.
+# without "-q" there's always a log-entry generated on a ident-request/reply, which could
+# be used to check who has (probably) initated a connection to the requesting computer
+# just shortly before.
+IDENTDOPTS="-m -q -u nobody" # -g nobody"
 RETVAL=0

 start() {

Updates

Regelmaessig muss die Datei /etc/oidentd_masq.conf generiert und aktualisiert werden. Wesentlich dabei ist nur, dass eben jede durch den Router geNATtete IP-Adresse drinsteht. Es empfiehlt sich also ein taegliches Update.

oident_masq.conf

Eine beispielhafte oident_masq.conf:

10.1.1.2         berry            UNKNOWN
10.1.3.2         corsa            UNKNOWN
10.1.2.5         sunshine         UNKNOWN
10.1.2.6         pilot            UNKNOWN
10.1.2.7         ken              UNKNOWN
10.1.3.9         droll            UNKNOWN

So sollte das Aktualisieren der Datei oident_masq.conf erfolgen (als root):

# cat oident_masq.conf,neu | ssh masqrouter "cat > etc/oidentd_masq.conf,neu"
# ssh masqrouter "mv /etc/oidentd_masq.conf,neu /etc/oidentd_masq.conf"

Funktionstest

Das Funktionieren des oidentd laesst sich beispielsweise so von einem maskierte/geNATteten Rechner aus pruefen; hier laeuft also kein oidentd auf dem Masq-Router:

  $ bitchx freechat-network.de
...
  -:- Connecting to port 6667 of server freechat-network.de [refnum 0]
  [e]  *** Looking up your hostname...
  [e]  *** Checking ident...
  [e]  *** Found your hostname
  [e]  *** No ident response; username prefixed with ~
  >>> IRC [IRC@main.freechat-network.de] requested VERSION  from hog
  -:- BitchX: For more information about BitchX type /about
  -:- Welcome to the Freechat-Network IRC Network hog!~hog@gw-1.selfnet.de
            (from main.freechat-network.de)
...
Nun schon, aber die Ident-Response war negativ:
  $ bitchx freechat-network.de
...
  -:- Connecting to port 6667 of server freechat-network.de [refnum 0]
  [e]  *** Looking up your hostname...
  [e]  *** Checking ident...
  [e]  *** Received identd response
  [e]  *** Found your hostname
  >>> IRC [IRC@main.freechat-network.de] requested VERSION  from hog
  -:- BitchX: For more information about BitchX type /about
  -:- Welcome to the Freechat-Network IRC Network hog_!~hog@gw-3.selfnet.de
            (from main.freechat-network.de)
...
Hier ist dann alles in Butter, die Tilde ist weg:
  $ bitchx freechat-network.de
...
  -:- Connecting to port 6667 of server freechat-network.de [refnum 0]
  [e]  *** Looking up your hostname...
  [e]  *** Checking ident...
  [e]  *** Received identd response
  [e]  *** Found your hostname
  >>> IRC [IRC@main.freechat-network.de] requested VERSION  from hog
  -:- BitchX: For more information about BitchX type /about
  -:- Welcome to the Freechat-Network IRC Network hog_!goh@gw-3.selfnet.de
            (from main.freechat-network.de)
...
Freechat-Network gehoert uebrigens nicht zum IRCnet, verlangt also auch keine Ident-Responses.

Bugs / Patches

Ältere 2.4er Linux-Kernel

ACHTUNG: Es gibt krasse Bugs in Linux bis in die 2.6er-Vanilla-Serie hinein, die so 'nen Router toeten (Oops! verursachbar evtl. durch telnet localhost 113 ...) koennen, also ggf. moeglichst alle patches (die was mit /proc/net/ip_conntrack zu tun haben aus patch-o-matic-ng von http://www.netfilter.org/ einspielen.
Vgl.:
http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&threadm=4041.00000000.3b9762d8%40newsgate.onet.pl
http://lkml.org/lkml/2003/12/30/141

<kaber@trash.net>, tracked down by Raivis Bucis <raivis@mt.lv>) �This patch fixes an oops while listing /proc/net/ip_conntrack.�
http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.7 This patch fixes an oops while listing /proc/net/ip_conntrack. Tracked down by Raivis Bucis <raivis@mt.lv> http://www.linuxhq.com/kernel/changelog/v2.6/7-rc3-bk7/ ChangeSet@1.1754.8.3, 2004-06-14 17:28:58-07:00, laforge@netfilter.org
http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&threadm=4041.00000000.3b9762d8%40newsgate.onet.pl

Neuer 2.6er Kernel

Neue Kernel haben in der Kernel-Config die eigentlich recht praktische Option CONFIG_IP_NF_CT_ACCT . Leider ändert sich das Format der Datei /proc/net/ip_conntrack , wenn man diese Option aktiviert.

Damit oidentd auch mit dem neuen Format zurecht kommt, hilft folgender patch:

Ein Debian-Paket mit diesem Patch fertig drin liegt auf unserem FTP-Server:

Alternativen

etwaige Alternativen (weniger gute, da u.a. i.d.R. schon laenger nicht mehr gepflegt, d.h. veraltet):

I Attachment Action Size Date Who Comment
elsepatch oidentd-linux-2.6.10_conntrack.patch manage 0.7 K 07 Jan 2005 - 01:11 Main.matthias