Servidor web y Samba - Universidad del Cauca - …€¦ · Servidor web y Samba . Servidor web...

48
Servidor web y Samba

Transcript of Servidor web y Samba - Universidad del Cauca - …€¦ · Servidor web y Samba . Servidor web...

Servidor web y Samba

Servidor web ¿Qué es?

Cuando se usa el término “servidor web” puede hacer referencia al equipo de

computo (hardware) como al software que gestiona las peticiones http.

En el servidor web (hw) se alojan una gran cantidad de archivos que

generalmente están escritos en html (Lenguaje de marcado) o en otros

lenguajes dinámicos como ruby, php, python, etc.

Debido a la complejidad del mantenimiento de un servidor web casero, se

recurre a empresas que ofrecen este servicio denominado hosting que junto

con un dominio de internet puede hacerse de su propio servidor web.

Servidor web ¿Qué es?

El servidor web como software tiene como principal tarea “ofrecer páginas

web”, es decir, responder a peticiones de los navegadores vía http (clientes) y

enviarles los datos que solicitan.

Programas para servidores web

Existen muchos servidores web (programas):

● Apache: Apache foundation

● nginx: Igor Sysoev (cache)

● IIS (Internet Information Services): Microsoft

● Apache Tomcat: páginas jsp (java web)

● lighttpd: FreeBSD

Servidor HTTP Apache

Apache es un servidor HTTP bastante utilizado por su configuración y su

flexibilidad.

Puede asignar peticiones a sus procesos hijos, lo que permite que el servidor

funcione de forma más dinámica.

Apache permite agregar módulos de funcionalidad. Con ésto se evita reiniciar

el servidor. Sólamente se debe leer de nuevo su configuración al añadir un

módulo.

Servidor HTTP Apache

Comandos:

● /etc/init.d/httpd start #Comando para iniciar el servicio

● /etc/init.d/httpd stop #Comando para detener el servicio

● /etc/init.d/httpd restart #Comando para reiniciar el servicio

● /etc/init.d/httpd reload #Comando para revisar las configuraciones del

servicio, sin reiniciar

● # service apache2 [start | stop | restart | reload | status] => debian

Servidor HTTP Apache

Comandos:

● a2enmod : habilita un módulo apache

● a2dismod : deshabilita un módulo del servidor web apache

● a2ensite : habilita un sitio web configurado en conf.d

● a2dissite : deshabilita un sitio web

● apache2 -l : lista de módulos compilados

Configuración /etc/apache2

● Configuración principal en el archivo apache2.conf / httpd.conf

● ports.conf : configuración de puertos, el puerto ssl debe agregarse aquí

● conf.d/ : configuraciones específicas de servidor web

● sites-available/ : archivos de configuración para sitios web

● sites-enabled/ : sitios web que actualmente están siendo usados

● Los módulos se encuentran en:

o /etc/apache2/mods-available/ : módulos disponibles

o /etc/apache2/mods-enabled/ : módulos cargados

● Páginas web se almacenan en /var/www o /srv/www

Parámetros de httpd.conf / apache2.conf

ServerRoot: El directorio donde se encuentran los archivos de configuración.

Ej: /etc/httpd ; /etc/apache2

Listen: Puerto(s) por donde apache recibirá peticiones. Por defecto, puerto 80.

User: Usuario creado para los procesos Apache

Group: Grupo de usuarios para los procesos Apache

ServerAdmin: Dirección de correo electrónico del administrador

ServerName: Nombre del anfitrión. No corresponde con el nombre de la

máquina.

Directorios, Alias y Ubicaciones

a. Etiqueta <Directory> … </Directory>

Permiten agrupar directivas que se aplicarán a directorios y subdirectorios.

Opciones:

● Indexes → Muestra el contenido del directorio como un listado si no

hay archivos HTML por defecto (index.html ó index.php)

● ExecCGI → Autoriza la ejecución de scripts CGI

● FollowSymLinks → Ordena que el servidor siga enlaces simbólico

● All → Todas las opciones

Directorios, Alias y Ubicaciones

● DirectoryIndex: Específica archivos HTML o CGI por defecto. Se buscará

index.php o después index.html

● allow: Indica permisos para los clientes. Pueden ser todos, un dominio,

una IP, una subred, un par red/subred, entre otros. Para denegar permisos

se utiliza deny. Se determina el orden por la directiva Order.

● AllowOverride: específica si el archivo .htaccess puede sobrescribir las

configuraciones globales de apache para ese directorio específico

La etiqueta <Location> permite aplicar las mismas directivas de <Directory>

pero basadas en la URL

Directorios, Alias y Ubicaciones

b. Alias

Permite crear un atajo entre el árbol lógico del sitio web y una ruta del sistema

de archivos.

Ej:

Alias /help “/usr/share/doc/html”

