domingo, 2 de marzo de 2014

Autenticando Squid en Active Directory



Requerimientos: Squid >= 2.5 (con LDAP helpers)

Versión de Squid utilizada:


root@squid-testing:~# squid -v
Squid Cache: Version 2.7.STABLE9


LDAP Helpers (ldap_auth y squid_ldap_group):


root@squid-testing:~# locate ldap_auth
/usr/lib/squid/ldap_auth
/usr/share/doc/squid/README.auth_module.ldap_auth.gz

root@squid-testing:~# locate squid_ldap_group
/usr/lib/squid/squid_ldap_group
/usr/share/man/man8/squid_ldap_group.8.gz


Antes de modificar la configuración del squid testeamos por la línea de comandos:


/usr/lib/squid/ldap_auth -R -D usuario@mi.dominio.net -w 'password_de_usuario' -b "dc=mi,dc=dominio,dc=net" -f "sAMAccountName=%s" -h ip_del_AD


Ejemplo:

root@squid-testing:~# /usr/lib/squid/ldap_auth -R -D morsa@redes.seguridad.net -w 'Mi-P2ssbuor' -b "dc=global,dc=company,dc=domain" -f "sAMAccountName=%s" -h 192.168.0.1


Luego de ejecutar el comando previo, queda esperando que ingresemos usuario y password separado por un espacio, en mi caso:

morsa Mi-P2ssbuor
OK

Si obtenemos OK es que la autenticación funciona correctamente.


Editamos la configuración del Squid:

root@squid-testing:~# vi /etc/squid/squid.conf

Reemplazamos el auth_param basic program por el comando ejecutado anteriormente y unos parametros más como el realm y las TTLs de las credenciales:

auth_param basic program  /usr/lib/squid/ldap_auth -R -D morsa@redes.seguridad.net -w 'Mi-P2ssbuor' -b "dc=redes,dc=seguridad,dc=net" -f "sAMAccountName=%s" -h 192.168.0.1
auth_param basic children 5
auth_param basic realm Tupperware
auth_param basic credentialsttl 5 minutes

La siguiente acl nos permite el que al abrir el explorardor nos pida credenciales:

acl password proxy_auth REQUIRED

Agregamos una lista de acceso externa llamada GrupoInternet utilizando squid_ldap_group:

external_acl_type GrupoInternet %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=redes,dc=seguridad,dc=net" -D morsa@redes.seguridad.net -w Mi-P2ssbuor -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=Groups,ou=Contenedor1,ou=Contenedor2,dc=redes,dc=seguridad,dc=net))" -h 192.168.0.1

Agregamos otra lista de acceso llamada Internet utilizando la previa acl (GrupoInternet) y utilizará un grupo en Active Directory llamado GrupoSquidAD donde este grupo estará dentro del contenedor (ou=Groups,ou=Contenedor1,ou=Contenedor2,dc=redes,dc=seguridad,dc=net):

acl Internet external GrupoInternet GrupoSquidAD

Permitimos acceso a la acl previa con el siguiente linea:


http_access allow Internet 


Reiniciamos el squid:

root@squid-testing:~# /etc/init.d/squid start
Starting Squid HTTP proxy: squid.
root@squid-testing:~# !ps
ps -efa | grep squid
root      3901     1  0 20:14 ?        00:00:00 /usr/sbin/squid -D -YC
proxy     3906  3901 99 20:14 ?        00:00:02 (squid) -D -YC
root      3932 31579  0 20:14 pts/2    00:00:00 grep squid
root@squid-testing:~#


IMPORTANTE: Recordar agregar los usuarios que queremos permitir el acceso a internet deben estar dentro del grupo GrupoSquidAD del Active Directory.


También les dejo una configuración completa del squid para que quede más claro:

root@squid-testing:~# cat /etc/squid/squid.conf
##############################################################        Auth
#############################################################
auth_param basic program /usr/lib/squid/ldap_auth -R -D morsa@redes.seguridad.net -w 'Mi-P2ssbuor -b "dc=redes,dc=seguridad,dc=net" -f "sAMAccountName=%s" -h 192.168.0.1
auth_param basic children 5
auth_param basic realm Redes.Seguridad
auth_param basic credentialsttl 5 minutes

##############################################################       ACL's
#############################################################
acl http proto http

