Herramientas de usuario

Herramientas del sitio


linuxavanzado

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
linuxavanzado [2015/07/24 21:18]
fmolinuevo
linuxavanzado [2015/08/27 18:27] (actual)
fmolinuevo [9.2. [ ] Instalación y puesta a punto]
Línea 66: Línea 66:
 ====  2.4.  [  ] Configuración de redes ==== ====  2.4.  [  ] Configuración de redes ====
  
-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.+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: 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:
Línea 88: Línea 88:
   search dominio   search dominio
   nameserver 172.16.13.1   nameserver 172.16.13.1
 +
 +=== Firewall ===
 +
 +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 ===
 +
 +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
 +
 +
  
  
Línea 217: Línea 236:
  
 Los módulos de Apache, se encuentran en usr/​lib64/​httpd/​modules 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
 +
  
 ==== 4.3.  [  ] Configurando un servidor de hosts virtuales ==== ==== 4.3.  [  ] Configurando un servidor de hosts virtuales ====
Línea 226: Línea 254:
  
 <​VirtualHost *:​80> ​ <​VirtualHost *:​80> ​
-  ServerAdmin webmaster@ejemplo.com  +  ServerAdmin webmaster@sitio1.com  
-  DocumentRoot /var/www/ejemplo.com/​public_html  +  DocumentRoot /var/www/sitio1.com/​public_html  
-  ServerName www.ejemplo.com  +  ServerName www.sitio1.com  
-  ServerAlias ​ejemplo.com  +  ServerAlias ​sitio1.com  
-  ErrorLog /var/www/ejemplo.com/​error.log  +  ErrorLog /var/www/sitio1.com/​error.log  
-  CustomLog /var/www/ejemplo.com/​requests.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>​ </​VirtualHost>​
 </​code>​ </​code>​
Línea 243: Línea 280:
 servicios instalados. servicios instalados.
  
-==== Temario ====+
  
 ==== 5.1. [ ] Servidor DHCP: conceptos, utilidad, puesta a punto ==== ==== 5.1. [ ] Servidor DHCP: conceptos, utilidad, puesta a punto ====
 +
 +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:
 +
 +<​code>​
 +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;​
 +#  }
 +#}
 +</​code>​
 +
 +//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"​.
  
 ==== 5.2. [ ] Interacción con otros servicios ==== ==== 5.2. [ ] Interacción con otros servicios ====
  
 +=== proxy.pac (wpad.dat) ===
 +
 +Para que la configuración automática de proxy funcione en las estaciones de trabajo, se debe realizar lo siguiente:
 +  - Configurar un servidor web (como Apache)
 +  - Poner en la raíz del servidor el proxy.pac, y un hard link a él llamado wpad.dat. Se puede ver un [[ejemplos:​proxy.pac|ejemplo de proxy.pac en este lugar]].
 +  - Configurar el DNS con un host llamado "​wpad",​ para que Mozilla Firefox no tenga problemas para encontrar el proxy.pac
 +
 +=== DNS ===
 +
 +En Bind, hay que asegurarse que las líneas
 +
 +  allow-update { none; };
 +
 +Sean modificadas por
 +
 +  allow-update { localhost; };
 +
 +===== 6. Kernel: compilación y parcheo =====
 +
 +==== Objetivos ====
 +
 +Incorporar conocimientos sobre el funcionamiento de Linux, así como aprender a configurar, compilar, instalar y probar kernels en un mismo equipo.
 +
 +==== 6.1.  [  ] Kernel: conceptos y filosofía ====
 +
 +==== 6.2.  [  ] Compilación:​ procedimiento,​ prueba ====
 +
 +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
 +
 +
 +
 +==== 6.3.  [  ] Parcheo: utilidad, patch, instalando parches ====
 +
 +=====  7. Samba: configuración y puesta a punto =====
 +
 +==== Objetivos ====
 +
 +Incorporar conocimientos que permitan facilitar la interacción entre equipos Linux y Windows.
 +
 +====  7.1.  [  ] Samba: conceptos, usos, posibilidades ====
 +
 +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).
 +
 +====  7.2.  [  ] Configuración y puesta a punto ====
 +
 +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:
 +
 +<​code>​
 +[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
 +</​code>​
 +====  7.3.  [  ] Administración de usuarios ====
 +
 +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
 +
 +
 +====  7.4.  [  ] Configuración de comparticiones (almacenamiento e impresoras) ====
 +
 +Las impresoras configuradas con CUPS, serán compartidas automáticamente mediante Samba con la siguiente configuración en smb.conf:
 +
 +<​code>​
 +  [printers]
 +        comment = All Printers
 +        path = /tmp
 +        create mask = 0700
 +        printable = Yes
 +        print ok = Yes
 +        browseable = No
 +</​code>​
 +
 +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:
 +
 +<​code>​
 +[archivos]
 +        comment = Archivos de datos
 +        path = /​datos/​archivos
 +        write list = +&​intranet
 +        read only = No
 +</​code>​
 +
 +
 +
 +=====  8. Correo-e: SMTP/​POP3/​IMAP =====
 +
 +==== Objetivos ====
 +
 +Aprender a configurar, operar y mantener un servidor de correo electrónico completo.
 +
 +====  8.1.  [  ] SMTP/​POP3/​IMAP:​ conceptos, definiciones,​ funcionamiento ====
 +
 +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.
 +
 +====  8.2.  [  ] Postfix: instalación y configuración del servidor SMTP ====
 +
 +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:​
 +
 +<​code>​
 +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
 +</​code>​
 +
 +====  8.3.  [  ] CyrusIMAP: instalación y configuración del servidor IMAP/POP3 ====
 +
 +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:
 +
 +<​code>​
 +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
 +</​code>​
 +
 +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:
 +
 +<​code>​
 +  # 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
 +</​code>​
 +
 +====  8.4.  [  ] Otros sistemas que colaboran con el servidor de correo-e ====
 +
 +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 [[http://​spamassassin.apache.org/​|SpamAssassin]],​ mientras que para el segundo un buen antivirus Open Source es [[http://​www.clamav.net/​|ClamAV]]. Para unir ambos sistemas con el resto de los componentes,​ se usa [[http://​www.amavis.org/​|Amavisd-new]]. La autenticación de usuarios puede ser realizada de manera básica con [[http://​cyrusimap.web.cmu.edu/​|Cyrus SASL]].
 +
 +
 +
 +
 +
 +
 +===== 9. Squid: servidor proxy HTTP =====
 +
 +==== Objetivos ====
 +
 +Incorporar los conocimientos necesarios para configurar, ejecutar y poner a punto un servidor proxy HTTP.
 +
 +====  9.1.  [  ] Squid: conceptos y definiciones ====
 +
 +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.
 +
 +====  9.2.  [  ] Instalación y puesta a punto ====
 +
 +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.
 +
 +=== Ejemplos de ACLs ===
 +
 +== Bloquear por dominio de destino ==
 +
 +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
  
linuxavanzado.1437783488.txt.gz · Última modificación: 2015/07/24 21:18 por fmolinuevo