Hoy me toco realizar un trabajo en el cual debí separar una carpeta usada para administración en el apache. Voy a suponer que ya esta instalado el apache2.
Aclaracion: en los casos que aparece Directory, éste esta entre llaves, solo que blogger lo reconoce como comando, por eso si copian y pegan el codigo les tira error.
# Editar el archivo de configuracion:
jonathan@cfh:# sudo vim /etc/apache2/sites-enabled/000-default
# En esta prueba coloque este codigo al final de todo por una cuestion organizativa (momentanea)
- Directory "/var/www/uno/dos/administracion/">
AuthName "Panel para identificar usuario"
AuthType Basic
AuthUserFile /var/www/uno/dos/administracion/.htpasswd
require valid-user
-/Directory>
[ Lo ideal seria NO TENER el .htaccess y .htpasswd en el mismo directorio por una cuestion de seguridad, podríamos poner la ruta de un directorio externo y los .htacces y htpasswd dentro. ]
Directory = es donde estaran nuestros archivos y/o carpetas a "proteger"
AuthName
root@cfh:/var/www/uno/dos/administracion# ll
total 36
drwxr-xr-x 3 root root 4096 2011-11-03 16:02 ./
drwxr-xr-x 3 root root 4096 2011-11-03 14:32 ../
drwxr-xr-x 2 root root 4096 2011-11-03 15:13 bkp/
-rw-r--r-- 1 root root 5 2011-11-03 14:21 hola2.txt
-rw-r--r-- 1 root root 5 2011-11-03 14:21 hola3.txt
-rw-r--r-- 1 root root 5 2011-11-03 14:21 hola4.txt
-rw-r--r-- 1 root root 5 2011-11-03 14:21 hola.txt
-rw-r--r-- 1 root root 110 2011-11-03 16:07 .htaccess
-rw-r--r-- 1 root root 22 2011-11-03 16:07 .htpasswd
jonathan@cfh:/var/www/uno/dos/administracion$ sudo htpasswd -cp .htpasswd usuario
Warning: storing passwords as plain text might just not work on this platform.
New password:
Re-type new password:
Adding password for user usuario
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user
[ Otra cosa a tener en cuenta sería crear el .htaccess y .htpasswd con otro nombre, por razones obvias, podríamos ponerle .users .auth o nombres relativos, para dar un mínimo de seguridad ]
jonathan@cfh:/var/www/uno/dos/administracion$ cat .htpasswd
usuario:123123 <--- (esta sin encriptar para probar)
jonathan@cfh:/var/www/uno/dos/administracion# cat .htaccess
AuthUserFile /var/www/uno/dos/administracion/.htpasswd
AuthName "Protegido"
AuthType basic
require valid-user
jonathan@cfh:/var/www/uno/dos/administracion# cat .htpasswd
usuario:vOYVb.s45QBEs <--- (encriptado aunque no garantiza la maxima seguridad)
jonathan@cfh:/var/www/uno/dos/administracion#
Quitar info de error en apache2
Otro tema interesante seria quitar el "Chivo" de apache el tipico error de:
Not Found
The requested URL /hola was not found on this server.
____________________________________________
Apache/2.2.17 (Ubuntu) Server at 192.168.160.35 Port 80 <-----
Para quitar este detalle que ofrece mucha info debemos editar el archivo de configuracion de apache (en algunas versiones funciona agregando las 2 lineas en el archivo httpd.conf Yo lo probe en el apache2.conf y funciono perfectamente).
jonathan@cfh: vim /etc/apache2/apache2.conf
Y agregar estos comandos:
ServerSignature Off
El ServerSignature aparece en la parte inferior de las páginas generadas por el servidor web apache tales como los famosos errores 404.
ServerTokens Prod
La directiva ServerTokens se utiliza para determinarse lo que pondrá el servidor web Apache en la cabecera de la respuesta HTTP del servidor. ( O bien al hacer un telnet)
usar HTTPS en apache2 (MOD_REWRITE)
Primero que nada debemos crear un .htaccess.
Dentro del htacces colocar el siguiente codigo:
# Ésto lo que hace es forzar el uso de https
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]
# Forzar el uso de https en la carpeta seleccionada
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} somefolder
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]
sacado de:
Evitar el escaneo de la web con .htaccess
#Evitar escaneos, manipulación e inyeccion SQL (SQL, XSS, etc)
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(-|\.|’) [OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach|havij)(.*) [NC,OR]
RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/’|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|’|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]
RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|’|%3C|%3E|%27)(.*) [NC]
RewriteRule ^(.*)$ index.php [NC]
#Evita manipulacion en la URL
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|’|%0A|%0D|%27|%3C|%3E|).* [NC,OR]
RewriteCond %{HTTP_COOKIE} ^.*(<|>|’|%0A|%0D|%27|%3C|%3E|).* [NC,OR]
RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|”>|”<|/|\\\.\.\\).{0,9999}.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|’|%0A|%0D|%27|%3C|%3E|).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(;|<|>|’|”|\)|%0A|%0D|%22|%27|%3C|%3E|).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|>|’|%0A|%0D|%27|%3C|%3E|).* [NC]
RewriteRule ^(.*)$ index.php [NC]
#Complica los ataques Remote File include y Local File include
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* – [F]
sacado de:
Redireccionar web con apache2
¿Para que sirve redireccionar con apache?. En mi ejemplo no quería que cuando entren a mi servidor mostrara el Its work! del apache, así que redireccione para que entre directamente al nagios que tengo corriendo en el server en vez de mostrar el Its work de apache.
editar el archivo default
jonathan@cfh:# sudo vim /etc/apache2/sites-enabled/000-default
DocumentRoot /var/www
- Directory />
Redirect permanent / http://localhost/nagios3/
- Directory />
No hay comentarios:
Publicar un comentario