2009-09-27

Unir PDF's en Linux

Mi novia necesitaba escanear unas hojas y enviarlas en PDF, yo sabia como pasaras a PDF pero como unirlas en un solo archivo la verdad no tenia ni idea, entonces como siempre le pregunte a SanGoogle y todo salío fácilisimo, como me parece un dato muy bueno lo coloco acá aunque en realidad hay muchos blogs donde lo explican detalladamente.

Lo primero es como lo instalamos, lo cual se hace de la siguiente forma

root@localhost:~# apt-get install pdftk

Ahora como usarlo, para esto puedes ver mas detalladamente el man pdftk, pero acá les mostrare los usos más significativos, empezare con el que me llevo a conocer esto, que es el unir varios pdf en uno solo

root@localhost:~# pdftk archivo1.pdf archvio2.pdf output definitivo.pdf

Ahora para sacar solo las paginas que nos interesan de un PDF

root@localhost:~# pdftk origen.pdf cat 1-12 14 16 18 definitivo.pdf

Hay tendriamos un pdf con las paginas de la 1 a la 12 mas las paginas 14,16 y 18 en el nuevo archivo, en el siguiente ejemplo veremos como asignarle permisos al PDF, tales como impresión, impresión en baja calidad y otros, así

root@localhost:~# pdftk origen.pdf allow "permiso" output definitivo.pdf

Los permisos basicos son:

Printing : Impresión en optima calidad
DegradedPrinting : Impresión en baja calidad
ModifyContents : Permitir modificaciones de contenido
CopyContents : Permitir copias de hojas individuales

Adicionalmente puedes ponerle contraseña al PDF de resultado así

root@localhost:~# pdftk origen.pdf user_pw "contraseña" output definitivo.pdf

Bueno espero que les sirva, me parecio muy útil y mi novia esta feliz

Manejo de Procesos

En Linux los procesos se ejecutan de dos formas, en underground o en background, la primera forma indica que es el proceso que se ejecuta normalmente y que tu puedes visualizar ejecutándose en la consola o en la panatalla, el segundo es cuando un proceso se ejecuta internamente pero que ni se visualiza o que el administrador lo envia a ejecturse sin ser visto.

Obviamente y como todo en Linux nosotros podemos no solo determinar que procesos tenemos ejecutándose underground sino en background también además de poder decidir cambiar el método de ejecución cuando deseemos, inicialmente vamos a ver como se pasa un proceso a background.

Este se hace cuando necesitas dejar por ejemplo una sincronización entre dos maquinas, este proceso puede ser tedioso verlo o no te permitiria apagar tu mauqiuna si tu lo estas enviando remoto, entonces hay dos formas la primera es escribir el comando en consola y colocarle al final el simbolo de ampersan &, que es algo así

root@localhost:~# for i in $(ls /direc);do rm -rf $i ; done &

Este comando borara uno a uno el contenido de direc (que puede ser larguisimo y no nos permite borrarlo directamente) haciendolo en background, y así puedes seguir trabajando en la consola sin problemas. El segundo método es cuando lo tienes que enviar y ya decides pasarlo a background, para esto se realiza en dos sencillos pasos, el primero es que cuando estes ejecuntando el comando le das la combinaciń de teclas Ctrl+Z, una vez se vea el simbolo del bash escribes bg y listo el comando ha pasado a background, gráficamente se ve algo como esto

root@localhost:~# for i in $(ls /direc);do rm -rf $i ; done
rm -rf /direc/prueba1
[1]+Stopped for i in $(ls /direc);do rm -rf $i ; done <--- Momento en que se da Ctrl+Z
root@localhost:~# bg
root@localhost:~#

Ahora una cosa muy útil es saber que rocesos tienes en background, pra esto en Linux existe un comado llamado jobs que nos muestra la lista de procesos que estan ejecutándose o detenidos en background, visualmente es de la siguiente forma

