Squid + Autenticación PAM en CentOS 7- Redes PYMES

13
1950

Índice general de la serie: Redes de Computadoras para las PYMES: Introducción

¡Hola amigas y amigos!


El título del artículo debió ser: “MATE + NTP + Dnsmasq + Servicio de Pasarela + Apache + Squid con Autenticación PAM en Centos 7 – Redes PYMES“. Por motivos prácticos lo acortamos.

Continuamos con la autenticación ante usuarios locales en un equipo con Linux mediante PAM, y en ésta oportunidad veremos cómo podemos brindar el servicio Proxy con el Squid para una red pequeña de computadoras, mediante el uso de las credenciales de autenticación almacenadas en el mismo equipo donde se ejecuta el servidor Squid.

Aunque sabemos que es práctica muy común en nuestros días, autenticar los servicios contra un OpenLDAP, Directory Server 389 de la Red Hat, Microsoft Active Directory, etcétera, consideramos que debemos primero pasar por soluciones sencillas y baratas, para después afrontar las mas complejas. Opinamos que debemos ir de lo sencillo a lo complejo.

Índice

Escenario

Se trata de una pequeña organización -con muy pocos recursos económicos- dedicada a apoyar el uso de Software Libre y que optó por el nombre de DesdeLinux.Fan. Son varios Entusiastas del sistema operativo CentOS agrupados en una sola oficina. Compraron una estación de trabajo -que no servidor profesional- la que dedicarán a funcionar como “servidor”.

Los Entusiastas no tienen amplios conocimientos de cómo implementar un servidor OpenLDAP o un Samba 4 AD-DC, ni tampoco pueden costear la Licencia de un Microsoft Active Directory. Sin embargo necesitan para su diario trabajo de los servicios de acceso a Internet mediante un Proxy -para acelerar la navegación- y de un espacio donde guardar como copias de seguridad sus documentos y trabajos mas valiosos.

Aun utilizan mayoritariamente sistemas operativos de Microsoft adquiridos legalmente, pero quieren cambiarlos a Sistemas Operativos basados en Linux, empezando por su “Servidor”.

Aspiran también a tener su propio servidor de correo para independizarse -al menos del origen- de servicios como Gmail, Yahoo, HotMail, etcétera, que es lo que utilizan actualmente.

El Muro Cortafuegos y Reglas de Encaminamiento frente a Internet la establecerán en el propio Router ADSL contratado.

No tienen un nombre de dominio real pues no requieren publicar ningún servicio en Internet.

CentOS 7 como servidor sin GUI

Partimos de una instalación nueva de un servidor sin interfaz gráfica, y la única opción que seleccionamos durante el proceso es “Servidor de Infraestructura” como vimos en artículos anteriores de la serie.

Ajustes iniciales

[root@linuxbox ~]# cat /etc/hostname 
linuxbox

