vendredi 30 novembre 2012

Securing a Samba File and Print Server


Samba Security Modes

There are two security levels available to the Common Internet Filesystem (CIFS) network protocol user-level and share-level. Samba's security mode implementation allows more flexibility, providing four ways of implementing user-level security and one way to implement share-level:
  • security = user: requires clients to supply a username and password to connect to shares. Samba user accounts are separate from system accounts, but the libpam-smbpass package will sync system users and passwords with the Samba user database.
  • security = domain: this mode allows the Samba server to appear to Windows clients as a Primary Domain Controller (PDC), Backup Domain Controller (BDC), or a Domain Member Server (DMS). See Samba as a Domain Controller for further information.
  • security = ADS: allows the Samba server to join an Active Directory domain as a native member. See Samba Active Directory Integration for details.
  • security = server: this mode is left over from before Samba could become a member server, and due to some security issues should not be used. See the Server Security section of the Samba guide for more details.
  • security = share: allows clients to connect to shares without supplying a username and password.
The security mode you choose will depend on your environment and what you need the Samba server to accomplish.

Security = User

This section will reconfigure the Samba file and print server, from Samba File Server and Samba Print Server, to require authentication.
First, install the libpam-smbpass package which will sync the system users to the Samba user database:
sudo apt-get install libpam-smbpass
If you chose the Samba Server task during installation libpam-smbpass is already installed.
Edit /etc/samba/smb.conf, and in the [share] section change:
    guest ok = no
Finally, restart Samba for the new settings to take effect:
sudo restart smbd
sudo restart nmbd
Now when connecting to the shared directories or printers you should be prompted for a username and password.
If you choose to map a network drive to the share you can check the “Reconnect at Logon” check box, which will require you to only enter the username and password once, at least until the password changes.

Share Security

There are several options available to increase the security for each individual shared directory. Using the [share] example, this section will cover some common options.

Groups

Groups define a collection of computers or users which have a common level of access to particular network resources and offer a level of granularity in controlling access to such resources. For example, if a group qa is defined and contains the users fredadanika, and rob and a second group support is defined and consists of users danikajeremy, and vincent then certain network resources configured to allow access by the qa group will subsequently enable access by freda, danika, and rob, but not jeremy or vincent. Since the user danika belongs to both the qaand support groups, she will be able to access resources configured for access by both groups, whereas all other users will have only access to resources explicitly allowing the group they are part of.
By default Samba looks for the local system groups defined in /etc/group to determine which users belong to which groups. For more information on adding and removing users from groups see Adding and Deleting Users.
When defining groups in the Samba configuration file, /etc/samba/smb.conf, the recognized syntax is to preface the group name with an "@" symbol. For example, if you wished to define a group named sysadmin in a certain section of the /etc/samba/smb.conf, you would do so by entering the group name as @sysadmin.

File Permissions

File Permissions define the explicit rights a computer or user has to a particular directory, file, or set of files. Such permissions may be defined by editing the /etc/samba/smb.conf file and specifying the explicit permissions of a defined file share.
For example, if you have defined a Samba share called share and wish to give read-only permissions to the group of users known as qa, but wanted to allow writing to the share by the group called sysadmin and the user named vincent, then you could edit the/etc/samba/smb.conf file, and add the following entries under the [share] entry:
    read list = @qa
    write list = @sysadmin, vincent
Another possible Samba permission is to declare administrative permissions to a particular shared resource. Users having administrative permissions may read, write, or modify any information contained in the resource the user has been given explicit administrative permissions to.
For example, if you wanted to give the user melissa administrative permissions to the share example, you would edit the/etc/samba/smb.conf file, and add the following line under the [share] entry:
    admin users = melissa
