Configuracion de Servicios de Red

En este enlace podras encontrar varios archivos para configurar tu red

Cisco y Algo mas...

2 Articulos de cisco y uno de como manejar el estres recuerda que mucho trabajo sin descanso no es bueno

Fuego de Dios

El Motor que nos impulsa a hacer grandes cosas en nuestras vidas y cambiar una sociedad.

CRS-3 Lo Nuevo de Cisco

...A la Espera de Zettabyte

Para mayor informacion

No te olvides de contactarnos.

miércoles, 8 de octubre de 2014

Recuperar Contraseña root en Centos

Generalmente coloco entradas cuando he pasado algo complicado en el trabajo y logre conseguir una solución factible, esta es con software libre , y es en la distribución de Centos, realmente no he trabajado con ese sistema operativo, pero una de las compañeras logro instalar en uno de los servidores y no se pudo configurar o no se acordó de la clave de root, el cual tuvimos que volar, pero ya que conseguí muchos documento para cambiar la clave, pero debes ejecutar los comando en modo root, y lo que queríamos hacer era un recovery password, lo que voy a describir a continuación.

Procedimiento: Solo seguimos los siguientes pasos:

1.- Reiniciar la PC.



2.- Al cargar GRUB para escoger el sistema operativo, nos colocamos en la que corresponde a nuestra distribución y pulsamos la tecla “e” para entrar al modo de edición.







3.- En la siguiente ventana veremos varias líneas, que son los argumentos con los que inicia el sistema, nos colocamos en la que dice “kernel” y pulsamos “e” para editarla.









4.- En la siguiente ventana al final de la línea separamos con un espacio en blanco y escribimos “single” ó “1”, para ingresar al modo monousuario, pulsamos ENTER para ingresar.






5.- Otra vez nos colocamos sobre la línea del “kernel” y pulsamos “b” para iniciar el sistema.





6.- Una vez que estamos en el modo monousuario ejecutamos el comando passwd, para cambiar la contraseña. Finalmente reiniciamos el sistema para que haga efecto el cambio ejecutamos “reboot”.








Tan fácil como cisco!!! jajajaja entrada cortesía de Johana Uray




PD:los comando fueron probados con exito...

jueves, 2 de octubre de 2014

Linux Full Comando






Se que le había comentado que iba a presentar nuevos post con información de cisco o Zettabyte, pero no podía pasar por alto unos comandos para linux en algunas de sus versiones, me pareció muy buena porque tiene los comandos organizados por secciones, y lo hago mas que todo para que al momento de necesitar algún comando especifico lo pueda buscar por mi blog... es cuestión de comodidad, de igual forma le advierto no he probado todos estos comando, queda a su riesgo el uso de cada uno de ellos.



Información del sistema

arch: mostrar la arquitectura de la máquina (1).
uname -m: mostrar la arquitectura de la máquina (2).
uname -r: mostrar la versión del kernel usado.shutdown -h hours:minutes &: 
dmidecode -q: mostrar los componentes (hardware) del sistema.
hdparm -i /dev/hda: mostrar las características de un disco duro.
hdparm -tT /dev/sda: realizar prueba de lectura en un disco duro.
cat /proc/cpuinfo: mostrar información de la CPU.
cat /proc/interrupts: mostrar las interrupciones.
cat /proc/meminfo: verificar el uso de memoria.
cat /proc/swaps: mostrar ficheros swap.
cat /proc/version: mostrar la versión del kernel.
cat /proc/net/dev: mostrar adaptadores de red y estadísticas.
cat /proc/mounts: mostrar el sistema de ficheros montado.
lspci -tv: mostrar los dispositivos PCI.
lsusb -tv: mostrar los dispositivos USB.
date: mostrar la fecha del sistema.
cal 2011: mostrar el almanaque de 2011.
cal 07 2011: mostrar el almanaque para el mes julio de 2011.
date 041217002011.00: colocar (declarar, ajustar) fecha y hora.
clock -w: guardar los cambios de fecha en la BIOS.

Apagar (Reiniciar Sistema o Cerrar Sesión)

shutdown -h now: apagar el sistema (1).
init 0: apagar el sistema (2).
telinit 0: apagar el sistema (3).
halt: apagar el sistema (4).
shutdown -h hours:minutes &: apagado planificado del sistema.
shutdown -c: cancelar un apagado planificado del sistema.
shutdown -r now: reiniciar (1).
reboot: reiniciar (2).
logout: cerrar sesión.

Archivos y Directorios

