==== 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