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/
- access_log
- error_log
- ssl_access_log
/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