03 diciembre 2013

EGGDROP: INSTALACION, CONFIGURACION Y TRUCOS ---PARTE 1

INSTALACION Y CONFIGURACION DE UN EGGDROP V1.6
Eggdrop es sin dudas el bot mas popular en IRC.  Entre su variedad de opciones tenemos: automatizar tareas adminitrativas de los canales, proteger el canal de intrusos, puedes integrar varios bots al mismo tiempo, soporta varios canales a la vez, guarda logs de las conversaciones, ingresar juegos y mucho mas. Esta licenciado bajo GPL, esta diseñado para ser flexible, tiene bastantes addons, esta desarrollado en C y es bien personalizable, claro si sabes programar TCL. 

El proyecto de eggdrop lo inicio Robey Pointer por el 1993 pero ya esta persona no participa ya en el proyecto.



HARDWARE

Bueno utilizaremos el siguiente hardware en una maquina virtual:
CentOS 6.4 32bits       
512mb de ram           
procesador intel 2.4ghz
y 20GB de disco.

Y bueno manos a la obra...


INSTALACION

0) Dependencias requeridas:
yum install -y gcc make tar gzip  zlib zlib-devel libtermcap-devel wget tcl tcl-devel crond

1) descargamos el archivo fuente, solo ocupa 1.2mb:
wget ftp://ftp.eggheads.org/pub/eggdrop/source/1.6/eggdrop1.6.21.tar.gz

2) movemos el archivo fuente a la ubicacion correspondiente:
mv eggdrop1.6.21.tar.gz  /usr/local/src/

3) nos movemos al directorio y descomprimimos el archivo comprimido
cd /usr/local/src/
tar zxvf eggdrop1.6.21.tar.gz

4) ingresamos al directorio ya descomprimido
cd eggdrop1.6.21

5) verfiicamos que todas las dependencia esten en el sistema:
./configure

6) ahora tenemos dos opciones.  en nuestro caso los compilare todos.  les exsorto a leer la documentacion para fines de produccion!
make config   #selecciona todos los modulos y no nos pregunta nada
make iconfig  #seleccionamos los modulos que deseamos

7) Ahora vamos a crear los binarios con los modulos
make

8) Ya todo preparado y listo vamos a instalar los archivos binarios y de configuracion en el usuario del sistema!

a) agergamos un usuario llamado eggdrop
adduser eggdrop

b) le indicamos que se instale en el directorio del usuario eggdrop en el directorio eggdrop
make install DEST=/home/eggdrop/eggdrop

nota:
normalmente esta configurado se instalen los archivos de configuracion en el usuario actual en que se esta instalando

9) cambiamos los permisos del directorio para el ususario eggdrop
chown -R eggdrop.eggdrop /home/eggdrop/

10) Nos cambiamos al usuario eggdrop, ingresamos al directorio de los archivos binarios y de configuracion
su - eggdrop
cd eggdrop

11) por seguridad le damos permisos 700 a todo el directorio de nuestro bot
chmod -R 700 ~/eggdrop

12)  sacamos una copia del archivo eggdrop, es mejor prevenir, y luego configuramos el archivo original
cp eggdrop.conf eggdrop.conf.back
vi eggdrop.conf

nota: solo agregare las opciones basicas pero mas adelante ire haciendo configuraciones mas personalizadas
----------------------------------------------------------------------------
##### BASIC SETTINGS #####

#editamos el nick del bot
set username "Nombre_Bot"

#configuramos el administrador, no se usa mucho pero es bueno tenerlo
set admin "Usuario <email: usuario@email.com>"

#no se utiliza mucho, almenos que utilizes redes de bot's
set network "I.didn't.edit.my.config.file.net"

# indicamos nuestra zona horarica.  para los que no tienen idea de esto: http://www.timeanddate.com/library/abbreviations/timezones/
#en RD tenemos
set timezone "AST"

#indicamos
set offset "4"

#el resto de la configuracion basica, lo dejamos comentado


##### LOG FILES #####

#aqui se configura la forma en que se guardan y el formato de los archivos logs.
#no modificamos nada !!!

set max-logs 5
set max-logsize 0
set quick-logs 0
set raw-log 0
logfile mco * "logs/eggdrop.log"
set log-time 1
set timestamp-format {[%H:%M:%S]}
set keep-all-logs 0
set logfile-suffix ".%d%b%Y"
set switch-logfiles-at 300
set quiet-save 0