Aquí se reemplaza /var/www/html/help por /usr/share/doc/html para la

búsqueda de la página “help”.

Anfitriones Virtuales

Se crean para administrar varios sitios web en el mismo servidor.

NameVirtualHost: Especifica la dirección IP donde se recibirán las peticiones.

<VirtualHost> : Esta etiqueta utiliza esa dirección IP para definir un anfitrión

Adicionar en /etc/apache2/sites-enabled/000-default después del virtualhost por defecto,

el siguiente ejemplo:

Anfitriones Virtuales

NameVirtualHost 192.168.1.3

<VirtualHost 192.168.1.3>

ServerAdmin [email protected]

DocumentRoot /var/www/innovaco

ServerAlias innova.co

ServerName www.innova.co

LogLevel warn

ErrorLog /var/log/apache2/innova-error.log

CustomLog /var/log/apache2/innova-access.log combined

Anfitriones Virtuales

<Directory /var/www/innovaco>

Options FollowSymLinks Multiviews

AllowOverride None

Order allow, deny

allow from all

</Directory>

</VirtualHost>

Reiniciar el servicio web: service apache2 restart

Anfitriones Virtuales

Configurar en /etc/hosts el dominio www.innova.co:

192.168.1.3 www.innnova.co innova.co

Abrir un navegador e ir a http://www.innova.co , se mostrará el sitio web

alojado en /var/www/innova

Archivo .htaccess

Permite configurar parámetros para los directorios y subdirectorios sin

necesidad de modificar el archivo de configuración principal de Apache.

El sufijo “access” se utiliza porque en este archivo se especifican parámetros

de seguridad. Permiten bloquear a usuarios por su dirección IP y/o dominio,

bloquear bots y arañas web (bots).

Este archivo también sirve para modificar las URL’s, permitiendo que éstas

sean menos extensas (usan el módulo rewrite).

Configurar sitios web personales

Sitios al estilo artemisa.unicauca.edu.co/~ecaldon

Módulo userdir.mod: Permite crear sitios web personales

1. Crear enlace virtual de los módulos en /etc/apache2/mods-enabled:

# cd /etc/apache2/mods-enabled

# ln -s ../mods-available/userdir.conf userdir.conf

# ln -s ../mods-available/userdir.load userdir.load

Otra posobilidad es usar el comando a2enmod:

# a2enmod userdir

Configurar sitios web personales

2. Incluir dentro del dominio los módulos que se acaban de ingresar.

# Include /etc/apache2/mods-available/userdir.conf

# Include /etc/apache2/mods-available/userdir.load

En debian, estos módulos se incluyen automáticamente a través de las

sentencias Include mods-enabled/*.load e Include mods-enabled/*.conf del

archivo de configuración apache2.conf

2. Reiniciar el servidor web

2. Crear el directorio public_html en el directorio del usuario y un archivo

index.html dentro de él.

Configurar sitios web personales

Si se quiere cambiar el directorio por defecto para los sitios web personales,

configurarlo en /etc/apache2/sites-enabled/000-default :

UserDir web

<Directory /home/*/web>

Options Indexes Multiviews FollowSymLinks

Allowoverride None

Order allow,deny

allow from all

</Directory>

Sitios web con ssl

Secure Sockets Layer = Capa de Conexión Segura. SSL utiliza criptografía

para autenticar el servidor en una conexión.

Certificados de seguridad, sitios el estilo https://www.imperialviolet.org/

#apt-get install openssl

1. Generar llave privada RSA de 1024 bits y usando triple DES

#openssl genrsa -des3 -out servidor.key 1024

Sitios web con ssl

2. Guardar llave privada

# mv servidor.key servidor.key.old

# openssl rsa -in servidor.key.old -out servidor.key

Enter pass phrase for servidor.key.old: <contraseña>

writing RSA key

Sitios web con ssl

3. Crear un CSR (Certificate Signing Request):

# openssl req -new -key servidor.key -out servidor.csr

Country Name (2 letter code) AU:ES

State or Province Name (full name) Some-State:Madrid

Locality Name (eg, city) []:Madrid

Organization Name (eg, company) Internet Widgits Pty Ltd: <Tu organización>

Organizational Unit Name (eg, section) []: <Tu departamento>

Common Name (eg, YOUR name) []: <Nombre de sevidor en el DNS o Direccion

IP>

Email Address []: <email>

#No pongas nada en lo siguiente

Please enter the following 'extra' attributes to be sent with your certificate request

A challenge password []: <contraseña>

An optional company name []:

Sitios web con ssl

Para crear un certificado autofirmado:

#openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key -

out servidor.crt

Este certificado no será reconocido por los navegadores.

4. Guardar los archivos en el directorio /etc/apache2/ssl

# mkdir /etc/apache2/ssl

