Servidor web y Samba - Universidad del Cauca - …€¦ · Servidor web y Samba . Servidor web...
Transcript of Servidor web y Samba - Universidad del Cauca - …€¦ · Servidor web y Samba . Servidor web...
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
Probando samba
Comprobar el servicio con:
$smbclient -L localhost -U%
Desde un sistema GNU/Linux se puede usar Nautilus, en la barra escribir:
smb://ip_del_servidor_samba
Desde un sistema Windows, presionar las teclas win+r y escribir:
\\ip_del_servidor_samba
Más ejemplos de configuraciones en:
http://blog.desdelinux.net/samba-servidor-independiente-en-debian/
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/
Ejercicio
Ejercicio, instalar mediagoblin usando nginx:
http://www.ochobitshacenunbyte.com/2014/09/02/mediagoblin-la-plataforma-
audiovisual-libre/