Monthly Archives: Dicembre 2018

RHEL7: distribuire un’applicazione CGI su Apache

Nota: questo è un obiettivo d’esame RHCE 7.

Prerequisiti

Innanzitutto, seguire le istruzioni per installare un server Web Apache.

Procedura di configurazione

Crea lo script Perl /var/www/cgi-bin/hello.pl e inserisci le seguenti linee:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World!";

Rendi questo script eseguibile:

# chmod 755 /var/www/cgi-bin/hello.pl

Riavvia il servizio httpd:

# systemctl restart httpd

Controlla che il valore booleano di httpd_enable_cgi di SELinux sia attivo (è attivo per impostazione predefinita):

# getsebool httpd_enable_cgi
httpd_enable_cgi --> on

Nota: Un altro booleano di SELinux utile da ricordare è httpd_can_sendmail: consente al server httpd di inviare e-mail.

Controlla il servizio httpd:

# yum install -y elinks
# elinks http://localhost/cgi-bin/hello.pl

In alternativa, se si desidera utilizzare una directory diversa da /var/www/cgi-bin/default (/webapp per esempio), si avranno alcuni passaggi aggiuntivi.

Crea la directory /webapp:

# mkdir /webapp

Sposta il file hello.pl in esso:

# mv /var/www/cgi-bin/hello.pl /webapp

Configura la configurazione di SElinux per la directory / webapp:

# yum install -y setroubleshoot-server
# semanage fcontext -a -t httpd_sys_script_exec_t "/webapp(/.*)?"
# restorecon -R /webappelinks /usr/share/httpd/manual/howto/cgi.html

Modifica il file /etc/httpd/conf/httpd.conf e sostituisci l’opzione ‘ScriptAlias’ con la seguente riga:

ScriptAlias /cgi-bin/ "/webapp/"

Nello stesso file, dove si trova la configurazione del tuo sito web (o host virtuale), aggiungi le seguenti linee:

<Directory "/webapp">
AllowOverride None
Options None
Require all granted
</Directory>

Nella stessa stanza, puoi facoltativamente aggiungere le seguenti righe (ma non sembra obbligatorio):

Options ExecCGI
AddHandler cgi-script .pl

Controlla il file di configurazione:

# apachectl configtest
Syntax OK

Riavvia il servizio httpd:

# systemctl restart httpd

Tempo di prova

Controlla l’esecuzione dello script Perl:

# yum install -y elinks
# elinks http://localhost/cgi-bin/hello.pl

Suggerimento utile

Se non ricordi la sintassi di qualsiasi direttiva, digita:

# yum -y install httpd-manual
# elinks /usr/share/httpd/manual/howto/cgi.html

RHEL7: Configurare restrizioni di accesso nelle directory di Apache

Nota: questo è un obiettivo d’esame RHCE 7.

Prerequisiti

Innanzitutto, seguire le istruzioni per installare un server Web Apache.

Quindi, crea una directory privata (chiamata qui privata):

# cd /var/www/html 
# mkdir private
# echo "This is a test." > private/index.html
# restorecon -R .

Esistono diversi modi per limitare l’accesso a questa directory:
1) directory private basate su host

Per consentire solo l’host test.example.com (aggiungere il nome/l’indirizzo IP nel file /etc/hosts se necessario) per accedere a una directory specifica (qui privata), modificare il file /etc/httpd/conf/httpd.conf e incollare le seguenti righe alla fine:

<Directory "/var/www/html/private">
AllowOverride None
Options None
Require host test.example.com
</Directory>

Controlla il file di configurazione:

# apachectl configtest
Syntax OK

2) directory private basate sull’utente

Per consentire solo a me di accedere a una directory specifica (qui privata), modificare il file /etc/httpd/conf/httpd.conf e incollare alla fine le seguenti righe:

<Directory "/var/www/html/private">
AuthType Basic
AuthName "Password protected area"
AuthUserFile /etc/httpd/conf/passwd
Require user me
</Directory>

Controlla il file di configurazione:

# apachectl configtest
Syntax OK

Crea il file passwd e salvami la password:

# htpasswd -c /etc/httpd/conf/passwd me
New password: your password
Re-type new password: your password
Adding password for user me
# chmod 600 /etc/httpd/conf/passwd
# chown apache:apache /etc/httpd/conf/passwd

Nota: il file .htpasswd può essere utilizzato localmente anziché il file httpd.conf in 1) e 2) per lo stesso scopo.

Qualunque sia l’opzione scelta, riavvia il servizio httpd:

# systemctl restart httpd

Controllo della configurazione

Controlla il servizio httpd:

# yum install -y curl
# curl -u user:password http://localhost

o

# yum install -y elinks
# elinks http://localhost/private

Suggerimento utile

Se si dimentica la sintassi di alcune direttive di Apache, installare il pacchetto httpd-manual e sfogliare la documentazione nella directory /usr/share/httpd/manual/howto:

# yum install -y httpd-manual
# elinks /usr/share/httpd/manual/howto/auth.html

RHEL7: Configurazione di un Virtual Host su Apache

Nota: questo è un obiettivo d’esame RHCE 7.

Prerequisiti

Innanzitutto, seguire le istruzioni per installare un server Web Apache.

Nota: non dimenticare di installare il pacchetto httpd-manual. Questo potrebbe aiutarti molto con qualsiasi problema di sintassi.
Procedura di configurazione

Supponiamo che il tuo sito web sia chiamato dummy-host.example.com.

Creare la directory /var/www/html/dummy-host.example.com:

# cd /var/www/html
# mkdir dummy-host.example.com

Crea un file index.html e assegna il contesto SELinux corretto:

# echo "This is a test." > dummy-host.example.com/index.html
# restorecon -R dummy-host.example.com

Creare il file /etc/httpd/conf.d/vhosts.conf e incollare le seguenti righe:

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

Facoltativamente, rinominare il file /etc/httpd/conf.d/ssl.conf, altrimenti si otterrà un host virtuale https non funzionante visualizzato nella configurazione.

# cd /etc/httpd/conf.d; mv ssl.conf ssl.conf2

Verifica la validità della configurazione:

# apachectl configtest
Syntax OK

Nota: puoi anche digitare: # httpd -t

Riavvia il servizio httpd:

# apachectl restart

Nota 1: è inoltre possibile digitare: # systemctl restart httpd
Nota 2: per modifiche minori alla configurazione, è anche possibile riavviare il daemon Apache senza perdere le connessioni attuali: # apachectl graceful

Controlla la configurazione degli host virtuali:

 

# httpd -D DUMP_VHOSTS
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server dummy-host.example.com (/etc/httpd/conf.d/vhosts.conf:1)
         port 80 namevhost dummy-host.example.com (/etc/httpd/conf.d/vhosts.conf:1)
         port 80 namevhost dummy-host.example.com (/etc/httpd/conf.d/vhosts.conf:1)


Controlla la configurazione:

# yum install -y elinks
# elinks http://dummy-host.example.com

RHEL7: Fornire la condivisioni di rete SMB a client specifici

Nota: questo è un obiettivo d’esame RHCE 7.

Procedura di configurazione

Installa i pacchetti Samba:

# yum groupinstall -y "file-server"
# yum install -y samba-client samba-winbind

Crea un nuovo file /etc/samba/smb.conf e aggiungi le seguenti linee (per un gruppo di lavoro chiamato MYGROUP, un server chiamato MYSERVER, una rete locale con indirizzi IP in 192.168.1.0/24, un utente chiamato user01 e una condivisione chiamata shared):

workgroup = MYGROUP
server string = Samba Server Version %v
netbios name = MYSERVER
interfaces = lo eth0 192.168.1.0/24
hosts allow = 127. 192.168.1.
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
[shared]
comment = Shared directory
browseable = yes
path = /shared
valid users = user01
writable = yes

Nota: con “passdb backend = tdbsam“, le password sono memorizzate nel file /var/lib/samba/private/passdb.tdb.

Controlla la sintassi del file di configurazione:

# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[shared]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
    workgroup = MYGROUP
    netbios name = MYSERVER
    server string = Samba Server Version %v
    interfaces = lo, eth0, 192.168.1.0/24
    log file = /var/log/samba/log.%m
    max log size = 50
    idmap config * : backend = tdb
    hosts allow = 127., 192.168.1.

[shared]
    comment = Shared directory
    path = /shared
    valid users = user01
    read only = No

Crea la directory condivisa:

# mkdir /shared

Dare i diritti di accesso completo alla nuova directory:

# chmod 777 /shared

Crea un file all’interno del test chiamato:

# echo "This is a test." > /shared/test

Imposta il contesto SELinux corretto:

# yum install -y setroubleshoot-server
# semanage fcontext -a -t samba_share_t "/shared(/.*)?"
# restorecon -R /shared

Aggiungi il nuovo servizio al firewall:

# firewall-cmd --permanent --add-service=samba

Ricarica la configurazione del firewall:

# firewall-cmd --reload

Attiva i servizi Samba all’avvio:

# systemctl enable smb
# systemctl enable nmb
# systemctl enable winbind

Avvia i servizi Samba:

# systemctl start smb
# systemctl start nmb
# systemctl start winbind

Crea l’utente utente samba01 con il pass password:

# useradd -s /sbin/nologin user01
# smbpasswd -a user01
New SMB password: pass
Retype new SMB password: pass
Added user user01.

Controlla la configurazione:

# smbclient //localhost/shared -U user01%pass
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Sun Aug  3 00:19:00 2014
  ..                                  D        0  Sat Aug  2 23:16:27 2014
  test                                N        0  Sun Aug  3 00:15:20 2014

        47356 blocks of size 65536. 26414 blocks available

Risorse addizionali

Informazioni utili su SELinux e Samba sono disponibili in RHEL 7 SELinux User’s e Administrator’s Guide.