acl port_80 port 80
acl port_443 port 443
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21 20       # 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 Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

acl all src all

#Agregado por morsa para bloqueo de youtube
acl no_domains dstdomain "/etc/squid/sitios_denegados.txt"

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

acl password proxy_auth REQUIRED

external_acl_type GrupoInternet %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=redes,dc=seguridad,dc=net" -D morsa@redes.seguridad.net -w Mi-P2ssbuor -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=groups,ou=Contenedor1,ou=Contenedor2,dc=redes,dc=seguridad,dc=net))" -h 192.168.0.1

acl Internet external GrupoInternet ARG1-InternetSquid

##############################################################ACCESOS
#############################################################
http_access deny no_domains

http_access allow Internet
http_access allow password

http_access deny all

http_access allow manager localhost
http_access deny manager

http_access allow purge localhost
http_access deny purge

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny all

icp_access deny all

http_port 3128

hierarchy_stoplist cgi-bin ?

cache_mem 100 MB

cache_dir aufs /var/spool/squid 20000 16 256

maximum_object_size 4096 KB

cache_swap_low 95
cache_swap_high 100

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

pid_filename /var/run/squid.pid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$       0       20%     2880
refresh_pattern .               0       20%     4320

acl permitidos src "/etc/squid/permitidos"
http_access allow permitidos

acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

extension_methods REPORT MERGE MKACTIVITY CHECKOUT

cache_effective_user proxy

cache_effective_group proxy

visible_hostname squid-testing

icon_directory /usr/share/squid/icons

error_directory /usr/share/squid/errors/es-ar

hosts_file /etc/hosts

coredump_dir /var/spool/squid
root@squid-testing:~#

Autenticando OpenFire en Active Directory

En esta otra vieja entrada se explicó como instalar OpenFire: http://www.redes-seguridad.com.ar/2012/03/openfire-debian-squeeze.html, ahora se mostrará la configuración para que autentique en AD.

Luego de Instalarlo accedemos a la página de administración: http://openfire-server:9090/

Configuramos el Idioma:


Especificamos el nombre del servidor para ser accedido y los puertos:



Seleccionamos "Base de datos interna":



Especificamos la opción LDAP:



Seleccionamos tipo de servidor "Active Directory", la ip del servidor, el puerto, la DN Base, usuario y contraseña:



Indicamos el campo de usuario, el filtro en campo de búsqueda y el campo de la foto del avatar:



El mapeo del grupo:



Finalmente agregamos los usuarios que deseamos que administren la aplicación:



miércoles, 26 de febrero de 2014

Ver Versión de VMtools en Unix

Buscamos dentro del perl de las tools la cadena buildNr:

# cat /usr/bin/vmware-config-tools.pl |grep buildNr
  my $buildNr;
  $buildNr = 'aca aparece la version';


miércoles, 19 de febrero de 2014

Instalar VNC Server en Oracle Linux Server

Instalamos tigervnc-server:

# yum install tigervnc-server
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tigervnc-server.x86_64 0:1.1.0-8.el6_5 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package             Arch       Version             Repository             Size
================================================================================
Installing:
 tigervnc-server     x86_64     1.1.0-8.el6_5       public_ol6_latest     1.1 M
Transaction Summary
================================================================================
Install       1 Package(s)
Total download size: 1.1 M
Installed size: 2.9 M
Is this ok [y/N]: y ENTER
Downloading Packages:
tigervnc-server-1.1.0-8.el6_5.x86_64.rpm                 | 1.1 MB     00:03
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : tigervnc-server-1.1.0-8.el6_5.x86_64                         1/1
  Verifying  : tigervnc-server-1.1.0-8.el6_5.x86_64                         1/1
Installed:
  tigervnc-server.x86_64 0:1.1.0-8.el6_5
Complete!


Editamos la config y especificamos el usuario, en este caso root:

# vi /etc/sysconfig/vncservers
VNCSERVERS="2:root"
VNCSERVERARGS[2]="-geometry 1280x1024 -nolisten tcp -localhost"


Especificamos el usuario de root para la conexión de VNC:

# vncpasswd
Password: ponemos_el_passVerify: ponemos_el_pass


Agregamos para que inicie cuando se reinicie el equipo:

# chkconfig vncserver on


