jueves, 14 de septiembre de 2017

CREACIÓN DE DOMINIO SAMBA 4 EN CENTOS


********************************************************************************************
comandos útiles samba 4
********************************************************************************************
Ver el SID del dominio y la sincronización:

samba-tool drs showrepl

Server Role:           active directory domain controller
Hostname:              ads01
NetBIOS Domain:        TESTING
DNS Domain:            ad.testing.gob.ve
DOMAIN SID:            S-1-5-21-3118096144-1223824119-2523436622

Actualizar DNS y corregir fallos:

samba_dnsupdate --verbose
samba_dnsupdate --verbose --all-names

Verificar Archivo samba smb.conf y ver posibles fallos:

testparm -s

Unir equipos al dominio

net rpc join -U administrator
net ads join -U administrator


********************************************************************************************
Instalar la ultima versión de samba 4 Centos via repo
********************************************************************************************

yum install -y authconfig krb5-workstation || true

    && sed -i 's@enabled=0@enabled=1@g' EL7.wing.repo \
    && mv EL7.wing.repo /etc/yum.repos.d/


yum install -y samba46 samba46-winbind-clients samba46-winbind samba46-client samba46-common-tools samba46-common-libs samba46-dc samba46-dc-libs samba46-libs samba46-pidl samba46-python samba46-winbind-krb5-locator perl-Parse-Yapp perl-Test-Base python2-crypto || true

Nota: ya estos repos no existen, acá una nueva guía


********************************************************************************************
Preparación para la configuración
********************************************************************************************
ver los siguientes enlaces:


Nota: Dado que se usa centos y se tiene un repositorio no se necesita compilar, 
usar el apartado de "Instalar la ultima versión de samba 4 Centos via repo"
Para unir un segundo controlador de dominio:
Usar la preparación de los enlaces anteriores y ejecutar el siguiente comando:

samba-tool domain join ad.igvsb.gob.ve DC -U "TESTING\administrator"



********************************************************************************************
Error Samba 4 al unir equipo al dominio
********************************************************************************************
Aparece un error como este:

 At this time the 'samba' binary should only be used for either:
  'server role = active directory domain controller' or to access the ntvfs file server with 'server services = +smb' or the rpc proxy with 'dcerpc endpoint servers = remote'
  You should start smbd/nmbd/winbindd instead for domain member and standalone file server tasks
[2017/08/09 13:18:52.490059,  0, pid=2648, effective(0, 0), real(0, 0)] ../lib/util/become_daemon.c:111(exit_daemon)
  STATUS=daemon failed to start: Samba detected misconfigured 'server role' and exited. Check logs for details, error code 22

Lo que debemos hacer (la ruta varía dependiendo si el fuente de samba es compilado o instalado desde repositorios) es arrancar los servicios nmbd, smbd de forma separada

/usr/sbin/nmbd start
/usr/sbin/smbd start

Si samba 4 es compilado entonces podemos usar:


/usr/sbin/winbindd start

Basico:
Si se desea hacer un samba 4 que sirva a 2 redes con eth1 y eth2 

Nota: Lo de las 2 redes solo se usará en caso de querer servir en 2 redes diferentes un mismo servicio, si se tiene una sola red interna obviar este paso


direcciones IP de demostración

192.168.10.6   red delagro
10.20.10.6 red fondas
hostname ads01
usando network manager

ejecutamos como administrador

nmuti

aparecerá el siguiente menú donde seleccionaremos "Modificar una conexión"



Seleccionamos RED-FONDAS la cual es la eth1 que irá a la red principal (eth0 es puerta de enlace)


vemos la configuración



De esta manera podremos llegar a la red a servir, sin necesidad de configurar una puerta de enlace adicional.

nano /etc/hosts

127.0.0.1       ads01.ad.corpodelagro.gob.ve ads01 localhost localhost.localdomain
192.168.10.6    ads01.ad.corpodelagro.gob.ve ads01
10.20.10.6      ads01.ad.corpodelagro.gob.ve ads01

Ejemplo de configuración