##### CONSOLE #####
#esta es la consola por defecto.
#no modificamos nada!
set console "mkcobxs"


##### FILES AND DIRECTORIES #####
#modificamos el archivo donde se almacenara la configuracion del usuario
set userfile "usuario.user"

#dejamos el resto como viene por defecto
set sort-users 0
set help-path "help/"
set text-path "text/"
set temp-path "/tmp"
set motd "text/motd"
set telnet-banner "text/banner"
set userfile-perm 0600


##### BOTNET/DCC/TELNET #####
#no modificamos nada, solo es util cuando son varios redes de bot's!

##### MORE ADVANCED SETTINGS #####
#comentamos esta linea en primer lugar!!!
#die "Please make sure you edit your config file completely."
# y tambien descomentamos est alinea y le indicamo el dueno del bot
set owner "Usuario"
#estas son configuraciones para firewalls y para socks


##### MODULES #####
#dejamos por defecto esto.  Esto se configura mas adelante cuando estemos configurando los canales de forma personalizada.
set chanfile "mybotcha.chan"

#descomentamos y agregamos el canal
#channel add #lamest


#### SERVER MODULE ####
#aqui configuramos los servidores de IRC!

#en mi caso
set net-type 5

#el nombre del bot principal
set nick "Ariel_test"

#nombre alternativo del bot
set altnick "Ariel_test2"

#ponemos algo para no dejarlo vacio
set realname "/msg Ariel_test hello

#aqui ponemos el puerto de nuestro server:
set default-port 6667

#aqui agregamos nuestros servidores
set servers {
   morgan.freenode.net:6666
   morgan.freenode.net:6667
   wright.freenode.ne:6666
   wright.freenode.ne:6667
   card.freenode.net:6666
   card.freenode.net:6667
 }
#el resto lo dejamos como esta


#### NOTES MODULE ####

#comentamos:
#die "You didn't edit your config file completely like you were told, did you?"
----------------------------------------------------------------------------

12)renombramos el archivo de configuracion con el nick personalizado
cp eggdrop.conf nick.coonf

13) antes de finalizar debemos entrar al irc con un cliente de irc, puede ser:a xchat, irssi, mirc, lo que sea, antes de ejecutar el bot.

14) iniciamos el eggdrop con el archivo de configuracion
./eggdrop -m nick.conf

notas:
-cuando ejecutamos el programa vemos como automaticamente se conecta el bot a nuestro servidor(es) de irc y al canal predeterminado!
-desde ahora no necesitamos volver a ejecutar el comando anterior, solo ./eggdrop



PRIMERA IDENTIFICACION COMO DUENOS

1) para identificarnos como duenos y este automaticamente. el bot guarda  nuestro nick y parte de nuestra ip.
/msg nick-bot hello

2) ahora le indicamos la contrasena
/msg nick-bot pass nuestro-passwd

Y listo!


AGREGAR EGGDROP AL INICIO DEL SISTEMA

nota:
el script se encuentra en scritps/autobotchk

listamos todos las entradas del crontab actual
ctrontab -l

ejecutamos este comando para que el eggdrop inicie automaticamente en nuestro crontab
./scripts/autobotchk archivo-config -dir /home/usuario/directorio-eggdrop/ -noemail

vemos la diferencia entre el anterior contab y vemos la nueva entrada
ctrontab -l

Luego de agregar todo encendemos el crontab y lo agreamos a los servicios de inicio:
a) service crond start
b) chkconfig crond on

LISTO!

nota: si reinicias el equipo que tiene el bot tienes que iniciar session como el usuario eggdrop para que el cron se ejecute.


Hasta aqui la instalacion y configuracion basica.  En la proxima entrega vamos a comunicarnos con nuestro bot para darle ordenes, agregaremos usuarios, les daremos permisos a los usuarios por canal o de forma global, configuraremos opciones y permisos a nuestro canal y crearemos una lista negra para los traviesos.

VPN PARA TONTOS

==CONFIGURACION PRINCIPAL==

 Este es el diagrama del laboratorio:





DETALLES DE HARDWARE PARA EL SERVIDOR:
Maquina virtual en Virtual Box
Centos 6.4 32 bits minimal
512mb ram
2.4ghz 1 solo nucleo
10gb de espacio

nota:  esta configuracion puede utilizarse para conectar equipos por una red LAN interna y para redes WAN.