Iniciamos el servicio:

# service vncserver start
Starting VNC server: 2:root xauth:  creating new authority file /root/.Xauthority
xauth: (stdin):1:  bad display name "MISERVER:2" in "add" command
New 'MISERVER:2 (root)' desktop is MISERVER:2
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/MISERVER:2.log
                                                           [  OK  ]


Deshabilitamos el firewall:

# iptables -F


Lo habilitamos en la interface gráfica:




lunes, 17 de febrero de 2014

LVM (Logical Volume Manager)

Creamos las particiones de cada disco con fdisk ahora que lo vemos (ya está explicado en este otro enlace: http://www.redes-seguridad.com.ar/2013/05/mover-el-var-otro-disco.html)

# fdisk /dev/sdf
# fdisk /dev/sdg


Creamos el Volumen Físico (PV) especificando las 2 particiones de ambos discos:

# pvcreate /dev/sdf1 /dev/sdg1
  Physical volume "/dev/sdf1" successfully created
  Physical volume "/dev/sdg1" successfully created


Escanemos los PV:

# pvscan
  PV /dev/sdf1                      lvm2 [300.00 GiB]
  PV /dev/sdg1                      lvm2 [300.00 GiB]
  Total: 2 [599.99 GiB] / in use: 0 [0   ] / in no VG: 2 [599.99 GiB]


Creamos el Volumen Group (VG) especificando las particiones creadas:

# vgcreate VG-DATOS /dev/sdf1 /dev/sdg1
  Volume group "VG-DATOS" successfully created


Verificamos el VG:

# vgdisplay
  --- Volume group ---
  VG Name               VG-DATOS
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               599.98 GiB
  PE Size               4.00 MiB
  Total PE              153596
  Alloc PE / Size       0 / 0
  Free  PE / Size       153596 / 599.98 GiB
  VG UUID               JacDGH-3VEI-7TMP-bg83-uW6z-HuJS-uLjhtD


Creamos el Volumen Lógico (LV):

# lvcreate -l 100%FREE -n LV-DATOS DATOS-VG
  Logical volume "LV-DATOS" created


Formateamos el LV con mkfs en ext4:

# mkfs.ext4 /dev/DATOS-VG/LV-DATOS


Listamos los LV:

# lvs
  LV             VG          Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  LV-DATOS DATOS-VG -wi-a----- 599.98g


Verificamos el ID para montarlo en el fstab:

# blkid
/dev/mapper/DATOS--LV--DATOS--LV: UUID="c89de210-52de-4005-8d10-9b4676e4d97d" TYPE="ext4" 


Creamos el punto de montaje, editamos el fstab y lo montamos:

# mkdir /datos
# vi /etc/fstab
UUID=c89de210-52de-4005-8d10-9b4676e4d97d /datos                  ext4    defaults        1 2
# mount /datos

Agregar disco a Linux que no lo veía con el fdisk

Al agregar un nuevo disco, ejecutaba "fdisk -l" y no veía los discos, para no reiniciar el S.O. ejecuté lo siguiente:

# ls -ltr /sys/class/scsi_host
total 0
lrwxrwxrwx. 1 root root 0 Feb 12 11:59 host2 -> ../../devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2
lrwxrwxrwx. 1 root root 0 Feb 12 11:59 host1 -> ../../devices/pci0000:00/0000:00:07.1/ata2/host1/scsi_host/host1
lrwxrwxrwx. 1 root root 0 Feb 12 11:59 host0 -> ../../devices/pci0000:00/0000:00:07.1/ata1/host0/scsi_host/host0


Por cada host que nos devuelve el comando previo se ejecuta lo siguiente:

# echo "- - -" > /sys/class/scsi_host/host0/scan
# echo "- - -" > /sys/class/scsi_host/host1/scan
# echo "- - -" > /sys/class/scsi_host/host2/scan

jueves, 13 de febrero de 2014

Agregar Usuarios de una OU a un grupo en Active Directory

Utilizamos el dsquery para obtener el listado y luego el dsmod para modificarlo:

C:\Users\>dsquery user -startnode "ou=Ventas,ou=Users,dc=mi,dc=dominio,dc=com" | dsmod group "cn=Ventas,ou=groups,dc=mi,dc=dominio,dc=com" -addmbr