nano /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="no"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
#IPV6_AUTOCONF="yes"
#IPV6_DEFROUTE="yes"
#IPV6_FAILURE_FATAL="no"
#IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
#UUID="4927c3c3-d2d8-4104-91b8-f450c7c07b87"
DEVICE="eth1"
ONBOOT="yes"
IPADDR="10.20.5.6"
PREFIX="24"
GATEWAY="10.20.5.1"
DNS1="192.168.10.6"
DNS2="192.168.10.7"
DOMAIN="ad.corpodelagro.gob.ve corpodelagro.gob.ve"
#IPV6_PRIVACY="no"
post-up ip route add 10.20.5.0/24 dev eth1 src 10.20.5.6 table eth1table
post-up ip route add default via 10.20.5.1 dev eth1 table eth1table
post-up ip rule add from 10.20.5.6/32 table eth1table
post-up ip rule add to 10.20.5.6/32 table eth1table

Permisos de firewalld

Primero ver que zonas están activas en el firewall

firewall-cmd --get-active-zones

saldrá algo como esto (que si se usa centos no va a variar). En caso de que varíe poner la zona que sale en la salida del comando

public
output
  interfaces: eth0 eth1

Ejecutar los siguientes comandos

firewall-cmd --permanent --add-service=samba
firewall-cmd --zone=public --permanent --add-port=53/tcp
firewall-cmd --zone=public --permanent --add-port=53/udp
firewall-cmd --zone=public --permanent --add-port=88/tcp
firewall-cmd --zone=public --permanent --add-port=135/tcp
firewall-cmd --zone=public --permanent --add-port=139/tcp
firewall-cmd --zone=public --permanent --add-port=389/tcp
firewall-cmd --zone=public --permanent --add-port=445/tcp
firewall-cmd --zone=public --permanent --add-port=464/tcp
firewall-cmd --zone=public --permanent --add-port=636/tcp
firewall-cmd --zone=public --permanent --add-port=123/udp
firewall-cmd --zone=public --permanent --add-port=123/tcp
firewall-cmd --reload

instalar samba 4 Active directory

yum install epel-release -y
yum --enablerepo=extras 
install centos-release-scl
yum groups -y install "Development Tools"

yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\
policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget install dnf nano fail2ban bind9utils ntpdate iniparser libldb libtalloc libtdb libtevent python-devel gnutls-devel libacl-devel openldap-devel pam-devel readline-devel krb5-devel cups-devel attr bind-utils docbook-style-xsl gcc gdb krb5-workstation libsemanage-python libxslt perl perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python python2-crypto gnutls-devel libattr-devel keyutils-libs-devel libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel lmdb-devel jansson-devel gpgme-devel pygpgme libarchive-devel cups-devel -y

Descargar Samba desde los repositorios

curl -O https://download.samba.org/pub/samba/stable/samba-4.9.4.tar.gz

descomprimir e ir al directorio

tar zxvf samba-4.9.4.tar.gz
cd samba-4.9.4


./configure --prefix=/usr --localstatedir=/var --with-configdir=/etc/samba --libdir=/usr/lib64 --with-modulesdir=/usr/lib64/samba --with-pammodulesdir=/lib64/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/run/samba --with-privatedir=/etc/samba --enable-cups --with-acl-support --with-ads --with-automount --enable-fhs --with-pam --with-quotas --with-shared-modules=idmap_rid,idmap_ad,idmap_hash,idmap_adex --with-syslog --with-utmp --with-dnsupdate

make && make install

mover configuración anterior de samba

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

iniciamos la configuración del dominio

samba-tool domain provision --use-rfc2307 --interactive


activamos e iniciamos samba

systemctl enable samba
systemctl start samba

instalar servidor de ntp

yum install ntp

editamos

nano /etc/ntp.conf

iniciamos ntpd

systemctl enable ntpd
systemctl start ntpd

Activar servidor ntp (se necesita para sincronizar hora con los equipos del dominio)

editar

nano /etc/ntp.conf

Modificar 
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1

por
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
#restrict 127.0.0.1
#restrict ::1

y agregar las siguientes líneas

broadcast 192.168.10.6 autokey  # broadcast server
broadcast 10.20.5.6 autokey  # broadcast server
broadcastclient                 # broadcast client

Con esto activamos nuestro servidor NTP para aceptar peticiones de sincronización de hora en la ip asignada a la interfaz

