Archives par mot-clé : ldap

OpenVPN et authentification par CA, Login et mot de passe

plop à tous.

Aujourd’hui, un rapide tuto, sur la mise en place d’une authentification via le module PAM sur votre OpenVPN.

ATTENTION, comme on passe par une authentification par login/mot de passe, la sécurité est moins élevée qu’un système d’authentification par certificat serveur et client, néanmoins, il faut encore le certificat serveur, donc on peut considérer que le niveau de sécurité est encore pas mal élevé.

On va partir de l’idée que vous avez suivi ce tuto pour installer votre serveur VPN, et que donc votre config serveur ressemble à celle-là :

port 1194
proto udp
;proto tcp
;dev tun
dev tap

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/$server.crt
key /etc/openvpn/keys/$server.key
dh /etc/openvpn/keys/dh1024.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt

push "redirect-gateway"

push "dhcp-option DNS $SERVER_DNS1"
push "dhcp-option DNS $SERVER_DNS2"

comp-lzo
keepalive 10 120

log        /var/log/openvpn.log
log-append /var/log/openvpn.log
status /var/log/openvpn-status.log

verb 3

il vous suffit alors de rajouter ces 3 lignes à la fin du fichier :

client-cert-not-required
username-as-common-name
plugin /usr/lib/openvpn/openvpn-auth-pam.so common-auth

Et redémarrez le serveur.
Il sera alors possible d’utiliser comme identifiant les utilisateurs du système sur lequel est installé le VPN.

Pour qu’un utilisateur puisse se connecter en VPN, sans qu’il soit autorisé à se connecter au sytème, il suffit de déclarer son shell comme /bin/false.

useradd -s /bin/false monUtilisateur
sudo passwd monUtilisateur

Le passwd est nécessaire sous certain système linux, car en passant par l’option useradd -p monmotdepasse, le mot de passe est enregistré en clair, alors que le système utilise un chiffrement, rendant l’utilisation du mot de passe impossible.

Il est ensuite possible de se connecter via le NetworkManager via login/mdp et CA :

.

Pour ceux voulant utiliser un ldap pour automatiser la création d’un compte, il suffit de configurer le module pam pour utiliser votre ldap.

Open-Source : Réseau d’entreprise sécurisé … ou pas

Bijour …

Alors voilà, maintenant que la présentation de notre projet pour ma licence pro CDED est terminée, je peux montrer l’architecture de notre réseau sans avoir peur d’être plagié par des concurrents ^^.

Donc le but de notre réseau est d’avoir :

  • Une sécurité assez élevée sans pour autant compromettre l’utilisation du réseau par les utilisateurs (le problème de tout admin …).
  • Un coût très faible autant niveau architecture logicielle que matérielle
  • Une maintenance aisée du réseau (ajout/suppression de postes/utilisateurs)

Le contexte de notre projet :

Une petite entreprise veut revoir son réseau et ses logiciels/sites web pour plus de productivité, avec pas mal d’intéractions avec l’extérieur (Obligation d’utiliser une base de données extérieur au réseau, plusieurs site web publié avec utilisation de certificats pour le chiffrement (pour l’authentification ça aurait été un peu trop :p), …).

Ce qui a donné le réseau suivant pour notre groupe :

Network-Skipify-final-cipher

L’architecture est plus ou moins classique, on sépare les serveurs des utilisateurs, côté chiffrement :

  • Toute communication est chiffrée entre les serveurs (3DES en phase 1 et AES en phase 2) on a poussé le vice jusqu’à chiffrer les communication avec les clients Linux du réseau (bien sûr toute communication non chiffrée sur le réseau des serveurs est automatiquement rejetée).
  • Les communications vers la base de données sont chiffrés par un tunnel (ssh avec une simple redirection de ports).
  • Les communications depuis les internautes sont chiffrés par un certificat valide en AES

Coté architecture matérielle :

  • 4 serveurs sous debian 5.0 patché avec GrSecurity pour les ACL et le W^X (ma licence étant spé développement, on a pas pu pousser la chose très loin … dommage, ce patch me semble très prometteur, et devrait devenir une norme dans le domaine de l’hébergement).
  • 1 client XP ajouté au domaine NT (utilisation du remote announce de samba pour l’utilisation du PDC hors du réseau sécurisé des serveurs), ainsi qu’un client linux avec authentification direct à l’annuaire LDAP

Coté architecture logicielle :

  • Sur le reverse proxy / Firewall :
    • Apache2 avec modsecurity couplé avec l’IDS, modevasive (pour les bruteforces et DoS de faible ampleur), mod proxy pour la mise en place d’un reverse proxy pour protéger le serveur web
    • IDS Prelude couplé avec Snort
    • Utilisation d’arpwatch pour les attaques en interne (un script kidy qui réussit à pirater le wifi, la connexion d’un employé au réseau local via son IPhone ;), ….)
    • Fail2Ban pour les bruteforces sur le service SSH
    • IPTable comme firewall
  • Sur le serveur WWW et d’appli : apache2 avec le mod rails pour les applis web en ruby (déploiement et màj des applis simplifié par capistrano …)
  • sur le PDC un serveur Samba avec OpenLDAP

Et hop … on obtient un réseau pas mal sécurisé et gratuit (faut juste payer l’informaticien ;)).