# mv servidor.key servidor.crt /etc/apache2/ssl

# chmod 500 /etc/apache2/ssl/servidor*

Sitios web con ssl

Configuración de Apache para SSL:

1. Instalar el módulo SSL en Apache

#a2enmod ssl

1. Revisar el archivo /etc/apache2/ports.conf

NamemeVirtualHost *:80

NameVirtualHost *:8080

Listen 80

Listen 8080

<IfModule mod_ssl.c>

Listen 443

</IfModule>

<IfModule mod_gnutls.c>

Listen 443

</IfModule>

Sitios web con ssl

2. Editar el archivo /etc/apache2/sites-available/default-ssl

<VirtualHost *:443>

ServerAdmin <<webmaster@tudomonio>>

ServerName <<www.tudominio.com>>

ServerAlias <<tudominio.com>>

# Ficheros Index

DirectoryIndex index.html index.php

DocumentRoot /rutadominio

# Configuracion SSL

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/servidor.crt

SSLCertificateKeyFile /etc/apache2/ssl/servidor.key

#Fin configuracion SSL

Sitios web con ssl

<Directory / >

AllowOverride None

Order allow,deny

allow from all

</Directory>

# Ficheros Log

LogLevel warn

ErrorLog /turuta/log/error.log

CustomLog /turuta/log/access.log combined

</VirtualHost>

3. Editar la configuración del sitio:

#a2ensite default-ssl

#service apache2 restart

Ofrecer archivos vía http

Sitios al estilo:

● http://gluc.unicauca.edu.co/archivos/

● http://www.iered.org/archivos/

Archivos .header.html y .readme.html

Servidor web NGINX

Servidor web y proxy para protocolos de correo electrónico.

Paquetes y dependencias:

# apt-get install build-essential libssl-dev libpcre3-dev

# apt-get install nginx

Configuraciones básicas:

Agregar un script para iniciar nginx como un servicio

sudo wget -O init-deb.sh http://www.linode.com/docs/assets/1538-init-deb.sh

sudo mv init-deb.sh /etc/init.d/nginx

sudo chmod +x /etc/init.d/nginx

sudo /usr/sbin/update-rc.d -f nginx defaults

Servidor web NGINX

Los archivos de configuración se encuentran en /etc/nginx/.

Configuraciones de NGINX en el archivo /etc/nginx/nginx.conf

user www-data; #Usuario que administra el servidor nginx

worker_processes 4; #Cuantas instancias de nginx se pueden ejecutar

pid /run/nginx.pid; #ID del proceso maestro de nginx

events {

worker_connections 768;

# multi_accept on;

}

Servidor web NGINX

Sección HTTP de /etc/nginx/nginx.conf (1)