root@localhost:~# jobs
[1]+Running for i in $(ls /direc);do rm -rf $i ; done
[2]+Stopped rsync -pavz -progress /direc ns.destino.com:/root

Como ven en el ejemplo existen dos procesos uno en ejecudion y el otro detenido, si desean eliminar alguno de los dos es simplemente dar el siguiente comando

root@localhost:~# kill %2

En este caso 2 por que es el identificador del que deseo eliminar

2009-09-20

Monitoreo de Trafico

Existen muchas formas de monitorear el tráfico en una tarjeta especifica en tiempo real, todas tienen sus cosas buenas y sus cosas malas, algunas de ellas son iptraf, tcpdump y la les mostrare hoy IFTOP, este es un monitor que como su nombre lo indica la salida es tipo top por lo que es en tiempo real y con una salida bastante clara como se puede ver en la siguiente imagen


Bueno para instalarlo como siempre es bastante sencillo en nuestro Debian o Ubuntu, de la siguiente forma

root@localhost:~# apt-get install iftop

bueno una vez instalado veremos como lo podemos usar, el comando es solo iftop pero las opciones que nos permite son las que nos interesan y son las siguientes

-n No resolver el DNS de las conexiones, nos muestra la IP de la conexión
-p Ejecutarse en modo promiscuo, para ver todo el tráfico del segmento de red
-b No mostrar la barra de tráfico, barra superior.
-i Interface a ser monitoreada
-f Te permite realizar filtros de tráfico IP, similares a los que se pueden usar con tcpdump, se deben colocar entre comillas para que se ejecute
-B Muestra las conexiones en Bytes
-N Muestra el numero del puerto y no su respestivo servicio.
-P Permite habilitar la función que se muestre o no el puerto de la conexión
-F Te permite trar el flujo de tráfico de una única red, es muy útil si tienes un sistema que te funcione como enrutador, o para ver el trafico de un segmento especifico.


Estas son las opciones que como puedes ver nos dan grandes alternativas para manejar un monitoreo mas preciso de nuestro tráfico, a continuación les mostrare unos ejemplo de como usar el comando y su respectiva salida.


root@localhost:~# iftop







root@localhost:~# iftop -npNP





root@localhost:~# iftop -npB -f "port 80"






root@localhost:~# iftop -npNPB -F 192.168.1.64/26





Por último explicaremos un poco lo que se ve en la salida del comando, en la parte superior sale una barra (a menos que le des la opción "b") donde te muestra el uso del canal en bits o en Bytes según la opción que le diste.

Después de eso se ven las muestras de flujo de tráfico, con el siguiente orden

ip_origen:puerto_origen => ip_destino:puerto_destino valor1 valor2 valor3

Los valores son las muestras de tráfico hace 2 segundos, hace 10 segundos y hace 40 segundos respectivamente, así te puedes saber el histórico del consumo, y la flecha te indica la dirección del flujo de información.

En la parte inferior se ve la barra de estadísticas donde se puede ver el promedio, los picos y las ratas actuales de tráfico entrante (Rx), saliente (Tx) y el total.

2009-09-11

Administración de RKHunter

Como vimos en una entrada anterior el rkhunter, es un detector de rootkits para linux muy bueno, pues buscando y andando en internet me encontré con esta excelente entrada donde explicaban muchas cosas de la configuración de rkhunter, en esta url.

Entonces como siempre colocare aquí como lo realice yo, bueno empezamos editando el archivo de configuración que esta en /etc/rkhunter.conf y empezamos a buscar y editar los parámetros que necesitamos, así

Que nos envíe mensajes por correo electrónico
- MAIL-ON-WARNING="diego.espitia@blogspot.com"

Que te revise el archivo de configuración de SSH en su ubicación
- SSH_CONFIG_DIR=/etc/ssh

Si tienes habilitado el ssh en versión 1 (unalocura) debes cambiar esta linea, así
- ALLOW_SSH_PROT_V1=0