After editing /etc/samba/smb.conf, restart Samba for the changes to take effect:
sudo restart smbd
sudo restart nmbd
For the read list and write list to work the Samba security mode must not be set to security = share
Now that Samba has been configured to limit which groups have access to the shared directory, the filesystem permissions need to be updated.
Traditional Linux file permissions do not map well to Windows NT Access Control Lists (ACLs). Fortunately POSIX ACLs are available on Ubuntu servers providing more fine grained control. For example, to enable ACLs on /srv an EXT3 filesystem, edit /etc/fstab adding the acl option:
UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0       1
Then remount the partition:
sudo mount -v -o remount /srv
The above example assumes /srv on a separate partition. If /srv, or wherever you have configured your share path, is part of the /partition a reboot may be required.
To match the Samba configuration above the sysadmin group will be given read, write, and execute permissions to /srv/samba/share, theqa group will be given read and execute permissions, and the files will be owned by the username melissa. Enter the following in a terminal:
sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/
The setfacl command above gives execute permissions to all files in the /srv/samba/share directory, which you may or may not want.
Now from a Windows client you should notice the new file permissions are implemented. See the acl and setfacl man pages for more information on POSIX ACLs.

Samba AppArmor Profile

Ubuntu comes with the AppArmor security module, which provides mandatory access controls. The default AppArmor profile for Samba will need to be adapted to your configuration. For more details on using AppArmor see AppArmor.
There are default AppArmor profiles for /usr/sbin/smbd and /usr/sbin/nmbd, the Samba daemon binaries, as part of the apparmor-profilespackages. To install the package, from a terminal prompt enter:
sudo apt-get install apparmor-profiles apparmor-utils
This package contains profiles for several other binaries.
By default the profiles for smbd and nmbd are in complain mode allowing Samba to work without modifying the profile, and only logging errors. To place the smbd profile into enforce mode, and have Samba work as expected, the profile will need to be modified to reflect any directories that are shared.
Edit /etc/apparmor.d/usr.sbin.smbd adding information for [share] from the file server example:
  /srv/samba/share/ r,
  /srv/samba/share/** rwkix,
Now place the profile into enforce and reload it:
sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r
You should now be able to read, write, and execute files in the shared directory as normal, and the smbd binary will have access to only the configured files and directories. Be sure to add entries for each directory you configure Samba to share. Also, any errors will be logged to/var/log/syslog.

Resources

Samba Print Server


Another common use of Samba is to configure it to share printers installed, either locally or over the network, on an Ubuntu server. Similar to Samba File Server this section will configure Samba to allow any client on the local network to use the installed printers without prompting for a username and password.
For a more secure configuration see Securing a Samba File and Print Server.

Installation
Before installing and configuring Samba it is best to already have a working CUPS installation. See CUPS - Print Server for details.
To install the samba package, from a terminal enter:
sudo apt-get install samba

Configuration

After installing samba edit /etc/samba/smb.conf. Change the workgroup attribute to what is appropriate for your network, and change securityto user:
   workgroup = EXAMPLE
   ...
   security = user
In the [printers] section change the guest ok option to yes:
   browsable = yes
   guest ok = yes
After editing smb.conf restart Samba:
sudo restart smbd
sudo restart nmbd
The default Samba configuration will automatically share any printers installed. Simply install the printer locally on your Windows clients.

Resources



jeudi 29 novembre 2012

Créer et maintenir les lois comme les logiciels libres?



Lorsque vous parcourez un article de l’encyclopédie libre Wikipédia, vous pouvez bien évidemment le lire, mais aussi écrire (le fameux bouton « Modifier ») et consulter tout son historique, sans oublier converser autour avec les autres contributeurs (lien « Discussion »). Il en va de même avec tout logiciel libre déposé sur une plateforme collaborative comme celle de GitHub (dont l’approche et les fonctionnalités sociales ont donné un coup de vieux à Sourceforge).
Il y a là une manière bien spécifique de fonctionner et une invitation à s’impliquer.
Dans la mesure ou Wikipédia ou GNU/Linux sont d’incontestables réussites, l’un des plus célèbres penseurs du Net, Clay Shirky, s’est récemment demandé, au cours d’une brillante intervention TED, si on ne pouvait pas fortement s’en inspirer pour faire évoluer la politique en générale et l’élaboration de nos lois en particulier.
Ce que l’on pourrait résumer également ainsi : est-ce que le logiciel libre a des choses à dire, voire à enseigner, à la démocratie ?

Peut-on améliorer la politique avec les outils du logiciel libre ?

Mathew Ingram – 29 septembre 2012 – Gigaom.com
(Traduction : Lamessen, Barbidule, Evpok, David, peupleLa)
Les principes du logiciel libre ont contribué à créer de nombreux logiciels efficients et utiles, y compris le système d’exploitation GNU/Linux et la surpuissante ressource que représente Wikipédia. Cette même approche pourrait-elle être utilisée pour ouvrir le processus de création des lois ? Clay Shirky assure que c’est possible.
La philosophie du logiciel libre a permis entre autres de construire un système d’exploitation et une encyclopédie collaborative de grande qualité. Pourrait-on en faire de même avec la législation et la politique ? C’est ce que le théoricien de la communication Clay Shirky a proposé dans une récente et remarquée conférence TED (Technology Entertainment Design) à Edimbourg. L’idée est alléchante, employer les méthodes de GNU/Linux et Wikipédia pour rendre les gouvernements plus ouverts et impliquer davantage les concitoyens, mais est-ce véritablement transposable ? L’écriture de logiciels et de services Web est très différente de celle des lois, et l’histoire du logiciel libre a connu son lot de guerres quasi-religieuses. Mais c’est peut-être notre meilleur espoir.
Après avoir fait une sorte de tour d’horizon du mouvement open source, en accordant la part belle à GNU/Linux, Shirky a consacré une grande partie de son discours à Github, plateforme collaborative et sociale de dépôt de logiciels qui permet à n’importe qui d’éditer, de « forker » en créant sa propre version, et de suivre les changement que font les autres. De GitHub à l’idée de législation collaborative, il n’y a qu’un pas. Et c’est ce que Shirky semble avoir à l’esprit. Il y a déjà eu quelques tentatives de réalisation directement via GitHub. Ainsi, un développeur allemand a déposé l’intégralité des lois allemandes sur la plateforme. De cette façon, les citoyens peuvent recommander et suivre les changements.
C’est séduisant sur le papier : une simple plateforme logicielle dédiée à la collaboration pourrait changer la façon dont on développe et met en œuvre les lois. Mais est-ce réaliste ?
Beaucoup de sceptiques disaient au départ que Wikipédia n’avait aucune chance de marcher. Pourtant elle est bel et bien là et sa réputation et sa fiabilité sont excellentes, malgré quelques ratés, comme l’incident récent impliquant l’auteur Philip Roth. Il est vrai cependant que de nombreux critiques pensent que la « cabale » des éditeurs qui contrôlent l’encyclopédie collaborative a trop de pouvoir.
Force est de reconnaître que le fonctionnement des gouvernements reste de toutes les façons trop opaque à l’ère d’Internet, et donc que Github ne peut pas faire empirer les choses. D’ailleurs, Shirky n’est pas le seul à le penser : le développeur Abe Voelker a proposé un « Github pour lois » qui propose exactement la même approche pour concevoir des lois collaborativement. D’autres expériences basées sur ces mêmes idées d’ouverture ont déjà eu lieu en Finlande, en Irlande et surtout en Islande avec la rédaction collective de sa nouvelle Constitution (NdT : lire à ce sujet L’Islande, la crise, la révolution et moi, et on notera en France l’initiative d’Étienne Chouard avec sa Constitution nationale d’origine citoyenne sur un wiki).
Un des problèmes posés par la transposition d’une solution technique comme Github à un processus culturel et politique de grande ampleur, c’est que créer des lois, même mineures, est très différent de bidouiller un bout de code afin que GNU/Linux puisse reproduire les styles de polices de caractères Windows, ou encore modifier l’article sur George Bush dans Wikipédia (sachant que ces deux exemples en apparence inoffensifs ont donné lieu à de vives polémiques au sein de leur communauté respective). Comment peut-on dès lors espérer que des politiciens puissent, dans les faits, se servir d’un processus similaire pour changer la manière dont fonctionne le gouvernement, le parlement et ses lois ? Comme le suggère Shirky dans sa conférence, il y a une bureaucratie bien installée qui n’a probablement aucun intérêt à renoncer à ce contrôle au profit du bon peuple.
Dans son livre Here comes Everybody, Shirky a montré l’impact positif d’Internet sur la dynamiques des groupes. Son admiration pour Github semble prendre place dans une recherche d’outils collaboratifs et ouverts axée sur l’humain. Il est clair que nous en avons besoin, et même si Github n’est peut-être pas la bonne réponse, à ce stade, tout peut valoir la peine d’être tenté.

Samba File Server




One of the most common ways to network Ubuntu and Windows computers is to configure Samba as a File Server. This section covers setting up a Samba server to share files with Windows clients.
The server will be configured to share files with any client on the network without prompting for a password. If your environment requires stricter Access Controls see Securing a Samba File and Print Server

Installation
The first step is to install the samba package. From a terminal prompt enter:
sudo apt-get install samba
That's all there is to it; you are now ready to configure Samba to share files.

Configuration

The main Samba configuration file is located in /etc/samba/smb.conf. The default configuration file has a significant amount of comments in order to document various configuration directives.
Not all the available options are included in the default configuration file. See the smb.conf man page or the Samba HOWTO Collection for more details.
  1. First, edit the following key/value pairs in the [global] section of /etc/samba/smb.conf:
       workgroup = EXAMPLE
       ...
       security = user
    
    The security parameter is farther down in the [global] section, and is commented by default. Also, change EXAMPLE to better match your environment.
  2. Create a new section at the bottom of the file, or uncomment one of the examples, for the directory to be shared:
    [share]
        comment = Ubuntu File Server Share
        path = /srv/samba/share
        browsable = yes
        guest ok = yes
        read only = no
        create mask = 0755
    
    • comment: a short description of the share. Adjust to fit your needs.
    • path: the path to the directory to share.
      This example uses /srv/samba/sharename because, according to the Filesystem Hierarchy Standard (FHS)/srv is where site-specific data should be served. Technically Samba shares can be placed anywhere on the filesystem as long as the permissions are correct, but adhering to standards is recommended.
    • browsable: enables Windows clients to browse the shared directory using Windows Explorer.
    • guest ok: allows clients to connect to the share without supplying a password.
    • read only: determines if the share is read only or if write privileges are granted. Write privileges are allowed only when the value is no, as is seen in this example. If the value is yes, then access to the share is read only.
    • create mask: determines the permissions new files will have when created.
  3. Now that Samba is configured, the directory needs to be created and the permissions changed. From a terminal enter:
    sudo mkdir -p /srv/samba/share
    sudo chown nobody.nogroup /srv/samba/share/
    
    The -p switch tells mkdir to create the entire directory tree if it doesn't exist.
  4. Finally, restart the samba services to enable the new configuration:
    sudo restart smbd
    sudo restart nmbd
    
Once again, the above configuration gives all access to any client on the local network. For a more secure configuration see Securing a Samba File and Print Server.
From a Windows client you should now be able to browse to the Ubuntu file server and see the shared directory. If your client doesn't show your share automatically, try to access your server by its IP address, e.g. \\192.168.1.1, in a Windows Explorer window. To check that everything is working try creating a directory from Windows.
To create additional shares simply create new [dir] sections in /etc/samba/smb.conf, and restart Samba. Just make sure that the directory you want to share actually exists and the permissions are correct.
The file share named "[share]" and the path /srv/samba/share are just examples. Adjust the share and path names to fit your environment. It is a good idea to name a share after a directory on the file system. Another example would be a share name of [qa] with a path of /srv/samba/qa.

Resources

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites