Linux - Apache su centos

pum install httpd

Settiamo il firewall
system-config-securitylevel-tui Per configurare il firewall in modalità grafica

selezione www e www (https)

iptables -L | grep http

chkconfig httpd on

chkconfig --list httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

service httpd start


aprire su un altra macchina della rete il browser e mettere l'IP del Server, apparirà la pagina iniziale di Apache

per navigare da command line invece è sufficiente:

links http://localhost (premere Q per uscire)

/etc/httpd/conf/httpd.conf

service httpd configtest per testare la configurazione 

Modifichiamo:

# line 251: Admin's address
ServerAdmin
root@instyle.locale



# line 265: server's name
ServerName
www.instyle.locale:80

 Per abilitare .htaccess è sufficiente cambiare AllowOverride None in AllowOverride All.

Aggiungere al file .htaccess:



order allow,deny
deny from all


order allow,deny
deny from all



in modo da prevenire l'accesso ad htaccess e htpasswd è importante memorizzare quest'ultimo file in una cartella ad hoc proteggendolo con le seguenti dichiarazioni.

Aggiungere dopo in .htaccess i seguenti statement


AuthUserFile /etc/httpd/htpasswd
AuthName "Secret Secure Area"S
AuthType Basic
require valid-user



Riavviando Apache verrà richiesto utente e password.


Creiamo un utente:


htpasswd -c /etc/httpd/htpasswd admin
New password:
Re-type new password:
Adding password for user admin



- c /etc/httpd/htpasswd serve per creare il file se non esistesse


Aggiungere la compressione in Apache


vim /etc/httpd/conf/httpd.conf

andare  alla fine del file (CTRL + V) ed aggiungere in una sola riga:


AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
application/javascript application/x-javascript



verranno compressi i file .txt se vogliamo aggiungere altri tipi è sufficiente:


vim /etc/mime.types

Per ottimizzare la velocità vi sono alcuni parametri:

StartServers  indica quanti processi verranno aperti all'avvio di apache (di default sono 8)


MinSpareServers numero minimo di processi che saranno presenti per gestire nuove richieste (5 di default)

MaxSpareServers il massimo numero (20) oltre questo numero verranno killati


ServerLimit e MaxClients sono di default uguali a 256


Log di Apache sono in:




/var/log/httpd/
  1. access_log
  2. error_log
  3. ssl_access_log
Virtual Server


/etc/httpd/conf/httpd.conf


abilitare l'opzione seguente che permette di accettare tutti gli ip e listening sulla porta 80:


NameVirtualHost *:80


subito dopo va modificato in:


# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/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
#



Dover ServerName indica il nome del sito web che Apache gestirà come server Virtuale Apache


Nel caso in cui venga digitato qualcosa che non esiste verrà visualizzato il primo virtual host


DocumentRoot dice dove trovare i file da visualizzare


Ecco un esempio di Virtual host:



ServerName localhost
DocumentRoot /var/www/html/



Può essere una buona idea utilizzare i virtual host in un file separato:


vhosts.d


cd /etc/httpd/
mkdir vhosts.d
cd vhosts.d/



qui possiamo creare i relativi file .conf:


vim www_example_com.conf

And add this content:



ServerName www.example.com
DocumentRoot /var/www/vhosts/www_example_com/



a questo punto per includere tutti i file nella cartella precedente aggiungere nel file httpd.conf la seguente riga:


Include /etc/httpd/vhosts.d/*.conf


Utilizzare i certificati SSL con Apache:


yum install mod_ssl

mkdir /etc/certs

creiamo il certificato con il nome del sito web che vogliamo gestire:

openssl genrsa -des3 -out www_example_com.key 1024Generating RSA private key, 1024 bit long modulus
....................................................................................
...........................................++++++
..................................++++++
e is 65537 (0x10001)
Enter pass phrase for www_example_com.key: (mettere una password segreta)
Verifying - Enter pass phrase for www_example_com.key:



Creaiamo il CSR


openssl req -new -key www_example_com.key -out \
www_example_com.csr
Enter pass phrase for www_example_com.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:
State or Province Name (full name) [Berkshire]:
Locality Name (eg, city) [Newbury]:
Organization Name (eg, company) [My Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name



Se invece vogliamo certificare da soli il nostro certificato:

openssl x509 -req -days 365 -in www_example_com.csr -signkey \
www_example_com.key -out www_example_com.crt

Signature ok
subject=/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/CN=www.example.com
Getting Private key
Enter pass phrase for www_example_com.key:



Eseguendo il comando ls -al nella cartelal dei certificati:


ls -lh
total 24K
-rw-r--r-- 1 root root 847 Jan 12 14:15 www_example_com.crt
-rw-r--r-- 1 root root 647 Jan 12 13:55 www_example_com.csr
-rw-r--r-- 1 root root 963 Jan 12 13:35 www_example_com.key



il file .csr può essere tranquillamente cancellato


wget https://www.example.com/intermediary.cert


vim /etc/httpd/conf.d/ssl.conf

SSLCertificateFile: sarà il file .crt e mettere il path /etc/certs/www_example_com.crt

SSLCertificateKeyFile: mettere il path per il file .cer /etc/certs/www_example_com.key


SSLCertificateChainFile: fornito dalla CA potrebbe non essere necessario


service httpd restart


verrà richiesta la password, se invece vogliamo toglierla è sufficiente:


openssl rsa -in www_example_com.key -out www_example_com.key