comandos útiles

samba-tool domain level show
samba-tool drs showrepl
samba_dnsupdate --verbose --all-names
samba_dnsupdate --verbose


Para unir un equipo secundario active directory al dominio
 
samba-tool domain join ad.corpodelagro.gob.ve DC -U "AD\administrator" --dns-backend=SAMBA_INTERNAL


Nota: si se configuró una maquina virtual, clonela, cambiele las IP, la configuración de /etc/hosts y el hostname  y posteriormente ejecute el comando para unir un equipo secundario al dominio.

viernes, 16 de junio de 2017

Instalar cliente xymon en PFSense

Hola a todos, les traigo esta sencilla guía, basada en un requerimiento que me fue pedido en el trabajo para la instalación de el cliente xymon (antiguo hobbit).
Los requisitos previos son sencillamente tener configurado adecuadamente el hostname en el servidor con la IP de administración, y obviamente que nuestro servidor xymon tenga acceso a ICMP, y cualquier puerto que se quiere monitorear externo (enlace web) aparte de por su puesto el puerto 1984 para el envío de los datos.

Version2.3.4-RELEASE (amd64)
built on Wed May 03 15:13:29 CDT 2017
FreeBSD 10.3-RELEASE-p19 

Para empezar, y sabiendo que PFSense es un BSD modificado basado en la distribución FreeBSD, primero debemos buscar el paquete, en los repositorios de la distribución el cual se puede ubicar en el siguiente listado.
Teniendo acceso al repositorio, buscamos el paquete que se desea instalar que en este caso es el xymon-client.
"recomiendo Usar ctrl + f en el navegador para ubicar el paquete"
En nuestro caso en el repositorio de FreeBSD está la versión 4.3.28, la cual es la que se procederá a instalar. habiéndolo ubicado le doy al navegador botón derecho sobre el nombre del paquete y le damos copiar enlace.

Una vez copiado en enlace lo pegamos para instalarlo de la siguiente forma:
pkg add http://pkg.freebsd.org/freebsd:10:x86:64/latest/All/xymon-client-4.3.28.txz

Esta parte no debería dar ningún error, pues este paquete "afortunadamente" no contiene ninguna dependencia adicional.
Una vez instalado crear (si ya no está creado) /etc/rc.conf.local
y agregar 
xymon_client_enable=YES


Ahora ejecutamos un comando para crear un enlace simbólico, dado que pfsense ejecuta sus servicios usando los archivos bash, difiriendo de esta manera con la forma estandart de FreeBSD


ln -s /usr/local/etc/rc.d/xymon-client /usr/local/etc/rc.d/xymon-client.sh

Resuelto el tema de el arrranque del servicio editamos la siguiente ruta
/usr/local/www/xymon/client/etc/xymonclient.cfg

Una vez abierto el archivo con nuestro editor de preferencia (por defecto es vi pero es posible instalar nano) modificamos solo La IP apuntando al servidor. Tambien si se desea y se tiene un dns interno puede usarse un nombre de host junto al dominio. En mi caso la dirección es "192.168.1.10". tambien debemos recordar que en el servidor xymon debe estar agregado el cliente con su nombre de host en el servidor para que pueda haber concordancia y no aparesca como "ghost report" de la pestaña xymond del mismo.

Les dejo una referencia al archivo de configuración:

# Environment settings for the Xymon client.
XYMSRV="192.168.1.10"          # IP address of the Xymon server
XYMSERVERS=""                   # IP of multiple Xymon servers. XYMSRV must be "0.0.0.0".
CONFIGCLASS="$SERVEROSTYPE"     # Default configuration class for logfiles

PATH="/bin:/usr/bin:/sbin:/usr/sbin:/etc"  # PATH setting for the client scripts.
SHELL="/bin/sh"                         # Shell to use when forking programs

# You normally don't need to modify anything below here
XYMONDPORT="1984"                   # Portnumber where xymond listens
XYMONHOME="$XYMONCLIENTHOME"       # Directory for the Xymon client files
XYMON="$XYMONHOME/bin/xymon"          # The Xymon client "xymon" utility
XYMONTMP="$XYMONHOME/tmp"             # Where we may store temporary files.
XYMONCLIENTLOGS="$XYMONHOME/logs"     # Where we store the client logfiles

