Python para todos

Sin lugar a duda, python es uno de los lenguajes que tiene mucha acogida en el mundo del software libre y sobre todo en los sistemas gnu/linux. Yo hace poco ingrese a dicho mundo, ya que este lenguaje tiene el mismo nivel que cualquier otro lenguaje. Particularmente yo he trabajado tanto con java y con perl; pero con python, me agrado más por el mismo hecho de ser un poco menos complicado. Al igual que los anteriores lenguajes de programación que he mencionado, python tiene una gran gama de frameworks para un rápido desarrollo de aplicaciones.

Mi reto con este lenguaje, es desarrollar una interface web que me permita crear entradas a un servidor ldap y al mismo tiempo utilizar el api de google apps; para un proyecto que estoy llevando.

Las herramientas que estoy utilizado son: como estación de trabajo utilizo Ubuntu. Pero mi gran duda era el buscar, un IDE de desarrollo, pero para suerte mía Netbeans tiene soporte para python; el cual será de gran ayuda.

Otra gran ayuda, es el manual que encontre con licencia Creative Commons, les dejo el enlace.

El aprendizaje del lenguaje python, no es muy complicado; puesto que si tienes ya experiencia en otros lenguajes, será cuestión de tiempo el entender el lenguaje.

Yo les mantendre al tanto de mis avances con python, que por cierto son buenos.

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!!!

Seguir

Get every new post delivered to your Inbox.