cd /home: entrar en el directorio “home”.
cd ..: retroceder un nivel.
cd ../..: retroceder 2 niveles.
cd: ir al directorio raíz.
cd ~user1: ir al directorio user1.
cd -: ir (regresar) al directorio anterior.
pwd: mostrar el camino del directorio de trabajo.
ls: ver los ficheros de un directorio.
ls -F: ver los ficheros de un directorio.
ls -l: mostrar los detalles de ficheros y carpetas de un directorio.
ls -a: mostrar los ficheros ocultos.
ls *[0-9]*: mostrar los ficheros y carpetas que contienen números.
tree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
lstree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
mkdir dir1: crear una carpeta o directorio con nombre ‘dir1′.
mkdir dir1 dir2: crear dos carpetas o directorios simultáneamente (Crear dos directorios a la vez).
mkdir -p /tmp/dir1/dir2: crear un árbol de directorios.
rm -f file1: borrar el fichero llamado ‘file1′.
rmdir dir1: borrar la carpeta llamada ‘dir1′.
rm -rf dir1: eliminar una carpeta llamada ‘dir1′ con su contenido de forma recursiva. (Si lo borro recursivo estoy diciendo que es con su contenido).
rm -rf dir1 dir2: borrar dos carpetas (directorios) con su contenido de forma recursiva.
mv dir1 new_dir: renombrar o mover un fichero o carpeta (directorio).
cp file1: copiar un fichero.
cp file1 file2: copiar dos ficheros al unísono.
cp dir /* .: copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
cp -a /tmp/dir1 .: copiar un directorio dentro del directorio actual de trabajo.
cp -a dir1: copiar un directorio.
cp -a dir1 dir2: copiar dos directorio al unísono.
ln -s file1 lnk1: crear un enlace simbólico al fichero o directorio.
ln file1 lnk1: crear un enlace físico al fichero o directorio.
touch -t 0712250000 file1: modificar el tiempo real (tiempo de creación) de un fichero o directorio.
file file1: salida (volcado en pantalla) del tipo mime de un fichero texto.
iconv -l: listas de cifrados conocidos.
iconv -f fromEncoding -t toEncoding inputFile > outputFile: crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert ”{}” -resize 80×60 “thumbs/{}” \;: agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde ImagemagicK).

Encontrar archivos

find / -name file1: buscar fichero y directorio a partir de la raíz del sistema.
find / -user user1: buscar ficheros y directorios pertenecientes al usuario ‘user1′.
find /home/user1 -name \*.bin: buscar ficheros con extensión ‘. bin’ dentro del directorio ‘/ home/user1′.
find /usr/bin -type f -atime +100: buscar ficheros binarios no usados en los últimos 100 días.
find /usr/bin -type f -mtime -10: buscar ficheros creados o cambiados dentro de los últimos 10 días.
find / -name \*.rpm -exec chmod 755 ‘{}’ \;: buscar ficheros con extensión ‘.rpm’ y modificar permisos.
find / -xdev -name \*.rpm: Buscar ficheros con extensión ‘.rpm’ ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
locate \*.ps: encuentra ficheros con extensión ‘.ps’ ejecutados primeramente con el command ‘updatedb’.
whereis halt: mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando ‘halt’.
which halt: mostrar la senda completa (el camino completo) a un binario / ejecutable.

Montando un sistema de ficheros

mount /dev/hda2 /mnt/hda2: montar un disco llamado hda2. Verifique primero la existencia del directorio ‘/ mnt/hda2′; si no está, debe crearlo.
umount /dev/hda2: desmontar un disco llamado hda2. Salir primero desde el punto ‘/ mnt/hda2.
fuser -km /mnt/hda2: forzar el desmontaje cuando el dispositivo está ocupado.
umount -n /mnt/hda2: correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
mount /dev/fd0 /mnt/floppy: montar un disco flexible (floppy).
mount /dev/cdrom /mnt/cdrom: montar un cdrom / dvdrom.
mount /dev/hdc /mnt/cdrecorder: montar un cd regrabable o un dvdrom.
mount /dev/hdb /mnt/cdrecorder: montar un cd regrabable / dvdrom (un dvd).
mount -o loop file.iso /mnt/cdrom: montar un fichero o una imagen iso.
mount -t vfat /dev/hda5 /mnt/hda5: montar un sistema de ficheros FAT32.
mount /dev/sda1 /mnt/usbdisk: montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).

Espacio de Disco

df -h: mostrar una lista de las particiones montadas.
ls -lSr |more: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
du -sh dir1: Estimar el espacio usado por el directorio ‘dir1′.
du -sk * | sort -rn: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes instalados, organizados por tamaño (Ubuntu, Debian y otros).

Usuarios y Grupos

groupadd nombre_del_grupo: crear un nuevo grupo.
groupdel nombre_del_grupo: borrar un grupo.
groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo: renombrar un grupo.
useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1: Crear un nuevo usuario perteneciente al grupo “admin”.
useradd user1: crear un nuevo usuario.
userdel -r user1: borrar un usuario (‘-r’ elimina el directorio Home).
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1: cambiar los atributos del usuario.
passwd: cambiar contraseña.
passwd user1: cambiar la contraseña de un usuario (solamente por root).
chage -E 2011-12-31 user1: colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
pwck: chequear la sintaxis correcta el formato de fichero de ‘/etc/passwd’ y la existencia de usuarios.
grpck: chequear la sintaxis correcta y el formato del fichero ‘/etc/group’ y la existencia de grupos.
newgrp group_name: registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.

Permisos en Ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

ls -lh: Mostrar permisos.
ls /tmp | pr -T5 -W$COLUMNS: dividir la terminal en 5 columnas.
chmod ugo+rwx directory1: colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio ‘directory1′.
chmod go-rwx directory1: quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio ‘directory1′.
chown user1 file1: cambiar el dueño de un fichero.
chown -R user1 directory1: cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
chgrp group1 file1: cambiar grupo de ficheros.
chown user1:group1 file1: cambiar usuario y el grupo propietario de un fichero.
find / -perm -u+s: visualizar todos los ficheros del sistema con SUID configurado.
chmod u+s /bin/file1: colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
chmod u-s /bin/file1: deshabilitar el bit SUID en un fichero binario.
chmod g+s /home/public: colocar un bit SGID en un directorio –similar al SUID pero por directorio.
chmod g-s /home/public: desabilitar un bit SGID en un directorio.
chmod o+t /home/public: colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
chmod o-t /home/public: desabilitar un bit STIKY en un directorio.
Atributos especiales en ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)
chattr +a file1: permite escribir abriendo un fichero solamente modo append.
chattr +c file1: permite que un fichero sea comprimido / descomprimido automaticamente.
chattr +d file1: asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
chattr +i file1: convierte el fichero en invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
chattr +s file1: permite que un fichero sea borrado de forma segura.
chattr +S file1: asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
chattr +u file1: te permite recuperar el contenido de un fichero aún si este está cancelado.
lsattr: mostrar atributos especiales.
Archivos y Ficheros comprimidos
bunzip2 file1.bz2: descomprime in fichero llamado ‘file1.bz2′.
bzip2 file1: comprime un fichero llamado ‘file1′.
gunzip file1.gz: descomprime un fichero llamado ‘file1.gz’.
gzip file1: comprime un fichero llamado ‘file1′.
gzip -9 file1: comprime con compresión máxima.
rar a file1.rar test_file: crear un fichero rar llamado ‘file1.rar’.
rar a file1.rar file1 file2 dir1: comprimir ‘file1′, ‘file2′ y ‘dir1′ simultáneamente.
rar x file1.rar: descomprimir archivo rar.
unrar x file1.rar: descomprimir archivo rar.
tar -cvf archive.tar file1: crear un tarball descomprimido.
tar -cvf archive.tar file1 file2 dir1: crear un archivo conteniendo ‘file1′, ‘file2′ y’dir1′.
tar -tf archive.tar: mostrar los contenidos de un archivo.
tar -xvf archive.tar: extraer un tarball.
tar -xvf archive.tar -C /tmp: extraer un tarball en / tmp.
tar -cvfj archive.tar.bz2 dir1: crear un tarball comprimido dentro de bzip2.
tar -xvfj archive.tar.bz2: descomprimir un archivo tar comprimido en bzip2
tar -cvfz archive.tar.gz dir1: crear un tarball comprimido en gzip.
tar -xvfz archive.tar.gz: descomprimir un archive tar comprimido en gzip.
zip file1.zip file1: crear un archivo comprimido en zip.
zip -r file1.zip file1 file2 dir1: comprimir, en zip, varios archivos y directorios de forma simultánea.
unzip file1.zip: descomprimir un archivo zip.

Paquetes RPM (Red Hat, Fedora y similares)

rpm -ivh package.rpm: instalar un paquete rpm.
rpm -ivh –nodeeps package.rpm: instalar un paquete rpm ignorando las peticiones de dependencias.
rpm -U package.rpm: actualizar un paquete rpm sin cambiar la configuración de los ficheros.
rpm -F package.rpm: actualizar un paquete rpm solamente si este está instalado.
rpm -e package_name.rpm: eliminar un paquete rpm.
rpm -qa: mostrar todos los paquetes rpm instalados en el sistema.
rpm -qa | grep httpd: mostrar todos los paquetes rpm con el nombre “httpd”.
rpm -qi package_name: obtener información en un paquete específico instalado.
rpm -qg “System Environment/Daemons”: mostar los paquetes rpm de un grupo software.
rpm -ql package_name: mostrar lista de ficheros dados por un paquete rpm instalado.
rpm -qc package_name: mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
rpm -q package_name –whatrequires: mostrar lista de dependencias solicitada para un paquete rpm.
rpm -q package_name –whatprovides: mostar la capacidad dada por un paquete rpm.
rpm -q package_name –scripts: mostrar los scripts comenzados durante la instalación /eliminación.
rpm -q package_name –changelog: mostar el historial de revisions de un paquete rpm.
rpm -qf /etc/httpd/conf/httpd.conf: verificar cuál paquete rpm pertenece a un fichero dado.
rpm -qp package.rpm -l: mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
rpm –import /media/cdrom/RPM-GPG-KEY: importar la firma digital de la llave pública.
rpm –checksig package.rpm: verificar la integridad de un paquete rpm.
rpm -qa gpg-pubkey: verificar la integridad de todos los paquetes rpm instalados.
rpm -V package_name: chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
rpm -Va: chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
rpm -Vp package.rpm: verificar un paquete rpm no instalado todavía.
rpm2cpio package.rpm | cpio –extract –make-directories *bin*: extraer fichero ejecutable desde un paquete rpm.
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm: instalar un paquete construido desde una fuente rpm.
rpmbuild –rebuild package_name.src.rpm: construir un paquete rpm desde una fuente rpm.

Actualizador de paquetes YUM (Red Hat, Fedora y similares)

yum install package_name: descargar e instalar un paquete rpm.
yum localinstall package_name.rpm: este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
yum update package_name.rpm: actualizar todos los paquetes rpm instalados en el sistema.
yum update package_name: modernizar / actualizar un paquete rpm.
yum remove package_name: eliminar un paquete rpm.
yum list: listar todos los paquetes instalados en el sistema.
yum search package_name: Encontrar un paquete en repositorio rpm.
yum clean packages: limpiar un caché rpm borrando los paquetes descargados.
yum clean headers: eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
yum clean all: eliminar desde los paquetes caché y ficheros de encabezado.

Paquetes Deb (Debian, Ubuntu y derivados)

dpkg -i package.deb: instalar / actualizar un paquete deb.
dpkg -r package_name: eliminar un paquete deb del sistema.
dpkg -l: mostrar todos los paquetes deb instalados en el sistema.
dpkg -l | grep httpd: mostrar todos los paquetes deb con el nombre “httpd”
dpkg -s package_name: obtener información en un paquete específico instalado en el sistema.
dpkg -L package_name: mostar lista de ficheros dados por un paquete instalado en el sistema.
dpkg –contents package.deb: mostrar lista de ficheros dados por un paquete no instalado todavía.
dpkg -S /bin/ping: verificar cuál paquete pertenece a un fichero dado.

Actualizador de paquetes APT (Debian, Ubuntu y derivados)

apt-get install package_name: instalar / actualizar un paquete deb.
apt-cdrom install package_name: instalar / actualizar un paquete deb desde un cdrom.
apt-get update: actualizar la lista de paquetes.
apt-get upgrade: actualizar todos los paquetes instalados.
apt-get remove package_name: eliminar un paquete deb del sistema.
apt-get check: verificar la correcta resolución de las dependencias.
apt-get clean: limpiar cache desde los paquetes descargados.
apt-cache search searched-package: retorna lista de paquetes que corresponde a la serie «paquetes buscados».

Ver el contenido de un fichero

cat file1: ver los contenidos de un fichero comenzando desde la primera hilera.
tac file1: ver los contenidos de un fichero comenzando desde la última línea.
more file1: ver el contenido a lo largo de un fichero.
less file1: parecido al commando ‘more’ pero permite salvar el movimiento en el fichero así como el movimiento hacia atrás.
head -2 file1: ver las dos primeras líneas de un fichero.
tail -2 file1: ver las dos últimas líneas de un fichero.
tail -f /var/log/messages: ver en tiempo real qué ha sido añadido al fichero.

Manipulación de texto

cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txt: sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
cat file1 | command( sed, grep, awk, grep, etc…) > result.txt: sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
cat file1 | command( sed, grep, awk, grep, etc…) » result.txt: sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
grep Aug /var/log/messages: buscar palabras “Aug” en el fichero ‘/var/log/messages’.
grep ^Aug /var/log/messages: buscar palabras que comienzan con “Aug” en fichero ‘/var/log/messages’
grep [0-9] /var/log/messages: seleccionar todas las líneas del fichero ‘/var/log/messages’ que contienen números.
grep Aug -R /var/log/*: buscar la cadena “Aug” en el directorio ‘/var/log’ y debajo.
sed ‘s/stringa1/stringa2/g’ example.txt: reubicar “string1” con “string2” en ejemplo.txt
sed ‘/^$/d’ example.txt: eliminar todas las líneas en blanco desde el ejemplo.txt
sed ‘/ *#/d; /^$/d’ example.txt: eliminar comentarios y líneas en blanco de ejemplo.txt
echo ‘esempio’ | tr ‘[:lower:]‘ ‘[:upper:]‘: convertir minúsculas en mayúsculas.
sed -e ‘1d’ result.txt: elimina la primera línea del fichero ejemplo.txt
sed -n ‘/stringa1/p’: visualizar solamente las líneas que contienen la palabra “string1”.

Establecer caracter y conversión de ficheros

dos2unix filedos.txt fileunix.txt: convertir un formato de fichero texto desde MSDOS a UNIX.
unix2dos fileunix.txt filedos.txt: convertir un formato de fichero de texto desde UNIX a MSDOS.
recode ..HTML < page.txt > page.html: convertir un fichero de texto en html.
recode -l | more: mostrar todas las conversiones de formato disponibles.
Análisis del sistema de ficheros
badblocks -v /dev/hda1: Chequear los bloques defectuosos en el disco hda1.
fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
fsck.ext2 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
e2fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
e2fsck -j /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
fsck.ext3 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
fsck.vfat /dev/hda1: reparar / chequear la integridad del fichero sistema fat en el disco hda1.
fsck.msdos /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
dosfsck /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.

Formatear un sistema de ficheros

mkfs /dev/hda1: crear un fichero de sistema tipo Linux en la partición hda1.
mke2fs /dev/hda1: crear un fichero de sistema tipo Linux ext 2 en hda1.
mke2fs -j /dev/hda1: crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
mkfs -t vfat 32 -F /dev/hda1: crear un fichero de sistema FAT32 en hda1.
fdformat -n /dev/fd0: formatear un disco flooply.
mkswap /dev/hda3: crear un fichero de sistema swap.
Trabajo con la SWAP
mkswap /dev/hda3: crear fichero de sistema swap.
swapon /dev/hda3: activando una nueva partición swap.
swapon /dev/hda2 /dev/hdb3: activar dos particiones swap.

Respaldos (Backup)

dump -0aj -f /tmp/home0.bak /home: hacer una salva completa del directorio ‘/home’.
dump -1aj -f /tmp/home0.bak /home: hacer una salva incremental del directorio ‘/home’.
restore -if /tmp/home0.bak: restaurando una salva interactivamente.
rsync -rogpav –delete /home /tmp: sincronización entre directorios.
rsync -rogpav -e ssh –delete /home ip_address:/tmp: rsync a través del túnel SSH.
rsync -az -e ssh –delete ip_addr:/home/public /home/local: sincronizar un directorio local con un directorio remoto a través de ssh y de compresión.
rsync -az -e ssh –delete /home/local ip_addr:/home/public: sincronizar un directorio remoto con un directorio local a través de ssh y de compresión.
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’: hacer una salva de un disco duro en un host remoto a través de ssh.
dd if=/dev/sda of=/tmp/file1: salvar el contenido de un disco duro a un fichero. (En este caso el disco duro es “sda” y el fichero “file1”).
tar -Puf backup.tar /home/user: hacer una salva incremental del directorio ‘/home/user’.
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’: copiar el contenido de un directorio en un directorio remoto a través de ssh.
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’: copiar un directorio local en un directorio remoto a través de ssh.
tar cf – . | (cd /tmp/backup ; tar xf – ): copia local conservando las licencias y enlaces desde un directorio a otro.
find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents: encontrar y copiar todos los ficheros con extensión ‘.txt’ de un directorio a otro.
find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2: encontrar todos los ficheros con extensión ‘.log’ y hacer un archivo bzip.
dd if=/dev/hda of=/dev/fd0 bs=512 count=1: hacer una copia del MRB (Master Boot Record) a un disco floppy.
dd if=/dev/fd0 of=/dev/hda bs=512 count=1: restaurar la copia del MBR (Master Boot Record) salvada en un floppy.
CD-ROM
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force: limpiar o borrar un cd regrabable.
mkisofs /dev/cdrom > cd.iso: crear una imagen iso de cdrom en disco.
mkisofs /dev/cdrom | gzip > cd_iso.gz: crear una imagen comprimida iso de cdrom en disco.
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd: crear una imagen iso de un directorio.
cdrecord -v dev=/dev/cdrom cd.iso: quemar una imagen iso.
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -: quemar una imagen iso comprimida.
mount -o loop cd.iso /mnt/iso: montar una imagen iso.
cd-paranoia -B: llevar canciones de un cd a ficheros wav.
cd-paranoia – ”-3”: llevar las 3 primeras canciones de un cd a ficheros wav.
cdrecord –scanbus: escanear bus para identificar el canal scsi.
dd if=/dev/hdc | md5sum: hacer funcionar un md5sum en un dispositivo, como un CD.

Trabajo con la RED ( LAN y Wi-Fi)

ifconfig eth0: mostrar la configuración de una tarjeta de red Ethernet.
ifup eth0: activar una interface ‘eth0′.
ifdown eth0: deshabilitar una interface ‘eth0′.
ifconfig eth0 192.168.1.1 netmask 255.255.255.0: configurar una dirección IP.
ifconfig eth0 promisc: configurar ‘eth0’en modo común para obtener los paquetes (sniffing).
dhclient eth0: activar la interface ‘eth0′ en modo dhcp.
route -n: mostrar mesa de recorrido.
route add -net 0/0 gw IP_Gateway: configurar entrada predeterminada.
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1: configurar ruta estática para buscar la red ‘192.168.0.0/16′.
route del 0/0 gw IP_gateway: eliminar la ruta estática.
echo “1” > /proc/sys/net/ipv4/ip_forward: activar el recorrido ip.
hostname: mostrar el nombre del host del sistema.
host www.example.com: buscar el nombre del host para resolver el nombre a una dirección ip(1).
nslookup www.example.com: buscar el nombre del host para resolver el nombre a una direccióm ip y viceversa(2).
ip link show: mostar el estado de enlace de todas las interfaces.
mii-tool eth0: mostar el estado de enlace de ‘eth0′.
ethtool eth0: mostrar las estadísticas de tarjeta de red ‘eth0′.
netstat -tup: mostrar todas las conexiones de red activas y sus PID.
netstat -tupl: mostrar todos los servicios de escucha de red en el sistema y sus PID.
tcpdump tcp port 80: mostrar todo el tráfico HTTP.
iwlist scan: mostrar las redes inalámbricas.
iwconfig eth1: mostrar la configuración de una tarjeta de red inalámbrica.
whois www.example.com: buscar en base de datos Whois.

Redes de Microsoft Windows (SAMBA)

nbtscan ip_addr: resolución de nombre de red bios.
nmblookup -A ip_addr: resolución de nombre de red bios.
smbclient -L ip_addr/hostname: mostrar acciones remotas de un host en windows.

Tablas IP (CORTAFUEGOS)

iptables -t filter -L: mostrar todas las cadenas de la tabla de filtro.
iptables -t nat -L: mostrar todas las cadenas de la tabla nat.
iptables -t filter -F: limpiar todas las reglas de la tabla de filtro.
iptables -t nat -F: limpiar todas las reglas de la tabla nat.
iptables -t filter -X: borrar cualquier cadena creada por el usuario.
iptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT: permitir las conexiones telnet para entar.
iptables -t filter -A OUTPUT -p tcp –dport http -j DROP: bloquear las conexiones HTTP para salir.
iptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT: permitir las conexiones POP a una cadena delantera.
iptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT”: registrando una cadena de entrada.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE: configurar un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22: redireccionar los paquetes diriguidos de un host a otro.

Monitoreando y depurando

top: mostrar las tareas de linux usando la mayoría cpu.
ps -eafw: muestra las tareas Linux.
ps -e -o pid,args –forest: muestra las tareas Linux en un modo jerárquico.
pstree: mostrar un árbol sistema de procesos.
kill -9 ID_Processo: forzar el cierre de un proceso y terminarlo.
kill -1 ID_Processo: forzar un proceso para recargar la configuración.
lsof -p $: mostrar una lista de ficheros abiertos por procesos.
lsof /home/user1: muestra una lista de ficheros abiertos en un camino dado del sistema.
strace -c ls >/dev/null: mostrar las llamadas del sistema hechas y recibidas por un proceso.
strace -f -e open ls >/dev/null: mostrar las llamadas a la biblioteca.
watch -n1 ‘cat /proc/interrupts’: mostrar interrupciones en tiempo real.
last reboot: mostrar historial de reinicio.
lsmod: mostrar el kernel cargado.
free -m: muestra el estado de la RAM en megabytes.
smartctl -A /dev/hda: monitorear la fiabilidad de un disco duro a través de SMART.
smartctl -i /dev/hda: chequear si SMART está activado en un disco duro.
tail /var/log/dmesg: mostrar eventos inherentes al proceso de carga del kernel.
tail /var/log/messages: mostrar los eventos del sistema.

Otros comandos útiles

apropos …keyword: mostrar una lista de comandos que pertenecen a las palabras claves de un programa; son útiles cuando tú sabes qué hace tu programa, pero de sconoces el nombre del comando.
man ping: mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar la opción ‘-k’ para encontrar cualquier comando relacionado.
whatis …keyword: muestra la descripción de lo que hace el programa.
mkbootdisk –device /dev/fd0 `uname -r`: crear un floppy boteable.
gpg -c file1: codificar un fichero con guardia de seguridad GNU.
gpg file1.gpg: decodificar un fichero con Guardia de seguridad GNU.
wget -r www.example.com: descargar un sitio web completo.
wget -c www.example.com/file.iso: descargar un fichero con la posibilidad de parar la descargar y reanudar más tarde.
echo ‘wget -c www.example.com/files.iso‘ | at 09:00: Comenzar una descarga a cualquier hora. En este caso empezaría a las 9 horas.
ldd /usr/bin/ssh: mostrar las bibliotecas compartidas requeridas por el programa ssh.
alias hh=’history’: colocar un alias para un commando –hh= Historial.
chsh: cambiar el comando Shell.
chsh –list-shells: es un comando adecuado para saber si tienes que hacer remoto en otra terminal.
who -a: mostrar quien está registrado, e imprimir hora del último sistema de importación, procesos muertos, procesos de registro de sistema, procesos activos producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.

martes, 30 de septiembre de 2014

CRS-3 Carrier Routing System Cisco



Se que no he estado últimamente con ustedes ni he actualizado muchas cosas en el blog, y muchos menos me ha dado tiempo de terminar la edición de la plantilla en HTML que he instalado, pero este tema si que les va a llamar la atención, estuve en un par de entrevistas y codeándome con lo ultimo en plataforma cisco, pude encontrar unos CRS, el cual pienso dedicar esta entrada y al menos unas cuantas mas adelante, lo que he investigado hasta ahora, me ha sorprendido, tal vez sea porque estaba acostumbrado a os básico de Cisco, pero considero que con estos equipos han dado un gran avance, tal vez no sean tan nuevos, pero son sumamente espectaculares.


Podemos empezar con definir que es un CRS (Carrier Routing System) lo podemos definir como el router mas rápido del mundo, Este dispositivo fue presentado como el único capaz de alcanzar una tasa de 322 Terabits por segundo de transferencia. podemos empezar por el CRS-3 y algunas de sus características son: 
  • Escala Sin Igual: Con una probada arquitectura multi chasis, el Cisco CRS-3 puede entregar hasta 322tbps de capacidad, triplicando la capacidad de 92 tbps del Cisco CRS-1 y representando más de 12 veces la capacidad de cualquier otro router core en la industria. 
  • Core único y Centro de Datos/Inteligencia para Servicios en la Nube:Además de los requerimientos en capacidad, el crecimiento de las aplicaciones móviles y de video están creando nuevos patrones de tráfico multi direccionales y la emergencia creciente de la nube de centro de datos. El nuevo Sistema de Centro de Datos de Cisco provee vínculos estrechos entre el Cisco CRS-3, la familia Cisco Nexus y el Sistema de Computación Unificada de Cisco (UCS) para permitir la entrega de servicios unificados de servicios en la nube. Esta inteligencia también incluye las tecnologías de grado carrier IPv6(CGv6) y core IP/MPLS que permiten ahora las nuevas eficiencias arquitectónicas IP NGN requeridas para mantener el ritmo con el crecimiento rápido del mercado de servicios en la nube. Estas capacidades únicas incluyen:
– Sistema de Posicionamiento de Red (NPS) – entrega información de aplicaciones de Capa 3 a 7 para un mejor camino hacia el contenido, mejorando las experiencias de consumidores y de empresas
mientras se reducen los costos.

– Red privada virtual en la nube (VPN) para Infraestructura "como Servicio" (IaaS), permite ‘pay-as-you-go’ para computación, almacenamiento y recursos de red al automatizar las conexiones
Cisco CRS-3 y Cisco Nexus Inter-Data center para Cisco UCS.

  • Innovación en procesador: El Cisco CRS-3 tiene el poder del nuevo Cisco Quantum Flow Array Processor, el cual unifica la energía combinada de seis chips para funcionar como uno, permitiendo niveles sin precedentes en capacidades de servicio y energía de procesamiento. Haciendo que esta implementación sea aun mas especial, es su habilidad de entregar capacidades con una fracción de energía requerida por chipsets de menor rendimiento. El Cisco QuantumFlow Array chipset fue diseñado para proveer al nuevo sistema la habilidad para escalar las demandas crecientes sobre la IP NGN por las diferentes aplicaciones y miles de millones de dispositivos utilizados por empresas y consumidores en la era Zettabyte. 
  • Ahorros Sin Precedentes: El Cisco CRS-3 ofrece fuertes ahorros en gastos operativos y hasta 60 por ciento de ahorro en consumo de energía en comparación con plataformas competitivas. El Cisco CRS-3 también entrega significativos ahorros en gastos de capital y protección de inversión para los actuales clientes Cisco CRS-1. Las nuevas capacidades en la plataforma pueden ser logradas utilizando nuevamente el chasis existente, procesadores de enrutamiento, sistemas de ventilación y energía con la adición de nuevas tarjetas de línea. Estas mejoras pueden ser realizadas en servicio y ser provistas por Servicios de Cisco para asegurar una transición sin problemas.

Comandos Básicos

En la entrada anterior les había prometido una serie de comando básicos para principiantes, y aunque nos son muchos, aquí les dejo unos cuantos comando y una serie de link`s donde pueden aprender un poco mas de comandos de linux. entre los comando básicos podemos comenzar con:

Acceso root

Para realizar ciertos procesos, cómo por ejemplo la instalación de aplicaciones. En algunos casos vamos a tener que usar el comando sudo, el cual nos confiere permisos de administrador del sistema y nos solicita siempre nuestra contraseña para poder ejecutarse.

El comando sudo siempre inicia la linea de comandos a ejecutar.



Instalar aplicaciones

APT (Advance Packagin Tool) es una herramienta de empaquetado de aplicaciones creada por el proyecto Debian, para simplificar la instalación y desinstalación de programas en Linux.

Para instalar aplicaciones en Linux mediante la consola, usamos el comando apt-get. Aunque algunos usuarios prefieren el uso de aptitude: una interfaz para APT que tiene fama de resolver mejor las dependencias que apt-get, y de eliminar paquetes inútiles.

Ejemplo:

sudo apt-get install firefox
o

sudo aptitude install firefox

El comando apt-get también funciona para desinstalar software añadiendo el sufijo remove, y si además añadimos la orden --purge podemos eliminar todos los datos de un programa, para que no quede rastro de él en nuestro sistema.

Ejemplo:

sudo apt-get remove --purge firefox

Añadir repositorios

Los repositorios son paquetes de archivos que se encuentran disponibles en linea y que podemos descargar e instalar en nuestro sistema operativo. Cuando un programa se encuentra en los repositorios oficiales de tu distribución, cómo por ejemplo: Firefox, qué está en todos los repositorios oficiales de Ubuntu, para instalarlo solo debemos usar el comando apt-get cómo explicamos arriba.

Si el programa que deseamos instalar, está en un repositorio de un tercero, antes de poder instalar el paquete debemos añadir el PPA (Personal Package Archive) a nuestros repositorios locales.

Por ejemplo, la versión de GIMP 2.8 que añade el nuevo modo de ventana única no se encuentra en los repositorios de Ubuntu 12.04, así que para poder usarlo debemos añadir el PPA oficial de su creador. En este caso sería: ppa:otto-kesselgulasch/gimp.

Todos los repositorios tienen la misma estructura: ppa:nombredelpaquete. Para añadir un repositorio usamos el comando: sudo add-apt-repository

Ejemplo:

sudo add-apt-repository ppa:otto-kesselgulasch/gimp

Actualizar la lista de paquetes de tu sistema

Cada vez que deseemos comprobar actualizaciones usaremos el comando sudo apt-get update. Lo mismo debemos hacer cada vez que añadimos un nuevo repositorio, para que el sistema pueda obtener los paquetes que este contiene, antes de poder instalarlos.

En el caso del ejemplo que comentamos arriba. Luego de añadir el PPA de Gimp, debemos ejecutar el comando de actualización y entonces ya podremos instalarlo.

Ejemplo:

sudo add-apt-repository ppa:otto-kesselgulasch/gimp
sudo apt-get update
sudo apt-get install gimp


Si lo que queremos es actualizar todos nuestros programas a sus últimas versiones, e instalar las actualizaciones del sistema de manera fácil y rapida, usamos el comando upgrade.

Ejemplo:

sudo apt-get update
sudo apt-get upgrade



Directorios

Otro comando que puede te toque usar alguna vez, aún siendo un usuario novato, es el comando cd. Este nos permite cambiar de directorio en la terminal. Si alguna vez has descargado un archivo comprimido, por ejemplo, y dentro de este se encuentran otros paquetes que debas instalar, es probable que necesitas ubicarte en ese directorio para poder ejecutarlos.

cd seguido de una ruta, se usa para ubicarse en un directorio especifico.

Ejemplo:

cd /documentos

Si solo escribimos cd vamos al directorio Home o Carpeta Personal.
Descargas

Por último, les comento algo sobre el comando wget. GNU Wget es una herramienta que nos permite descargar contenidos desde servidores web directamente desde la terminal. Soporta descargas mediante los protocolos HTTP, HTTPS y FTP.

Es un comando bastante poderoso y con diferentes funciones, pero para simplemente descargar un archivo y almacenarlo en el directorio personal, cómo por ejemplo el kernel de Linux, usamos el comandowget -c.

Ejemplo:

wget -c kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-rc6-saucy/linux-headers-3.12.0-031200rc6-generic_3.12.0-031200rc6.201310191635_amd64.deb



No hay por qué tener miedo a la terminal, cómo toda herramienta solo necesita algo de estudio para aprender a utilizarse. Y aunque no quieras convertirte en un experto, conocer al menos estos pequeños conceptos te va a facilitar mucho la vida en Linux. Si te tomas el tiempo de conocerla, puede convertirse en una de tus mejores amigas, incluso puedes jugar con la terminal.

martes, 12 de agosto de 2014

7 Comando en Linux que debes saber y 7 que no debes ejecutar

Hace ya algunos mese observe un unos artículos que me llamaron mucho la atención  y en base a esos voy a elaborar algo resumido y condensado de comandos básicos en linux que debemos conocer y otros que por ningún motivos podemos ejecutar, son comando bases que mediante adición de palabra podemos especificar nuestras búsqueda a nuestras necesidades o exigencias. de igual forma mas adelante les voy a dejar cierto comandos basicos para principiantes en linux. 
En este momento vamos a colocar comandos que todo administrador de servidores de linux debe conocer: 

1. Top

El comando Top muestra en Real Time los procesos que están ejecutándose en la memoriaRAM de nuestro servidor. Además, brinda información sobre el porcentaje de CPU que está consumiendo cada proceso en nuestro sistema.


2. Tar/gzip


Tar es un comando que nos ayuda empaquetar múltiples archivos bajo la sombrilla de uno solo. Gzip comprime la información de manera que esta ocupe menos espacio en disco.

3. Vi

Vi es el editor de texto por default en el mundo de Linux. Muchas personas se lo encuentran complicado pero realmente es muy fácil de utilizar. Lo mejor es que cuando uno lo aprende a utilizar se da cuenta de lo potente y conveniente que este editor. En lo personal uno de los editores que mas uno es el nano aunque lo consideran con muy pocas bondades, y otro en el vim, en lo que respecta a editores lo dejo a criterios y necesidades. 

4. Grep

Esta herramienta es fascinante. Con grep podemos encontrar una cadena de caracteres dentro de un texto. Al mismo tiempo podemos utilizar el Pipe | para pasarla a grep como entrada un texto producido como salida por otro comando.

Para saber si el proceso sshd está corriendo en nuestro sistema, una forma rápida de saberlo es a través del siguiente comando:


Linux~#ps –aux | grep sshd


5. Chmod

Este comando sirve para para cambiar los permisos a un directorio o archivo. El acceso a cualquier recurso en Linux está determinado por los permisos de los archivos a través del File System. También a través de chmod podemos modificar el usuario y el grupo al que pertenece un archivo.


Linux~#chmod 666 directory


6. Kill

Este es uno de mis favoritos. Si una aplicación deja de funcionar correctamente en nuestro sistema, y esta se mantiene ocupando recursos (memoria, procesador, etc.) de manera innecesaria, automáticamente podemos ¡asesinarla! sin tener que cumplir una condena por ello. Para esto sólo debemos ejecutar el comando kill más el número del proceso.


Linux~#kill 5322


7. Wget

Este comando nos permite descargar cualquier archivo desde el Internet a nuestro servidor estando cómodamente trabajando en el Shell. La gran ventaja de wget es que permite hacer resume, lo que significa que en caso que la descarga de un archivo se interrumpa, NO tenemos que comenzar nuevamente desde cero sino en el punto donde nos quedamos. Este feature es realmente beneficio al momento de descargar archivos de gran tamaño.


Comando que por nada del mundo podemos aplicar en nuestros equipos con linux, pero antes de iniciar una información muy importantes:

AVISO LEGAL Y DESCARGO DE RESPONSABILIDAD: Toda la información contenida en este artículo es estrictamente para uso educativo. NO somos responsables de las consecuencias intencionadas y/o NO intencionadas del uso de estas herramientas por parte un tercero. No ejecute nunca estos comandos en un servidor en producción. Si quieres hacer pruebas, ejecuta una máquina virtual solamente para estos fines. Las consecuencias de NO seguir estas recomendaciones es la pérdida total de información en su computador.

 rm –rf /

Este comando borra todo el contenido del directorio ‘/’. Más aún, la opción ‘r’ indica que el comando rm ni siquiera nos confirme el borrado de los archivos. Los daños producto de este comando son prácticamente irreparables, todo el contenido del disco duro será eliminado del sistema.

 :(){:|:&};:

Esta secuencia de caracteres es en realidad una “bomba”. Este comando define una función llamada ‘:’, que se llama a su a vez a ella misma y se coloca en background. Este proceso se realiza indefinidamente hasta que el sistema operativo colapsa. Llegue un punto que esta función se reproduce en un cantidad tal que consume todos los recursos del sistema.

Command > /dev/sda

Donde dice “Command” lo reemplazas por cualquier comando, por ejemplo ‘ls –l /’. La salida de este comando se redirecciona por el uso del carácter ‘>’ hacia el dispositivo ‘/dev/sda’. El dispositivo ‘/dev/sda’ es un disco duro SCSI. El resultado final de este comando es que la data guardada en el disco duro es reemplazada por la salida del comando ejecutado teniendo como consecuencia la pérdida de información. Si este comando se lleva una escala aun mayor se puede producir la pérdida total de la información en el disco duro. 


wget http://script –o | sh

El comando wget se utiliza para descargar archivos desde la línea de comandos. La opción ‘-o’ indica que la salida del Script ejecutado será impresa en la Standard Ouput. En Linux la salida por default de todos los comandos ejecutados en el Shell es que la pantalla del monitor. El punto es que la salida producida por el Script, a través del símbolo Pipe ‘|’ será redireccionada como entrada del comando ‘sh’ y el comando ‘sh’ ejecuta un script en el Shell.

¿Cuál puede ser la consecuencia maligna de un comando como este?

Simple…

El “script” puede ser un Malware y NO el archivo legítimo que creemos descargar,ocasionando daños incalculables en nuestro servidor Linux. Nunca ejecutes este comando sin conocer exactamente la fuente desde donde descargas el Script.

Mkfs.ext3 /dev/sda3

Este comando formatea completamente tu disco duro. Cuando ejecutes este comando, al final te darás cuenta que tu disco duro está ¡Brand New, sin información alguna y dejando tu sistema en un estado de destrucción total.

dd if=/dev/random of=/dev/sda

El principal objetivo del comando ‘dd’ es convertir y copiar archivos. Este comando generará un monto de datos aleatorios a través del argumento ‘if=/dev/random’ que serán utilizados para sobrescribir sobre la data del disco duro ‘of=/dev/sda’. ¿Resultado? Daño de la información que se encuentra almacenada en nuestro disco duro.

mv directory /dev/null

El comando ‘mv’ sirve para mover un archivo o directorio de un lugar a otro. El archivo/dev/null en Linux es algo así como un “hoyo negro”. Todo lo que se redireccione hacia/dev/null será destruido. Por lo tanto, si ejecutamos el comando ‘mv directory /dev/null’ estamos llevando a cabo un “Harakiri”, ya que la información será borrada de su posición originen y luego será colocada en un “hoyo negro” que destruirá toda la pérdida de la información.


RECUERDA NO EJECUTAR COMANDO EN UN EQUIPO EN PRODUCCIÓN 


miércoles, 30 de julio de 2014

IPTABLES (comandos y ejemplos)

Como les había prometido en el post anterior sobre montarle algunos ejemplos para que pudieran realizarlos en sus computadoras, para que no llevarme una semana decidí probar unos cuantos comando en mi trabajo y hacer una especie de resumen de lo que les puede servir, ya sea para una computadora personal o configurar el firewall de una gran red. revisando el firewall de mi trabajo y con la ayuda de algunos documentos que logre encontrar y probar, desarrolle este post. 

para comenzar con un ejemplo básico para proteger tu equipo personal (un consejo, si no manejas muy bien esta herramienta, antes de estos he escrito 2 post muy interesante para aprender algunos comando que vamos a utilizar aquí, no voy a entrar en explicaciones porque seria redundar en los artículos anteriores,  recuerde que esta herramienta es sensible a mayúsculas y minúsculas): 

El primer paso es crear un script esto lo pueden conseguir en el primer post sobre IPTABLES nos dirijamos a esta archivos y lo editamos como nos aparece a continuación: 

#reglas básicas 
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT 
iptables -P FORWARD ACCEPT 
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT 

#ahora si empezamos a filtra los paquetes 
#permitimos conexiones de localhost
iptables -A INPUT -i lo -j ACCEPT 

# a nuestra ip le dejamos todo 
iptables -A INPUT -s 192.15.15.156 -j ACCEPT

#a un amigo le dejamos que consulte base de bados en mysql
iptables -A INPUT -s 192.168.2.5 -p tcp --dport 3306 -j ACCEPT 

#un acceso a FTP 
iptables -A INPUT -s 192.168.4.5 -p tcp --dport 2021 -j ACCEPT 

#servidor web abierto 
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

#y el resto lo cerramos 
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 2021 -j DROP
iptables -A INPUT -p tcp --dport 22 -j DROP 
iptables -A INPUT -p tcp --dport 10000 DROP 

 Vamos con un ejemplo un poco mas complejo, y seria un la configuración de un firewall de una red que necesita salida a Internet, y para lo cual utilizaremos el NAT.

Comienza el script 
#aplicamos reglas básicas
iptables -P INPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

##empezamos a filtrar
##nota: eth0 esta la interfaz conectada al router y la eth1 a la LAN
#dejamos las conexiones locales
iptables -A INPUT -i lo -j ACCEPT

#al firewall tenemos acceso desde la LAN
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

#ahora hacemos enmascaramiento de la red local
#y activamos el BIT DE FORWARDING (importante)
iptables -t nat -A POSROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

#con esta linea podemos hacer forward de paquetes en el firewall
#(es decir que otras maquinas puedan salir a travez del firewall)
echo > 1 /proc/sys/net/ipv4/ip_forward

##y ahora cerramos los accesos indeseados del exterior
#nota: 0.0.0.0/0 significa cualquier red
#cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp dport 1:1024 -j DROP

#cerramos un puerto de gestion: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

fin del script

Nota importante sobre el script anterior, en la linea en la que aparece echo > 1 /proc/sys/net/ipv4/ip_forward lo podemos hacer de la siguiente manera:
nos dirijamos al archivo /etc/sysctl.conf y en la linea en la que aparece
net.ipv4.ip_forward=0    lo vamos a remplazar por un 1
net.ipv4.ip_forward=1





IPTABLES (desde otra perspectiva)

Indagando mas sobre seguridad en redes y sobre configuración de IPTABLES, encontré un curso muy interesante que quisiera compartir con ustedes, pero de forma mas clara y resumida, ya que es algo extenso y por este medio solo colocare los puntos mas importantes y combinados con otros documentos que he conseguido que me han parecido muy interesante sobre esta herramienta, no creo que sea el mejor post sobre el tema pero voy a tratar de no ser tan teórico sino que también colocar algunos ejemplos para poder asimilar mejor los conocimientos, pero como todo, sino tenemos una buena base teórica se nos puede realizar un tanto engorroso la configuración, y sin mas preámbulos, realmente que es IPTABLES: 

Es la herramienta que nos permite configurar las reglas del sistema de filtrado de paquetes del kernel de Linux, desde su versión 2.4 (en 2.2 era ipchains). Con esta herramienta, podremos crearnos un firewall adaptado a nuestras necesidades. esta construido sobre Netfilter que es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. 

En resumidas cuentas que puedo hacer con esta herramienta: 

1. IPTABLES permite definir reglas acerca de que hacer con los paquetes de red.
2. Las reglas se agrupan en cadenas.
3. Cada cadena es una lista ordenada de reglas.
4. Las cadenas se agrupan en tablas
5. Cada tabla esta asociada con un tipo diferente de paquete.

El total del sistema de filtrado de paquetes del kernel se divide en tres tablas, cada una con varias chains a las que puede pertenecer un paquete, de la siguiente manera.

Filter, el filtrado de paquetes, contienen las siguientes cadenas predefinidas: 

INPUT: Paquetes recibidos para nuestro sistema 
FORWARD: Paquetes enrutados a través de nuestro sistema 
OUTPUT: Paquetes generados en nuestro sistema y que son enviados

NAT, reenvío de paquetes, contiene las siguientes cadenas predefinidas: 

PREROUTING: los paquetes entrante pasan a través de esta cadena, antes de que se consulte la tabla de enrutamiento local (DNAT - Destination-NAT). 
POSTROUTING: los paquetes salientes pasan por esta cadena, después de haber tomado la decisión de ruteo. (SNAT - Source-NAT)
OUTPUT: permite hacer un DNAT limitado en paquetes generado localmente. 

Mangle, diseñada para efectos avanzados, permite la alteración de paquetes y tramas, contiene las siguientes cadenas predefinidas:

PREROUTING: todos los paquetes que logran entrar a esta sistema, antes de que el ruteo decida si el paquete debe ser enviado o si tiene destino local. 
INPUT: todos los paquetes destinados para este sistema
FORWARD: todos los paquetes que pasan por este sistema. 
OUTPUT: todos los paquetes creados en el sistema
POSTROUTING: todos los paquetes que abandonan este sistema. 

Lo que dejo a continuación son algunas reglas básicas. 

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT 

En la primeras 2 lineas tenemos que todo los que sea entrada (INPUT) y re-direccionamiento (FORWARD) quedan bloqueados (DROP) y mediante la 2 ultimas lineas aceptamos (ACCEPT) el enrutamiento. 

Cada regla especifica que paquetes la cumplan y un destino que indica que hacer con el paquete si esté cumple esta regla. su sintaxis la podemos plasmar de la siguiente manera: 

iptables -t [tabla] -o[operación] [cadena] [coincidencia] -j[ACCIÓN]

operación 

A (add) agregar la regla al final
I (insert) agregar regla al principio 
R (replace) reemplazar una regla 
D (delete) borrar una regla
F (flush) borrar todas las reglas de una sola cadena 
L (list) muestra las reglas de una cadena 

coincidencia 

-p [protocolo]: puede ser tcp, udp, icmp, all. o alguno de los indicados en /etc/protocols .
-s [ip/mascara]: dirección de origen o grupo de host.
-d [ip/mascara]: dirección de destino o grupo de host. 
-i [interfaz]: interfaz donde se recibe el paquete (solo INPUT, FORWARD y PREROUTING)
-o [interfaz]: interfaz de salida (solo OUTPUT, FORWARD y POSTROUTING)
--sport: puerto de origen de la transacción (solo para protocolo tcp o udp)
--dport: puerto de destina de la transacción (solo para protocolos tcp o udp)

ACCIÓN 

ACCEPT: acepta la transacción 
DROOP: rechaza la transacción
REJECT: rechaza la transacción y notifica al emisor
QUEUE: encola el paquete, para ser alterado por la biblioteca libipq
RETURN: el paquete deja de circular por la cadena 
LOG: crea una bitácora de los paquetes (ejemplo verificar que paquetes están siendo rechazados)
DNAT: permite modificar la dirección y el puerto de destino. 
SNAT: permite modificar la dirección y el puerto de origen. 
MASQUERADE: forma especial y restringida de SNAT. 

martes, 29 de julio de 2014

IPTABLES



Como ya les he mencionado en los post anteriores soy un amante de la seguridad informática y es un tema que me llama mucho la atención y uno de los temas base para la seguridad en redes es sobre IPTABLES, y esto no es otra cosa sino la parte del kernel Linux (un módulo) que se ocupa de filtrar paquetes. Esto dicho de otra forma, significa que IPTABLES es la parte del kernel cuyo trabajo es saber qué información/datos/paquete quieres que entre a tu ordenador, y cuáles no, sera el encargado de filtrar información a una red, es la base de todos los firewall, y como hemos descrito anteriormente el firewall es un dispositivo perimetral que se encarga de proteger mi red, y mediante IPTABLES le das las ordenes. 

Para trabajar con IPTABLES es necesario tener permisos administrativos, por lo que acá usaré sudo (pero si entras como root, no hay necesidad).

Ahora para que sea de una forma mas fácil de entender para todos los que no manejan redes y dispositivos de seguridad vamos a colocar un ejemplo en el cual podrá experimentar desde tu computador personal. (ojo no nos hacemos responsables por pruebas que no son satisfactorias... jajajaja)

Para que nuestro ordenador sea realmente seguro, tenemos que solo permitir lo que nosotros queramos. Vean su ordenador como si fuera su propia casa, en su casa ustedes por defecto NO dejan que nadie entre, solo pueden entrar determinadas personas específicas que ustedes hayan aprobado antes no? Con los firewall`s sucede igual, por defecto nadie puede entrar a nuestro ordenador, solo podrán entrar quienes nosotros deseemos.


Para lograr esto que explico, aquí los pasos:

1. Abran una terminal, en ella pongan lo siguiente y presionen [Enter]:
sudo iptables -P INPUT DROP


Esto bastará para que nadie, absolutamente nadie pueda entrar a su ordenador… y, este “nadie” los incluye a ustedes mismos :D Explicación de la línea anterior: Con ella indicamos a IPTABLES  que la política por defecto (-P) para todo lo que desee entrar a nuestro ordenador (INPUT) es obviarlo, no hacerle caso (DROP)

Nadie es bastante general, absoluto de hecho, ni ustedes mismos podrán navegar por Internet ni nada, es por eso que debemos en esa terminal poner lo siguiente y presionar [Enter]:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

La primera línea lo que dice es que el propio ordenador (-i lo … por cierto, lo = localhost) puede hacer lo que le plazca. Algo obvio, que puede parecer hasta absurdo… pero créanme, es tan importante como el aire jajajaja

La segunda línea la explicaré usando el ejemplo/comparación/metáfora que usé antes, me refiero a comparar al ordenador con la casa :) Por ejemplo, supongamos que vivimos con más personas en nuestra casa (madre, padre, hermanos, novia, etc). Si alguna de estas personas sale de casa, ¿es obvio/lógico que dejaremos que entre una vez regrese no?

Precisamente eso es lo que hace esa segunda línea. Todas las conexiones que nosotros iniciemos (que salgan desde nuestro ordenador), cuando por esa conexión quiera entrar algún dato, IPTABLES dejará que ese dato entre. Poniendo un ejemplo más para explicarlo, si usando nuestro navegador intentamos navegar por internet, sin estas 2 reglas no podremos, pues sí… el navegador se conectará a Internet  pero cuando intente bajar datos (.html, .gif, etc) hacia nuestro ordenador para mostrárnoslo, no podrá pues IPTABLES le negará la entrada de paquetes (datos), mientras que con estas reglas, como nosotros iniciamos la conexión desde dentro (desde nuestro ordenador) y esa misma conexión es la que intenta entrar datos, sí se le permitirá el acceso.

Con esto listo, ya tenemos declarado que nadie puede acceder a ningún servicio de nuestro ordenador, nadie excepto el propio ordenador (127.0.0.1) y además, excepto conexiones que se inicien en el propio ordenador.

Ahora, explicaré un detalle más de forma rápida, pues la 2da parte de este tutorial explicará y abarcará más sobre esto jeje, no quiero adelantar mucho :D

Sucede que por ejemplo, tienen un sitio web publicado en su ordenador, y desean que ese sitio web todos lo puedan ver, como antes declaramos que todo por defecto es NO permitido, excepto no se indique lo contrario, nadie podrá ver nuestro sitio web. Ahora haremos que cualquiera pueda ver el o los sitios webs que tengamos en nuestro ordenador, para ello ponemos:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Esto es muy simple de explicar :D

Con esa línea estamos declarando que acepte o permita (-j ACCEPT) todo tráfico al puerto 80 (–dport 80) que sea TCP (-p tcp), y que además sea tráfico entrante (-A INPUT). Puse puerto 80, porque ese es el puerto del host web, o sea … cuando un navegador intenta abrir un sitio de X ordenador, siempre mira por defecto en ese puerto.