Si ingresas a tu maquina como root (no recomendado) debes cambiar esta linea, así
- ALLOW_SSH_ROOT_USER=yes

Que te genere una base de datos con los registros HASH de tus archivos
- HASH_FUNC=/usr/bin/sha1sum

Para evitar algunos falsos positivos por el contenido de los archivos es bueno crear estas lineas
- SCRIPTWHITELIST=/sbin/which
- SCRIPTWHITELIST=/sbin/ifup
- SCRIPTWHITELIST=/sbin/ifdown
- SCRIPTWHITELIST=/usr/bin/groups

Para declarar algunos directorios ocultos donde hay bastantes ejecutables los tenemos que declarar así
- ALLOWHIDDENDIR=/etc/.java
- ALLOWHIDDENDIR=/dev/.udev

El que considero mas importante es cuadrar que directorios quiero que revise, esto se realiza en la siguiente linea
- BINDIR="/home/http/html/ /bin /usr/bin /sbin /usr/sbin /usr/local/bin /usr/local/sbin /usr/libexec /usr/local/libexec"


Bueno ya con eso cambiamos la configuración y lo tenemos listo para ejectuar, entonces ahora para que no te pida enter a cada rto y que solo te saque mensajes de los warning o peligros y sobre todo que cree la base de datos de hash, lo ejecutas así

root@localhost:~#rkhunter -c --report-warnings-only --skip-keypress --propupd

Después de que ejectutes ese comando una vez debes en el archivo de configuración añadir la siguiente linea

HASHWHITELIST=/usr/bin/lsattr

Y listo ya lo puedes poner a ejecutar las veces que desees

2009-09-03

Unión de Canales de Red (Bonding)

Por mi trabajo he tenido que estudiar muchas cosas de Linux avanzado, esta vez necesitabamos aumentar el ancho de banda a un servidor de FTP que tenia 3 tarjetas de red, estudiando mucho encontré la solución ideal para su funcionamiento, se llama bonding y permite simular una sola tarjeta con un gran ancho de banda, que realmente son las tres atrjetas por separado.

Este método nos permite aumentar el ancho de banda, balancear cargas y generar redundancia, pero bueno la instalación se realiza de la siguiente forma, empezamos instalando el manejador de los modulos para el balanceo de las tarjetas así

root@localhost:~# apt-get install ifenslave

El siguiente paso es cargar el modulo de bonding, con unos parámetros que nos permiten mejorar las ya muy buenas características de este modulo, esto se hace así:

root@localhost:~# modprobe bonding miimon=100 mode=3 downdelay=200 updelay=200

Estos parámetros nos permiten lo siguiente

miimon : Modificar cada cuantos milisegundos el revisa la actividad de las tarjetas configuradas, por defecto es 250ms es mejor colocarlo cada 100ms.

mode : Son los modos en los que el sistema de balanceo puede funcionar son 5 en total, que son
  • 0 -> Round Robin
  • 1 -> Active Backup
  • 2 -> Balance XOR
  • 4 -> Broadcast
  • 5 -> 802.3ad
  • 6 -> Balance Adaptativo
downdelay : Espera para desconectar una tarjeta
uprelay : Espera para reconectar una tarjeta

Una vez terminado esto se configura la tarjeta de bonding en el archivo /etc/network/interface el cual debe quedar así:

auto bond0
iface bondo inet static
address 172.16.0.1
netmask 255.255.255.240
broadcast 172.16.0.15
gateway 172.16.0.14
up ifenslave bond0 eth0 eth1 eth3

Se debe asegurar que ningúna de las tarjetas reales tenga ninguna configuración de red por lo que es mejor borrar el resto del archivo, una vez echo esto simplemente se inicia la tarjeta de bonding así:

root@localhost:~# ifup bond0

Espero que les sirva a mi me funciono muy bien