Archiv

Posts Tagged ‘NFS’

Konfiguration der host- und benutzer-basierten Sicherheit des Dienstes

2012/01/30 Kommentare aus

vsftpd

Die Standard-Konfiguration von vsftpd sieht vor allen in der Datei /etc/vsftpd/user_list angeführten Benutzern den Zugriff zu verweigern. Alle Benutzer, die nicht in dieser Datei enthalten sind können sich also am FTP-Server einloggen. Umgekehrt – Benutzer denen der Zugriff verweigert werden soll werden hier eingetragen.

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.

# ...

# Verweigere folgende Benutzer:
bill
steve

Dieses Verhalten macht auch meistens Sinn – vom Login ausgeschlossen sind nur System-Accounts und root. Gelegentlich will man aber nur einigen wenigen Benutzern den Zugriff auf den FTP-Server erlauben. In diesem Fall ist es praktischer die Bedeutung der Datei /etc/vsftpd/user_list umzukehren, um ausschließlich darin enthaltenen Benutzern FTP-Zugriff zu erlauben. Dazu wird der Eintrag userlist_deny in /etc/vsftpd/vsftpd.conf auf NO gesetzt:

userlist_deny=NO

Es folgt der Eintrag erlaubter Benutzer in /etc/vsftpd/user_list:

# Erlaube folgende Benutzer:
alice
bob
sam

Es können sich nun ausschließlich die Benutzer alice, bob und sam an dem FTP-Server anmelden.

Host-basierte Sicherheit

Die Direktive tcp_wrappers in /etc/vsftpd/vsftpd.conf sollte bereits standardmäßig aktiv sein:

tcp_wrappers=YES

Es können nun Host-basierte Zugangsbeschränkungen über die Dateien /etc/hosts.allow und /etc/hosts.deny gesetzt werden:

/etc/hosts.allow

vsftpd : 192.168.100.0/255.255.255.0 EXCEPT 192.168.100.12

/etc/hosts.deny

vsftpd : ALL

Auf diese Weise abgewiesene Clients bekommen die Antwort

421 Service not available

Samba

Host- und Benutzerbasierte Sicherheit wird am einfachsten in der Konfigurationsdatei des Samba-Servers, /etc/samba/smb.conf festgelegt. Unter global eingetragene Beschränkungen gelten global, unter den einzelnen Freigaben eingetragene Beschränkungen ausschließlich für die jeweilige Freigabe. Verwendet werden dazu die Direktiven hosts allow, hosts deny sowie valid users und invalid users.

Die localhost Addresse 127.0.0.1 ist immer erlaubt (wenn nicht explizit in hosts deny angeführt).

Erlaube alle IPs in 150.203.*.* außer einer

hosts allow = 150.203. EXCEPT 150.203.6.66

Erlaube gesamtes Netzwerk

hosts allow = 150.203.15.0/255.255.255.0

Erlaube einige Hosts

hosts allow = lapland, arvidsjaur

Erlaube Hosts in NIS netgroup „foonet“, verweigere einen bestimmten Host

hosts allow = @foonet
hosts deny = pirate

Erlaube Benutzer bob, sam, alice und lokale Gruppe team2, verweigere bill den Zugriff

valid users = bob sam alice +team2
invalid users = bill

SSH

User-basierte Sicherheit für SSH wird in der Konfigurationsdatei /etc/ssh/sshd_config festgelegt. Am wichtigsten ist dabei die Direktive AllowUsers – falls diese angegeben wird können sich ausschließlich die hier angegebenen Benutzer anmelden. Es ist auch möglich, Benutzer ein Login nur von bestimmten Hosts aus zu erlauben.

AllowUsers john fred
AllowUsers bob@192.168.100.102 michael@192.168.150.12
AllowGroups team1
DenyUsers steve bill alice
DenyGroups team2

Benutzer, denen der Zugriff nicht erlaubt ist bekommen nach Eingabe ihres Kennwortes die Meldung

