Avatar billede cybermike Nybegynder
20. september 2003 - 12:06 Der er 55 kommentarer og
1 løsning

OpenSSH Update paa sparc64

Downloadede nyeste OpenSSH , configure --with-ssl-dir=/etc/ssl --with-md5-passwords , make , make install

Naar jeg connecter til den haenger den lidt og smider mig af:
root@chilibeans:~# ssh 127.0.0.1
Connection closed by 127.0.0.1

Men naar jeg aabner en raw forbindelse ser det ud til at den koerer.
root@chilibeans:~# telnet 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.7p1


Jeg starter sshd med -d:root@chilibeans:~# sshd -d
debug1: sshd version OpenSSH_3.7p1
debug1: private host key: #0 type 0 RSA1
debug1: read PEM private key done: type RSA
debug1: private host key: #1 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #2 type 2 DSA
socket: Address family not supported by protocol
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
Generating 768 bit RSA key.
RSA key generation complete.
debug1: Server will not fork when running in debugging mode.
Connection from 80.196.157.246 port 49303
debug1: Client protocol version 2.0; client software version OpenSSH_3.5p1 FreeBSD-20021029
debug1: match: OpenSSH_3.5p1 FreeBSD-20021029 pat OpenSSH_3.2*,OpenSSH_3.3*,OpenSSH_3.4*,OpenSSH_3.5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-1.99-OpenSSH_3.7p1
debug1: permanently_set_uid: 42/42
setresgid 42: Function not implemented
debug1: Calling cleanup 0x33848(0x0)

Den fejler naar den vil droppe til GID 42 , brugeren er oprettet
root@chilibeans:~# cat /etc/passwd | grep 42
sshd:x:42:42:GDM:/:/bin/false

og setresgid er ifl man siden implementeret.

Dernaest lavede jeg en strace paa sshd -d og fik flg. output

