Mostrando entradas con la etiqueta unix. Mostrar todas las entradas
Mostrando entradas con la etiqueta unix. Mostrar todas las entradas

martes, 17 de febrero de 2015

Solucion a: quagga vtysh " Exiting: failed to connect to any daemons."

Situacion:
  Al ejecutar el comando vtysh en el shell de linux para conectarse a los demonios de quagga (bgpd, ospfd, etc) da el siguiente error "Exiting: failed to connect to any daemons"

alejandro@miserver:~$ vtysh -d bgpd
Exiting: failed to connect to any daemons.

alejandro@miserver:~$ vtysh 
Exiting: failed to connect to any daemons.


Solucion:
  La solución es agregar al usuario con el que ejecutas vtysh al grupo quagga, para ello edita el archivo /etc/group.
  La linea en /etc/group debe quedar algo asi:

quagga:x:1003:alejandro

puedes especificar varios haciendo:

quagga:x:1003:alejandro, john


  Lo anterior es necesario porque la conexión a los demonios de quagga los realiza con UNIX domain socket y no todos los usuarios tienen acceso a dichos sockets.

Otra solución:
  Otra solución puede ser durante la compilación especificar el grupo para la creación de los sockets pasando lo siguiente durante el configure:

./configure --enable-vty-group=group

 


  Suerte, espero haya sido útil,






martes, 9 de diciembre de 2014

Python Script: Probably useless but functional IPv6 Network scanner

Below is the code of what is probably useless but a functional IPv6 host scanner written in Python using threading.

To perform a regular (brute force) network scans in an IPv6 Network is almost impossible and it can take over 5.000 years to finish.

This project was purely academic and I just wanted to learn about threading in Python.

This software is not recommended for general usage.....

This  script  will call the OS to actually perform the ping

This software receives two parameters:
a) Prefix to scan in the format 2001:db8::/64 (subnet, not host)
b) Number of simultaneous processes it can run (MAXPINGS)

One more time it was purely academic stuff but hopefully it can make your day

Finally, AFAIK nmap does not yet support IPv6 network scan.

The code was written in python3:

--- cut here ---

#!/usr/bin/python3

import threading
import sys
import ipaddress
import subprocess
import time

CURRENTPINGS=0 # Number of simultaneous ping at a time

def DOPING6(IPv6ADDRESS):
  global MAXPINGS, CURRENTPINGS
  CURRENTPINGS+=1
  CMD="ping6 -c 3 "+str(IPv6ADDRESS) + " 2> /dev/null > /dev/null"
  return_code = subprocess.call(CMD, shell=True)
  if return_code == 0:  #If ping was succesful
    print (IPv6ADDRESS," is alive")

  CURRENTPINGS-=1

def main():
  global MAXPINGS, CURRENTPINGS
  if len(sys.argv) != 3: #Validate how many parameters we are receiving
    print("  Not enough or too many parameter")
    print("  Usage: ./scanipv6.py IPv6Prefix/lenght MAXPINGS")
    print("  Example: ./scanipv6.py 2001:db8::/64 20")
    print("  Prefix lenght can be between 64-128")
    print("  MAXPINGS corresponds to how many pings will be running at the same time")
    exit()

  SUBNET,MASK=sys.argv[1].split("/")
  MAXPINGS=int(sys.argv[2])

  for addr in ipaddress.IPv6Network(sys.argv[1]):  #Let's loop for each address in the Block
    ping_thread=threading.Thread(target=DOPING6,args=(addr,))

    while CURRENTPINGS >= MAXPINGS: # With this while we make it possible to run max simultaneous pings
      time.sleep(1)  # Let's wait one second before proceeding
      #print ("Interrumping...., CURRENTPINGS > MAXPINGS") #Uncomment this line just for debugging

    ping_thread.start()

main()

viernes, 31 de diciembre de 2010

Bind / Syslog / Logrotate

Situacion:
Deseo que Bind envie los logs a traves de Syslog y luego rotarlos diariamente con logrotate.

Solucion:
Para lograr que Bind envie sus logs a traves de Syslog recomiendo seguir los siguientes pasos:

