SMBv1/CIFS op ouder NAS

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
Mijn vraag
iemand een oplossing voor ouderwetse SMBv1/CIFS koppelingen op de oudere NASsen als de NSA320? sinds WannaCry heb ik op alle machines SMBv1 dichtstaan, maar dan doet de NSA320 t niet meer. Firmware is sinds eind 2016 niet meer bijgewerkt. Of wordt t een nieuwe zoeken...?

Relevante software en hardware die ik gebruik
  • ZYXEL NSA320 met firmware van eind 2016.
  • alle computers windows10, allen gepatched op laatste level
  • poort 445 naar buiten staat dicht op router, provider en NAS
  • 2 maal 3TB in raid 1
Wat ik al gevonden of geprobeerd heb
.
  • Via de commandline met NET USE wat proberen
  • gezocht op de NAS of ik protocollen kon aanpassen of kiezen

Het is vervelend als cynicus steeds gelijk te krijgen.

Beste antwoord (via peter00 op 06-11-2017 14:50)


  • Mijzelf
  • Registratie: September 2004
  • Niet online
Ondertussen heb ik ook nog verder geëxperimenteerd, met name vanwege die dynamische configuratie file. Om SMB2 te enablen moet er een regel bij, maar die wordt regelmatig overschreven. Dus heb ik gekozen voor een eigen configuratie file die de firmware file include.

Mijn startscript (/opt/etc/init.d/S09ZyXELSambaReplacement) ziet er zo uit:
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/sh

# Prgmname=/full_path/Prgmname
prgmname1="/opt/sbin/nmbd"
prgmname2="/opt/sbin/smbd"

# configfile=/full_path/configfile
configfile="/opt/etc/samba/ZyXELSambaReplacement.conf"

#location of pid-file
nmbdpid="/opt/var/run/nmbd-ZyXELSambaReplacement.conf.pid"
smbdpid="/opt/var/run/smbd-ZyXELSambaReplacement.conf.pid"

start() {
        # Code here to start the program
        ${prgmname1} -D -s ${configfile}
        logger -t nmbd "started $prgmname1, conf: $configfile"
        ${prgmname2} -D -s ${configfile}
        logger -t smbd "started $prgmname2, conf: $configfile"
        return 0
}

stop() {
        # Code here to stop the program and check it's dead
        [ -f $nmbdpid ] && kill `cat $nmbdpid` && rm -f $nmbdpid
        logger -t nmbd "service stopped"
        sleep 1
        [ -f $smbdpid ] && kill `cat $smbdpid` && rm -f $smbdpid
        logger -t smbd "service stopped"
        return 0
}

startreplacement() {
    if [ -f /etc/init.d/samba.replaced.sh ] 
    then
        # The file is already replaced
        return
    fi
    
    # Stop ZyXEL samba server
    sh /etc/init.d/samba.sh stop
    # Rename the file
    mv /etc/init.d/samba.sh /etc/init.d/samba.replaced.sh
    # Create a symlink to this script
    ln -s /opt/etc/init.d/$( basename $0 ) /etc/init.d/samba.sh
    # Create a symlink for the pid files
    [ -f /var/run/smbd.pid ] && rm /var/run/smbd.pid 
    ln -s ${smbdpid} /var/run/smbd.pid
    [ -f /var/run/nmbd.pid ] && rm /var/run/nmbd.pid
    ln -s ${nmbdpid} /var/run/nmbd.pid
    # And start it
    sh /etc/init.d/samba.sh start
}

stopreplacement() {
    if [ -f /etc/init.d/samba.replaced.sh ]
    then
        # Stop current running samba
        sh /etc/init.d/samba.sh stop
        # Rename old script back
        rm /etc/init.d/samba.sh
        mv /etc/init.d/samba.replaced.sh /etc/init.d/samba.sh

        # Remove the pid file symlinks      
        [ -h /var/run/smbd.pid ] && rm /var/run/smbd.pid 
        [ -h /var/run/nmbd.pid ] && rm /var/run/nmbd.pid

        # Start firmware samba
        sh /etc/init.d/samba.sh start
    fi
}

