samba securing shares
(Written by Paul Cobbaut, https://github.com/paulcobbaut/)
security based on user name
valid users
To restrict users per share, you can use the valid users
parameter. In the example below, only the users listed as valid will be
able to access the tennis share.
[tennis]
path = /srv/samba/tennis
comment = authenticated and valid users only
read only = No
guest ok = No
valid users = serena, kim, venus, justine
invalid users
If you are paranoia, you can also use invalid users
to
explicitely deny the listed users access. When a user is in both lists,
the user has no access!
[tennis]
path = /srv/samba/tennis
read only = No
guest ok = No
valid users = kim, serena, venus, justine
invalid users = venus
read list
On a writable share, you can set a list of read only users with the
read list
parameter.
[football]
path = /srv/samba/football
read only = No
guest ok = No
read list = martina, roberto
write list
Even on a read only share, you can set a list of users that can write.
Use the write list
parameter.
[football]
path = /srv/samba/golf
read only = Yes
guest ok = No
write list = eddy, jan
security based on ip-address
hosts allow
The hosts allow
or allow hosts
parameter
is one of the key advantages of Samba. It allows access control of
shares on the ip-address level. To allow only specific hosts to access a
share, list the hosts, separated by comma\'s.
allow hosts = 192.168.1.5, 192.168.1.40
Allowing entire subnets is done by ending the range with a dot.
allow hosts = 192.168.1.
Subnet masks can be added in the classical way.
allow hosts = 10.0.0.0/255.0.0.0
You can also allow an entire subnet with exceptions.
hosts allow = 10. except 10.0.0.12
hosts deny
The hosts deny
or deny hosts
parameter
is the logical counterpart of the previous. The syntax is the same as
for hosts allow.
hosts deny = 192.168.1.55, 192.168.1.56
security through obscurity
hide unreadable
Setting hide unreadable
to yes will prevent users from
seeing files that cannot be read by them.
hide unreadable = yes
browsable
Setting the browseable = no
directive will hide shares
from My Network Places. But it will not prevent someone from accessing
the share (when the name of the share is known).
Note that browsable
and browseable
are both correct
syntax.
[pubread]
path = /srv/samba/readonly
comment = files to read
read only = yes
guest ok = yes
browseable = no
file system security
create mask
You can use create mask
and
directory mask
to set the maximum allowed permissions
for newly created files and directories. The mask you set is an AND mask
(it takes permissions away).
[tennis]
path = /srv/samba/tennis
read only = No
guest ok = No
create mask = 640
directory mask = 750
force create mode
Similar to create mask
, but different. Where the mask from above was a
logical AND, the mode you set here is a logical OR (so it adds
permissions). You can use the force create mode
and
force directory mode
to set the minimal required
permissions for newly created files and directories.
[tennis]
path = /srv/samba/tennis
read only = No
guest ok = No
force create mode = 444
force directory mode = 550
security mask
The security mask
and
directory security mask
work in the same way as
create mask
and directory mask
, but apply only when a windows user
is changing permissions using the windows security dialog box.
force security mode
The force security mode
and
force directory security mode
work in the same way as
force create mode
and force directory mode
, but apply only when a
windows user is changing permissions using the windows security dialog
box.
inherit permissions
With inherit permissions = yes
you can force newly created files and
directories to inherit permissions from their parent directory,
overriding the create mask and directory mask settings.
[authwrite]
path = /srv/samba/authwrite
comment = authenticated users only
read only = no
guest ok = no
create mask = 600
directory mask = 555
inherit permissions = yes
practice: securing shares
1. Create a writable share called sales, and a readonly share called budget. Test that it works.
2. Limit access to the sales share to ann, sandra and veronique.
3. Make sure that roberto cannot access the sales share.
4. Even though the sales share is writable, ann should only have read access.
5. Even though the budget share is read only, sandra should also have write access.
6. Limit one shared directory to the 192.168.1.0/24 subnet, and another share to the two computers with ip-addresses 192.168.1.33 and 172.17.18.19.
7. Make sure the computer with ip 192.168.1.203 cannot access the budget share.
8. Make sure (on the budget share) that users can see only files and directories to which they have access.
9. Make sure the sales share is not visible when browsing the network.
10. All files created in the sales share should have 640 permissions or less.
11. All directories created in the budget share should have 750 permissions or more.
12. Permissions for files on the sales share should never be set more than 664.
13. Permissions for files on the budget share should never be set less than 500.
14. If time permits (or if you are waiting for other students to finish this practice), then combine the \"read only\" and \"writable\" statements to check which one has priority.
15. If time permits then combine \"read list\", \"write list\", \"hosts allow\" and \"hosts deny\". Which of these has priority ?
solution: securing shares
1. Create a writable share called sales, and a readonly share called budget. Test that it works.
see previous solutions on how to do this...
2. Limit access to the sales share to ann, sandra and veronique.
valid users = ann, sandra, veronique
3. Make sure that roberto cannot access the sales share.
invalid users = roberto
4. Even though the sales share is writable, ann should only have read access.
read list = ann
5. Even though the budget share is read only, sandra should also have write access.
write list = sandra
6. Limit one shared directory to the 192.168.1.0/24 subnet, and another share to the two computers with ip-addresses 192.168.1.33 and 172.17.18.19.
hosts allow = 192.168.1.
hosts allow = 192.168.1.33, 172.17.18.19
7. Make sure the computer with ip 192.168.1.203 cannot access the budget share.
hosts deny = 192.168.1.203
8. Make sure (on the budget share) that users can see only files and directories to which they have access.
hide unreadable = yes
9. Make sure the sales share is not visible when browsing the network.
browsable = no
10. All files created in the sales share should have 640 permissions or less.
create mask = 640
11. All directories created in the budget share should have 750 permissions or more.
force directory mode = 750
12. Permissions for files on the sales share should never be set more than 664.
security mask = 750
13. Permissions for files on the budget share should never be set less than 500.
force security directory mask = 500
14. If time permits (or if you are waiting for other students to finish this practice), then combine the \"read only\" and \"writable\" statements to check which one has priority.
15. If time permits then combine \"read list\", \"write list\", \"hosts allow\" and \"hosts deny\". Which of these has priority ?