apt-get install apache2
/etc/init.d/apache2 start
/etc/init.d/apache2 reload
apache2ctl status
Podremos restringir el acceso de dos maneras: Por usuario y por IP
Para restringir por usuario, añadimos lo siguiente a la configuración del apache
<Location /url> AuthType Basic AuthName "Paco" AuthUserFile /ruta/fichero.pass Require valid-user </Location>
De esa manera cerramos el acceso a http://IP/url y todo lo que haya por debajo. El /ruta/fichero.pass es un fichero donde estarán los usuarios válidos. Lo podemos crear manual o con una pequeña herramienta que trae apache, el htpasswd.
Para hacerlo a mano, sólo hay que tener en cuenta que el formato que sigue el fichero es nombreusuario:contraseña. La contraseña se puede obtener usando mkpasswd
Con el htpasswd, bastaría con htpasswd -mb /ruta/fichero.pass usuario contraseña
Para restringir por IPs, usaremos 3 directivas: Order, Deny y Allow. Por ejemplo, para cerrar el acceso a todos y que sólo entren los de la subred 10.1.2.0/24, añadiríamos
Order Allow,Deny Allow from 10.1.2.0/24 Deny from all
Tanto las restricciones por IP como las de usuarios tienen que ir dentro de un <Location>, <Directory> o en un fichero .htaccess
a2enmod ssl
apache2-ssl-certificate
Nos hará una serie de preguntas…
apache2-ssl-certificate
creating selfsigned certificate replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt If you want your certificate to expire after x days call this programm with -days x Generating a 1024 bit RSA private key ........++++++ ....................++++++ writing new private key to '/etc/apache2/ssl/apache.pem' ----- 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]:ES State or Province Name (full name) [Some-State]:Canarias Locality Name (eg, city) []:Las Palmas de Gran Canaria Organization Name (eg, company; recommended) []:mi empresa Organizational Unit Name (eg, section) []:mi empresa server name (eg. ssl.domain.tld; required!!!) []:apache.miempresa.com Email Address []:micorreo@miempresa.com
Si lo queremos por defecto la configuración sería de la siguiente forma:
Puesto que se va a usar para una aplicación, lo mejor (tanto lo más seguro como lo más cómodo) es forzar a que todas las conexiones vayan por https. Así, además, nos ahorramos tener dos configuraciones de lo mismo (una para http y otra para https). Para hacer que la configuración actual vaya por https, tocaremos el sites-available/default
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Si no lo queremos por defecto, crearemos la configuración de “el sitio” para el servidor seguro basándonos en la que lleva por defecto:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
/etc/apache2/sites-enabled/ssl tiene que empezar de la siguiente manera:
NameVirtualHost *:443 <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/ssl.miempresa.net/htdocs <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/ssl.miempresa.net/htdocs>
En /etc/apache2/sites-enabled/default también hay que configurarlo de la misma forma:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/miempresa.net/htdocs <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/miempresa.net/htdocs>
Por último, sólo basta añadir dentro del fichero “/etc/apache2/sites-enabled/ssl” en cualquier lugar (por ejemplo justo debajo de “ServerSignature On”):
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Para ello añadir al fichero /etc/apache2/ports.conf la línea:
Listen 443
cd mods-enabled ln -s ../mods-available/ssl.* .
/etc/init.d/apache2 force-reload
Podemos colocar la configuración a los dentro del propio directorio, a través de los ficheros .htaccess.
Primero hay que colocar un AllowOverride en el <Directory> donde queremos poder cambiar su configuración con los .htaccess. El .htaccess se aplicará además a todos los subdirectorios.
El AllowOverride define qué parámetros de configuración se pueden modificar desde los .htaccess. Lo más habitual será ponerle un All para poder cambiar cualquier cosa o un None para que no se pueda cambiar nada.
<Directory /directorio/que/quermos/cambiar> AllowOverride All ... </Directory>
Dentro de los .htaccess podremos poner casi cualquier directiva que se puede poner en un <Directory>. En la documentación de las directivas siempre aparece una pequeña cabecera con cierta información de cada directiva, y hay una («Context») que dice si esa directiva puede ir en un .htaccess o no.
Blog de jHernandez http://jhernandez.gpltarragona.org/blog/?p=239