1) Definir un nuevo facility en /etc/syslog.conf el cual utilizaremos como "canal" dentro de Bind. Esto es muy conveniente para tener un unico archivo con solo informacion relevante sobre DNS y Bind. Para definir el facility coloca lo siguiente dentro de /etc/syslog.conf

local7.* -/var/log/bind.log

NOTA: Recuerda que puedes definir desde local0 hasta local7 facities segun tu necesidad

2) Luego en Bind se le va a indicar que utilice el facity local7 y guarde los logs de query (en mi caso es lo unico que necesito, se puede almacenar gran cantidad de logs referentes a otros temas como: lame servers, dnssec, xfer y mucho mas). Ademas de almacenar el query deseo que se escriba la fecha y hora del query DNS. En /etc/named.conf (seccion de options) agrega:

logging {
channel query.log {
severity debug 3;
print-time yes;
syslog local7;
};
category queries { query.log; };
};

3) Debido al tamano del logs, posteriormente tuve la necesidad de rotarlo de manera diaria pero antes deseo realizar la rotacion deseaba ejecutar un script para un proceso puntual. Para ello hice la siguiente configuracion en logrotate. Para este punto editar el archivo /etc/logrotate.d/bind y anadir:

/var/log/bind.log {
daily
prerotate
/root/SCRIPTS/dnsqueries.sh
endscript
missingok
rotate 4
compress
create
}

Con este paso, el archivo /var/log/bind.log se rotara automaticamente de manera diaria pero antes se ejecutara el script /root/SCRIPTS/dnsqueries.sh.

Mas informacion:
http://zytrax.com/books/dns/ch7/logging.html (DNS Bind Logging)
http://doc.novsu.ac.ru/oreilly/tcpip/puis/ch10_05.htm (The Unix system log)

Suerte, espero haya sido util,

lunes, 25 de octubre de 2010

Recuperar la clave en AIX. RS/6000

Notas:
Este procedimiento fue probado en un servidor IBM RS/6000

Pasos:

1) Arranca el sistema de manera normal con un CD de la misma version y LEVEL de la cual deseas recuperar el password

2) Puedes seleccion como tipos de arranque:
- Arranque de CD-ROM
- NON_AUTOINSTALL mksysb
- Instalación de cinta de arranque

3 Siga las instrucciones: -
- Tipo 1 para seleccionar el terminal como consola del sistema
- Elija Inglés como idioma de instalación
- El Menú de Bienvenida deberia aparecer

4. Seleccione "Start Maintenance Mode for System Recovery" (opción 3)

5. La siguiente pantalla muestra mensajes para el menú de mantenimiento
Seleccione la opción 1:
Acceder a un grupo de volúmenes raíz (Access a Root Volume group)

6. La siguiente pantalla muestra un mensaje de advertencia y le pide que seleccione 0 para continuar.
Seleccione 0:
0 Continue

7. La siguiente pantalla le pide que seleccione el grupo de volúmenes adecuados. Seleccione el grupo de volúmenes adecuados para
su máquina.

8. La consola mostrará información sobre rootvg y un menú con dos opciones.
Seleccione la opción 1:
Access this volume group and start a shell
The system will show " Importing volume group......" and other info. Wait for the prompt to
appear


10. Al ejecutar el símbolo del sistema de contraseña de la línea de comandos:
password
changing password for "root"
root's new password:
Enter the new password again:


11. Sacar el CD de la unidad y ejecutar:
sync; sync; sync; reboot

12. Espere que el sistema se reinicie, si el tiempo es muy largo, apagar y prender. Inicia la sesión como root y poner a prueba la nueva contraseña.

viernes, 5 de junio de 2009

Tips de Seguridad para Linux

A la hora de instalar un Servidor en Linux, el paso del tiempo me ha dado ciertas experiencia a la hora de ajustar politicas de seguridad. Muchas de ellas van a ayudar a que nuestro servidor se encuentre mas seguro.

A continuacion, comparto varias de las politicas que siempre mantengo en mente a la hora de configurar un servidor.

Siempre despues de instalar un servidor, aprovecho para hacer estos cambios.

1) Con el comando chkconfig, elimino los siguientes daemons:
ppp, bind9 ( a menos que sea un servidor DNS), lwresd, portmap, exim4, netatalk, samba, fam, nfs-common, atd, apache2.

E inclusive, sino son necesarios, los elimino

