SSH Tunnel in einer Jail öffnen

Gehen wir mal davon aus das wir einen SSH Benutzer in einer Jail eingesperrt haben. Dieser möchte aber unbedingt einen SSH Tunnel  zu einem anderen Server aufbauen. Normalerweise will man das nicht und verbietet dieses in der sshd_config Konfiguration mittels AllowTcpForwarding no.

Ich wollte das trotzdem einmal habe und konnte einfach nicht finden warum es nicht möglich war. Meine Fehlermeldung:

# ssh -N -L 1337:127.0.0.1:3306 user@$remoteserver -vv

debug1: Connection to port 1337 forwarding to 127.0.0.1 port 3306
requested.
debug2: fd 7 setting TCP_NODELAY
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: administratively prohibited: open failed
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 1337 for
127.0.0.1 port 3306, connect from ::1 port 58509, nchannels 3

Ein kleiner Test:

# telnet localhost 1337
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

Hat leider nichts geholfen und wenn die Fehlermeldung schon sagt das es $irgendwas nicht öffnen kann, muss man sich das einmal genauer mit strace anschauen:

# strace -p $pid -ff
Process $pid attached - interrupt to quit
select(8, [3 7], [], NULL, NULL)        = 1 (in [3])
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(3,
"\354O-\1\374O\215\5\4G\323\226\371\207V\325s\37\277-\350\207$)\261}\235\241\320\306\302M"...,
16384) = 96
socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
connect(4, {sa_family=AF_FILE, path="/dev/log"}, 110) = -1 ENOENT (No such file or directory)
close(4)                                = 0
select(8, [3 7], [3], NULL, NULL)       = 1 (out [3])
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
write(3,
"\374\231G-+\2,\365\255\312\240Y\20\217YL\350\3t193O\35\323\224\237\3728\260\233\223"...,
64) = 64
select(8, [3 7], [], NULL, NULL

In der Jail hat kein /dev/log existiert und ohne ein bisschen herumzuloggen möchte SSH anscheinend auch keinen Tunnel aufbauen. Kurzerhand das Device angelegt und schon ging es.

root@server:/var/jail/user/dev# ls -al log
srw-rw-rw- 1 root root 0 Mar  3 16:08 log
root@server:/var/jail/user/dev# grep -E '^\$' /etc/rsyslog.d/jail.conf
$AddUnixListenSocket /var/jail/user/dev/log
root@server:/var/jail/user/dev#

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.