Módulo de tiempo en iptables

Vaya sorpresa la que me lleve el día de hoy; estaba buscando información de como llevar un mejor control de accesos a mis servidores gnu/linux con iptables. Y mi sorpresa fue el encontrar que el módulo de tiempo para las reglas de firewall ya venia compilada en la versión de iptables que uso en mi Centos. Sin más ni menos dedique un poco de tiempo para jugar con las configuraciones. Por ejemplo una regla normal para ssh desde una ip origen (a.s.d.f) hacia la ip destino (z.x.c.v) sería:

iptables -A INPUT -s a.s.d.f -d z.x.c.v --dport 22 -j ACCEPT

Pero que pasaría si de pronto, tu jefe te dice que se debe tener en cuenta que el servicio ssh hacia el equipo destino (z.x.c.v) solo debe estar disponible los días lunes, martes, miércoles, jueves y viernes a partir desde las 8H00 hasta las 19H00. Se pueden imaginar si nuestro iptables no venia con el módulo de tiempo. Tendríamos que parchar el código, etc, etc…

Pero bueno, yo para mi pequeña travesura utilice Centos 5.2 y Centos 5.3 para lo cua revise la versión con el comando

iptables --version

Arrojando como resultado la versión iptables v1.3.5.

Luego como es de esperar, revise el manual de comando con el comando man

Y volvi a reescribir mi regla de firewall con los requerimientos antes mencionados:

iptables -A INPUT -s a.s.d.f -d z.x.c.v -m time --timestart 08:00 --timestop 19:00 \

--days Mon,Tue,Wed,Thu,Fri  --dport 22 -j ACCEPT

Ahh… como ven no fue tan complicado hacerlo. Lo interesante de esto, es la posibilidad de controlar accesos a determinadas horas.

Espero les haya gustado acerca de mi pequeña experiencia con las iptables. Debo mencionar que trate de hacer lo mismo sobre mi estación de trabajo, es decir sobre una Ubuntu 9.04 y les comento que hay variaciones ya que esta distro tenia la versión iptables v1.4.1.1. Hasta una proxima oportunidad!!!!

Construir RPM (Parte Dos)

Muy bien, hace un tiempo atrás explique la forma de como construir archivos rpm a partir de su código fuente. Ahora la idea es, construir el mismo rpm pero haciendo unas mejoras a nuestro código fuente, es decir; generar un parche para luego en la creación del rpm se pueda parchar el código anterior con las mejoras realizadas.

Manos a la obra, si bien es cierto; toda tarea nueva tiene un poco de complejidad, pero les recuerdo que casi nada es imposible. Para recordar el código fuente que debemos mejorar, debemos ir a la Parte Uno de Construir RPM.

Una vez que ya hemos recordado, haremos lo siguiente:

Al código fuente original, le vamos a sacar una copia con el comando:

cp calculadora-1.0 calculadora-1.0a

Luego de haber sacado nuestra copia, editamos el archivo calculadora.c y agregamos las siguientes líneas:

case 'd':

printf("Division\n");
printf("Ingrese Valor A:\t");
scanf("%f",&a);
printf("Ingrese Valor B:\t");
scanf("%f",&b);
if(a<b)
printf("Resultado de operacion es %f",a/b);
break;

Ahora si bien es cierto, hasta ahora no se a hecho mayor cosa; hemos editado del directorio calculadora-1.0a el archivo calculadora.c. Lo que tendremos que hacer es crear un parche de código con el comando diff.

diff -uNr calculadora-1.0 calculadora-1.0a > calculadora-1.0.patch

Una vez realizado los pasos anteriores, lo único a cambiar para que se nos pueda crear el archivo rpm es el archivo spec.

#
# SPEC file for calculadora program
#
Summary: Simple Calculadora
Name: calculadora
Version: 1.0
Release: 1
License: GPL
Group: Applications/Useless
Source: calculadora-1.0.tar.bz2
Distribution: Useless Linux 1.0
Vendor: Zepolar IT Services
Packager: zepolar
BuildRoot: /var/tmp/calculadora-1.0
#Definicion de codigo
source: calculadora-1.0.tar.bz2
#Definicion de parche
patch: calculadora-1.0.patch
%description
Este programa es una calculadora
%prep