DETALLES DE LOS EQUIPOS A VIRTUALIZAR
SERVIDOR VPN (EL QUE ACEPTA LAS CONEXIONES)
eth0: 192.168.80.5
tap0:10.8.0.1

CLIENTE LINUX
192.168.80.10
tap0 dhcp 10.8.0.0/24


CLIENTE WINDOWS
ip 192.168.80.2
tap0: dhcp 10.08.0.0/24



1) INSTALACION

-revisamos si ya tenemos los paquetes instalados
rpm -qa | grep openvpn

-agregar el rpm de sourceforce
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
i686 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

# cd /etc/yum.repos.d
# wget http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.repo

-luego de agregar los repositorios instalamos openvpn
yum install openvpn easy-rsa

-verificamos que el directorio este creado y vacio
ls /etc/openvpn

-verificamos que el demonio este en su ruta
ls /etc/rc.d/init.d/openvpn
    r
-verificamos que todos los archivos de configuracion este disponibles
ls /usr/share/doc/openvpn-2.2.2

-revisar que el easy-rsa se haya instalado
ls /usr/share/easy-rsa/


#-verisamos si el dispositivo esta creado
#cat /etc/net/tun

listado archivos de configuracion y directorios
/etc/openvpn        archivo de config
/usr/share/doc/openvpn-2.2.2    documentacion
/etc/rc.d/init.d/openvpn    demonio
/usr/share/openvpn/plugin    plugins
/etc/openvpn/openvpn-status.log logfie

-CONFIGURACION

-nos movemos al directorio de los archivos de configuracion.  copiamos los archivos de configuracion haca el directorio
cd /usr/share/doc/openvpn-2.2.2

-listamos los archivos de la carpeta antes de copiar
ls easy-rsa/

-listamos los archivos antes de copiar
ls /etc/openvpn