2) Me aseguro de que el siguiente parametro este en el archivo /etc/security/limits.conf

* hard core 0

3) Asegurarse tambien de que las siguientes lineas esten en el archivo /etc/pam.d/login

session required /lib/security/pam_limits.so

4) Comento la siguiente linea en el archivo /etc/inittab

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

ejm:

#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

5) Las claves deben de expirar cada 90 dias, esto se hace editando el siguiente parametro en /etc/logins.def

MASS_MAX_DAYS 90

6) Elimino las siguientes cuentas (/etc/passwd, /etc/shadow)

games, lp, news, uucp, proxy, irc, gnats, list


7)Cambio el shell por defecto de los siguientes usuarios a /bin/false
bin, daemon, mail, nobody, sync, sys

8) Elimino cualquier informacion que contengan los archivos

/etc/issue
/etc/issue.net

9)Todo los ejecutables que tenga el setuid y setgid, por defecto, ninguno puede ser escrito por el grupo "others"

find / -perm -4000 -exec ls -l {} \;
find / -perm -2000 -exec ls -l {} \;

Ejm
-rwsr-xr-x 1 root root 31640 2008-11-22 11:01 /usr/bin/passwd
||



9) Modifico el parametro a continuacion en el archivo /etc/login.defs:

LOGIN_RETRIES 3

( crear el archivo /var/log/faillog para grabar todo los intentos de acceso)

10) Editamos el archivo /etc/pam.d/common-password y nos aseguramos de que la opcion min=8 este en la configuracion de pam_unix


Estos tips van a ayudar de cierta manera a asegurar el servidor, mas adelante, colocare unas herramientas que van a ayudarnos a realizar tareas sobre el sistema y verificar la integridad del mismo.

viernes, 1 de mayo de 2009

Instalar Mandriva sin unidad de CD

En esta oportunidad voy a explicar el procedimiento de instalacion de Linux Mandriva en un equipo sin utilizar unidad de CDROM. En dos oportunidades me ha ocurrido que necesidad de cambiar el Mandriva de mi Laptop sin embargo no tengo el CD de instalacion a la mano y no quiero ir a un sitio a comprar un CD en blanco y luego quemar el iso.

El procedimiento indicado aqui es un extracto, adaptacion y traduccion de una excelente referencia que consegui en: http://wiki.mandriva.com/en/Docs/Installing_Mandriva_Linux#Booting_the_installer_direct_from_a_hard_disk_-_Linux_method

Por ello la siguiente explicacion:

Primero, en el linux actual bajar el ISO de mandriva de cualquier repositorio en Internet. Por favor bajarlo en una particion que durante la instalacion no sea necesario formatear (por ejemplo NO bajarlo en /). Adicionalmente debes recordar el directorio donde lo bajaste y a que particion pertenece (sda3, hda2, etc)

Posteriormente es necesario extraer dos archivos del iso bajado, para ello es necesario montar el iso como loop. El comando es similar al siguiente:

mkdir /mnt/iso
mount -t iso9660 -o ro,loop /home/mandriva2009.iso /mnt/iso

Luego vamos a copiar al directorio /boot los siguientes archivos. Personalmente prefiero cambiar el nombre durante la copia:

cp /mnt/iso/x86_64/isolinux/alt0/allnew.rdz /boot/allnew.rdz
cp /mnt/iso/x86_64/isolinux/alt0/vmlinuz /boot/vmlinuznew

Es importante que identifiques correctamente tu arquitectura (i586 o x64).

Posteriormente es necesario indicarle a tu boot-loader (grub o lilo) la existencia de dichos archivos. En mi caso quedo de la siguiente manera utilizando grub:

title mandriva2009
kernel (hd0,0)/boot/vmlinuznew root=/dev/ram3 ramdisk_size=32000 vga=791
initrd (hd0,0)/boot/allnew.rdz

Para prevenir cualquier error recomiendo que utilicen una entrada ya existente y te bases en ella unicamente cambiando los nombre de kernel e initrd.

Voila!.., reinicia tu equipo y escoje mandriva2009 al momento del arranque y sigue el procedimiento de instalacion.

Suerte!.

Una mejora práctica en el Transporte DNS sobre UDP en IPv6

Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...