[root@linuxbox ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.5    linuxbox.desdelinux.fan linuxbox

[root@linuxbox ~]# hostname
linuxbox

[root@linuxbox ~]# hostname -f
linuxbox.desdelinux.fan

[root@linuxbox ~]# ip addr list
[root@linuxbox ~]# ifconfig -a
[root@linuxbox ~]# ls /sys/class/net/
ens32 ens34 lo

Inhabilitamos el Network Manager

[root@linuxbox ~]# systemctl stop NetworkManager

[root@linuxbox ~]# systemctl disable NetworkManager

[root@linuxbox ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:NetworkManager(8)

[root@linuxbox ~]# ifconfig -a

Configuramos las interfaces de red

Interfaz ens32 LAN conectada a la Red Interna

[root@linuxbox ~]# nano /etc/sysconfig/network-scripts/ifcfg-ens32
DEVICE=ens32
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:0c:29:da:a3:e7
NM_CONTROLLED=no
IPADDR=192.168.10.5
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DOMAIN=desdelinux.fan
DNS1=127.0.0.1
ZONE=public

[root@linuxbox ~]# ifdown ens32 && ifup ens32

Interfaz ens34 WAN conectada a la Internet

[root@linuxbox ~]# nano /etc/sysconfig/network-scripts/ifcfg-ens34
DEVICE=ens34
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:0c:29:da:a3:e7
NM_CONTROLLED=no
IPADDR=172.16.10.10
NETMASK=255.255.255.0
# El Router ADSL está conectado a
# ésta interfaz con
# la siguiente dirección IP
GATEWAY=172.16.10.1
DOMAIN=desdelinux.fan
DNS1=127.0.0.1
ZONE=external

[root@linuxbox ~]# ifdown ens34 && ifup ens34

Configuración de los repositorios

[root@linuxbox ~]# cd /etc/yum.repos.d/
[root@linuxbox ~]# mkdir originales
[root@linuxbox ~]# mv Centos-* originales/

[root@linuxbox ~]# nano centos.repo
[Base-Repo]
name=CentOS-$releasever
baseurl=http://192.168.10.1/repos/centos/7/base/x86_64/
gpgcheck=0
enabled=1

[CentosPlus-Repo]
name=CentOS-$releasever
baseurl=http://192.168.10.1/repos/centos/7/centosplus/x86_64/
gpgcheck=0
enabled=1

[Epel-Repo]
name=CentOS-$releasever
baseurl=http://192.168.10.1/repos/centos/7/epel/x86_64/
gpgcheck=0
enabled=1

[Updates-Repo]
name=CentOS-$releasever
baseurl=http://192.168.10.1/repos/centos/7/updates/x86_64/
gpgcheck=0
enabled=1

[root@linuxbox yum.repos.d]# yum clean all
Complementos cargados:fastestmirror, langpacks
Limpiando repositorios: Base-Repo CentosPlus-Repo Epel-Repo Media-Repo
                      : Updates-Repo
Cleaning up everything
Cleaning up list of fastest mirrors
[root@linuxbox yum.repos.d]# yum update
Complementos cargados:fastestmirror, langpacks
Base-Repo                                                | 3.6 kB     00:00     
CentosPlus-Repo                                          | 3.4 kB     00:00     
Epel-Repo                                                | 4.3 kB     00:00     
Media-Repo                                               | 3.6 kB     00:00     
Updates-Repo                                             | 3.4 kB     00:00     
(1/9): Base-Repo/group_gz                                  | 155 kB   00:00     
(2/9): Epel-Repo/group_gz                                  | 170 kB   00:00     
(3/9): Media-Repo/group_gz                                 | 155 kB   00:00     
(4/9): Epel-Repo/updateinfo                                | 734 kB   00:00     
(5/9): Media-Repo/primary_db                               | 5.3 MB   00:00     
(6/9): CentosPlus-Repo/primary_db                          | 1.1 MB   00:00     
(7/9): Updates-Repo/primary_db                             | 2.2 MB   00:00     
(8/9): Epel-Repo/primary_db                                | 4.5 MB   00:01     
(9/9): Base-Repo/primary_db                                | 5.6 MB   00:01     
Determining fastest mirrors
No packages marked for update

El mensaje “No packages marked for update” se muestra porque durante la instalación declaramos los mismos repositorios locales que tenemos a nuestra disposición.

Centos 7 con el ambiente de escritorio MATE

Para utilizar las muy buenas herramientas de administración con interfaz gráfica que nos brindan CentOS/Red Hat, y porque siempre añoramos al GNOME2, decidimos instalar MATE como ambiente de escritorio.

[root@linuxbox ~]# yum groupinstall "X Window system"
[root@linuxbox ~]# yum groupinstall "MATE Desktop"

Para comprobar que el MATE se carga adecuadamente, ejecutamos en una consola -local o remota- el siguiente comando:

[root@linuxbox ~]# systemctl isolate graphical.target

y el ambiente de escritorio se debe cargar –en el equipo local– sin problemas, mostrando el lightdm como inicio de sesión gráfico. Tecleamos el nombre del usuario local y su contraseña, y entraremos al MATE.

Para indicarle al systemd que el nivel de arranque por defecto es el 5 -ambiente gráfico- creamos el siguiente enlace simbólico:

[root@linuxbox ~]# ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

Reiniciamos el sistema y todo funciona correctamente.

Instalamos el Servicio de Tiempo para Redes

[root@linuxbox ~]# yum install ntp

Durante la instalación configuramos que el reloj local se sincronizara con el servidor de tiempo del equipo sysadmin.desdelinux.fan con IP 192.168.10.1. Entonces, guardamos el archivo ntp.conf original mediante:

[root@linuxbox ~]# cp /etc/ntp.conf /etc/ntp.conf.original

Ahora, creamos uno nuevo con el siguiente contenido:

[root@linuxbox ~]# nano /etc/ntp.conf
# Servidores configurados durante la instalación:
server 192.168.10.1 iburst
# Para mas información, consulte las páginas del manual de:
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

# Permitir sincronizar con la fuente de tiempo, pero no
# permitir que la fuente consulte o modifique éste servicio
restrict default nomodify notrap nopeer noquery

# Permitir todo el acceso a la interfaz Loopback
restrict 127.0.0.1 
restrict ::1

# Restringir un poco menos a los equipos de la red local.
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

# Usar los servidores públicos del proyecto pool.ntp.org
# Si desea unirse al proyecto visite
# (http://www.pool.ntp.org/join.html).

#broadcast 192.168.10.255 autokey  # broadcast server
broadcastclient             # broadcast client
#broadcast 224.0.1.1 autokey       # multicast server
#multicastclient 224.0.1.1     # multicast client
#manycastserver 239.255.254.254        # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
broadcast 192.168.10.255
# Habilitar la criptografía pública.
#crypto

includefile /etc/ntp/crypto/pw

# Archivo de clave que contiene las claves e identificadores de claves
# utilizados al operar con criptografía simétrica de claves
keys /etc/ntp/keys

# Especificar los identificadores de claves de confianza.
#trustedkey 4 8 42

# Especificar el identificador de clave a utilizar con la utilidad ntpdc.
#requestkey 8

# Especificar el identificador de clave a utilizar con la utilidad ntpq. 
#controlkey 8

# Habilitar la escritura de los registros de estadísticas.
#statistics clockstats cryptostats loopstats peerstats

# Inhabilitar el monitor de secesos para prevenir la amplificación de 
# ataques utilizando el comando ntpdc monlist, cuando la restricción
# por defecto no incluye la bandera noquery. Lea la CVE-2013-5211
# para mas detalles.
# Nota: El Monitor no se inhabilita con la bandera de restricción limitada.
disable monitor

Habilitamos, iniciamos y comprobamos el servicio NTP

[root@linuxbox ~]# systemctl status ntpd
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[root@linuxbox ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

[root@linuxbox ~]# systemctl start ntpd
[root@linuxbox ~]# systemctl status ntpd

[root@linuxbox ~]# systemctl status ntpdntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: active (running) since vie 2017-04-14 15:51:08 EDT; 1s ago
  Process: 1307 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 1308 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─1308 /usr/sbin/ntpd -u ntp:ntp -g

Ntp y el Firewall

[root@linuxbox ~]# firewall-cmd --get-active-zones
external
  interfaces: ens34
public
  interfaces: ens32

[root@linuxbox ~]# firewall-cmd --zone=public --add-port=123/udp --permanent
success
[root@linuxbox ~]# firewall-cmd --reload
success

Habilitamos y configuramos el Dnsmasq

Como vimos en artículo anterior de la serie Redes PYMES, el Dnsamasq se instala por defecto en un Servidor de Infraestructura CentOS 7.

[root@linuxbox ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[root@linuxbox ~]# systemctl enable dnsmasq
Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service.

[root@linuxbox ~]# systemctl start dnsmasq
[root@linuxbox ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since vie 2017-04-14 16:21:18 EDT; 4s ago
 Main PID: 33611 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─33611 /usr/sbin/dnsmasq -k

[root@linuxbox ~]# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.original

[root@linuxbox ~]# nano /etc/dnsmasq.conf
# -------------------------------------------------------------------
# O P C I O N E S   G E N E R A L E S
# -------------------------------------------------------------------
domain-needed   # No pasar nombres sin la parte del dominio
bogus-priv  # No pasar direcciones en el espacio no enrutado
expand-hosts    # Adiciona automaticamente el dominio al host
interface=ens32 # Interface LAN

strict-order    # Orden en que consulta el archivo /etc/resolv.conf
conf-dir=/etc/dnsmasq.d
domain=desdelinux.fan   # Nombre del dominio

address=/time.windows.com/192.168.10.5

# Envía una opción vacía del valor WPAD. Se requiere para que 
# se comporten bien los clientes Windos 7 y posteriores. ;-)
dhcp-option=252,"\n"

# Archivo donde declararemos los HOSTS que serán "baneados"
addn-hosts=/etc/banner_add_hosts

local=/desdelinux.fan/

# -------------------------------------------------------------------
# R E G I S T R O S   C N A M E    M X    T X T
# -------------------------------------------------------------------
# Este tipo de registro requiere de una entrada
# en el archivo /etc/hosts
# ej: 192.168.10.5 linuxbox.desdelinux.fan linuxbox
# cname=ALIAS,REAL_NAME
cname=mail.desdelinux.fan,linuxbox.desdelinux.fan

# REGISTROS MX
# Devuelve un registro MX con el nombre "desdelinux.fan" con destino
# al equipo mail.desdelinux.fan y prioridad de 10
mx-host=desdelinux.fan,mail.desdelinux.fan,10

# El destino por defecto para los registros MX que se creen
# utilizando la opción localmx será:
mx-target=mail.desdelinux.fan

# Devuelve un registro MX apuntando al mx-target para TODAS
# las máquinas locales
localmx

# Registros TXT. Podemos declarar también un registro SPF
txt-record=desdelinux.fan,"v=spf1 a -all"
txt-record=desdelinux.fan,"DesdeLinux, su Blog dedicado al Software Libre"

# -------------------------------------------------------------------
# R A N G O   Y   S U S   O P C I O N E S
# -------------------------------------------------------------------
# Rango IPv4 y tiempo de arrendamiento
# De la 1 a la 29 son para los Servidores y otras necesidades
dhcp-range=192.168.10.30,192.168.10.250,8h

dhcp-lease-max=222      # Cantidad máxima de direcciones a arrendar
                        # por defecto son 150
# Rango IPV6
# dhcp-range=1234::, ra-only

# Opciones para el RANGO
# O P C I O N E S
dhcp-option=1,255.255.255.0 # NETMASK
dhcp-option=3,192.168.10.5  # ROUTER GATEWAY
dhcp-option=6,192.168.10.5  # DNS Servers
dhcp-option=15,desdelinux.fan   # DNS Domain Name
dhcp-option=19,1        # option ip-forwarding ON
dhcp-option=28,192.168.10.255   # BROADCAST
dhcp-option=42,192.168.10.5 # NTP

dhcp-authoritative      # DHCP Autoritario en la subnet

# -------------------------------------------------------------------
# Si desean almacenar en /var/log/messages el log de las consultas
# elimine el comentario de la línea a continuación
# -------------------------------------------------------------------
# log-queries
# F I N   del archivo /etc/dnsmasq.conf
# -------------------------------------------------------------------

Creamos el archivo /etc/banner_add_hosts

[root@linuxbox ~]# nano /etc/banner_add_hosts
192.168.10.5    windowsupdate.com
192.168.10.5    ctldl.windowsupdate.com
192.168.10.5    ocsp.verisign.com
192.168.10.5    csc3-2010-crl.verisign.com
192.168.10.5    www.msftncsi.com
192.168.10.5    ipv6.msftncsi.com
192.168.10.5    teredo.ipv6.microsoft.com
192.168.10.5    ds.download.windowsupdate.com
192.168.10.5    download.microsoft.com
192.168.10.5    fe2.update.microsoft.com
192.168.10.5    crl.microsoft.com
192.168.10.5    www.download.windowsupdate.com
192.168.10.5    win8.ipv6.microsoft.com
192.168.10.5    spynet.microsoft.com
192.168.10.5    spynet1.microsoft.com
192.168.10.5    spynet2.microsoft.com
192.168.10.5    spynet3.microsoft.com
192.168.10.5    spynet4.microsoft.com
192.168.10.5    spynet5.microsoft.com
192.168.10.5    office15client.microsoft.com
192.168.10.5    addons.mozilla.org
192.168.10.5    crl.verisign.com

Direcciones IP fijas

[root@linuxbox ~]# nano /etc/hosts
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
::1             localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.5    linuxbox.desdelinux.fan linuxbox
192.168.10.1    sysadmin.desdelinux.fan sysadmin

Configuramos el archivo /etc/resolv.conf – resolver

[root@linuxbox ~]# nano /etc/resolv.conf
search desdelinux.fan
nameserver 127.0.0.1
# Para consultas DNS externas o 
# que no sean del dominio desdelinux.fan
# local=/desdelinux.fan/
nameserver 8.8.8.8

Comprobamos sintaxis del archivo dnsmasq.conf, iniciamos y comprobamos el estado del servicio

[root@linuxbox ~]# dnsmasq --test
dnsmasq: syntax check OK.
[root@linuxbox ~]# systemctl restart dnsmasq
[root@linuxbox ~]# systemctl status dnsmasq

Dnsmasq y el Firewall

[root@linuxbox ~]# firewall-cmd --get-active-zones
external
  interfaces: ens34
public
  interfaces: ens32

Servicio domain o Servidor de Nombre de Dominio (dns). Protocolo swipeIP with Encryption

[root@linuxbox ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
success
[root@linuxbox ~]# firewall-cmd --zone=public --add-port=53/udp --permanent
success

Consultas del Dnsmasq a servidores DNS externos

[root@linuxbox ~]# firewall-cmd --zone=external --add-port=53/tcp --permanent
success
[root@linuxbox ~]# firewall-cmd --zone=external --add-port=53/udp --permanent
success

Servicio bootps o BOOTP server (dhcp). Protocolo ippcInternet Pluribus Packet Core

[root@linuxbox ~]# firewall-cmd --zone=public --add-port=67/tcp --permanent
success
[root@linuxbox ~]# firewall-cmd --zone=public --add-port=67/udp --permanent
success

[root@linuxbox ~]# firewall-cmd --reload
success

[root@linuxbox ~]# firewall-cmd --info-zone public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: dhcp dns ntp ssh
  ports: 67/tcp 53/udp 123/udp 67/udp 53/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks:
  rich rules:

[root@linuxbox ~]# firewall-cmd --info-zone external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dns
  ports: 53/udp 53/tcp
  protocols: 
  masquerade: yes
  forward-ports: 
  sourceports: 
  icmp-blocks: parameter-problem redirect router-advertisement router-solicitation source-quench
  rich rules:

Si deseamos emplear una interfaz gráfica para configurar el Firewall en CentOS 7, buscamos en el menú general -dependerá del ambiente de escritorio en cual submenú aparece- la aplicación “Cortafuegos”, la ejecutamos y después de introducir la clave del usuario root, accederemos a la interfaz del programa como tal. En MATE aparece en el menú “Sistema” –> “Administración” –> “Cortafuegos”.

Seleccionamos la Zona “public” y autorizamos los Servicios que queremos se publiquen en la LAN, que hasta ahora son dhcp, dns, ntp y ssh. Después de seleccionar los servicios, comprobar fehacientemente que todo funciona correctamente, debemos hacer los cambios en Tiempo de Ejecución a Permanentes. Para ello vamos al menú Opciones y seleccionamos la opción “Tiempo de ejecución a permanente“.

Posteriormente seleccionamos la Zona “external” y comprobamos que los Puertos necesarios para comunicarnos con Internet estén abiertos. !NO publicar Servicios en ésta Zona a menos que sepamos muy bien que estamos haciendo!.

No olvidemos hacer los cambios Permanentes mediante la opción “Tiempo de ejecución a permanente” y recargar el demonio FirewallD, cada vez que utilicemos esta poderosa herramienta gráfica.

NTP y Dnsmasq desde un cliente Windows 7

Sincronización con el NTP

external

Dirección IP arrendada

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\buzz>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : SEVEN
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : desdelinux.fan

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : desdelinux.fan
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   Physical Address. . . . . . . . . : 00-0C-29-D6-14-36
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.10.115(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Friday, April 14, 2017 5:12:53 PM
   Lease Expires . . . . . . . . . . : Saturday, April 15, 2017 1:12:53 AM
   Default Gateway . . . . . . . . . : 192.168.10.1
   DHCP Server . . . . . . . . . . . : 192.168.10.5
   DNS Servers . . . . . . . . . . . : 192.168.10.5
   NetBIOS over Tcpip. . . . . . . . : Enabled

Tunnel adapter Local Area Connection* 9:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft Teredo Tunneling Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.desdelinux.fan:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : desdelinux.fan
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #2
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

C:\Users\buzz>

Tip

Un valor importante en los clientes Windows es el “Primary Dns Suffix” o “Sufijo principal de la conexión”. Cuando no se utiliza un Controlador de Dominio Microsoft, el sistema operativo no le asigna ningún valor. Si estamos frente a un caso como el descrito al inicio del artículo y queremos declarar explícitamente ese valor, debemos proceder acorde a lo mostrado en la siguiente imagen, aceptar los cambios y reiniciar el cliente.

 

Si volvemos a ejecutar CMD –> ipconfig /all obtendremos lo siguiente:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\buzz>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : SEVEN
   Primary Dns Suffix  . . . . . . . : desdelinux.fan
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : desdelinux.fan

El resto de los valores permanece inalterable

Comprobaciones DNS

buzz@sysadmin:~$ host spynet.microsoft.com
spynet.microsoft.com has address 127.0.0.1
Host spynet.microsoft.com not found: 5(REFUSED)
spynet.microsoft.com mail is handled by 1 mail.desdelinux.fan.

buzz@sysadmin:~$ host linuxbox
linuxbox.desdelinux.fan has address 192.168.10.5
linuxbox.desdelinux.fan mail is handled by 1 mail.desdelinux.fan.

buzz@sysadmin:~$ host sysadmin
sysadmin.desdelinux.fan has address 192.168.10.1
sysadmin.desdelinux.fan mail is handled by 1 mail.desdelinux.fan.

buzz@sysadmin:~$ host mail
mail.desdelinux.fan is an alias for linuxbox.desdelinux.fan.
linuxbox.desdelinux.fan has address 192.168.10.5
linuxbox.desdelinux.fan mail is handled by 1 mail.desdelinux.fan.

Instalamos –para pruebas solamente– un servidor DNS Autoritario NSD en sysadmin.desdelinux.fan, e incluimos la dirección IP 172.16.10.1 en el archivo /etc/resolv.conf del equipo linuxbox.desdelinux.fan, para comprobar que el Dnsmasq ejecutaba su función de Forwarder correctamente. Las Zonas de pruebas en el servidor NSD son favt.org y toujague.org. Todas las IP son ficticias o de redes privadas.

Si inhabiltamos la interfaz WAN ens34 mediante el comando ifdown ens34, el Dnsmasq no podrá consultar a servidores DNS externos.

[buzz@linuxbox ~]$ sudo ifdown ens34

[buzz@linuxbox ~]$ host -t mx toujague.org
Host toujague.org not found: 3(NXDOMAIN)

[buzz@linuxbox ~]$ host pizzapie.favt.org
Host pizzapie.favt.org not found: 3(NXDOMAIN)

Habilitemos la interfaz ens34 y consultemos de nuevo:

[buzz@linuxbox ~]$ sudo ifup ens34
buzz@linuxbox ~]$ host pizzapie.favt.org
pizzapie.favt.org is an alias for paisano.favt.org.
paisano.favt.org has address 172.16.10.4

[buzz@linuxbox ~]$ host pizzapie.toujague.org
Host pizzas.toujague.org not found: 3(NXDOMAIN)

[buzz@linuxbox ~]$ host poblacion.toujague.org
poblacion.toujague.org has address 169.18.10.18

[buzz@linuxbox ~]$ host -t NS favt.org
favt.org name server ns1.favt.org.
favt.org name server ns2.favt.org.

[buzz@linuxbox ~]$ host -t NS toujague.org
toujague.org name server ns1.toujague.org.
toujague.org name server ns2.toujague.org.

[buzz@linuxbox ~]$ host -t MX toujague.org
toujague.org mail is handled by 10 mail.toujague.org.

Consultemos desde sysadmin.desdelinux.fan:

buzz@sysadmin:~$ cat /etc/resolv.conf 
search desdelinux.fan
nameserver 192.168.10.5

xeon@sysadmin:~$ host mail.toujague.org
mail.toujague.org has address 169.18.10.19

El Dnsmasq está funcionando como Forwarder correctamente.

Squid

En el libro en formato PDF “Configuración de Servidores Linux” con fecha 25 de julio del 2016, del Autor Joel Barrios Dueñas (darkshram@gmail.com http://www.alcancelibre.org/), texto al cual he hecho referencia en artículos anteriores, hay todo un capítulo dedicado a las Opciones básicas de configuración del Squid.

Por la importancia del servicio Web – Proxy reproducimos la Introducción que se hace sobre el Squid en el mencionado libro:


105.1. Introducción.

105.1.1. ¿Qué es Servidor Intermediario (Proxy)?

El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque
invariablemente se considera un sinónimo del concepto de «Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado (el que tiene poder sobre otro).

Un Servidor Intermediario se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:

  • Cliente se conecta hacia un Servidor Proxy.
  • Cliente solicita una conexión, archivo u otro recurso disponible en un servidor distinto.
  • Servidor Intermediario proporciona el recurso ya sea conectándose hacia el servidor especificado
    o sirviendo éste desde un caché.
  • En algunos casos el Servidor Intermediario puede alterar la solicitud del cliente o bien la
    respuesta del servidor para diversos propósitos.

Los Servidores Proxy generalmente se hacen trabajar simultáneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables o bien operando en el Nivel de Aplicación, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos también se conoce como BPD o Border Protection Device o simplemente filtro de paquetes.

Una aplicación común de los Servidores Proxy es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y archivos disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

Cuando se recibe una petición para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado estuviera ausente en el caché, el Servidor Intermediario lo traerá desde servidor remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché. El contenido en el caché es eliminado luego a través de un algoritmo de expiración de acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

Los Servidores Proxy para contenido de Red (Web Proxies) también pueden actuar como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios arbitrarios.


La versión del Squid que instalaremos es la 3.5.20-2.el7_3.2 del repositorio updates.

Instalación

[root@linuxbox ~]# yum install squid

[root@linuxbox ~]# ls /etc/squid/
cachemgr.conf          errorpage.css.default  squid.conf
cachemgr.conf.default  mime.conf              squid.conf.default
errorpage.css          mime.conf.default

[root@linuxbox ~]# systemctl enable squid

Importante

  • El objetivo fundamental de éste artículo es Autorizar a los usuarios locales a conectarse con el Squid desde otros equipos conectados a la Red LAN. Además, implementar el núcleo de un servidor al cual se le irán agregando otros servicios. No es un artículo dedicado al Squid como tal.
  • Para que se tenga una idea de las opciones de configuración del Squid, lean el archivo /usr/share/doc/squid-3.5.20/squid.conf.documented, el cual tiene 7915 líneas.

SELinux y Squid

[root@linuxbox ~]# getsebool -a | grep squid
squid_connect_any --> on
squid_use_tproxy --> off

[root@linuxbox ~]# setsebool -P squid_connect_any=on

Configuración

[root@linuxbox ~]# nano /etc/squid/squid.conf
# Red LAN
acl localnet src 192.168.10.0/24

acl SSL_ports port 443 21
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT

# Negamos consultas por puertos no seguros
http_access deny !Safe_ports

# Negamos el método CONNECT a puertos no seguros
http_access deny CONNECT !SSL_ports

# Acceso al administrador de la caché solamente desde localhost
http_access allow localhost manager
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Autorización PAM
auth_param basic program /usr/lib64/squid/basic_pam_auth
auth_param basic children 5
auth_param basic realm desdelinux.fan
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

# Para acceder al Squid se requiere autenticación
acl Entusiastas proxy_auth REQUIRED

# Permitimos el acceso a usuarios autenticados
# mediante PAM
http_access deny !Entusiastas

# Acceso a sitios FTP
acl ftp proto FTP
http_access allow ftp

http_access allow localnet
http_access allow localhost

# Negamos cualquier otro acceso al proxy
http_access deny all

# Squid normalmente escucha por el puerto 3128
http_port 3128

# Dejamos los "coredumps" en el primer directorio caché
coredump_dir /var/spool/squid

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

cache_mem 64 MB
# Memoria Caché
memory_replacement_policy lru
cache_replacement_policy heap LFUDA
cache_dir aufs /var/spool/squid 4096 16 256
maximum_object_size 4 MB
cache_swap_low 85
cache_swap_high 90
cache_mgr buzz@desdelinux.fan

# Otros parámetros
visible_hostname linuxbox.desdelinux.fan

Comprobamos la sintaxis del archivo /etc/squid/squid.conf

[root@linuxbox ~]# squid -k parse
2017/04/16 15:45:10| Startup: Initializing Authentication Schemes ...
2017/04/16 15:45:10| Startup: Initialized Authentication Scheme 'basic'
2017/04/16 15:45:10| Startup: Initialized Authentication Scheme 'digest'
2017/04/16 15:45:10| Startup: Initialized Authentication Scheme 'negotiate'
2017/04/16 15:45:10| Startup: Initialized Authentication Scheme 'ntlm'
2017/04/16 15:45:10| Startup: Initialized Authentication.
2017/04/16 15:45:10| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2017/04/16 15:45:10| Processing: acl localnet src 192.168.10.0/24
2017/04/16 15:45:10| Processing: acl SSL_ports port 443 21
2017/04/16 15:45:10| Processing: acl Safe_ports port 80     # http
2017/04/16 15:45:10| Processing: acl Safe_ports port 21     # ftp
2017/04/16 15:45:10| Processing: acl Safe_ports port 443        # https
2017/04/16 15:45:10| Processing: acl Safe_ports port 70     # gopher
2017/04/16 15:45:10| Processing: acl Safe_ports port 210        # wais
2017/04/16 15:45:10| Processing: acl Safe_ports port 1025-65535 # unregistered ports
2017/04/16 15:45:10| Processing: acl Safe_ports port 280        # http-mgmt
2017/04/16 15:45:10| Processing: acl Safe_ports port 488        # gss-http
2017/04/16 15:45:10| Processing: acl Safe_ports port 591        # filemaker
2017/04/16 15:45:10| Processing: acl Safe_ports port 777        # multiling http
2017/04/16 15:45:10| Processing: acl CONNECT method CONNECT
2017/04/16 15:45:10| Processing: http_access deny !Safe_ports
2017/04/16 15:45:10| Processing: http_access deny CONNECT !SSL_ports
2017/04/16 15:45:10| Processing: http_access allow localhost manager
2017/04/16 15:45:10| Processing: http_access deny manager
2017/04/16 15:45:10| Processing: http_access deny to_localhost
2017/04/16 15:45:10| Processing: auth_param basic program /usr/lib64/squid/basic_pam_auth
2017/04/16 15:45:10| Processing: auth_param basic children 5
2017/04/16 15:45:10| Processing: auth_param basic realm desdelinux.fan
2017/04/16 15:45:10| Processing: auth_param basic credentialsttl 2 hours
2017/04/16 15:45:10| Processing: auth_param basic casesensitive off
2017/04/16 15:45:10| Processing: acl Entusiastas proxy_auth REQUIRED
2017/04/16 15:45:10| Processing: http_access deny !Entusiastas
2017/04/16 15:45:10| Processing: acl ftp proto FTP
2017/04/16 15:45:10| Processing: http_access allow ftp
2017/04/16 15:45:10| Processing: http_access allow localnet
2017/04/16 15:45:10| Processing: http_access allow localhost
2017/04/16 15:45:10| Processing: http_access deny all
2017/04/16 15:45:10| Processing: http_port 3128
2017/04/16 15:45:10| Processing: coredump_dir /var/spool/squid
2017/04/16 15:45:10| Processing: refresh_pattern ^ftp:      1440    20% 10080
2017/04/16 15:45:10| Processing: refresh_pattern ^gopher:   1440    0%  1440
2017/04/16 15:45:10| Processing: refresh_pattern -i (/cgi-bin/|\?) 0    0%  0
2017/04/16 15:45:10| Processing: refresh_pattern .      0   20% 4320
2017/04/16 15:45:10| Processing: cache_mem 64 MB
2017/04/16 15:45:10| Processing: memory_replacement_policy lru
2017/04/16 15:45:10| Processing: cache_replacement_policy heap LFUDA
2017/04/16 15:45:10| Processing: cache_dir aufs /var/spool/squid 4096 16 256
2017/04/16 15:45:10| Processing: maximum_object_size 4 MB
2017/04/16 15:45:10| Processing: cache_swap_low 85
2017/04/16 15:45:10| Processing: cache_swap_high 90
2017/04/16 15:45:10| Processing: cache_mgr buzz@desdelinux.fan
2017/04/16 15:45:10| Processing: visible_hostname linuxbox.desdelinux.fan
2017/04/16 15:45:10| Initializing https proxy context

Ajustamos permisos en /usr/lib64/squid/basic_pam_auth

[root@linuxbox ~]# chmod u+s /usr/lib64/squid/basic_pam_auth

Creamos el directorio caché

# Por si acaso...
[root@linuxbox ~]# service squid stop
Redirecting to /bin/systemctl stop  squid.service

[root@linuxbox ~]# squid -z
[root@linuxbox ~]# 2017/04/16 15:48:28 kid1| Set Current Directory to /var/spool/squid
2017/04/16 15:48:28 kid1| Creating missing swap directories
2017/04/16 15:48:28 kid1| /var/spool/squid exists
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/00
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/01
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/02
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/03
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/04
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/05
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/06
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/07
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/08
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/09
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/0A
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/0B
2017/04/16 15:48:28 kid1| Making directories in /var/spool/squid/0C
2017/04/16 15:48:29 kid1| Making directories in /var/spool/squid/0D
2017/04/16 15:48:29 kid1| Making directories in /var/spool/squid/0E
2017/04/16 15:48:29 kid1| Making directories in /var/spool/squid/0F

En éste punto, de demorarse un poco en devolver el prompt de comandos -que a mi no lo devolvió nunca- presione Enter.

[root@linuxbox ~]# service squid start
[root@linuxbox ~]# service squid restart
[root@linuxbox ~]# service squid status
Redirecting to /bin/systemctl status  squid.service
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled)
   Active: active (running) since dom 2017-04-16 15:57:27 EDT; 1s ago
  Process: 2844 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 2873 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 2868 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 2876 (squid)
   CGroup: /system.slice/squid.service
           └─2876 /usr/sbin/squid -f /etc/squid/squid.conf

abr 16 15:57:27 linuxbox systemd[1]: Starting Squid caching proxy...
abr 16 15:57:27 linuxbox systemd[1]: Started Squid caching proxy.
abr 16 15:57:27 linuxbox squid[2876]: Squid Parent: will start 1 kids
abr 16 15:57:27 linuxbox squid[2876]: Squid Parent: (squid-1) process 2878 ...ed
abr 16 15:57:27 linuxbox squid[2876]: Squid Parent: (squid-1) process 2878 ... 1
Hint: Some lines were ellipsized, use -l to show in full

[root@linuxbox ~]# cat /var/log/messages | grep squid

Arreglos en el muro cortafuegos

También debemos abrir en la Zona “external” los puertos 80 HTTP y 443 HTTPS para que el Squid pueda comunicarse con Internet.

[root@linuxbox ~]# firewall-cmd --zone=external --add-port=80/tcp --permanent
success
[root@linuxbox ~]# firewall-cmd --zone=external --add-port=443/tcp --permanent
success
[root@linuxbox ~]# firewall-cmd --reload
success
[root@linuxbox ~]# firewall-cmd --info-zone external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dns
  ports: 443/tcp 53/udp 80/tcp 53/tcp
  protocols: 
  masquerade: yes
  forward-ports: 
  sourceports: 
  icmp-blocks: parameter-problem redirect router-advertisement router-solicitation source-quench
  rich rules:
  • No es ocioso acudir a la aplicación gráfica “Configuración del cortafuegos” y comprobar que los puertos 443 tcp, 80 tcp, 53 tcp, y 53 udp están abiertos para la zona “external“, y de que NO hemos publicado ningún servicio para ella.

Nota sobre el programa auxiliar basic_pam_auth

Si consultamos el manual de ésta utilidad mediante man basic_pam_auth leeremos que el propio autor hace la fuerte recomendación de que el programa se mueva a un directorio donde los usuarios normales no tengan permisos suficientes para acceder a la herramienta.

Por otra parte, es conocido que con éste esquema de autorización, las credenciales viajan en texto plano y no es seguro para ambientes hostiles, lea redes abiertas.

Jeff Yestrumskas dedica el artículo “How-to: Setup a secure web proxy using SSL encryption, Squid Caching Proxy and PAM authentication” al tema de aumentar la seguridad con éste esquema de autenticación para que pueda emplearse en redes abiertas potencialmente hostiles.

Instalamos httpd

Como una forma de comprobar el funcionamiento del Squid -y de paso el del Dnsmasq- instalaremos el servicio httpd -Servidor web Apache- lo cual no es obligatorio se haga. En el archivo relativo al Dnsmasq /etc/banner_add_hosts declaramos los sitios que deseamos sean baneados, y explícitamente le asignamos la misma dirección IP que posee linuxbox. De esa forma, si solicitamos el acceso a cualquiera de esos sitios se debe mostrar la página de inicio del httpd.

[root@linuxbox ~]# yum install httpd

[root@linuxbox ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

[root@linuxbox ~]# systemctl start httpd

[root@linuxbox ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since dom 2017-04-16 16:41:35 EDT; 5s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 2275 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─2275 /usr/sbin/httpd -DFOREGROUND
           ├─2276 /usr/sbin/httpd -DFOREGROUND
           ├─2277 /usr/sbin/httpd -DFOREGROUND
           ├─2278 /usr/sbin/httpd -DFOREGROUND
           ├─2279 /usr/sbin/httpd -DFOREGROUND
           └─2280 /usr/sbin/httpd -DFOREGROUND

abr 16 16:41:35 linuxbox systemd[1]: Starting The Apache HTTP Server...
abr 16 16:41:35 linuxbox systemd[1]: Started The Apache HTTP Server.

SELinux y Apache

Apache tiene varias políticas por configurar dentro del contexto SELinux.

[root@linuxbox ~]# getsebool -a |grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off

Solamente configuraremos las siguientes:

Enviar correo electrónico a través de Apache

root@linuxbox ~]# setsebool -P httpd_can_sendmail 1

Permitir que Apache lea los contenidos localizados en los directorios de inicio de los usuarios locales

root@linuxbox ~]# setsebool -P httpd_read_user_content 1

Permitir administrar a través de FTP o FTPS cualquier directorio gestionado por
Apache o bien permitir a Apache funcionar como un servidor FTP escuchando peticiones a través del puerto de FTP

[root@linuxbox ~]# setsebool -P httpd_enable_ftp_server 1

Para mas información, favor de leer Configuración de Servidores Linux.

Comprobamos la Autenticación

Solo queda abrir un navegador en una estación de trabajo y apuntar, por ejemplo, a http://windowsupdate.com. Comprobaremos que la solicitud se redirige correctamente hacia la página de inicio del Apache en linuxbox. De hecho, cualquier nombre de sitio declarado en el archivo /etc/banner_add_hosts será redirigido a la misma página.

Las imágenes al final del artículo lo demuestran.

Administración de usuarios

La realizamos mediante la herramienta gráfica “Gestión de usuarios” a la que accedemos mediante el menú Sistema –> Administración –> Gestión de usuarios. Cada vez que añadimos un usuario nuevo se crea su carpeta /home/usuario de forma automática.

 

Copias de seguridad

Clientes Linux

Solo es necesario el navegador de archivos normal e indicar que se quiere conectar, por ejemplo: ssh://buzz@linuxbox/home/buzz y después de introducir la contraseña, se mostrará el directorio home del usuario buzz.

Clientes Windows

En clientes Windows, utilizamos la herramienta WinSCP. Una vez instalada, la utilizamos de la forma siguiente:

 

 

Sencillo, ¿no?.

Resumen

Hemos visto que es posible el empleo de PAM para autenticar servicios en una red pequeña y en un ambiente controlado y aislado totalmente de las manos de hackers. Se debe en lo fundamental a que las credenciales de autenticación viajan en texto plano y por ende no es un esquema de autenticación para emplearse en redes abiertas como aeropuertos, redes wifi, etcétera. Sin embargo, resulta un mecanismo sencillo de autorización, fácil de implementar y configurar.

Fuentes consultadas

Versión en formato PDF

Descargue la versión en PDF aquí.

¡Hasta el próximo artículo!

13 COMENTARIOS

  1. Se lo dificil que es armar un artículo con tanto nivel de detalle, con pruebas bastantes claras y sobretodo con conceptos y estrategias adaptados a los estándar. Simplemente me quito el sombrero ante está joya de aportes, muchas gracias Fico por tan buen trabajo.

    Nunca he combinado squid con autenticacion pam pero voy en la medida de lo posible hacer esta practica en mi laboratorio… Abrazo de gol y seguimos!!

  2. NaTiluS: Muchas gracias por tu comentario y evaluación.
    Lagarto: A ti también, muchas gracias por tu comentario y evaluación.

    El tiempo y el esfuerzo dedicados en la confección de artículos como éste, solo se ven recompensados con la lectura y comentarios de los que visitan la comunidad DesdeLinux. Espero les sea útil en su diario trabajo.
    Seguimos adelante!

  3. Increible aporte paisano!!!! Leo cada uno de sus articulos y puedo decir que aun para una persona que no tenga un conocimiento avanzado en Software Libre(como yo) puede seguir paso a paso tan exquisito articulo. Saludos !!!!

  4. Gracias Fico por este otro gran articulo; por si fuera poco con todos los posts ya publicados, en este tenemos un servicio no antes abarcado por la Serie PYMES y que es sumamente importante: el “SQUID” o Proxy de una LAN. Nada que para nosotros la familia de los que nos creemos “sysadmins’ tenemos aquí otro buen material para estudiar y profundizar nuestros conocimientos.

  5. Gracias a todos por sus comentarios. El próximo artículo versará sobre el servidor chat Prosody con autenticación frente a credenciales locales (PAM) vía Cyrus-SASL, y ese servicio se implementará en éste mismo servidor.

  6. En hora buena paisano!!!! Gran aporte incluso para quienes como yo que no tenemos grandes conocimientos sobre el Software Libre estamos apasionados en aprender con articulos tan exquicitos como este. Eh estado siguiendo sus aportes y quisiera saber por cual articulo me recomendaria comenzar sobre esta serie de Redes PYMES, pues eh ido leeyendo de manera desordenada y creo que tiene mucho contenido valioso como para pederse algun detalle. Sin mas, saludos y que el conocimiento compartido asi como el Sofware sigan siendo Libres!!!!

    • Saludos paisano!!!. Te recomiendo empieces por el principio, que aunque te parezca el camino largo, es el camino mas corto para no perderte. En el índice -que no está actualizado con los últimos dos artículos- https://blog.desdelinux.net/redes-computadoras-las-pymes-introduccion/, establecimos el orden recomendado de lectura de la Serie, que empieza por cómo hacer mi Estación de Trabajo, continúa con varios posts dedicados al tema Virtualización, sigue con varios sobre BIND, Isc-Dhcp-Server, y Dnsmasq, y así sucesivamente hasta llegar a la parte de implementación de servicios para la red PYME, que es donde estamos actualmente. Espero te ayude.

Dejar una respuesta