Permission denied, please try again.

Es ist dabei nicht ersichtlich, ob das eingegebene Kennwort falsch war oder dem Benutzer das Login verweigert wurde.

Host-basierte Sicherheit wird am einfachsten über die Dateien /etc/hosts.allow und /etc/hosts.deny konfiguriert:

/etc/hosts.allow

sshd : 127. 192.168.100. EXCEPT 192.168.100.101

/etc/hosts.deny:

sshd : ALL

Per TCP-Wrappers abgelehnte Verbindungsversuche werden mit

ssh_exchange_identification: Connection closed by remote host

beantwortet. Es wird gar nicht erst die Eingabe eines Kennwortes verlangt.

NFS

Host-basierte Zugriffssteuerung sollte bereits bei der Erstellung von NFS-Freigaben konfiguriert sein.

/etc/exports

/mynfsshare   192.168.100.0/255.255.255.0(rw) 192.168.12.1(ro)
/projects       proj*.local.domain(rw)
/usr            *.local.domain(ro) @trusted(rw)
/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
/pub            *(ro,insecure,all_squash)

Beschränkungen auf Benutzerebene werden über das Dateisystem festgelegt, entweder über die normalen UNIX-Rechte oder auch unter Verwendung von ACLs.

HTTP

Benutzer- und Hostbasierte Sicherheit wird in der Konfigurationsdatei /etc/httpd/conf/httpd.conf festgelegt. Erlaubte bzw. zu verweigernde Hosts werden über die Direktiven Order, Allow from und Deny from für jedes Verzeichnis einzeln angegeben. Ein Eintrag innerhalb <Directory „/var/www/html“> wird jedoch an alle Unterverzeichnisse vererbt, soweit dort nicht anders angegeben.

<Directory "/var/www/html">
# ...
#
# Controls who can get stuff from this server.
#
 Order allow,deny
 Allow from all
 Deny from 192.168.100.103
</Directory>

Host 192.168.100.103 bekommt nun beim Versuch die Seite anzuzeigen den HTML-Error 403:

Forbidden
You don't have permission to access / on this server.

Benutzerbasierte Sicherheit wird ebenfalls für jedes Verzeichnis einzeln konfiguriert. In folgendem Beispiel wird das Verzeichnis myprivatedir nur nach Eingabe eines gültigen Benutzernamens und des zugehörigen Kennwortes angezeigt:

<Directory "/var/www/html/myprivatedir">
AuthType Basic
AuthName "Eingabe eines Kennwortes erforderlich"
AuthUserFile /etc/httpd/users
require valid-user
</Directory>

Möglich nach require sind valid-user, valid-group, user und group.

Bei Verwendung von Gruppen ist zusätzlich zu AuthUserFile das AuthGroupFile bekanntzugeben:

AuthType Basic
AuthName "Geschützte Ressource"
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin

Benutzer anlegen:

htpasswd -c /etc/httpd/users alice
htpasswd /etc/httpd/users bob
htpasswd /etc/httpd/users sam

Gruppen werden in einer einfachen Textdatei verwaltet, z.B. /etc/httpd/groups:

admin: bob sam alice
team1: bill steve
Kategorien:RHCE Schlagwörter: , , , , ,

CIFS- und NFS-Netzwerkdateisysteme manuell oder durch Konfiguration von autofs ein- und aushängen

2010/12/26 Kommentare aus

Manuelles einhängen von CIFS Freigaben

Im einfachsten Fall in dem die Freigabe nicht durch ein Passwort geschützt ist, reicht ein mount-Aufruf ohne weitere Parameter:

mount –t cifs //10.1.5.1/share /mnt/share

Die Freigabe share von Server 10.1.5.1 wird unter dem Verzeichnis /mnt/share in das Dateisystem eingebunden. Die Angabe von -t cifs kann auch entfallen, Linux erkennt an der Syntax des mount-Aufrufs dass es sich um eine CIFS-Freigabe handelt.

