Recordar conocimientos adquiridos en la parte Básica del curso, para facilitar el aprendizaje en la parte Avanzada, así como responder preguntas que puedan haber surgido con la práctica.
Incorporar los conocimientos necesarios para poder entender cómo funcionan y cómo se instalan redes bajo estos protocolos
El Protocolo de Control de Transmisión (TCP, Transmission Control Protocol) es uno de los principales componentes del protocolo de Internet (IP, Internet Protocol). El conjunto es a menudo llamado TCP/IP. TCP provee un método de envío de flujo de octetos confiable, ordenado y con comprobación de errores entre programas ejecutándose sobre computadoras conectadas a una red, sea local o pública. Reside en la capa de transporte del modelo OSI.
El Protocolo de Internet (IP, Internet Protocol) es el principal componente del conjunto de protocolos para envío de datagramas a través de redes interconectadas. Su función de ruteo permite internetworking y esencialmente establece Internet.
La versión que actualmente se utiliza en más del 96% de Internet es la 4, que ofrece direcciones de 32 bit. Data del año 1981. Para resolver el tema del agotamiento de las direcciones, entre otros, una nueva especificación fue desarrollada por la IETF. Fue llamada versión 6, y data del año 1998. Entre otras características, ofrece direcciones de 128 bit.
Ejemplo de dirección IPv4 (4 grupos de 8 bit cada uno): 192.0.2.235
Ejemplo de dirección IPv6 (8 grupos de 16 bit cada uno): 2001:0db8:0000:0000:0000:ff00:0042:8329
Hay varios tipos de redes, siendo la más común hoy en día la topología en estrella. Las capas del modelo OSI son las siguientes:
Clase | Rango | N° de Redes | N° de Host Por Red | Máscara de red | Broadcast ID |
A | 0.0.0.0 - 127.255.255.255 | 128 | 16 777 214 | 255.0.0.0 | x.255.255.255 |
B | 128.0.0.0 - 191.255.255.255 | 16 384 | 65 534 | 255.255.0.0 | x.x.255.255 |
C | 192.0.0.0 - 223.255.255.255 | 2 097 152 | 254 | 255.255.255.0 | x.x.x.255 |
D | 224.0.0.0 - 239.255.255.255 | histórico | |||
E | 240.0.0.0 - 255.255.255.255 | histórico |
Si bien a bajo nivel la conexión entre equipos se realiza utilizando direcciones IP, para simplificar el trabajo humano y no tener que recordar los números de direcciones, se utilizan nombres de host y un sistema de resolución de nombres en su correspondiente dirección IP: Domain Name Service (DNS).
Si los equipos son pocos, se puede utilizar también el archivo /etc/hosts.
La configuración de red en CentOS se encuentra en el archivo /etc/sysconfig/network y en el directorio /etc/sysconfig/network-scripts/ dentro de varios archivos y scripts de configuración.
Los archivos más importantes allí dentro son ifcfg-lo y ifcfg-eth0. A continuación, un ejemplo de configuración de ifcfg-eth0 para utilizar una IP fija:
DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETMASK=255.255.255.0 IPADDR=172.16.23.1 USERCTL=no
Sin embargo, si se desea utilizar DHCP:
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
Además, se debe indicar qué servidores DNSs el equipo deberá consultar. Eso se logra con el archivo /etc/resolv.conf colocando dentro algo como:
domain dominio search dominio nameserver 172.16.13.1
Al ser instalado CentOS, por defecto trae algunas reglas de firewall que cierran el acceso a puertos que pudiesen estar abiertos.
A los efectos de este curso, el firewall no es necesario. Para desactivarlo, se debe limpiar primero las reglas de Netfilter y luego desactivar el script que configura las reglas al inicio del sistema operativo, tanto para IPv4 como IPv6:
iptables -F chkconfig iptables off ; chkconfig ip6tables off
SELinux es una mejora a la seguridad básica del kernel Linux. Sin embargo, si no se utiliza, o no se sabe cómo manejarlo, se debe desactivar para que los sistemas y servicios funcionen como deberían hacerlo por defecto.
Para ello, se debe editar el archivo de configuración /etc/sysconfig/selinux y asegurarse que la siguiente variable quede como:
SELINUX=disabled
Entender la utilidad de tener un DNS configurado en el servidor, así como aprender la configuración y empleo del DNS BIND9.
El Domain Name System (o Service, o Server) se encarga de devolver la dirección IP que corresponde a un nombre de host (resolución forward); también hace lo inverso, devolver el nombre de host que está configurado para una IP (resolución reverse). Como tal es un servicio básico e imprescindible en una intranet ya que, por un lado facilita el trabajo al evitar tener que recordar las direcciones IP que corresponden a los equipos, y por otra parte permite aprovechar servicios como HTTP, que hacen uso intensivo de los nombres de host.
Algunos conceptos:
Uno de los servidores de DNS más utilizados es Bind9, desarrollado por Internet Systems Consortium (ISC). Se caracteriza por ser rápido, eficiente y seguro.
Para instalarlo en CentOS:
yum install bind
El proceso se llama named y escucha en los puertos TCP y UDP 53.
La configuración se encuentra en los siguientes archivos y directorios:
Se debe tener en cuenta que la configuración de Bind es sumamente estricta, y un espacio o un punto de más o de menos provoca que el servicio no funcione.
En /etc/named.conf agregar o modificar donde corresponda:
listen-on port 53 { 127.0.0.1; 192.168.1.1;}; allow-query { localhost; 192.168.1.0/24; };
Y al final de este archivo, pero antes de los includes, agregar la configuración para las zonas:
zone"dominio.local" IN { type master; file "forward.dominio"; allow-update { none; }; }; zone"1.168.192.in-addr.arpa" IN { type master; file "reverse.dominio"; allow-update { none; }; };
Luego crear ambos archivos en /var/named con lo siguiente:
forward.dominio
$TTL 86400 @ IN SOA dns.dominio.local. root.dominio.local. ( 2014060901 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns.dominio.local. @ IN A 192.168.1.1 dns IN A 192.168.1.1
reverse.dominio
$TTL 86400 @ IN SOA dns.dominio.local. root.dominio.local. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns.dominio.local. @ IN PTR dominio.local. dns IN A 192.168.1.1 1 IN PTR dns.dominio.local.
Dig es un utilitario para trabajar con DNS, solicitando resolución de hosts, direcciones IP, MX, etc.
Por ejemplo, para solicitar la IP de un host:
dig google.com
En cambio, para solicitar el host de una dirección IP:
dig -x 206.190.36.45
Incorporar los conocimientos que permitan configurar, poner en marcha, agregar funcionalidad y mantener un servidor Apache
Apache HTTP Server es uno de los servidores de dicho protocolo más utilizados en el mundo. Es extremadamente confiable, extensible, versátil y poderoso.
Para instalarlo en CentOS:
yum install httpd
En CentOS, la configuración de Apache se encuentra en los siguientes archivos y directorios:
Los archivos del sitio web, llamado document root están en /var/www/html
Los módulos de Apache, se encuentran en usr/lib64/httpd/modules
Por defecto, Apache al iniciar escucha sólo en localhost. Por lo tanto, debe buscarse dentro de httpd.conf la línea:
Listen 80
Y reemplazarla por:
Listen 0.0.0.0:80
Para crear un nuevo host virtual, basta con agregar en httpd.conf algo como lo siguiente, para cada nuevo host virtual que se desee:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@sitio1.com DocumentRoot /var/www/sitio1.com/public_html ServerName www.sitio1.com ServerAlias sitio1.com ErrorLog /var/www/sitio1.com/error.log CustomLog /var/www/sitio1.com/requests.log </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@sitio2.com DocumentRoot /var/www/sitio2.com/public_html ServerName www.sitio2.com ServerAlias sitio2.com ErrorLog /var/www/sitio2.com/error.log CustomLog /var/www/sitio2.com/requests.log </VirtualHost>
Comprender la utilidad de tener un servidor de automatización de configuraciones de red, así como incorporar los conocimientos para configurarlo y ponerlo en marcha, haciendo que interactúe con otros servicios instalados.
DHCP ahorra mucho trabajo en la configuración de las estaciones de trabajo, ya que permite administrar la configuración de la red desde el servidor. Esta configuración actualiza el DNS (que debe estar configurado al efecto) con los datos de la estación de trabajo que solicitó una lease; asimismo, configura el navegador de la estación de trabajo con la información para el proxy:
ddns-updates on; ignore client-updates; update-static-leases on; ddns-update-style interim; option domain-name "dominio"; option domain-name-servers dns1.dominio dns2.dominio; option subnet-mask 255.255.255.0; option broadcast-address 192.168.10.255; option ntp-servers time.dominio; # Hora de Argentina GMT-3 option time-offset -10800; option routers gateway.dominio; option netbios-name-servers samba.dominio; # Para que esto funcione en Mozilla # tiene que haber un host "wpad.dominio" # y se debe hacer un hardlink de proxy.pac a wpad.dat option wpad code 252 = text; option wpad "http://wpad.dominio/proxy.pac\n"; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; # Configuración de una estación de trabajo # con IP fija host esta02 { hardware ethernet 00:d0:59:c6:b5:af; fixed-address esta02; } # Para que DHCP conozca qué zonas debe # actualizar # Esto es MUY IMPORTANTE dado que de otra manera # NO se actualizan las zonas en Bind # Recordar que en la configuración de Bind, dichas zonas deben # estar en /var/lib/bind/ para que puedan ser actualizadas por DHCP # porque si no AppArmor impide el acceso a las mismas. Se puede hacer # un hardlink de las mismas a /var/lib/bind/ zone dominio. { primary 127.0.0.1; } zone 10.168.192.in-addr.arpa. { primary 127.0.0.1; } # Configuración de un rango de IP's para # asignación dinámica a las estaciones # que las soliciten subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.40; } # Más ejemplos de lo que se puede hacer: # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. #subnet 10.152.187.0 netmask 255.255.255.0 { #} # This is a very basic subnet declaration. #subnet 10.254.239.0 netmask 255.255.255.224 { # range 10.254.239.10 10.254.239.20; # option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; #} # This declaration allows BOOTP clients to get dynamic addresses, # which we don't really recommend. #subnet 10.254.239.32 netmask 255.255.255.224 { # range dynamic-bootp 10.254.239.40 10.254.239.60; # option broadcast-address 10.254.239.31; # option routers rtr-239-32-1.example.org; #} # A slightly different configuration for an internal subnet. #subnet 10.5.5.0 netmask 255.255.255.224 { # range 10.5.5.26 10.5.5.30; # option domain-name-servers ns1.internal.example.org; # option domain-name "internal.example.org"; # option routers 10.5.5.1; # option broadcast-address 10.5.5.31; # default-lease-time 600; # max-lease-time 7200; #} # Hosts which require special configuration options can be listed in # host statements. If no address is specified, the address will be # allocated dynamically (if possible), but the host-specific information # will still come from the host declaration. #host passacaglia { # hardware ethernet 0:0:c0:5d:bd:95; # filename "vmunix.passacaglia"; # server-name "toccata.fugue.com"; #} # Fixed IP addresses can also be specified for hosts. These addresses # should not also be listed as being available for dynamic assignment. # Hosts for which fixed IP addresses have been specified can boot using # BOOTP or DHCP. Hosts for which no fixed address is specified can only # be booted with DHCP, unless there is an address range on the subnet # to which a BOOTP client is connected which has the dynamic-bootp flag # set. #host fantasia { # hardware ethernet 08:00:07:26:c0:a5; # fixed-address fantasia.fugue.com; #} # You can declare a class of clients and then do address allocation # based on that. The example below shows a case where all clients # in a certain class get addresses on the 10.17.224/24 subnet, and all # other clients get addresses on the 10.0.29/24 subnet. #class "foo" { # match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; #} #shared-network 224-29 { # subnet 10.17.224.0 netmask 255.255.255.0 { # option routers rtr-224.example.org; # } # subnet 10.0.29.0 netmask 255.255.255.0 { # option routers rtr-29.example.org; # } # pool { # allow members of "foo"; # range 10.17.224.10 10.17.224.250; # } # pool { # deny members of "foo"; # range 10.0.29.10 10.0.29.230; # } #}
Nota: esta configuración crea un DDNS (Dynamic DNS). Para que el DHCP pueda actualizar el DNS, el directorio de configuración del DNS debe tener el mismo usuario con el que se ejecuta su proceso. Por ejemplo, en Debian, el usuario es “bind”, entonces ejecutar “chown -R bind: /etc/bind”.
Para que la configuración automática de proxy funcione en las estaciones de trabajo, se debe realizar lo siguiente:
En Bind, hay que asegurarse que las líneas
allow-update { none; };
Sean modificadas por
allow-update { localhost; };
Incorporar conocimientos sobre el funcionamiento de Linux, así como aprender a configurar, compilar, instalar y probar kernels en un mismo equipo.
El primer paso es instalar algunas herramientas de desarrollo, necesarias tanto para compilar, como para preparar el código fuente:
yum groupinstall "Development Tools" yum install ncurses-devel yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
Incorporar conocimientos que permitan facilitar la interacción entre equipos Linux y Windows.
Samba permite compartir directorios, archivos e impresoras con estaciones de trabajo Windows. Es decir, permite simular el comportamiento de un equipo Windows en lo que a compartición de recursos se refiere. También puede actuar ofreciendo esos servicios a estaciones de trabajo Linux.
Permite también configurar un Primary Domain Controller (PDC) o un Backup Domain Controller (BDC).
Los archivos de configuración se encuentran en /etc/samba. El más importante es smb.conf. Este archivo típicamente se recomienda que sea lo más pequeño posible, sin comentarios y no se deben agregar variables o instrucciones a menos que se conozca exactamente el impacto que provocarán.
En un sistema CentOS, para evitar inconvenientes, se debería desactivar SELinux como primera medida, si no se lo necesita.
Un archivo de configuración típico de un Samba actuando como PDC, y con un directorio compartido llamado “archivos” puede ser:
[global] workgroup = INTRANET netbios name = FILESRV netbios aliases = SERVER server string = Samba Server %v interfaces = lo eth0 bind interfaces only = Yes passwd program = /usr/bin/passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* unix password sync = Yes log file = /var/log/samba/%m.log max log size = 50 max xmit = 65535 name resolve order = host wins lmhosts bcast deadtime = 15 add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u logon script = inicio.cmd logon drive = Z: domain logons = Yes os level = 64 preferred master = Yes domain master = Yes wins proxy = Yes wins support = Yes ldap ssl = no idmap config * : backend = tdb admin users = +admins create mask = 0660 directory mask = 0770 use sendfile = Yes posix locking = No strict locking = No [homes] comment = Home Directories read only = No browseable = No [profiles] path = /datos/samba/profiles read only = No create mask = 0600 directory mask = 0700 browseable = No [netlogon] comment = Network Logon Service path = /datos/samba/netlogon write list = +admins guest ok = Yes [archivos] comment = Repositorio de archivos path = /datos/archivos read only = No
En forma básica, los usuarios deben ser creados en el sistema primero, con el comando useradd y luego a Samba, con el comando smbpasswd:
useradd usuario smbpasswd -a usuario
Las impresoras configuradas con CUPS, serán compartidas automáticamente mediante Samba con la siguiente configuración en smb.conf:
[printers] comment = All Printers path = /tmp create mask = 0700 printable = Yes print ok = Yes browseable = No
La configuración de un directorio compartido, permitiendo el acceso de los usuarios del grupo “intranet”, se realiza con un bloque de configuración como:
[archivos] comment = Archivos de datos path = /datos/archivos write list = +&intranet read only = No
Aprender a configurar, operar y mantener un servidor de correo electrónico completo.
El servidor SMTP es el encargado de transferir los mensajes de correo electrónico tanto entre servidores, como repartirlo a los usuarios existentes dentro de un servidor. Escucha en el puerto TCP 25, mientras que el puerto seguro es TCP 465. En este curso se usará Postfix.
El servicio POP3 permite la transferencia de los mensajes de correo electrónico que han llegado a una cuenta, desde el servidor hasta la estación de trabajo. Generalmente luego de transferidos, son eliminados del servidor. El puerto del protocolo es TCP 110, mientras que el puerto seguro es TCP 995. En este curso se verá Cyrus POP3.
El servicio IMAP ofrece la posibilidad de que los usuarios puedan leer los mensajes de sus cuentas de correo-e en el servidor, sin que los mensajes queden físicamente en los clientes de correo electrónico, más que en forma temporal en su caché. Esto ofrece la posibilidad a los administradores de configurar permisos sobre los mensajes y carpetas, permitir el acceso a las mismas cuentas a varios usuarios, y otras posibilidades prácticas para empresas y grupos de trabajo. El protocolo tiene especificado el puerto TCP 143, mientras que el seguro es el puerto TCP 993.
Postfix es un SMTP seguro, eficiente, flexible y poderoso. Sus archivos de configuración están en /etc/postfix, y los principales son main.cf y master.cf. En el primero se define la mayor parte de la configuración del servicio, mientras que en el segundo se configuran los procesos y sistemas que forman parte de Postfix.
Algunas de las variables más importantes que se debe configurar en main.cf son:
myorigin = $myhostname inet_interfaces = $myhostname, localhost mydestination = $myhostname, localhost.$mydomain, localhost
En master.cf para activar el puerto seguro 465, se debe descomentar el siguiente bloque de configuración:
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Cyrus IMAP proveerá la posibilidad a los usuarios de leer su correo electrónico. Sus archivos de configuración están en /etc y son imapd.conf y cyrus.conf.
En el primero se define la configuración del servicio IMAP:
configdirectory: /var/lib/imap partition-default: /var/spool/imap admins: cyrus sievedir: /var/lib/imap/sieve sendmail: /usr/sbin/sendmail hashimapspool: true sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
Mientras que el segundo configura los procesos que forman parte del sistema IMAP. Por ejemplo, si se desea desactivar la posibilidad de que los usuarios utilicen POP3, se deben comentar ambas líneas en ese archivo:
# add or remove based on preferences imap cmd="imapd" listen="imap" prefork=5 imaps cmd="imapd -s" listen="imaps" prefork=1 #pop3 cmd="pop3d" listen="pop3" prefork=3 #pop3s cmd="pop3d -s" listen="pop3s" prefork=1 sieve cmd="timsieved" listen="sieve" prefork=0
Otros sistemas que son imprescindibles en un servidor de correo electrónico son el filtro antispam y el antivirus. Para el primero, se suele utilizar SpamAssassin, mientras que para el segundo un buen antivirus Open Source es ClamAV. Para unir ambos sistemas con el resto de los componentes, se usa Amavisd-new. La autenticación de usuarios puede ser realizada de manera básica con Cyrus SASL.
Incorporar los conocimientos necesarios para configurar, ejecutar y poner a punto un servidor proxy HTTP.
Squid es un proxy HTTP, es decir, actúa almacenando localmente los archivos que emplean los usuarios al navegar Internet. Cuando otro usuario vuelve a requerir un archivo que ya está almacenado, el proxy se encarga de transferirlo desde la caché evitando así el uso de la conexión a Internet, liberando ésta para tráfico nuevo. Con ello, se mejora en gran medida la congestión de esa conexión.
Además, permite asignar permisos de acceso, o denegarlo a sitios, redes, o según horarios, entre otras posibilidades.
En el archivo de configuración, básicamente se deben adaptar dos líneas. La primera es para configurar la red donde está instalado Squid:
acl localnet src 172.16.13.0/24
Asegurarse que la ACL tenga permitido el acceso en la siguiente línea:
http_access allow localnet
Y la segunda el puerto en el cual se desea que Squid esté escuchando:
http_port 8080
Luego se puede mejorar el manejo interno de los archivos de la caché, así como el tamaño de ésta (en este ejemplo 10240 es el tamaño máximo en MB de la caché):
cache_dir aufs /var/spool/squid 10240 16 256
También se puede aumentar el tamaño máximo de los archivos que van a ser almacenados en la caché:
maximum_object_size 204800 KB
Luego, la configuración es muy amplia, existiendo muchísimas variables según lo que se necesite. La configuración de accesos y denegaciones se realiza con un lenguaje de ACLs.
En squid.conf:
acl bloquear_todos dstdomain -i "/etc/squid/bloqueados.txt"
Y luego definir:
http_access deny bloquear_todos
En el archivo de texto con el listado de dominios, se debe poner éstos línea por línea:
.facebook.com .youtube.com .twitter.com