http {

#Configuraciones básicas

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

include /etc/nginx/mime.types;

default_type application/octet-stream;

Servidor web NGINX

Sección HTTP de /etc/nginx/nginx.conf (2)

#Opciones de registro

access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

##

# Configuraciones Gzip para reducir el consumo de ancho de banda

##

gzip on;

gzip_disable "msie6";

Servidor web NGINX: Host virtual

1. Crear un directorio en la ruta deseada para la raíz del sitio (/)

# mkdir /var/www/innova

1. Agregar en /etc/hosts el nombre del dominio. Ej:

direccion_ip www.innova.co

1. En /etc/nginx/sites-available/nombre_dominio ej: innova.co

#cp /etc/nginx/sites-available/default /etc/nginx/sites-

available/innova.co

1. Modificar /etc/nginx/sites-available/innova.co con la configuración

propuesta (en el siguiente slide).

2. Crear enlace simbólico en /etc/nginx/sites-enable/ del sitio configurado

#ln -s /etc/nginx/sites-available/innova.com /etc/nginx/sites-enabled/innova.com

Servidor web NGINX: Host virtual

server {

listen 169.254.7.16:80;

server_name www.innova.co;

location / {

root

/var/www/innova/;

index index.html;

autoindex on;

}

location /shbox/ {

proxy_pass http://127.0.0.1:4200;

}

location ~ \.php$ {

include /etc/nginx/fastcgi_params;

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME

/var/www/innova$fastcgi_script_name;

}

}

Servidor web NGINX: Host virtual

Para la ejecución de scripts php:

● Instalar php5-fpm php5-cli

● En /etc/php5/fpm/php.ini cambiar

o cgi.fix_pathinfo=1 => cgi.fix_pathinfo=0

● En /var/www/innova/ crear el archivo info.php con:

o <?php phpinfo(); ?>

● Reiniciar los servicios:

o # service nginx restart

o #service php5-fpm restart

● Ir al sitio http://www.innova.co/info.php

Servidor web NGINX: Host virtual

Ejemplo configuración ssl en nginx:

server {

listen 443;

server_name www.innova.co innova.co;

location / {

root /var/www/test/a;

index index.html;

autoindex off;

}

ssl on;

ssl_certificate /etc/apache2/servidor.crt;

ssl_certificate_key

/etc/apache2/servidor.key;

ssl_session_timeout 5m;

ssl_protocols SSLv3 TLSv1;

ssl_ciphers

ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+

LOW:+SSLv3:+EXP;

ssl_prefer_server_ciphers on;

location /shbox/ {

proxy_pass http://127.0.0.1:4200;

}

}

Servidor web NGINX: Host virtual

Probamos la conección ssl con shellinabox:

● #apt-get install shellinabox

● ir al sitio 127.0.0.1:4200

o shell vía navegador

● Con la configuración ssl anterior, ir al sitio http://www.innova.co/shbox e

inmediatamente redirigirá hacía 127.0.0.1:4200

Compartir archivos con Windows

usando Samba

Samba: Conjunto de servidores que implementan los protocolos SMB/CIFS Y

NetBIOS/WINS para unix. Se puede utilizar para compartir archivos con

windows o entre máquinas Unix.

Servicios:

smbd: Para autenticación, autorización y ficheros e impresoras compartidas.

nmbd: Servidor de nombres. Para recorrido de los recursos compartidos y

servidor WINS.

winbindd: para utilizar cuentas de usuario en un dominio Microsoft.

Compartir archivos con Windows

usando Samba

Se encuentra en /etc/samba/smb.conf

La sintaxis de los archivos de configuración de Windows es retornada por secciones:

[global]: Ajustes globales del servidor.

[homes]: Directorios de usuarios compartidos

[printers]: Impresoras compartidas

Ej:

[global]

workgroup = MYGROUP #nombre de grupo de trabajo

netbios = posteN #nombre netbios de la máquina (la que actua como servidor)

security = share #método de autenticación

Configurando samba

Hacer una copia del archivo /etc/samba/smb.conf

# cd /etc/samba

# mv smb.conf smb.conf.master

# testparm -s smb.conf.master > smb.conf

Configurando samba

Ejemplo del archivo smb.conf

[global]

workgroup = WORKGROUP

netbios name = MOONLIGHT

security = user

server string = %h server

map to guest = Bad User

obey pam restrictions = Yes

pam password change = Yes

passwd program = /usr/bin/passwd %u

passwd chat = *Enter\snew\s*\spassword:*

%n\n *Retype\snew\s*\spassword:* %n\n

*password\supdated\ssuccessfully* .

unix password sync = Yes

syslog = 0

log file = /var/log/samba/log.%m

max log size = 1000

dns proxy = No

usershare allow guests = Yes

panic action = /usr/share/samba/panic-action %d

idmap config * : backend = tdb

[homes]

comment = Home Directories

valid users = %S

create mask = 0700

directory mask = 0700

browseable = No

Configurando samba

Adicionar usuarios a la BD de samba:

#smbpasswd -a edycop

Adicionar el usuario al grupo users del sistema (o cualquier otro grupo):

#adduser edycop users

O editar el archivo /etc/group, buscar users y adicionar al final edycop

Seleccionar el directorio a compartir, ejemplo /home/edycop/musica

Luego agregar al final del archivo smb.conf la configuración para compartir el

directorio seleccionado:

Configurando samba

[musica-edycop]

comment = Directorio personal de Edwin Caldon

path = /home/edycop/musica

read only = Yes

valid users = @users

read list = @users

users es el grupo predeterminado del sistema, puede ser cualquier grupo

Probar la configuración y reiniciar el servicio:

#testparm

#service samba reload

Fuente imagen: elaboración propia

Fuente imagen: elaboración propia

Referencias

● Linux: Preparación para la certificación LPIC-1 . Disponible parcialmente en Google

books

http://books.google.com.co/books?id=rppJaq7XzQAC&dq=Preparaci%C3%B3n+para+la

+certificaci%C3%B3n+Linux+Sebastien+Rohaut+pdf&source=gbs_navlinks_s . Capítulo

J FTP p. 479

● .htaccess http://www.expresionbinaria.com/archivo-htaccess-que-es-y-como-funciona/

● Usermod http://www.josedomingo.org/web/mod/page/view.php?id=1950

● SSL http://joseantoniovilar.com/2013/07/ssl-en-apache2-y-ubuntu-en-unos-pocos-pasos/

● nginx https://www.linode.com/docs/websites/nginx/basic-nginx-configuration

● https://access.redhat.com/documentation/en-

US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-apache-config.html

● https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-

lemp-stack-on-ubuntu-12-04 nginx+php

● http://blog.desdelinux.net/samba-servidor-independiente-en-debian/ samba

@Edwin Caldon, @Melissa Muñoz Trabajo bajo licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional

http://creativecommons.org/licenses/by-nc-sa/4.0/