%patch -p1

%setup

%build

make
%install
make install DESTDIR=${RPM_BUILD_ROOT}
%files
/usr/bin/calculadora

Si somos buenos observadores, nos daremos cuenta que todo lo que esta con negrita es lo que se ha cambiado del archivo spec original.

Para que todo funcione bien, tanto el codigo calculadora-1.0.tar.bz2 y calculadora-1.0.patch deben estar en el directorio /usr/src/redhat/SOURCES.

Para luego ejecutar el comando:

rpmbuild -ba calculadora.spec

Si todo va bien hasta aquí, luego de terminar de ejecutarse el comando debemos tener la siguiente salida en la terminal:

Escrito: /usr/src/redhat/SRPMS/calculadora-1.0-1.src.rpm
Escrito: /usr/src/redhat/RPMS/i386/calculadora-1.0-1.i386.rpm
Escrito: /usr/src/redhat/RPMS/i386/calculadora-debuginfo-1.0-1.i386.rpm

Como pueden observar se creó con éxito el rpm y parchado. Si tienen algun comentario o retroalimentación no duden en comentarmelo. Hasta una nueva oportunidad!!!!

Construir RPM (Parte Uno)

Luego de un largo tiempo de nos postear, encontre un tema que comunmente se suele mandar a hacer a estudiantes de ingeniería “Construir RPM para distribuciones CentOS”.

Información para desarrollar dicha tarea la podemos encontrar en la web, consultado a nuestro gran amigo google. A continuación replico la práctica realizada en el aula.

En base al código fuente proporcionado, desarrollar un rpm.

#include "stdio.h"
main(){
	float a=0.0;
	float b=0.0;
	float resultado=0.0;
	char opcion;
	printf("\nCalculadora\n");
	printf("a) Suma\n");
	printf("b) Resta\n");
	printf("c) Multiplicacion\n");
	printf("Por favor escoja una opcion para realizar la operacion\n");
	scanf("%s",&opcion);
	switch(opcion){
		case 'a':
			printf("Suma\n");
			printf("Ingrese Valor A:\t");
			scanf("%f",&a);
			printf("Ingrese Valor B:\t");
			scanf("%f",&b);
			printf("Resultado de operacion es %f",a+b);
			break;
		case 'b':
			printf("Resta\n");
			printf("Ingrese Valor A:\t");
			scanf("%f",&a);
			printf("Ingrese Valor B:\t");
			scanf("%f",&b);
			printf("Resultado de operacion es %f",a-b);
			break;
		case 'c':
			printf("Multiplicacion\n");
			printf("Ingrese Valor A:\t");
			scanf("%f",&a);
			printf("Ingrese Valor B:\t");
			scanf("%f",&b);
			printf("Resultado de operacion es %f",a*b);
			break;
		default:
			printf("No tengo poderes de super vaca para entender\n");
			break;
	}
}

Como ustedes pueden ver el código no es la gran cosa. La idea es hacer el rpm, como sabrán debemos construtir un archivo makefile para la compilación de código así como también el archivo spec para la creación del rpm.

A continuación el contenido del archivo makefile:

all: calculadora

calculadora : calculadora.c
	gcc -o calculadora calculadora.c

install : calculadora
	install -d $(DESTDIR)/usr/bin
	install -s -m 0755 -o root -g root calculadora	$(DESTDIR)/usr/bin

clean :
	rm -f calculadora

A continuación el archivo calculadora.spec para la construcción del rpm:

#
# SPEC file for calculadora program
#

Summary: Simple Calculadora
Name: calculadora
Version: 1.0
Release: 1
License: GPL
Group: Applications/Useless
Source: calculadora-1.0.tar.bz2
Distribution: Useless Linux 1.0
Vendor: Zepolar IT Services
Packager: zepolar
BuildRoot: /var/tmp/calculadora-1.0