# Options to logfetch, the xymon binary which examines log files for recent changes.
LOGFETCHOPTS=""

Hecho esto, guardamos y solo nos toca reiniciar el cliente xymon con el siguiente comando:
service xymon-client start

esto debería podernos mostrar la información de nuestro PFSense en nuestro servidor xymon.
No hay mas secretos con respecto a este tema 
Espero les sirva, y les sea útil.

jueves, 15 de junio de 2017

Limpiar Inodos linux al 100%

Buenas, acabo de tener un problema con un servidor en el cual el espacio en disco decía que estaba casi vacío, pero los inodos me indicaban que la partición estaba llena, impidiendo el arranque de servicios, que en mi caso particular era postgresql. Revisando me di cuanta que los problemas con inodos, generalmente son debido a problemas con archivos 0 bytes, lo cuales no tienen peso pero si ocupan espacio de otra forma.

Básicamente un inodo o i-nodo se utiliza para cada archivo en el sistema de archivos. Así quedarse sin inodos generalmente significa que se tiene una gran cantidad de archivos pequeños por ahí. Teniendo esto claro que la pregunta a hacerse es ¿que directorio tiene un gran número de archivos?

En este caso, el sistema de archivos donde tenía el problema era /var/ y para solucionar este problema usé los siguientes comandos:

Primero para evidenciar que los inodos del sistema se archivos se han llenado en la partición ejecutamos:

df -i

Lo cual nos da la siguiente información:


Filesystem     Inodes  IUsed  IFree IUse% Mounted on
rootfs         655360  60902 594458   10% /
udev            59464    250  59214    1% /dev
tmpfs           63478    187  63291    1% /run
/dev/xvda      655360  60902 594458   10% /
tmpfs           63478      3  63475    1% /run/lock
tmpfs           63478      2  63476    1% /run/shm
/dev/xvdc      655360 251084 404276   100% /var


Viendo esto, y sin saber donde diantres se están siendo usados los inodos usamos el siguiente comando para buscar  volcar una lista de todos los directorios del sistema de archivos con el prefijo del número de archivos (y subdirectorios) en ese directorio. Así, el directorio con el mayor número de archivos aparecerá al final:


find /var -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

la salida es la siguiente:


318 /var/lib/postgresql/9.1/main/base/27925
400 /var/chroot/usr/bin
1830 /var/lib/dpkg/info
202205 /var/chroot/var/lib/php5


cuando hagan un ls (sin comandos adicionales so pena de que tarden 10 veces mas para mostrar la información) se darán cuenta de que muchos archivos están con 0 bytes, convirtiéndose de esta manera en archivos parásitos.

Teniendo esto en cuenta buscamos de borrarlos de la siguiente forma


find /var/chroot/var/lib/php5/ -type f -size 0 -print0 | xargs -I{} -0 rm {}

va a tardar, dependiendo de cuantos archivos dispongan, que para llenar los inodos deben ser bastantes.Cuando terminen.

Vuelvan a usar el comando df -i y verán la mágia.


Filesystem     Inodes  IUsed  IFree IUse% Mounted on
rootfs         655360  60902 594458   10% /
udev            59464    250  59214    1% /dev
tmpfs           63478    187  63291    1% /run
/dev/xvda      655360  60902 594458   10% /
tmpfs           63478      3  63475    1% /run/lock
tmpfs           63478      2  63476    1% /run/shm
/dev/xvdc      655360 144847 510513   23% /var

Ahora pude arrancar el servicio y pude respirar tranquilo.

Con este método fácil y practico espero puedan lograr solucionar cualquier problemas de este tipo.

Saludos y gracias por visitar el blog.

Actualización 07/03/2019

tenia un problema con un servidor xenserver y este problema me ayudó, sin embargo al borrar los archivos en 0 todavía quedaban un montón con más de 0 bites y ocupaban el 30% de los inodos. Para limpiarlo ejecuté el siguiente comando:

find /var/log -type f -mtime +2 -print0 | xargs -I{} -0 rm {}

Espero les sirva