-copiamos todos loas archivos
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/* /etc/openvpn/

-confirmamos que todos los archivos se copiaron
ls /etc/openvpn

-nos movemos a al carpeta de los ejemplos de configuracion
cd sample-config-file

-copiamos el archivo de configuracion hacia su nueva ruta
cp server.conf /etc/openvpn/

-nos movemos hacia el directorio easy-rsa v2 en etc
cd /etc/openvpn/easy-rsa/2.0/

-editamos el archivo vars y agregamos la rusa del rsa
vi vars
-----------------------------------------------------------
######cambiamos este parametro
export EASY_RSA="pwd"
######por este de abajo:
export EASY_RSA="/etc/openvpn/easy-rsa/2.0"
-----------------------------------------------------------

copiamos los archivos cnf
cp openssl-1.0.0.cnf openssl.cnf

-cambiamos los permisos a los archivos de este directorio
chmod 755 *

- no se para que sirve esto
./vars

-creamos el directorio donde guardaremos las llaves
mkdir keys

-cargamos los valores de vars
source vars

-limpiamos cualquier rastro de algun certificado antes de proceder a crear cualquier certificado primario
./clean-all


-CREACION DE CERTIFIVADOS

-creamos los certificados y las llaves privadas
./build-ca

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: jeong
name -none
email: tland12@gmail
-----------------------------------------------------------

-listamos la llaves creadas
ls keys/
nos apareceran ca.crt y ca.key

-creamos la llave para el servidor
NOTA: OJO NOCAMBIAR EL NOMBRE SERVER!
./build-key-server server

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: server
name -none
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/

-creamos la llave del cliente en windows y el equipos en linux
OJO: CON EL NOMBRE CLIENT SE GENERARA UN ARCHIVO CON EL MISMO NOMBRE.  ESTOS ARCHIVOS HAY QUE COPIARLOS EN EL CLIENTE Y LUEGO SE ESCRIBE IGUALITO EN EL ARCHIVO DE CONFIGURACION
EJE:  SI EN VEZ DE CLIENTE PONEMOS WIN-2003, ASI MISMO SE GENERARA UN NUEVO ARCHIVO LLAMADO WIN-2003.CRT,KEY Y CSR.  EN EL ARCHIVO DE CONFIG DEL CLIENTE ASI SE LLAMARAN LOS CERTIFICADOS.
./build-key client

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: client
name -none
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/
client.crt y client.key y client.csr

./build-key windows
-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: windows
name -enter
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/
window.crt y windows.key y window.csr

-creamos el parametro diffie-hellman
./build-dh      o tambien openssl dhparam -out dh1024.pem 1024

-verificamos que se creo el archivo dh1024.pem
ls keys/
dh1024.pem


-copiamos la configuracion al /etc
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/server.conf

y lo sobre escribimos

-editamos el archivo de config
vi /etc/openvpn/server.conf

-----------------------------------------------------------
port 1194    #puerto que sera utilizado para comunicar los clientes con el servidor
proto udp    #tipo de protoloco que se utilizara para la conexion
dev tun        #tipo de interfaz: tun: linux-linux y tap0 linux-linux-windows documentacion
#---- Seccion de llaves -----
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt    #archvo de la autoridad certificadora
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt    #el certificado del servidor
key /etc/openvpn/easy-rsa/2.0/keys/server.key    #llave del servidor
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem    #
#----------------------------
server 10.8.0.0 255.255.255.0            #asignacion del rango de las ips que utilizaran en el tunel vpn
push "route 10.8.0.0 255.255.255.0"    #
ifconfig-pool-persist ipp.txt        # archivo de registro de las direcciones ips de los cleinte que esten conectados al tunel vpn
keepalive 10 120        #los paquetes se manejan cada 10 segundos y la conexion esta abajo sin no aparece ninguna resp en 120 seg.
;client-to-client        #los clientes solo pueden ver el servidor.
comp-lzo            #activa la compresion en vpn, si se realiza esta operacion en el servidor tambien se debe de hacer en el cliente.
persist-key            #
persist-tun           
max-clients 100            #maximo de clientes
;user nobody            #descomentar si se conectaran usuarios de windows, tambien el goup
;group nobody            #decomentar si se conectaran usuarios de windows, tambien user nobody
status openvpn-status.log    #almacena los eventos y los datos de las conexiones. se puede modificar para que guarde con el nombre del servidor el log
verb 4                #nivel para que se guarde algun dato en el log.
-----------------------------------------------------------

-iniciamos y detenemos el servicio
service openvpn start
service openvpn stop

-iniciamos el servidor de manera manual para ver los mensajes verbose y tener mas datos antes de finalizar la instalacion
openvpn --config server.conf

-en otra terminal entramos y verificamos que la interface tap0 tiene la ip 10.8.0.1
ipconfig tap0

-agregamos el servicio al listado de servicios que inician por defecto
chkconfig openvpn on

-revisamos este reenviando paquetes el servidor
vi /etc/sysctl.conf
net.ipv4.ip-forward=0  ; si esta asi hacemos el siguiente comando

-le indicamos al servidor que puede reenviar paquetes de una interface a otra
echo 1 > /proc/sys/net/ipv4/ip_forward

-volvemos a revisar que este cambiado el parametro a 1
vi /etc/sysctl.conf
net.ipv4.ip-forward=1

-ver los cambios
sysctl -p

-guardamos los cambios
sysctl -w

-agregamos al iptables que todas las conexiones de tap0 entren
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A OUTPUT -oi tap+ -j ACCEPT



-INSTALACION Y CONFIGURACION DE LOS CLIENTES


-LINUX

-revisamos si ya esta instalado el openvpn
rpm -qa | grep openvpn

-si no esta instalado procedemos a instalarlo
yum install openvpn

-copiamos el archivo de configuracion
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.conf /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.crt /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.key /etc/openvpn/

-editamos la configuracion
cd /etc/openvpn/
vi client.conf


OJO: LA RUTA DE LOS CERTIFICADOS CRT Y KEY DEBEN DE COLOCARSE IGUAL QUE COMO SE GENERARON ANTERIORMENTE.
-----------------------------------------------------------
client        #configuracion de un cliente
dev tun        #interface
proto udp    #protocoo de transmision
remote 172.16.101.166 1194    #la ip del servidor
;user nobody       
;groud nobody
float   
resolv-retry infinite
nobind
persist-key
persist-tun
#------ LLAVES Y CERTIFICADOS --------
ca /etc/openvpn/keys//ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
#-------------------------------------
ns-cert-type server
comp-lzo        #compresion de la comunicacion
verb 3            #modo de recoleccion de datos
-----------------------------------------------------------


scp root@server:/etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn

-verificamos que se haya copiado
ls /etc/openvpn

-arrancamos el server manual para ver todo de forma verbose
openvpn --config client.conf

-verificamos que la ip sea 10.8.0.2
ifconfig tap0

-verificamos que haya comunicacion
ping 10.8.0.1


-WINDOWS
descargar el openvpn-install-2.3.0-I005-i686.exe de la pagina openvpn.net

copyamos el ca.crt y el windows.crt y key desde el servodr a:
c:\program files (x86)\openvpn\config\ca.crt window.crt window.key

editamos el archivo
c:\program files (x86)\openvpn\config\client.ovpn

-----------------------------------------------------------
remote 192.168.80.5 1194
dev tap
ca ca.crt
cert window.crt
key window.key
-----------------------------------------------------------

nota: tenemos que copiar los archivos por ftp o por samba

-conectamos el programa por el inicono de abajo

-revisamos la confexion
ipconfig /all


ping 10.8.0.1
ping 10.8.0.2


-AGREGANDO HOST QUE VIENEN DESDE INTERNET

en el servidor editamos el archivo de configuracion
vi /etc/openvpn/server.conf

push "route 192.168.56.0 255.255.255.0 ip-gatw\eway"


-en el cliente hacemos una prueba con:
route -n ip-serv


-AGREGANDO AUTENTICACION POR USUARIOS
en el servidor editamos el archivo de configuracion y agregamos el pluging:
vi /etc/openvpn/server.conf
-----------------------------------------------------------
;server-brigde
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
-----------------------------------------------------------

-reiniciaos el servicio
service openvpn restart

-en el cliente
vi /etc/openvpn/client.conf

-----------------------------------------------------------
auth-user-pass
-----------------------------------------------------------

-arrancamos el server manual para ver todo de forma verbose
openvpn --config client.conf

-nos pedira usuario y contrasena
#investigar k usuario y contrasena es

-verificamos que se haya creado la conexion tag0
ifconfig

-probamos la comunicacion desde el cliente
ping 10.8.0.1

-probamos la comunicacion desde el server
ping 10.8.0.2



-AGREGAMOS UNA INTERFACE PARA MANTENIMIENTO

-en el server:
vi /etc/openvpn/server.conf
 
-----------------------------------------------------------
management localhost 7505
-----------------------------------------------------------

service openvpn restart
telnet localhost 7505


-PUSHING DHCP OPTIONS TO CLIENTS
-en el server:
vi /etc/openvpn/server.conf

-----------------------------------------------------------
push "dhcp-option DNS 10.8.0.4"
push "dhcp-option DNS 10.8.0.5"
----------------------------------------------------------
-

02 diciembre 2013

Cmatrix, el codigo de matrix en nuestro terminal.


Cmatrix es un "salva pantallas" para terminal que emula el monitor de la ya reconocida pelicula Matrix.   Esta desarrollado en ncurses y puede compilarse en otros sistemas operativos con pocas modificaciones. 


Pagina oficia;
http://www.asty.org/cmatrix/


Aquí les muestro como instalarse para fedora 17 y sus opciones:

1) agregamos el repositorio

$ vi /etc/yum.repos.d/rpm-sphere.repo:
--------------------------------------------------------------------------------------
[rpm-sphere]
name=RPM Sphere
baseurl=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_17/
gpgkey=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_17/repodata/repomd.xml.key
enabled=1
gpgcheck=1
--------------------------------------------------------------------------------------
 

2) instalamos la aplicacion
$ yum install -y cmatrix

3) para iniciar la aplicacion solo escribir
$ cmatrix

Optiones:
    -a: Asynchronous scroll, more like the movie/original screensaver
    -b: Partial bold text mode
    -B: All bold text mode
    -f: Force the linux $TERM type to on
    -l: Linux support for linux console matrix.fnt font
    -n: No bold text mode
    -o: Use "old-style" scrolling - less like the movie, more like the Win/Mac screensaver.
    -s: "Screen saver" mode.  Any key aborts (default is "eye candy" mode, must abort with control C)
    -x: X window mode, use if your xterm is using mtx.pcf
    -u [update]: Update delay (0-9, default 4).
    -C [color]: Use color for matrix (default green).
 
Keystrokes available while running (not available in -s mode):
    a: Toggle asynch mode
    b: Enable partial bold text
    B: Enable all bold text
    n: Disable bold text
    0-9: Change update delay
    ! @ # $ % ^ & ): Change the color of the matrix to the corresponding color: ! - red, @ - green, # - yellow, $ - blue, % - magenta, ^ - cyan, & - white, ) - black.