%description
Este programa es una calculadora
%prep
%setup

%build
make

%install
make install DESTDIR=${RPM_BUILD_ROOT}

%files
/usr/bin/calculadora

Como ya se tiene los archivos necesarios para la construcción del rpm procedemos a comprimir el código fuente y el archivo makefile en un archivo llamado calculadora-1.0.tar.bz2. A este último archivo le copiamos en el directorio “/usr/src/redhat/SOURCES”. Para luego ejecutar el comando:

rpmbuild -ba calculadora.spec

Si todo va bien hasta aquí, luego de terminar de ejecutarse el comando debemos tener la siguiente salida en la terminal:

Escrito: /usr/src/redhat/SRPMS/calculadora-1.0-1.src.rpm
Escrito: /usr/src/redhat/RPMS/i386/calculadora-1.0-1.i386.rpm
Escrito: /usr/src/redhat/RPMS/i386/calculadora-debuginfo-1.0-1.i386.rpm

Como pueden observar se creó con éxito el rpm. Si tienen algun comentario o retroalimentación no duden en comentarmelo. Hasta una nueva oportunidad!!!!

Vunerabilidades con Nessus

Muchos de nosotros nos preguntamos, como prevenir eventuales ataques en nuestros equipos servidores. Una de las herramientas que comunmente se suele usar para ver las vulnerabilidades es nessus, así como también algunas otras herramientas como x-scanner.

En este post usaremos nessus, una excelente herramienta para buscar dichas vulnerabilidades. La instalación sobre un sistema GNU/Linux (Ubuntu) es sencillo; hay que seguir los siguientes comandos:

  • sudo aptitude search nessusclient nessusd
  • sudo aptitude install nessusclient nessusd

En mi caso yo buscaré vulnerabilidades sobre mi propia máquina. Pasare el scanner y luego les presentare el resultado, antes de todo eso lo que tenemos que hacer es levantar el demonio de nessus (servidor) ya que este funciona en el esquema cliente-servidor.

  • sudo invoke-rc.d nessusd start

Recordemos que una vez iniciado el servidor lo que tenemos que hacer es añadir un usuario para que ejecutamos el comando nessus-adduser. A continuación una imagen:

Agregando Usuario a Nessus

Agregando Usuario a Nessus

Ya agregado el usuario, levantamos el cliente que actualmente se llama OpenVAS-Client, y podemos ver en acción esta herramienta:

Escanenado mi máquina

Escanenado mi máquina

Cliente Open-VAS en Acción

Cliente Open-VAS en Acción

Como ven, esta herramienta nos ayuda a buscar vulnerabilidades; y una vez encontradas, tenemos que buscar la solución para evitar ataques en un futuro. Espero les haya servido de algo está pequeña experiencia que tuve con esta herramienta. Saludos!!!

Manejador de descarga en Gnome

Muchos de nosotros tratamos de descargar información de la Internet y algunas veces corremos el riesgo de que la descarga le pase algo o que se quede  a medias. Para evitar problemas como los antes mencionados busque algun gestor de descarga para mi ubuntu y encontre varios:

Cada uno de ellos tiene sus ventajas, pero para mi punto de vista el que más se aproximaba a lo que yo queria era el GwGet; puesto que este es una aproximación al comando wget pero con interfaz gráfica. Además esta herramienta tiene una extensión con Firefox que comunmente usó. La instalación y el uso de la herramientas es super sencilla. A continuación los pasos a seguir para la instalación:

  • Búsqueda del manejador gwgetaptitude search gwget
  • Instalación del manejador gwgetaptitude install gwget

Una vez instalado, lo único que nos queda es usarlo. Aquí una imagen del manejador de descarga en acción.gwget action

Lo último por hacer es instalar el plugin que me permita usar este manejador de descarga con Firefox y listo. Sus comentarios son bienvenidos.