[snip]
write(2, "debug1: Client protocol version "..., 76debug1: Client protocol version 2.0; client software version OpenSSH_3.7p1
) = 76
write(2, "debug1: match: OpenSSH_3.7p1 pat"..., 43debug1: match: OpenSSH_3.7p1 pat OpenSSH*
) = 43
write(2, "debug1: Enabling compatibility m"..., 54debug1: Enabling compatibility mode for protocol 2.0
) = 54
write(2, "debug1: Local version string SSH"..., 53debug1: Local version string SSH-1.99-OpenSSH_3.7p1
) = 53
fcntl(4, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
socketpair(PF_UNIX, SOCK_STREAM, 0, [3, 7]) = 0
fcntl(3, F_SETFD, FD_CLOEXEC)          = 0
fcntl(7, F_SETFD, FD_CLOEXEC)          = 0
SYS_56(0, 0x10000, 0x3)                = -1 ENOSYS (Function not implemented)
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0) = -1 EINVAL (Invalid argument)
getpid()                                = 1747
stat("/var/run", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/run/sshd.mm.DsdX1747", O_RDWR|O_CREAT|O_EXCL|0x40000, 0600) = 8
unlink("/var/run/sshd.mm.DsdX1747")    = 0
SYS_84()                                = -1 ENOSYS (Function not implemented)
ftruncate(8, 65536)                    = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 8, 0) = 0x7031c000
close(8)                                = 0
mmap(NULL, 1310720, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0) = -1 EINVAL (Invalid argument)
getpid()                                = 1747
stat("/var/run", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/run/sshd.mm.HNpF1747", O_RDWR|O_CREAT|O_EXCL|0x40000, 0600) = 8
unlink("/var/run/sshd.mm.HNpF1747")    = 0
ftruncate(8, 1310720)                  = 0
mmap(NULL, 1310720, PROT_READ|PROT_WRITE, MAP_SHARED, 8, 0) = 0x7032c000
close(8)                                = 0
fork()                                  = 1750
close(3)                                = 0
brk(0x76000debug1: permanently_set_uid: 42/42
setresgid 42: Function not implemented
debug1: Calling cleanup 0x33848(0x0)
)                            = 0x76000
--- SIGCHLD (Child exited) ---
read(7, "", 4)                          = 0
exit(255)                              = ?

Jeg kan ikke komme videre herfra kan ikke finde og rette fejlen, tror i jeg har fundet en bug der skal reportes til openssh teamet?

Jeg har proevet ssh klienter fra FreeBSD(i86), OpenBSD(sparc), Linux(Sparc64)

Er intresseret i hvis nogen ved hvad der er galt, har haft lign prob selv eller nogne der har forslag jeg ikke selv har proevet.

Jeg er _IKKE_ intresseret i rtfm, go google, eller flames fra coadmins om hvad jeg nu har gjort forkert.

Jeg smider 200 points til ham der kan loese mit problem eller hjaelpe mig med at loese det, hvis resultatet blir at det skal reportes blir der ikke uddelt points.

Jeg gaar igang med at forsoege at hacke sovsen nu.
Avatar billede mfalck Praktikant
20. september 2003 - 12:10 #1
kunne det hjælpe hvis du ikke kører med user-priviledge seperation ?
Avatar billede mfalck Praktikant
20. september 2003 - 12:15 #2
kører du sshd i et chrootet miliø ?
Avatar billede cybermike Nybegynder
20. september 2003 - 12:20 #3
har overvejet at slaa det fra men paa den anden side skal det jo virke.

Nej det er ik chrootet.
Avatar billede razor Nybegynder
20. september 2003 - 12:20 #4
Hvorfor tilslutter du med telnet og ikke ssh?
Avatar billede mfalck Praktikant
20. september 2003 - 12:21 #5
det virker på min linux/x86
med

--with-ipv4-default  --with-pam --with-ssl-dir=/usr/local/ssl --with-privsep-user=openssh
Avatar billede mfalck Praktikant
20. september 2003 - 12:21 #6
hvad giver

ldd /usr/local/sbin/sshd  (eller hvor du nu har installeret sshd ?)
Avatar billede mfalck Praktikant
20. september 2003 - 12:23 #7
har du oprettet en gruppe til sshd

setresgid er når den skal sætte gruppeid
Avatar billede cybermike Nybegynder
20. september 2003 - 12:26 #8
Razor: Som jeg skriver for at konstatere at sshd'en faktisk koerer og modtager connections men at den afviser ssh.Hvis du kigger foerst forsoeger jeg at connecte med ssh ogsaa.

Proever dine flagsm selvom de ikke disabler privsep , gaar ud fra du vil have mig til at oprette brugeren openssh ogsaa saa.

root@chilibeans:~/openssh-3.7p1# ldd /usr/local/sbin/sshd
        libutil.so.1 => /lib/libutil.so.1 (0x7002e000)
        libz.so.1 => /usr/lib/libz.so.1 (0x70040000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x70060000)
        libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x70086000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x7018a000)
        libc.so.6 => /lib/libc.so.6 (0x701c8000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x70000000)
