In questa pagina descriverò come installare un "server LDAP"
su un router (Asus RT-AC56U)
- useremo alcuni pacchetti di Entware, pertanto
fate riferimento a questa pagina su come installare Entware su un router.
Installeremo il "server OpenLDAP" usando i pacchetti Entware.
Allo scopo di installare il "server OpenLDAP" con i pacchetti Entware,
dobbiamo eseguire il seguente comando :
opkg install openldap-server openldap-utils
Dopo aver fatto questo, creiamo una copia di riserva dei file "/opt/etc/openldap/ldap.conf"
e
"/opt/etc/openldap/slapd.conf".
Ciò che segue è il contenuto del nuovo file "/opt/etc/openldap/ldap.conf" :
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=office,dc=data URI ldap://192.168.1.4
Fare riferimento
a questa
pagina per ulteriori dettagli sul file di configurazione "ldap.conf".
Nel suddetto esempio, la base predefinita "dc=office,dc=data" verrà usata
in questa pagina, mentre l'indirizzo IP "192.168.1.4" è l'indirizzo
del router dover andremo ad installare il "server OpenLDAP".
Abbiamo anche bisogno di creare un nuovo file "/opt/etc/openldap/slapd.conf" :
# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /opt/etc/openldap/schema/core.schema include /opt/etc/openldap/schema/cosine.schema include /opt/etc/openldap/schema/inetorgperson.schema loglevel 296 pidfile /opt/var/run/slapd.pid argsfile /opt/var/run/slapd.args ############################ # MDB database definitions ############################ database ldif suffix "ou=Addressbook,dc=office,dc=data" rootdn "cn=admin,ou=Addressbook,dc=office,dc=data" #rootpw {SSHA} # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /opt/var/openldap-data # Simple ACL granting read access to the world access to * by * read
Fare riferimento
a questa
pagina per ulteriori dettagli sul file di configurazione "slapd.conf".
Da notare che abbiamo incluso l'account amministratore "rootdn", ma
senza la
password. Io suggerisco di creare una password per l'account amministratore,
leggere la seguente sezione "Come impostare una password per l'account
amministratore".
Dobbiamo creare la cartella del database prima di avviare il daemon "OpenLDAP",
con i seguenti comandi :
mkdir /opt/var/openldap-data
chmod 700 /opt/var/openldap-data
In seguito dobbiamo verificare se il file di configurazione è corretto oppure
no :
slapd -T test
Se esso restituisce "config file testing succeeded", allora il
file di configurazione è corretto. Altrimenti qualcosa all'interno del file di
configurazione è sbagliato.
Per avviare il daemon "OpenLDAP", dobbiamo eseguire il seguente
comando :
/opt/etc/init.d/S58slapd start
Nella precedente sezione abbiamo incluso l'account
amministratore "rootdn", ma senza la password. In questa sezione
spiegherà brevemente come impostare una password per l'account amministratore.
Creiamo un file script, ad esempio lo chiamiamo "generate.sh", con il
seguente contenuto :
#!/bin/sh PWD="$1" NUMRAND="$(openssl rand 3)" SHA1="$(printf "%s%s" "$PWD" "$NUMRAND" | openssl dgst -binary -sha1)" printf "{SSHA}%s\n" "$(printf "%s%s" "$SHA1" "$NUMRAND" | openssl enc -base64)"
Nello suddetto script, usiamo il comando "openssl".
Normalmente un router dovrebbe includere questo comando, ma se non è incluso,
possiamo installare un pacchetto Entware con il seguente comando :
opkg install openssl-util
Per generare una password, dobbiamo eseguire lo script, passare la nostra
password ad esso,
per esempio se vogliamo usare la password "secret" dobbiamo digitare :
./generate.sh secret
Il risultato restituito da questo script è il valore che dovremo mettere dentro
il file di configurazione "/opt/etc/openldap/slapd.conf", nella linea "rootpw"
dopo "{SSHA}",
in questo modo avremo le seguenti linee nel suddetto file di configurazione :
rootdn "cn=admin,ou=Addressbook,dc=office,dc=data" rootpw {SSHA}cF/RbPI0zOecojYc30UONVNBF2ke+Bg=
Infine riavviamo il daemon "OpenLDAP" con il
comando :
/opt/etc/init.d/S58slapd restart
Adesso è arrivato il momento di inizializzare il database del
"server OpenLDAP", aggiungendo le prime voci su di esso.
La prima voce è la voce radice del database. Creiamo un file radice .LDIF,
per esempio lo chiamiamo "start.ldif" con il seguente contenuto :
dn: ou=Addressbook,dc=office,dc=data objectclass: top objectclass: organizationalUnit ou: Addressbook
Inseriamo il suddetto file nel database usando il comando "ldapadd" (potrebbe
essere richiesta la password di amministratore) :
ldapadd -x -W -D "cn=admin,ou=Addressbook,dc=office,dc=data" -f start.ldif
Fare riferimento
a questa
pagina per ulteriori dettagli sul comando "ldapadd".
In seguito inseriamo una nuova voce di esempio nel database, usando un file di
esempio .LDIF chiamato "test.ldif"
con il seguente contenuto :
dn: cn=Testing,ou=Addressbook,dc=office,dc=data cn: Testing givenname: Testing objectclass: top objectclass: person objectclass: organizationalPerson sn: Testing telephonenumber: 9999999
Inseriamo il file suddetto nel database usando il comando "ldapadd" (potrebbe
essere richiesta la password di amministratore):
ldapadd -x -W -D "cn=admin,ou=Addressbook,dc=office,dc=data" -f test.ldif
In questa sezione descriverò come gestire le voci del
database attraverso un server web - prima di fare questo, fare riferimento a
questa pagina su come installare un server web.
Per effettuare questo compito, installeremo un'applicazione PHP
denominata "ABLdap". Scarichiamo
il file
compresso e in seguito estraiamo il file compresso direttamente sulla
cartella radice del server server, ad esempio nella cartella "/opt/share/www/lighttpd/abldap"
(la sottocartella "abldap" deve essere creata prima di estrarre i file).
All'interno della cartella "/opt/share/www/lighttpd/abldap", dobbiamo
impostare il file "config.php" allo scopo di usare il nostro database con
gli opportuni parametri.
Questo è il contenuto del file "config.php" che dovremo ottenere seguendo i
valori inclusi nel file di configurazione del daemon "OpenLDAP" :
<?php $config['locale'] = 'en_US'; // Insecure connection (LDAP data will be transmitted in clear text) $config['ldaphost'] = 'localhost'; // Secure connection, using the ldaps protocol. //$config['ldaphost'] = 'ldaps://127.0.0.1/'; // suffix: starting point for the search, as in ldapsearch -b $config['suffix'] = 'ou=Addressbook,dc=office,dc=data'; // rootdn: Distinguished Name used to bind to the LDAP directory, as in ldapsearch -D $config['rootdn'] = 'cn=admin,ou=Addressbook,dc=office,dc=data'; // IF you define the admin password, ABLdap will do an auto-logon. //$config['rootpw'] = 'MySecret'; ?>
Quindi copiamo il file "/opt/share/www/lighttpd/abldap/doc/examples/mozillaabpersonalpha.schema"
nella cartella "/opt/etc/openldap/schema/".
In seguito aggiungiamo la linea "include /opt/etc/openldap/schema/mozillaabpersonalpha.schema"
nel file di configurazione "/opt/etc/openldap/slapd.conf", in modo da
avere :
include /opt/etc/openldap/schema/core.schema include /opt/etc/openldap/schema/cosine.schema include /opt/etc/openldap/schema/inetorgperson.schema include /opt/etc/openldap/schema/mozillaabpersonalpha.schema
Dobbiamo anche installare alcuni moduli PHP per il server web, usando il
seguente comando :
opkg install php7-mod-gettext php7-mod-session php7-mod-ldap
E infine possiamo riavviare il server web con il seguente comando :
/opt/etc/init.d/S80lighttpd restart
Apriamo il browser, andiamo nel server web e selezioniamo la sottocartella "abldap".
Una pagina PHP apparirà e semplicemente inseriamo la password di
amministratore.
Un elenco di voci verrà mostrato dall'applicazione PHP, possiamo
aggiungere altre voci al database, modificare una voce o eliminare una voce.