Par contre, en discutant avec les profs après déploiement de l’architecture sur 8 machines virtuelles (vmware … le proprio saymal mais bon), on s’est rendu compte de quelques problèmes (et ouai … je suis encore un élève ;)) :

  • Comme un noob j’avais laissé la configuration IPv6, toute la partie IPsec que j’avais déployée etait alors totalement inutile puisque centré sur l’IPv4 seulement, heureusement, j’avais fait des bind explicite sur les adresses IPv4, seul les serveurs http et dns était accessible en IPv6.
  • Sinon, le problème propre au déploiement sur machines virtuelles (comme un noob encore une fois), déploiement de toutes les machines en bridge sur le réseau de l’IUT (l’admin réseau ne m’a pas vu … mais un autre groupe s’est fait gaulé ^^). N’importe qui aurait pu se connecter sur notre réseau en connaissant nos ip. A ma décharge je dirais deux choses : je savais pas qu’en host-only c’est pas seulement l’hote et la mv, mais l’hote et toutes les mv qui peuvent discuter ensemble, ce qui ne corrige en rien le problème des connexions direct sur notre réseau depuis d’autre machines virtuelles, puisque tout les groupes ont montés leurs réseau sur la même machine

Donc voilà … un petit retour sur l’utilisation de l’open-source pour la sécurité et le déploiement d’un réseau entièrement gratuit, qui se rapproche plus d’une multi-national (bien qu’encore très très très loin) que du réseau familial … qui malheureusement est encore présent dans beaucoups d’entreprises en france (et même des grosses boites … pour qui la sécurité consiste à placer des filtres extrèmement lourd sur leurs proxy et mettre à jour des AV …).

Annuaire LDAP et authentification UNiX/Linux

Bé voilà bonsoir … dans ma série tuto « memo-inutile » voici …

Encore des trucs inutile pour le commun des mortels …l’authentification centralisée par un annuaire LDAP (OpenLDAP dans mon cas).
Alors bon, ça fait suite à l’un de mes tuto/louange à ce lien ^^ (jsuis trop fainéant pour reprendre l’ensemble du tuto ;)).

Dans mon cas, je devais monter le réseau de mon groupe de projet pour ma licence en Dev (et on nous demande de monter des réseaux ^^), et pour avoir un réseau potable avec plein de machines j’ai eu la géniallissime idée de mettre en place un PDC (Samba/LDAP) pour gérer un parc informatique de …… 8 machines :p 😀 (je devrais peut-être rajouter 3/4 lignes de smiley pour exprimer le fond de ma pensé façon kevin).

Sur le coup bon ben c’est amusant (et ouai … mon gros kif c’est les fichiers de conf et les lignes de commandes … c’est grave ???) de suivre le tuto de damstux (cf. le lien plus haut) qui fonctionne très bien juqu’au moment où l’on veut insérer des machines unix, on à beau modifier les fichiers de conf nsswitch.conf, pam_ldap.conf et libnss-ldap comme dans le tuto, rien ne fonctionne.

Donc pour réussir à se faire logguer des utilisateurs depuis l’annuaire LDAP rien de plus simple … suffit de modifier 4 autres fichiers (et ouai quand y’en a plus … y’en a encore ^^). En imaginant bien sûr que votre serveur LDAP fonctionne (genre que l’authentification fonctionne avec des machines windows ^^ wouah le test 😉 jvai pousser au suicide des apprenti-sysadmin :D).

Bien entendu, il faut suivre le tuto de damstux jusqu’au bout (y compris les modifs sur les fichiers nsswitch.conf, libnss-ldap.conf et pam_ldap.conf côté client) et poursuivre ici ^^ .

CES FICHIERS SONT A MODIFIER COTE CLIENT SEULEMENT (à part si vous voulez laisser les utilisateurs ce connecter à la machine en question … is it secure ??).
Le premier fichier à modifier : /etc/pam.d/common-account (commentez tous le reste)
[sourcecode language=bash]
account sufficient      pam_ldap.so
account required        pam_unix.so try_first_pass
[/sourcecode]

Le deuxième fichier à modifier : /etc/pam.d/common-auth (commentez tous le reste)
[sourcecode language=bash]
auth    sufficient      pam_ldap.so
auth    required        pam_unix.so nullok_secure try_first_pass
[/sourcecode]

Le troisième fichier à modifier : /etc/pam.d/common-password (commentez tous le reste)
[sourcecode language=bash]
password   sufficient   pam_ldap.so
password   required   pam_unix.so nullok obscure md5
[/sourcecode]

Le quatrième fichier à modifier : /etc/pam.d/common-session (commentez tous le reste)
ici on rajoute la possibilité de créer le dossier home si il n’existe pas … sinon on va droit dans le mur (l’utilisateur se log et n’a pas de home 😉 à mettre dans le groupe sdf koi^^). Attention, il faut le mettre avant les deux autres directives, sinon ça ne marche pas (j’ai lu pas mal de tuto qui les mettait dans un mauvais ordre et ça plantait le tout donc …)
[sourcecode language=bash]
session required pam_mkhomedir.so skel=/etc/skel/
session sufficient pam_ldap.so
session required pam_unix.so
[/sourcecode]

Il vous faudra aussi (peut-être modifier le fichier /etc/ldap/ldap.conf) remplacer 1.3.3.7 par l’ip du serveur LDAP et la base par la votre …
[sourcecode language=bash]
BASE dc=mon,dc=reseau,dc=lan
URI ldap://1.3.3.7
[/sourcecode]
Attention … si vous vous plantez, vous n’arriverez plus à vous logguer (et n’oubliez pas d’arroser …), et sinon, ben voilà vous pouvez importer votre base d’utilisateur et vous logguer depuis n’importe quelle machine configurée pour utiliser l’annuaire LDAP avec n’importe quelles utilisateurs de l’annuaire (encore heureux ;)).

Et voilà …