Avatar billede mfalck Praktikant
20. september 2003 - 12:27 #9
nej - du kan bare rette til i forhold til dine egne opsætninger ... det er fint nok
Avatar billede cybermike Nybegynder
20. september 2003 - 12:28 #10
Btw har jeg ikke noget pam paa boksen saa jeg undlader det flag.
Avatar billede cybermike Nybegynder
20. september 2003 - 12:30 #11
Er der nogen krav fir openssh useren?
Avatar billede mfalck Praktikant
20. september 2003 - 12:30 #12
fint nok :-)
Avatar billede cybermike Nybegynder
20. september 2003 - 12:30 #13
s/fir/for/;
Avatar billede cybermike Nybegynder
20. september 2003 - 12:31 #14
Det tar lidt tid det er kun 333mhz sparc64 med 512mb ram(svarer til cirka en 1000mhz'er i86 naar vi snakker compile)
Avatar billede mfalck Praktikant
20. september 2003 - 12:32 #15
jeg kiggede lige på mine ldd i forhold til dine:
        libpam.so.0 => /lib/libpam.so.0 (0x4001a000)
        libdl.so.2 => /lib/libdl.so.2 (0x40023000)
       
libpam er indlysendenok. libdl må jeg tilstå at jeg er lidt blank mht.
Avatar billede mfalck Praktikant
20. september 2003 - 12:33 #16
min openssh ser ud som

openssh:!!:524:525::/tmp:/sbin/nologin

så det er der ikke
Avatar billede mfalck Praktikant
20. september 2003 - 12:33 #17
hvilken version af gcc/kernen kører du med ?
Avatar billede mfalck Praktikant
20. september 2003 - 12:34 #18
har du prøvet at lave en

find  / -name unistd.h
Avatar billede cybermike Nybegynder
20. september 2003 - 12:35 #19
root@chilibeans:~/openssh-3.7p1# sshd -d
debug1: sshd version OpenSSH_3.7p1
debug1: private host key: #0 type 0 RSA1
debug1: read PEM private key done: type RSA
debug1: private host key: #1 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #2 type 2 DSA
socket: Address family not supported by protocol
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
Generating 768 bit RSA key.
RSA key generation complete.
debug1: Server will not fork when running in debugging mode.
Connection from 127.0.0.1 port 4109
debug1: Client protocol version 2.0; client software version OpenSSH_3.7p1
debug1: match: OpenSSH_3.7p1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-1.99-OpenSSH_3.7p1
debug1: permanently_set_uid: 1033/100
setresgid 100: Function not implemented
debug1: Calling cleanup 0x33848(0x0)


Same thing
Avatar billede cybermike Nybegynder
20. september 2003 - 12:37 #20
root@chilibeans:~/openssh-3.7p1# find  / -name unistd.h
/usr/include/sys/unistd.h
/usr/include/unistd.h
root@chilibeans:~/openssh-3.7p1# uname -a
Linux chilibeans 2.2.20pre2 #1 SMP Wed May 30 11:13:51 PDT 2001 sparc64 unknown
root@chilibeans:~/openssh-3.7p1# gcc -v
Reading specs from /usr/lib/gcc-lib/sparc-slackware-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)
Avatar billede cybermike Nybegynder
20. september 2003 - 12:44 #21
Jeg proever at disable privsep man kan ikke lige finde noget flag eller nogen option for det.
Avatar billede cybermike Nybegynder
20. september 2003 - 12:46 #22
Fandt det, troede det var et compile flag men det laa i config filen.
Avatar billede mfalck Praktikant
20. september 2003 - 12:47 #23
det er igen det samme funktionskald den dør ved

setresgid 100: Function not implemented
Avatar billede mfalck Praktikant
20. september 2003 - 12:49 #24
hvad får du hvis du kører

nm -D /lib/libc-X.X.XX.so  | grep setresuid

(x.x.xx - skal du naturligvis erstatte med de korrekte værdier)
Avatar billede cybermike Nybegynder
20. september 2003 - 12:49 #25
mfalck: Den var go nok, faar lov at forsoege at logge ind nu, men kan ikke logge ind(ser ud til der er yet another fejl) saa ihvertfald en del af fejlen laa/ligger der.

Naar jeg nu vil logge ind kommer jeg ikke ind selvom jeg smider rigtig pass og naar jeg proever fra en host hvor jeg bruger keys ser det saadan her ud:
peanut# ssh unifix.org
The authenticity of host 'unifix.org (212.242.77.76)' can't be established.
DSA key fingerprint is e1:0e:9d:b2:ba:7f:32:fc:f9:79:f8:8f:30:41:0e:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'unifix.org' (DSA) to the list of known hosts.
Last login: Sat Sep 20 10:25:43 2003 from localhost
Linux 2.2.20pre2.
Connection to unifix.org closed.
peanut#
Avatar billede cybermike Nybegynder
20. september 2003 - 12:50 #26
root@chilibeans:~/openssh-3.7p1# nm /lib/libc-2.2.3.so | grep setresuid
00000000000db898 t __setresuid
00000000000db898 W setresuid
Avatar billede mfalck Praktikant
20. september 2003 - 12:52 #27
ok -så der er noget fremskridt :-)

den version af sshd du kører med nu er den oversat med eller uden

--with-md5-passwords ?
Avatar billede cybermike Nybegynder
20. september 2003 - 12:54 #28
du siger noget :)
Avatar billede cybermike Nybegynder
20. september 2003 - 12:55 #29
Men at den ikke vil logge mig ind med keys huer mig heller ikke, og at koere uden priveledge seperation heller ikke, men begynder vi ikke at naerme os noget der kan sendes ind som bugreport?
Avatar billede mfalck Praktikant
20. september 2003 - 12:57 #30
tjo - mit gæt er at de i første omgang vil sige at det er en bug i implementationen af setresgid på sparc64
Avatar billede mfalck Praktikant
20. september 2003 - 12:58 #31
jeg har fået den til at oversætte ssh 3.7 både på intel og alpha, så det kunne tyde på at det er sparch som driller ... muligvis kunne det være kernen :-)
Avatar billede cybermike Nybegynder
20. september 2003 - 13:01 #32
muligvis, nu er jeg bare i den traelse situation at jeg ikke kan opgradere kerne. Der er flere aarsager, den staar uden head 200km vaek, sidst jeg forsoegte (2 maaneder siden) kunne jeg ikke faa den til at compile selve kernen(det er aabenbart ikke make bzImage paa sparc64) derfor har jeg ikke proevet at lave ny kerne til en sparc foer og det skal bestemt ikke proeves foerste gang paa en produktionsserver 200km vaek :)

En af aarsagerne til at jeg leder efter ekstra sparc64 mere at teste med herhjemme.
Avatar billede cybermike Nybegynder
20. september 2003 - 13:02 #33
root@chilibeans:~/openssh-3.7p1# ssh localhost
root@localhost's password:
Last login: Sat Sep 20 12:49:08 2003 from 0x50c49df6.adsl-fixed.tele.dk
Linux 2.2.20pre2.
Connection to localhost closed.

Nu strander den der, ved ikke om det er normal opfoersel naar man disabler privsep.
Avatar billede mfalck Praktikant
20. september 2003 - 13:04 #34
jeg tror du kan kigge på http://www.epoka.dk/showpage.asp?ID=25 (uden at vide mere om dem end som så) hvis du vil kigge på en brugt sparc.

jeg kan godt forstå at du ikke lige vil prøve at opgradere til en nyere version når du ikke bare lige kan tage hen og vende maskinen :-)
Avatar billede mfalck Praktikant
20. september 2003 - 13:04 #35
kan det være at du ikke har lov til at logge ind som root ?
Avatar billede mfalck Praktikant
20. september 2003 - 13:05 #36
#PermitRootLogin yes

i /usr/local/etc/sshd_config
Avatar billede cybermike Nybegynder
20. september 2003 - 13:17 #37
jeg blirjo logged in men smidt ud igen
Avatar billede cybermike Nybegynder
20. september 2003 - 13:18 #38
det er sat til yes per default
Avatar billede mfalck Praktikant
20. september 2003 - 13:19 #39
nej den er kommenteret ud. Har du prøvet med en anden bruger ?
Avatar billede mfalck Praktikant
20. september 2003 - 13:20 #40
ellers må du lige køre med sshd -d og se hvad ser sker (eller strace den)
Avatar billede cybermike Nybegynder
20. september 2003 - 13:22 #41
Hvis du laeser overst i filen staar der at det som staar i det udkommenterede er default indstillingerne, og jeg jeg har proevet med en anden bruger.
Avatar billede mfalck Praktikant
20. september 2003 - 13:22 #42
ok - jeg kunne se at jeg selv kunne logge ind med root oxå
Avatar billede cybermike Nybegynder
20. september 2003 - 13:23 #43
root@chilibeans:~/openssh-3.7p1# ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is 4d:43:89:1a:8a:34:3c:63:e9:01:ae:24:53:7b:9b:83.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
root@127.0.0.1's password:
Last login: Sat Sep 20 13:02:18 2003 from localhost
Linux 2.2.20pre2.
debug1: permanently_set_uid: 0/0
setresgid 0: Function not implemented
Connection to 127.0.0.1 closed.

Failed keyboard-interactive for root from 127.0.0.1 port 4139 ssh2
debug1: userauth-request for user root service ssh-connection method password
debug1: attempt 2 failures 2
Accepted password for root from 127.0.0.1 port 4139 ssh2
debug1: Entering interactive session for SSH2.
debug1: server_init_dispatch_20
debug1: server_input_channel_open: ctype session rchan 0 win 65536 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug1: session_new: init
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_channel_req: channel 0 request pty-req reply 0
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req pty-req
debug1: Allocating pty.
debug1: session_pty_req: session 0 alloc /dev/pts/3
debug1: server_input_channel_req: channel 0 request shell reply 0
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req shell
debug1: Setting controlling tty using TIOCSCTTY.
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 19890
debug1: session_exit_message: session 0 channel 0 pid 19890
debug1: session_exit_message: release channel 0
debug1: session_close: session 0 pid 19890
debug1: session_pty_cleanup: session 0 release /dev/pts/3
debug1: channel 0: free: server-session, nchannels 1
Connection closed by 127.0.0.1
Closing connection to 127.0.0.1


det var med en sshd -d
Avatar billede mfalck Praktikant
20. september 2003 - 13:29 #44
bare lige for at teste noget vil du så ikke prøve at køre en

find / -exec grep -il "Function not implemented" {} 2>/dev/null \;
Avatar billede cybermike Nybegynder
20. september 2003 - 13:31 #45
ok den der cmd ser jeg ikke lige pointe i, du piper jo lortet til dev null, hvad er det du vil ha den til at fortaelle dig?
Avatar billede mfalck Praktikant
20. september 2003 - 13:35 #46
nej - jeg piper alle error msg til /dev/null
Avatar billede cybermike Nybegynder
20. september 2003 - 13:36 #47
ja men hvad goer hele kommandoen? Vil du have den til at soege alle mine 160 gigabyte igennem efter teksten "Function not implemented" ?
Avatar billede mfalck Praktikant
20. september 2003 - 13:39 #48
ja - jeg vidste ikke hvormeget data du havde liggende.
Avatar billede mfalck Praktikant
20. september 2003 - 13:40 #49
mit gæt er at det er "setresgid" som ikke er implementeret og den derfor blot returnerer stregen: "Function not implemented"
Avatar billede mfalck Praktikant
20. september 2003 - 13:44 #50
hvis du vil hacke sourcen så kan du evt prøve at ændre følgende linier ud i uidswap.c:

#if defined(HAVE_SETRESGID)
  if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) < 0)
    fatal("setresgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno));
#elif defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID)

til
if defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID)
Avatar billede cybermike Nybegynder
20. september 2003 - 14:20 #51
well den fejler hvergang den laver setresgid, jeg vil proeve at kigge lidt paa den. Jeg har ikke 160gb men taet paa vil jeg tro, den her server koerer en 30-40 domains.
Avatar billede mfalck Praktikant
20. september 2003 - 14:23 #52
som jeg skrev kl 13:40 så tror jeg at det er setresgid som er i udu. Du kan evt prøve at omgå det ved at rette i uidswap.c.
Avatar billede cybermike Nybegynder
20. september 2003 - 14:27 #53
tror du har ret.
Avatar billede mfalck Praktikant
20. september 2003 - 15:03 #54
det letteste er måske bare at gøre sådan

#if defined(0 && HAVE_SETRESGID)
if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) < 0)
    fatal("setresgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno));
#elif defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID)
Avatar billede cybermike Nybegynder
21. september 2003 - 10:55 #55
Problemet loest:
Aendrede i config.h:

/* Define if you have the `setresgid' function. */
#define HAVE_SETRESGID 1

/* Define if you have the `setresuid' function. */
#define HAVE_SETRESUID 1


til:

/* Define if you have the `setresgid' function. */
/* #define HAVE_SETRESGID 1 */

/* Define if you have the `setresuid' function. */
/* #define HAVE_SETRESUID 1 */


Dvs udkommenterede de to defines, make & make install
bemaerk configure skal koeres foer, du aendrer i filen.

mfalck: Du loeste ikke direkte problemet men du brugte noget tid paa det saa du faar pointsene aligevel :=) Tak for hjaelpen.
Avatar billede mfalck Praktikant
22. september 2003 - 08:20 #56
ok - glad for at kunne hjælpe til ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester