==== Samba Client ==== List all share on the PC name helene-pc, with the user helene: smbclient -L \\\\helene-pc -U helene Domain=[HELENE-PC] OS=[Windows 7 Ultimate 7601 Service Pack 1] Server=[Windows 7 Ultimate 6.1] Sharename Type Comment --------- ---- ------- ADMIN$ Disk Administration à distance C$ Disk Partage par défaut Documents Disk IPC$ IPC IPC distant Users Disk Now connect directly on the share Documents: smbclient \\\\helene-pc\\Documents -U helene smb: \> You can use the following commands: smb: \> ? ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown close del dir du echo exit get getfacl hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setmode stat symlink tar tarmode translate unlock volume vuid wdel logon listconnect showconnect .. ! Mount a CIFS share on Linux:\\ - CIFS for latest Linux clients\\ - SMBFS for oldest mount -t smbfs -o username=,password= /// /mnt/ or mount -t cifs //ntserver/download -o username=vivek,password=myPassword /mnt/ntserver or mount -t cifs CORESERVER:F\$ /mnt/temp -o username=nimda,domain=WINLAB Password: Add an enty into /etc/fstab: //windows_srv/c$ /mnt/recurring smbfs defaults,user,noauto,username=Administrator,password=Password 0 0 or MachineName:ShareFolderName /mnt/MountFolderName cifs username=UserName,domain=DomainName,password=Password 0 0 You can also use a credential file: root@mystery:~# cat >/etc/recurring.smbpass < ==== Samba Hardening security parameters ==== ^Description du contrôle^Commande ou paramètre relevé^Valeur recommandée^ |Analyse des éventuelles vulnérabilités connues; pour lesquelles un code d'exploitation a été rendu public et impactant la version de SAMBA actuellement utilisée|smbd -V|N/A| |Authentification mise en œuvre pour SAMBA|"Fichier smb.conf:- paramètre security - paramètre server role"|Cette valeur est adaptée à l'utilisation du service SAMBA qui est faite| |Analyse de la correspondance entre les utilisateurs SAMBA et les utilisateurs du système AIX|Analyse du fichier /samba/usermap|Seuls les comptes utilisateurs nécessitant un accès aux partages SAMBA devraient être présents au sein du fichier /samba/usermap| |Analyse des permissions systèmes appliquées au fichier de correspondance entre les utilisateurs SAMBA et les utilisateurs du système AIX|ls -al /samba/usermap|'-rw-r--r-- root system /samba/usermap| |Analyse des permissions systèmes appliquées aux ressources stockant les mots de passe chiffrés des utilisateurs SAMBA| Afficher les permissions des fichiers TDB|'-rw-r--r-- root system| |Définition d'une ou plusieurs interface(s) réseau(x) exlplicitement liée(s) au service SAMBA|"Fichier smb.conf:- interfaces - bind interfaces only"|"interfaces = < inclure adresse IP et nom interface ici bind interfaces only = yes"| |Analyse des services réseaux rendus par SAMBA|"Fichier smb.conf: - server services"|Désactiver les services réseaux non utilisés (par ex. -dns -dnsupdate)| |Support des connexions anonymes|"Fichier smb.conf: - guest ok - guest only - only guest - map to guest"|Les connexions anonymes ne doivent pas être supportées| |Chaine de caractères renvoyée par le serveur SAMBA pour les demandes de découverte clientes|"Fichier smb.conf: - server string"|La chaine de caractères renvoyée par le serveur ne doit pas contenir d'informations techniques (par ex. version de SAMBA)| |Présence d'une solution anti-virus installée et configurée pour analyser la présence éventuelle de fichiers / dossiers malveillants|N/A|Une solution anti-virus devrait être utilisée| |Niveau de verbosité défini pour la journalisation des évènements SAMBA|"Fichier smb.conf:- log level"|log level = 3| |Permissions appliquées pour le fichier de journalisation SAMBA|ls -al /samba/logs/smbd.log|-rw-r--r-- root system /samba/logs/smbd.log| |Permissions appliquées pour les dossiers partagés|ls -al /samba/interfaces|N/A| |Possibilité d'énumérer le contenu des répertoires partagés|"Fichier smb.conf:- browseable - access based shared enum"|"browseable = no access based shared enum = yes"| |Définition des accès en lecture seule ou lecture / écriture|"Fichier smb.conf:- read only"|read only = yes pour les partages ou aucune modification / ajout de fichier ne doit être implémenté| |Limiter le nombre de processus SMBD concurrents|"Fichier smb.conf: - max smbd processes"|max smbd processes = 1000| |Délai de déconnexion automatique des sessions inactives|"Fichier smb.conf:- deadtime"|deadtime = 10| |Limiter le nombre de connexions réseaux concurrentes|"Fichier smb.conf:- max connections"|max connections = 30| |Analyse des utilisateurs autorisés / non autorisés à accéder aux ressources SAMBA|"Fichier smb.conf: - valid users - invalid users"|Préférer utiliser une approche de type liste blanche (valid users) pour autoriser un nombre restreint de comptes utilisateurs à accéder aux ressources SAMBA| |Analyse des systèmes autorisés / non autorisés à accéder aux ressources SAMBA|"Fichier smb.conf:- hosts allow - hosts deny"|Préférer utiliser une approche de type liste blanche (host allow) pour autoriser un nombre restreint de systèmes à accéder aux ressources SAMBA| |Permissions configurées lors de la création de fichiers ou dossiers|"Fichier smb.conf:- create mask - directory mask"|directory mask 0777| |Politique de mots de passe utilisée au sein de SAMBA|"Fichier smb.conf:- check password - unix passwd sync"|Présence d'une politique de mots de passe| |Désactivation de la mise en cache des fichiers / dossiers SAMBA|"Fichier smb.conf:- csc policy"|csc policy = disable | |Désactivation de NetBIOS|"Fichier smb.conf:- disable netbios"|disable netbios = yes| |Désactiver le suivi des liens symboliques|"Fichier smb.conf:- follow symlinks"|follow symlinks = no| |Désactiver les diffusions LanManager|"Fichier smb.conf:- lm announce"|lm announce = no| |Désactiver les protocoles d'authentification non sécurisés|"Fichier smb.conf:- server min protocol - ntlm auth"|"ntlm auth = no server min protocol = NT1"| |Signature du traffic SMB pour le protocole SMB1|"Fichier smb.conf:- server signing"|server signing = auto| ==== Samba Server ==== Check samba server parameters # testparm -vs | grep "protocol" client ipc max protocol = default client ipc min protocol = default client max protocol = default client min protocol = CORE server max protocol = SMB3 server min protocol = LANMAN1 == PROTOCOL VALUES for SMB == Check using **man smb.conf** (/etc/samba/smb.conf) The value of the parameter (a string) is the highest protocol level that will be supported by the client. Possible values are : * CORE: Earliest version. No concept of user names. * COREPLUS: Slight improvements on CORE for efficiency. * LANMAN1: First modern version of the protocol. Long filename support. * LANMAN2: Updates to Lanman1 protocol. * NT1: Current up to date version of the protocol. Used by Windows NT. Known as CIFS. * SMB2: Re-implementation of the SMB protocol. Used by Windows Vista and later versions of Windows. SMB2 has sub protocols available. * SMB2_02: The earliest SMB2 version. * SMB2_10: Windows 7 SMB2 version. * SMB2_22: Early Windows 8 SMB2 version. * SMB2_24: Windows 8 beta SMB2 version. * By default SMB2 selects the SMB2_10 variant. * SMB3: The same as SMB2. Used by Windows 8. SMB3 has sub protocols available. * SMB3_00: Windows 8 SMB3 version. (mostly the same as SMB2_24) * SMB3_02: Windows 8.1 SMB3 version. * SMB3_10: early Windows 10 technical preview SMB3 version. * SMB3_11: Windows 10 technical preview SMB3 version (maybe final). * By default SMB3 selects the SMB3_11 variant. * Normally this option should not be set as the automatic negotiation phase in the SMB protocol takes care of choosing the appropriate protocol. * The value default refers to SMB3_11. == Encrypt user's passwords == To create a user in samba, if local authentification, then create the user locally then use **pdbedit** List all users (verbose) # pdbedit -L -v Create a user, you 'll be prompt for password, the user must exist on unix # pdbedit -a -u myuser Remove a user # pdbedit -x -u myuser