##########################start here##########################

if [ "$( basename "$0" )" = "samba.sh" ]
then
# The ZyXEL samba file is called
  case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
  esac
else
# The Entware startscript is called
  case "$1" in
    start)
        startreplacement
        ;;
    stop)
        stopreplacement
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
  esac
fi
exit
En mijn configuratie file (/opt/etc/samba/ZyXELSambaReplacement.conf)
code:
1
2
3
4
[Global]
max protocol = SMB2

include = /etc/samba/smb.conf
Hoe je Windows zo gek krijgt om SMB2 te gebruiken (het hoogste wat samba 3.6 ondersteund) weet ik niet, ik heb geen Windows machines.

Op Linux werkt het:
cd /tmp
mkdir Test
mount //nsa325.lan/Test Test -o user=admin,vers=2.0
Password for admin@//nsa325.lan/Test:  *****

cat /proc/mounts
<snip>
//nsa325.lan/Test /tmp/Test cifs rw,relatime,vers=2.0,sec=ntlmssp,cache=strict,username=admin,domain=NAS520,uid=0,noforceuid,gid=0,noforcegid,addr=172.20.172.248,file_mode=0755,dir_mode=0755,nounix,serverino,mapposix,rsize=65536,wsize=65536,echo_interval=60,actimeo=1 0 0

Alle reacties


Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Je zou het met NFS kunnen doen (zo te zien door een extra package op die zyxel te installeren), maar of dat werkt afhankelijk van de versie van windows 10 die je gebruikt geloof ik.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Hoe ver wil je gaan? Ik heb wat geëxperimenteerd met het injecteren van de Entware-ng samba server (3.6.25) in de firmware, en op mijn ZyXEL NAS520 werkte dat. Op mijn Medion STG212 (ook een ZyXEL familielid) werkte het niet. De NSA320 zit daar kwa firmware versie een beetje tussenin, dus onvoorspelbaar wat er gaat gebeuren.

Met 'werken' bedoel ik overigens dat de samba server draait, en werkt, en dat de wijzigingen in het webinterface direct overgenomen worden. Dat laatste werkte bij de Medion niet, die moest bij elke wijziging rebooten. (Of manueel via ssh de samba server herstarten)

Of dit jouw probleem oplost weet ik niet. Ik heb geen Windows PC staan, en ik kon niet vaststellen via welk SMB protocol mijn Linux PC inlogde. (Ook niet zo heel veel tijd aan besteed, trouwens)

Als je geïnteresseerd bent laat maar weten. Het is niet moeilijk, en eenvoudig ongedaan te maken.

Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
u_nix_we_all schreef op dinsdag 30 mei 2017 @ 16:11:
Je zou het met NFS kunnen doen (zo te zien door een extra package op die zyxel te installeren), maar of dat werkt afhankelijk van de versie van windows 10 die je gebruikt geloof ik.
klopt. ik heb de home edition op alle machines, en daar werkt NFS niet mee. zou wel een mooi alternatief zijn

Het is vervelend als cynicus steeds gelijk te krijgen.


Acties:
  • 0 Henk 'm!

  • jan99999
  • Registratie: Augustus 2005
  • Laatst online: 30-05 13:35
Firewall dicht maken tav samba in je ZYXEL,
firewall in je router dicht maken en/of poorten sluiten die samba gebruikt.
Wat dan nog gevaarlijk blijft is , al je interne hardware die je ZYXEL kan aanvallen.
Ook in je ZYXEL alles blokkeren behalve de pc's die toegang moeten hebben, of alleen de lokale pc's toegang geven, in je firewall van je ZYXEL.

ZYXEL vragen of ze dit gaan updaten.

Kijk of er gebruikers zijn, en wat die doen, via google zoeken.

Kijk of je de software kan wijzigen naar iets anders, misschien linux of bsd, kijk hier ook of iemand dit al gedaan heeft.

[ Voor 14% gewijzigd door jan99999 op 31-05-2017 10:09 ]


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
OK, @peter00 heeft in een DM laten weten dat hij de 'code injectie' wil proberen, dus hier de instructies:

Eerst moet je MetaRepository installeren. De package manager van de NAS kan maar met 1 package repository omgaan. MetaRepository kan verschillende repositories mergen, en aanbieden als 1. Dit opent de weg naar 3th party packages.

Vervolgens kun je Entware-ng installeren.

Om van Entware-ng gebruik te maken heb je shell access nodig. Hiervoor zijn een aantal mogelijkheden.
  • Je kunt Tweaks installeren om de interne telnet server te enabelen.
  • Je kunt Dropbear installeren. Dat is een ssh server.
  • Je kunt eenmalig de Telnet backdoor openen en de ssh server van Entware-ng installeren.
Er vanuit gaand dat je shell access hebt, kun je (als root) de volgende commando's uitvoeren:
opkg update 
opkg install samba36-server nano
Nu kun je het startscript editen:
nano /opt/etc/init.d/S08samba
Hier verander je 'configfile="/opt/etc/samba/smb.conf"' in 'configfile="/etc/samba/smb.conf"'.
Verder voeg je onder 'start() {' de regels
/etc/init.d/samba.sh stop
sed -i 's|/usr/sbin|/opt/sbin|g' /etc/init.d/samba.sh
toe.

Het startscript ziet er dus zo uit:
<snip>
configfile="/etc/samba/smb.conf"

#location of pid-file
nmbdpid="/opt/var/run/nmbd.pid"
smbdpid="/opt/var/run/smbd.pid"

start() {
        /etc/init.d/samba.sh stop
        sed -i 's|/usr/sbin|/opt/sbin|g' /etc/init.d/samba.sh
        # Code here to start the program
<snip>


Dat is het zo ongeveer. Je kunt nu de nieuwe samba starten:
/opt/etc/init.d/S08samba start
en controleren of je weer toegang hebt.

Achtergrond:
De /etc directory op een ZyXEL NAS zit in een ramdrive (de initramfs). De file /etc/samba/smb.conf wordt dynamisch aangemaakt. Bij het booten wordt /etc/init.d/samba.sh eenmalig aangeroepen om samba te starten, en lijkt verder niet meer te worden gebruikt. Voor de veiligheid heb ik toch maar locatie van de binaries in /etc/init.d/samba.sh aangepast.
Als je iets wijzigt in de webinterface, wordt /etc/samba/smb.conf aangepast, en wordt het equivalent van
killall -HUP smbd
killall -HUP nmbd
uitgevoerd. (Op een NAS520). De pid files worden niet gebruikt (als je ze wijzigt/weghaalt heeft dat geen effect).
Op de Medion lijkt die killall niet te worden uitgevoerd. Na wijziging is er een nmbd bijgestart (er draaien dan een /opt/sbin/nmbd en een /usr/sbin/nmbd. Geen idee).

Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
dank voor deze uitleg. ik had entware-ng packet al eens geinstalleerd dus ik kon eenvoudig aan de slag.

ik loop nog tegen paar issues aan. Allereerst kon ik niet vinden waarom processen niet gestopt werden, dat ligt waarschijnlijk aan dat de pid's een iets andere naam hebben dan in je script
nmbdpid="/opt/var/run/nmbd-smb.conf.pid" 
smbdpid="/opt/var/run/smbd-smb.conf.pid"


daemons draaien na aanpassen en opstarten:
root@NSA320:~# ps|grep mbd
 3592 root      5044 S    /opt/sbin/nmbd -D -s /etc/samba/smb.conf
 3595 root      5052 S    /opt/sbin/smbd -D -s /etc/samba/smb.conf


ik heb echter nog geen toegang op mn pc's als ik SMBv1 uitzet. Logfiles zien er goed uit, ondanks een UTF8/ASCII melding. Kan die dynamische vulling van dat conf bestand nog niet helemaal traceren.

[2017/11/05 20:55:43, 0] (smbd_main)
smbd version 3.6.25 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2017/11/05 20:55:43, 0] (handle_dos_charset)
ERROR: invalid DOS charset: 'dos charset' must not be UTF8, using (default value) ASCII instead.

ik zoek nog even verder, maar tips zijn welkom

Het is vervelend als cynicus steeds gelijk te krijgen.


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Ondertussen heb ik ook nog verder geëxperimenteerd, met name vanwege die dynamische configuratie file. Om SMB2 te enablen moet er een regel bij, maar die wordt regelmatig overschreven. Dus heb ik gekozen voor een eigen configuratie file die de firmware file include.

Mijn startscript (/opt/etc/init.d/S09ZyXELSambaReplacement) ziet er zo uit:
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/sh

# Prgmname=/full_path/Prgmname
prgmname1="/opt/sbin/nmbd"
prgmname2="/opt/sbin/smbd"

# configfile=/full_path/configfile
configfile="/opt/etc/samba/ZyXELSambaReplacement.conf"

#location of pid-file
nmbdpid="/opt/var/run/nmbd-ZyXELSambaReplacement.conf.pid"
smbdpid="/opt/var/run/smbd-ZyXELSambaReplacement.conf.pid"

start() {
        # Code here to start the program
        ${prgmname1} -D -s ${configfile}
        logger -t nmbd "started $prgmname1, conf: $configfile"
        ${prgmname2} -D -s ${configfile}
        logger -t smbd "started $prgmname2, conf: $configfile"
        return 0
}

stop() {
        # Code here to stop the program and check it's dead
        [ -f $nmbdpid ] && kill `cat $nmbdpid` && rm -f $nmbdpid
        logger -t nmbd "service stopped"
        sleep 1
        [ -f $smbdpid ] && kill `cat $smbdpid` && rm -f $smbdpid
        logger -t smbd "service stopped"
        return 0
}

startreplacement() {
    if [ -f /etc/init.d/samba.replaced.sh ] 
    then
        # The file is already replaced
        return
    fi
    
    # Stop ZyXEL samba server
    sh /etc/init.d/samba.sh stop
    # Rename the file
    mv /etc/init.d/samba.sh /etc/init.d/samba.replaced.sh
    # Create a symlink to this script
    ln -s /opt/etc/init.d/$( basename $0 ) /etc/init.d/samba.sh
    # Create a symlink for the pid files
    [ -f /var/run/smbd.pid ] && rm /var/run/smbd.pid 
    ln -s ${smbdpid} /var/run/smbd.pid
    [ -f /var/run/nmbd.pid ] && rm /var/run/nmbd.pid
    ln -s ${nmbdpid} /var/run/nmbd.pid
    # And start it
    sh /etc/init.d/samba.sh start
}

stopreplacement() {
    if [ -f /etc/init.d/samba.replaced.sh ]
    then
        # Stop current running samba
        sh /etc/init.d/samba.sh stop
        # Rename old script back
        rm /etc/init.d/samba.sh
        mv /etc/init.d/samba.replaced.sh /etc/init.d/samba.sh

        # Remove the pid file symlinks      
        [ -h /var/run/smbd.pid ] && rm /var/run/smbd.pid 
        [ -h /var/run/nmbd.pid ] && rm /var/run/nmbd.pid

        # Start firmware samba
        sh /etc/init.d/samba.sh start
    fi
}

##########################start here##########################

if [ "$( basename "$0" )" = "samba.sh" ]
then
# The ZyXEL samba file is called
  case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
  esac
else
# The Entware startscript is called
  case "$1" in
    start)
        startreplacement
        ;;
    stop)
        stopreplacement
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
  esac
fi
exit
En mijn configuratie file (/opt/etc/samba/ZyXELSambaReplacement.conf)
code:
1
2
3
4
[Global]
max protocol = SMB2

include = /etc/samba/smb.conf
Hoe je Windows zo gek krijgt om SMB2 te gebruiken (het hoogste wat samba 3.6 ondersteund) weet ik niet, ik heb geen Windows machines.

Op Linux werkt het:
cd /tmp
mkdir Test
mount //nsa325.lan/Test Test -o user=admin,vers=2.0
Password for admin@//nsa325.lan/Test:  *****

cat /proc/mounts
<snip>
//nsa325.lan/Test /tmp/Test cifs rw,relatime,vers=2.0,sec=ntlmssp,cache=strict,username=admin,domain=NAS520,uid=0,noforceuid,gid=0,noforcegid,addr=172.20.172.248,file_mode=0755,dir_mode=0755,nounix,serverino,mapposix,rsize=65536,wsize=65536,echo_interval=60,actimeo=1 0 0

Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
windows 10 heeft SMBv2 ook aan staan. Dat is te controleren door in een powershell window het volgende in te tikken:

Get-SmbServerConfiguration | Select EnableSMB2Protocol


verder lijkt het nu te werken voor de standaard shares, maar nog niet voor de user-defined shares. Maar daar kom ik wel uit. door de injectie van het max protocol ben ik ook een andere foutmelding kwijt

Dank voor de hulp. Leuk om weer eens een beetje te scripten. :-)

Het is vervelend als cynicus steeds gelijk te krijgen.


Acties:
  • 0 Henk 'm!

  • JDDD
  • Registratie: Januari 2012
  • Laatst online: 10-06 10:55
Hi Peter,
Ik ben ook bezig om mijn 320 nas op 3.6.25 te krijgen. Heb je voor het probleem met de user-defined shares nog een oplossing gevonden. Zou je dit ook willen delen.
Bedankt,

Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
JDDD schreef op zondag 18 maart 2018 @ 22:22:
Hi Peter,
Ik ben ook bezig om mijn 320 nas op 3.6.25 te krijgen. Heb je voor het probleem met de user-defined shares nog een oplossing gevonden. Zou je dit ook willen delen.
Bedankt,
ik ben er lang mee bezig geweest en heb inderdaad eea aan de praat gekregen. Echter heb ik wel iets fout gedaan, want er leek iets aan de rechten veranderd. Hierdoor was de toegang tot de shares niet meer consistent. sommige waren zichtbaar maar kon ik niet benaderen en andere kon ik met t ene account wel op maar met een ander account niet. Het rechtzetten via de scripts en command line lukte me niet goed, en leverde me zoveel frustratie op dat ik nu een Synology heb staan. Die is veelzijdiger en vooral stiller....

succes met de upgrade.

Het is vervelend als cynicus steeds gelijk te krijgen.


Acties:
  • 0 Henk 'm!

  • antigoon
  • Registratie: Februari 2006
  • Laatst online: 20-11-2021
zo heb ik het opgelost:
Open “configuratie-onderdelen” en klik door naar “programma’s en onderdelen”.
Klik op het volgende scherm in de linkerbalk op “Windows–onderdelen in- of uitschakelen”.
Op het volgende scherm vink je op “Ondersteuning voor SMB 1.0/CIFS”

Acties:
  • 0 Henk 'm!

  • peter00
  • Registratie: Oktober 2006
  • Niet online
antigoon schreef op maandag 4 juni 2018 @ 19:53:
zo heb ik het opgelost:
Open “configuratie-onderdelen” en klik door naar “programma’s en onderdelen”.
Klik op het volgende scherm in de linkerbalk op “Windows–onderdelen in- of uitschakelen”.
Op het volgende scherm vink je op “Ondersteuning voor SMB 1.0/CIFS”
SMB v1 wil je niet. Is volslagen insecure, dat was de hele excercitie hierboven voor bedoeld. Google even "wannacry". SMBv1/CIFS staat niet voor niets tegenwoordig standaard uitgevinkt.

De aanpassingen die we hebben gemaakt om v2 te enablen zijn op OS-niveau

bij mij is de Zyxel inmiddels in de ouwemeukbak terechtgekomen en vervangen door een Synology.

Het is vervelend als cynicus steeds gelijk te krijgen.

Pagina: 1