Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4 aos
Taringa!
Linux
Peque
Me gusta
527 855
INGRESAR
REGISTRARTE
kyd1980
EXPERTO
A favoritos
Ir a
comentarios
Compartir
va mail
51
16
779
SEGUIDORES
POSTS
PUNTOS
Posts Relacionados
LINUX
LINUX
HAZLO-TU-MISMO
INFO
Que es Apache?
Este pequea Aplicacion/Servicio es muy conocida en el ambiente Gnu/Linux y muy
pdfcrowd.com
pdfcrowd.com
Nota : Naturalmente el paquete se llama : Apache2 pero para mas seguridad o para
cotejar que asi es como realmente se llama la aplicacion con tomarse 5 segundos
haciendo un search no se nos va a caer el mundo.
Una vez terminado el proceso de instalacion se nos crearan los archivos de
configuracion de apache y los correspondientes script's del mismo.
- Los Archivos de configuracion seguramente esten en /etc/apache2
- El Directorio Raiz por defecto sera /var/www
Algo a tener en cuenta que por ah algun da lo ven o algunos ya lo vieron es que
apache corre como ROOT y sabemos que todo servicio de red no DEBE ejecutarse
como ROOT.
Pero para todo esto ah un porque ya que esto no es tan as. Si bien apache corre
como root solo lo hace para inicializar el servicio ya que toda servicio debajo del
puerto 1000 debido a lo establecido en POSIX debe ser ejecutado como root, pero
una vez que el servicio esta online apache se encarga de generar procesos
hijos(www-data) los cuales sern los que realmente atiendan a las peticiones del
servidor.
Ahora con apache instalado si vamos a nuestro browser y tipeamos localhost.com
nos mostrara nuestro propia pagina web montada en nuestro servidor sin que
tengamos que hacer nada de nada, ya que por defecto viene configurado un
VirtualHost y tambin un index en el Directorio Raz.
VirtualHost , Index?
El index sera el arhivo que contenga nuestra pagina web que puede estar diseada
en html,php,etc. y lo vamos a encontrar en /var/www que es el DocumentRoot por
defecto.
pdfcrowd.com
Lo encontramos en :
- /etc/apache2/sites-avalaible/nombre_Vhost
-/etc/apache2/sites-enabled/nombre_Vhost
En /Sites-avalaible vamos a encontrar nuestros sites en etapa de elaboracion.
y
En /Sites-enabled vamos a encontrar nuestros sites en produccin.
----------------------------------------------------------------------------------------------En nuestro archivo /etc/apache2/apache.conf vamos a tener nuestra configuracin
global, ya que podemos tener una configuracin independiente por cada Vhost.
Seguramente alguna de las opciones con las cuales nos encontremos sean :
- ServerName : : Establece el nombre con el cual se conoce el servidor as mismo.
- ServerRoot : Directorio/s donde van a estar los archivos de configuracin.
- DocumentRoot : Directorio donde se encuentra los archivos que apache servir a
los clientes.
pdfcrowd.com
pdfcrowd.com
pdfcrowd.com
</VirtualHost>
pdfcrowd.com
NameVirtualHost 10.0.0.10
<VirtualHost www.dominio1.com>
ServerName www.dominio1.com
DocumentRoot /var/www/dominio2
ErrorLog /var/log/apache2/error.log
TransferLog /var/log/apache2/access.log
</VirtualHost>
NameVirtualHost 10.0.0.10
<VirtualHost www.dominio1.com>
ServerName www.dominio1.com
DocumentRoot /var/www/dominio1
ErrorLog /var/log/apache2/error.log
TransferLog /var/log/apache2/access.log
</VirtualHost>
pdfcrowd.com
<VirtualHost 10.0.0.20:80>
ServerName www.dominio2.com
DocumentRoot /var/www/dominio2
ErrorLog /var/log/apache2/error.log
TransferLog /var/log/apache2/access.log
</VirtualHost>
<VirtualHost 10.0.0.20:8080>
ServerName www.dominio2.com
DocumentRoot /var/www/dominio2/intranet
ErrorLog /var/log/apache2/error.log
TransferLog /var/log/apache2/access.log
</VirtualHost>
<VirtualHost 10.0.0.3o>
ServerName www.dominio3.com
DocumentRoot /var/www/dominio3
ErrorLog /var/log/apache2/error.log
TransferLog /var/log/apache2/access.log
pdfcrowd.com
</VirtualHost>
Autenticacion
Ahora que ya sabemos como definir un Vhost , lo unico que restaria seria modificar
nuestro index situado en DocumentRoot a nuestro criterio. Pero que pasa si yo
tengo varias paginas web y quiero restringir el acceso a ellas porque no quiero que
todos los usuarios de mi compania,por ej logren acceder a ellos. Tengan en cuenta
que esa otra pagina va a ser un Vhost distinto y va a contener otro otro index o
quizas no , simplemente sea un contenedor de archivos para que puedan hacer uso
ciertas personas.
Imaginemos el siguiente escenario :
- ls /home/user1/web
index.php --> archivo
privado --> Directorio
- ls /home/user1/web/privado
tux.jpg
backup.tar.gz
prueba.sh
Lo que vamos a hacer es que cuando algun usuario quiera acceder a /privado tenga
pdfcrowd.com
que autenticarse de alguna manera y para ello trabajaremos con alguna de nuestros
2 tipos de autenticaciones (Basica/Digest).
- vim /etc/apache2/sites-avalaible/misitio
<VirtualHost *:80> --> El * es equivalente a todos/as
ServerName www.misitio.com
DocumentRoot ~/web --> ~ hace referencia a /home/usuario
<Directory ~/web/privado>
AuthType Basic
AuthName "Zona Restringida"
AuthUserFile /etc/apache2/usuarios
AuthGroupFile /etc/apache2/grupos
require valid-user
</Directory>
</VirtualHost>
Analizemos un poquito lo que acabamos de hacer, con el directorio ya creado en
pdfcrowd.com
~/web/privado definimos que este mismo no sea accedido por cualquiera sino que
sea a travez de un usuario y contrasea.
Aunque todo esto va a viajar por texto plano(tener en cuenta ya que con cualquier
sniffer podemos capturar la misma).
- AuthType : Define el tipo de autenticacion puede ser Basica o Digest.
- AuthName : Define una leyenda a aparecer en el cuadro de dialogo al intentar
acceder.
- AuthUserFile : Define la ruta del archivo donde estan almacenado los usuarios.
- AuthGroupFiel : Idem AuthUserFile pero para los grupos.
- Require : El metodo de validacion que puede ser :
* valid-user
* user user1 user2 userx
* group grp1 grp2 grpx
* user user1 user2 grp1 grp2
Para crear los usuarios vamos a necesitar de htpasswd que ya viene con apache.
- htpasswd -c (crea el archivo sino existe) /etc/apache2/usuarios user1
(nombre.usuario)
Para crear los grupos creamos el archivo manualmente con la siguiente estructura :
nombre_grupo1 : user1 user2
pdfcrowd.com
Veiamos antes que nuestro contrasea iba a viajar por texto plano que era algo
totalmente inseguro , asi como dejar el archivo /etc/apache2/usuarios sea accedido
y/o modificado por cualquiera.
Ahora en lugar de enviar la contrasea por texto plano o en base 64 con Digest las
contraseas no viajan por la red. Al pedir un recurso compartido, el servidor envia
un numero (noonce) y con ese numero , la URI y la contrasea el browser realiza el
Digest. Es Decir, un calculo basado en MD5 que le da un numero muy raro y dificil
de obtener sin la contrasea y con esto se reduce el riesgo de captura de contrasea.
Lo 1r0 que tenemos que hacer es cargar el modulo con a2enmod nombre_modulo o
directamente llamarlo desde el Vhost.
- vim /etc/apache2/sites-avalaible/misitio
<VirtualHost *:80>
ServerName www.misitio.com
DocumentRoot ~/web
<Directory ~/web/privado>
AuthType Digest
AuthName "privado"
pdfcrowd.com
AuthUserFile /etc/apache2/usuarios
Require valid-user
</Directory>
</VirtualHost>
Para crear los usuarios vamos a necesitar de htdigest.
- htdigest -c /etc/apache2/usuarios nombre_entorno_protegido usuario
Nota : Tener en cuenta que para que digest funcione a la hora de la creacion el
nombre del entorno protegido tiene que ser igual al mismo. En nuestro caso seria :
- nombre_entorno_protegido = privado.
Aunque estos son los 2 metodos de autenticacion podemos hacer un poquito mas
fuerte nuestra configuracion dando permisos especiales a nuestros entornos de la
siguiente manera :
<VirtualHost *:80>
ServerName www.misitio.com
DocumentRoot ~/web
<Directory ~/web/privado>
AuthType Digest
AuthName "privado"
pdfcrowd.com
AuthUserFile /etc/apache2/usuarios
Require valid-user
Order Deny,Allow --> Establece un Orden.
Deny From all --> Tambin se puede hacer por ip/nombre.
Allow From 10.0.0.x (IP) www.google.com (nombre).
</Directory>
</VirtualHost>
Como hemos visto pudimos montar nuestra propia web , pudimos montar una
seccin donde almacenamos ficheros entre otros y lo combinamos con Basic/Digest
y a travs de unos permisos especiales.
Ademas de esto podemos mejorar la configuracion de nuestros indices para
hacernos la vida un poco mas sencilla.
<VirtualHost *:80>
ServerName www.misitio.com
DocumentRoot ~/web
<Directory ~/web/privado>
AuthType Digest
AuthName "privado"
pdfcrowd.com
AuthUserFile /etc/apache2/usuarios
Require valid-user
Order Deny,Allow
Deny From all
Allow From 10.0.0.x www.google.com
IndexOptions FancyIndexing --> Establece las opciones para los indices.
IndexIgnore *.jpg *.rar *.sh --> Establece que ficheros no aparecen.
AddDescription "Script's del Sistema" *.sh --> Aade una descripcion.
AddIcon --> Asocia un icono a un fichero o tipos de ficheros.
</Directory>
</VirtualHost>
Pero esto no es todo Gente!!!!
Tambien tenemos la posibilidad de trabajar con script's via web gracias a CGI
(Common Gateway Interface).
Es una herramienta que nos perminte ejecutar contenido dinamico, a travs de ello
podemos ejecutar cualquier programa del OS del server.
Sera la aplicacion quien se encargue de generar el html o lo que querramos que el
servidor web entrege al cliente.
Es IMPORTANTE que en todo CGI se especifique la cabecera y despues se deje un
pdfcrowd.com
espacio en blanco :
- echo "content-type : text/plain"
echo
Ahora generaremos nuestro script, lo que yo hice para probar fue algo muy sencillo.
- vim ~/web/info.cgi
-----------------------------------------------#!/bin/bash
echo "content-type : text/plain"
echo
tail -f /var/log/apache2/error.log
-----------------------------------------------Ahora nos queda configurar nuestro Vhost para informarle como trabajar con CGI
de la siguiente manera.
Include /etc/apache2/mods-avalaible/cgi.load
ScripAlias /cgi/ ~/web/
<VirtualHost *:80>
ServerName www.misitio.com
pdfcrowd.com
DocumentRoot ~/web
</VirtualHost >
Ahora cuando vallamos a www.misitio.com/cgi/info.cgi veremos como esta
corriendo un tail del error.log de apache.
Otra posibilidad puede ser que necesitemos que nuestros usuarios ejecuten/suban
script ,lo cual es obviamente muy PELIGROSO!!! pero si no nos queda otra
configuraremos el Vhost de la siguiente manera.
<Location /cgi>
AddHandler cgi-script cgi
Options +ExecCgi --> Permite la ejecucin de Script's para el directorio.
</Location>
Logging
Algo a tener muy en cuenta a la hora de trabajar con Apache es que podemos y
debemos darle importancia a los logs del sistema o de cada site , ya que se pueden
configurar indivualmente y esto nos va a ayudar a poder resolver nuestros
problemas de manera mucho mas rapida y evitarnos dolores de cabeza y evitar
hacer preguntas sin sentido que a veces molestan un poco ya que la gente no se
toma el tiempo para averiguar lo que realmente pasa. Tengan en cuenta que
nosotros somos como ustedes y tenemos las mismas herramientas que ustedes.
- ErrorLogin --> Fichero con informacion de Errores.
pdfcrowd.com
Re-direcciones
En ocaciones nos va a pasar que por ahi es necesario mover las cosas de sitio. Hay
que mover directorios de un lado a otro , transladar ficheros,etc, pero queremos
que nuestros cliente sigan accediendo a nuestro site. Por ello justamente es que
nacen las redirecciones y tenemos varias maneras de hacerlo.
Alias
- Con ello podemos acceder a directorios que estan dentro o fuera del mismisimo
DocumentRoot de la siguiente manera.
* Alias /publico /var/www/sitio_fuera_DocumentRoot
* Alias /tesoreria ~/web/privado/bancos/tesorera
Redirect
pdfcrowd.com
pdfcrowd.com
necesitamos hacer que la informacion viaje de tal manera que no sea legible, de
poder cifrar la misma por si ahi algun sniffer por ahi y tambien para garantizar la
privacidad y la identidad de las comunicaciones web. Tengan en cuenta que no es lo
mismo tener un site como un blog que tener un site que administre los usuarios, las
cuentas bancarias,etc.
El modulo SSL ya viene por defecto con la instalacion de Apache , solo ahi que
chequear si esta activo en /etc/mods-enabled/SSL.load
Ahora lo siguiente, vamos a necesitar de OpenSSL para poder generar nuestros
propios certificados y auto-firmados ya que en mi caso estoy en un entorno de
pruebas y no necesito de una CA(Entidad Certificadora) pero llegado al caso que
estemos en un ambiente de produccion sera recomendable poder trabajar con
alguna CA (Verisign , Thawte, CertSign,FNMT,etc) que nos provea de un certificado
ya que de no ser asi nuestros browser nos emergeran una alerta sobre el certificado
que esta siendo usado por ese site ya que no puede reconocer dicho certificado,
podemos aceptar ese certificado si queremos pero ahi que tener en cuenta puede
ser un pishing y nosotros al aceptar el certificado y ingresando en la misma web
podemos estar regalando toda nuestra informacion sensible a un tercero que dios
sabe que hara con esa informacion.
De todas maneras , si queremos generar nuestro propio certificado y auto-firmarlo
lo haremos de la siguiente manera :
1ro - Generamos nuestra llave para poder firmar nuestro certificado.
* openssl genrsa -des3 -out millave.key 2048
2d0 - Generamos nuestro certificado
* openssl req -new -key millave.key -out cert.csr
3ro - Ahora con nuestra llave y nuestro certificado creamos el certificado autofirmado.
pdfcrowd.com
* openssl x509 -req -days 365 in cert.csr -signkey millave.key -out cert.crt
Ahora con nuestro propio certificado podemos pasar a configurar el Vhost.
Cargamos los modulos en el Vhost o con a2enmod y dsp en el Vhost :
<VirtualHost *:443>
- Activamos SSL --> SSLEngine ON
- Le decimos donde se almacena nuestro certificado --> SSLCertificateFile
/ruta_cert
- Le decimos donde se almacena nuestra llave --> SSLCertificateKeyFile /ruta_key
</VirtualHost>
Consejos
Apache es un servidor muy seguro pero todo siempre va a depender de nosotros
mismo por mas seguro que sea una aplicacion/servicio si esta mal configurada no
sirve de nada, bueno , con apache pasa lo mismo.
Mantenerse al Dia
Como todos sabemos nada es perfecto y puede fallar pero justamente aqui lo bueno
de poder disponer el codigo fuente del programa y de la gran comunidad que hay
detras de todo esto ,que al reportarse un agujero de seguridad no se tarda mucho en
poder solucionar ese inconveniente.
Protege los ficheros de configuracion
pdfcrowd.com
Asi como sus archivos de configuracion y sus sub-directorios solo necesitan ser
accedidos por ROOT y nadie mas.
Vigila los Logs
Una de las grandes herramientas que tiene un administrador es poder hacer uso de
los logs y sacarle el maximo provecho para poder revertir la situacion.
CGI y SSI
Estos no son mas que dolores de cabeza y solo se recomienda usarlo en el caso que
sea extremadamente necesario. Una mala configuracin podria provocar un gran
agujero de seguridad.
Back-up
Ten en cuenta que lo mas importante con todo lo que trabajamos es la informacion
sensible que manejamos , una denegacion de servicio DDOS nos puede dejar
congelado nuestro server por un par de horas ,pero eso no seria tan grave , lo peor
seria que gracias a un tercero nuestra informacion sensible se viera corrompida ,
por eso es muy IMPORTANTE! que siempre tengas 1 o 2 back-up's en medios
distintos de ser posible de tu informacion sensible.
Compartir
Twittear
pdfcrowd.com
Dar puntos
+10
DENUNCIAR
SEGUIR
9 Votos
6.523 Visitas
17 Favoritos
PUNTOS
1 Seguidores
59
Transfer Your Balance Top 8 Credit Cards For This game will keep
To One Of These 4
Excellent Credit
you up all night!
Stormfall: Free Online Game
Cards And Pay $0 In CompareCards.com
LendingTree
pdfcrowd.com
Eres nuevo(a) en
GNU/LINUX.
pdfcrowd.com
[PHP] Te enseo a
programar, Como enviar
correos
NeoKylin OS, el
sustituto de Windows
XP
3ng3l Hace ms de 1 ao +1
Terrible! Sigas vivo o no, muchas gracias! +10! Funciona para apache 2.4.7 en
ubuntu (sin archivo httpd.conf)
kyd1980 Hace ms de 1 ao +1
pdfcrowd.com
linux
linux
juegos-online
linux
linux
linux
Maru OS: el
escritorio
Linux para
Android
Conoce a
Debian en una
infografa
Aura una PC
para un gamer
REAL
gimp gimp
gimp
8 WEBS de
Ubuntu
activas para
aadir a tus
Limpiar
nuestro Linux
con unos
comandos
Anuncie en Taringa! |Ayuda |Reglas de la Comunidad |Desarrolladores |Trabaja con nosotros! |Reportar bug |Enciclopedia
Argentina |Chile |Colombia |Mxico |Per |Uruguay |Venezuela |Resto del mundo
Denuncias |Reportar Abuso - DMCA |Trminos y Condiciones |Privacidad de datos
pdfcrowd.com