Benutzername und Passwort können über den Parameter “-o” angegeben werden. Ohne Angabe eines Passworts wird dieses interaktiv über die Kommandozeile abgefragt.

mount –t cifs –o user=Benutzer1,password=”Pa$$wd” //10.1.5.1/share /mnt/share

Manuelles Einhängen von NFS-Freigaben

mounten einer NFS-Freigabe, die vom Server 10.1.5.1 bereitgestellt wird:

mount -t nfs 10.1.5.1:/var/installation /mnt/installation

Server 10.1.5.1 stellt das Verzeichnis /var/installation über NFS zur Verfügung und wird in diesem Beispiel unter dem Verzeichnis /mnt/installation in das Dateisystem eingebunden. Auch hier kann die Angabe des Dateisystemtyps entfallen.

Durch den Aufruf von showmount lassen sich alle Verzeichnisse anzeigen, die von einem NFS-Server exportiert werden und für die dem Host der Zugriff erlaubt ist:

showmount -e 10.1.5.1

Automatisches  Einhängen von CIFS- und NFS-Freigaben durch autofs

Der Automount-Dienst autofs ist für das automatische Einbinden von Medien/Netzwerkfreigaben etc. zuständig und wird über die Konfigurationsdatei /etc/auto.master gesteuert. Diese enthält Einträge welche Verzeichnisse von autofs überwacht werden sollen und wo die einzelnen Konfigurationsdateien für diese liegen.

Einfaches Beispiel einer /etc/auto.master

/home     /etc/auto.home
/misc     /etc/auto.misc

In obigem Beispiel würden die Verzeichnisse /home und /misc von autofs überwacht, die Konfiguration für /home ist in der Datei /etc/auto.home zu finden, für den Ordner /misc liegt diese in /etc/auto.misc. Sobald auf ein vorher konfiguriertes Verzeichnis innerhalb von /home oder /misc zugegriffen wird versucht autofs dieses zu mounten.

Einträge in die Datei /etc/auto.misc

myhomedir  -fstype=cifs,user=Benutzer,password=”Pa$$w0rd”  ://10.1.5.1/share
mynfsshare -fstype=nfs,soft                        10.1.5.1:/var/installation

Falls ein Benutzer auf das Verzeichnis /misc/myhomedir zugreift, wird dieses von autofs entsprechend den Parametern in /etc/auto.misc automatisch in das Dateisystem eingebunden. Bei Zugriff auf /misc/mynfsshare wird automatisch der vom Server 10.1.5.1 exportierte Order /var/installation unter /misc/mynfsshare in das Dateisystem eingebunden.

Wichtig ist dass die Verzeichnisse myhomedir und mynfsshare nicht existieren. Diese werden von autofs automatisch erzeugt. Nach Änderungen an der Datei /etc/auto.misc muss autofs die geänderte Konfiguration neu einlesen.

Den Automounter über eine geänderte Map-Datei informieren:

service autofs reload

Auslagerung von Anmeldeinformationen in externe Datei

Es ist ratsam, die Anmeldeinformationen in eine separate Datei auszulagern und diese entsprechend zu schützen, da /etc/auto.misc für jedermann lesbar ist. Dies ist durch Übergabe des credentials-Parameters an den Befehl mount möglich:

/etc/auto.misc

myhomedir  -fstype=cifs,credentials=/etc/samba/.smbcreds :”//10.1.5.1/share$”

Die Anmeldeinformationen liegen hier in der Datei /etc/samba/.smbcreds, welche Einträge in der Form

username=Benutzername
password=Pa$$w0rd
domain=EXAMPLE

enthält. Diese Datei sollte nur durch den Benutzer root lesbar sein. Anstatt domain kann auch workgroup verwendet werden.

Kategorien:RHCSA Schlagwörter: , , , , , ,