THC Hydra, Ataques por fuerza bruta

THC-Hydra es un potente software crackeador de contraseñas por fuerza bruta generado por el grupo The Hackers Choice. Es muy utilizado en la actualidad puesto que soporta múltiples servicios (HTTP, SNMP, IMAP, POP3, Telnet, Cisco, MySQL, Oracle, entre otros) y es multiplataforma.
Hoy en día, la seguridad de la información, es un tema de suma importancia que obliga la utilización de diferentes mecanismos de protección para hacer de los sistemas cada vez menos vulnerables. Es así como aparecen técnicas que evitan el Login Storm bloqueando temporalmente la cuenta de un determinado usuario tras varios intentos fallidos de logueo dificultando, de este modo, los ataques por fuerza bruta.

Instalación

apt-get install hydra

y si queremos con interfaz gráfica

hydra-gtk
  • Utilización de THC Hydra

Para efectos prácticos a continuación se describe como descifrar usuarios de WordPress y como prevenir ataques por fuerza bruta, Se instaló primero Hydra en GNU Linux con la orden “apt-get install hydra”, luego mediante ingeniería social se generó un diccionario con los nombres de los usuarios. Como Wordprees se caracteriza por ser un blog en donde el nombre del autor de algún post esta relacionado con el nombre de un usuario, obtenemos a los usuarios del blog.

Para crear el diccionario (tanto de usuarios y contraseñas) se puede utilizar algún editor de texto como nano, vi o gedit en donde en cada una de las líneas en el archivo de texto corresponde a una lista de usuarios o a una lista de contraseñas.

Por Ejemplo (Diccionario de contraseñas):

Una vez identificados los usuarios y generado nuestro diccionario de contraseñas, vamos a la web de login de wordpress la cual por defecto es “http://sitioweb/wp-login.php” , analizamos el codigo fuente de la página web identificando los campos de usuario y contraseña.

Screenshot from 2013-04-14 16:40:20

Análisis de los campos de Login:

1) Obtenemos el sitio que recibe los parámetros del usuario (nombre y contraseña)

2) Obtenemos el nombre de la variable POST, para el nombre del usuario

3) Obtenemos el nombre de la variables POST, para la contraseña del usuario

Ahora ya conociendo los usuarios (Jhon, test, Admin), con nuestro diccionario de contraseñas, el nombre del host, y las variables del mecanismo POST utilizamos Hydra con :

hydra -l Test -P dicc_passwords.txt www.balblabla.cl http-post-form "/blog/wp-login.php:log=^USER^&pwd=^PASS^:Incorrect"

donde :

  • dicc_passwords.txt : nombre del archivo de texto con las posibles claves (Diccionario)

  • http-post-form: realiza el ataque por medio de consultas POST

Con el comando anterior Hydra realiza al formulario tantas consultas como llaves erróneas salgan, hasta encontrar la clave correcta, tal como se muestra en la captura de Wireshark

Captura: (El filtro a la dir ip corresponde al sitio web www.blablabla.cl)

Screenshot from 2013-04-14 17:01:46

Dando como resultado, el usuario y la contraseña:

Screenshot from 2013-04-14 16:26:16

  • Implementación de Plugin para evitar Login Storm

Para evitar el Login Storm, instalamos y configuramos el módulo mod_security de Apache. Mod_evasive es un módulo de seguridad programado para cargarse junto el servidor Apache y cuyo propósito no es otro que el de prevenir o anular ataques de Denegación de Servicio o de  fuerza bruta basados en peticiones masivas al servidor de páginas web (HTTP DoS).

Como medida adicional wordpress posee un plugin llamado Wordfence, el cual perminte asignar reglas que  permiten controlar la cantidad de consultar en un lapso de tiempo determinado, evitando ataques como los de fuerza bruta, en el menu izquierdo del panel de administración encontramos .

Para realizar las pruebas se configuro mod_evasive ubicado en “/etc/apache2/mods-enabled”, con las siguientes condiciones.

Para realizar las pruebas configuró dentro de la opción Firewall que trae el Plugin  Wordreference, con las siguientes condiciones.

(Nota, el diccionarios de contraseñas , se le aumentaron la cantidad de contraseñas erróneas con el fin que consultará varias veces por segundo y se activará el Firewall)

Luego de implementar estas dos medida se seguridad contra ataques de Fuerza Bruta, con Hydra se volvió a ejecutar la orden anterior , solo que esta vez, Hydra encontró 11 contraseñas válidas, esto se debe a que el programa no es capaz de reconocer la condición de error, debido a que las consultas están siendo bloqueadas, lo que por ende Hydra interpreta esta condición como una autenticación exitosa.

2

Jitsi Cliente de mensajería instantánea Opción a #skype

videobridge-900

Por allí me tope con este  Cliente de mensajería instantánea , software libre (GPLV3), disponible tanto para GNU Linux, Windows y MacOS, permite realizar video conferencias, entre una o más personas (Validado, realice una prueba), se puede integrar con gtalk, chat facebook, msn, jabber, entre otras.

contact-list

Instalación en GNU Linux:

1) Descargamos el software en:  https://ji tsi.org/Main/Download
2) En el caso de Ubuntu o Debian instalamos el “deb” descargado con:

apt-get install nombre.deb

 

 

 

Obtener Correos Instutucionales

1

Interesante Script para buscar correos institucionales

Para Ejecutar :

./mailaitor.sh Sitio_web.com

 

#!/bin/bash

#
#    POR   : Leonardo Bravo
#    FECHA : 1/04/2013
#

substr(){
  aux=$(echo "$1" | awk '{split($0,a,"'$2'"); print a[2]}')
  echo "$aux" | awk '{split($0,a,"'$3'"); print a[1]}'
  rm -f .out
}

echo " ">datos.txt

CONTADOR=1
while [  $CONTADOR -lt 41 ]; do #CONSULTA 4 PAGINAS DE BING
    bing=$(curl 'http://www.bing.com/search?q=inbody%3a%40'$1'&go=&qs=ds&filt=all&first='$CONTADOR'&FORM=PERE' | grep '@'$1'')
    mails_1=$(echo -e $bing | sed 's/ /\\n/g'|sed 's/<strong>//g' | sed 's/<\/strong>/\\n/g' | sed 's/<\/p>/\\n/g' | sed 's/<p>/\\n/g' | sed 's/<\/div>/\\n/g' | sed 's/<\/li>/\\n/g' | sed 's/<li class=\"sa_wr\">/\\n/g' | sed 's/<title>//g' | sed 's/<\/script>//g' | sed 's/)//g' | sed 's/(//g')
    echo -e $mails_1 | grep @$1 | grep -v "inbody:">> datos.txt
    let CONTADOR=CONTADOR+10
done

echo " ">users
echo " ">user.txt
echo "Buscando Correos de "$1
while read line
do
    aux=$(echo ${line%%*@})
    #user=$(substr $aux " " "@$1")
    users=$(echo $aux | sed 's/#//g' | sed 's/@//g' | sed 's/'$1'//g')
    user=$(echo $aux | sed 's/#//g')
    echo -e $users"\n">>users
    echo -e $user"\n">>user.txt
done < datos.txt

#chmod +x cvmu.sh
#./cvmu.sh $1 > result.txt
#less result.txt
less user.txt

Saludos!

Low Orbit Ion Cannon (LOIC)

l1

Por simple curiosidad me tope con un programa que se encuentra en dominio publico, llamado Low Orbit Ion Cannon (LOIC), según la comunidad este programa se caracteriza por ser una herramienta que puede realizar un ataque de denegación de servicio.

Desarrollada por «praetox» usando el lenguaje de programación C# (Existe también un fork en C++ y Qt llamado LOIQ). La aplicación realiza un ataque de denegación de servicio del objetivo enviando una gran cantidad de paquetes TCP, paquetes UDP o peticiones HTTP con objeto de determinar cuál es la cantidad de peticiones por segundo que puede resolver la red objetivo antes de dejar de funcionar.

Por esas estúpidas razones de la vida, LOIC esta escrito en .NET, el programa esta en dominio publico (No es Software Libre), existen otras herramientas para realizar este tipo de ataques, que pretendo profundizar en otros post, algún día pero solo con fines académicos y con el afan de tomar medidas de seguridad para prevenir este tipo de ataques.

 

Instalación :

apt-get install mono-complete

Download the latest version of LOIC from here: (Low Orbit Ion Cannon)

 

Ejecución:

mono LOIC.exe

 

DEMO

NOTA:
Es solo educativo,realizado en un ambiente controlado y de autoría propia. El ataque a sitios web con estas herramientas esta penado por la ley  puede tener acciones legales y estos ataques son rastreables, no lo intentes desde tú casa.

Como Prevenir este tipo de ataques:

Evitar ataques DOS con mod_evasive http://library.linode.com/web-servers/apache/mod-evasive

Fuente: http://www.zimbio.com/Linux/articles/WP-Mo4l2ShC/How+Install+Low+Orbit+Ion+Cannon+Ubuntu

Saludos

 

Documental Completo: La Revolución virtual “El precio de lo gratuito”.

Interesante documental el cual hace reflexión de lo expuesto que las redes sociales dejan nuestros datos, vida personal, etc muchas veces la poca conciencia que tenemos al respecto.  Ademas habla de como las empresas utilizan esta información para realizar negocios, estudiar el mercado y entregar publicidad personalizada según los perfiles de gustos que tienen los usuarios.

Algo que no me gusta es que inconscientemente envía un mensaje el cual es actualmente como el internet es “gratis”, uno queda expuesto a tener que aceptar cualquier termino de uso para acceder a la información, y deja a ver (no lo dice textualmente) que la solución es pagar para tener un servicio más privado.  ¿les da la misma idea?.

Magnet links Iceweasel (Firefox)

¿Qué es un magnet link?

1. Arranca Iceweasel y escribe about: config en la barra de direcciones.
2. Haga clic en una entrada> Nuevo> Boolean
3. Intro: network.protocol-handler.expose.magnet
4. Elija Falso como su valor

¡Ya está! Ahora, la próxima vez que haga clic en un enlace imán, Iceweasel (Firefox) se abrirá  un cuadro de diálogo  para elegir una aplicación para manejar el tipo de archivo, por ejemplo, / usr / bin / gtk-transmisión,.

Fuente: http://someslack.wordpress.com/2012/05/18/make-firefox-understand-magnet-links/

Chromium Stable Fedora 17

Para añadir el repositorio de Chromium para Fedora, abrimos la terminal para crear el archivo chromium.repo y añadir los repositorios. Si no tenéis el editor gedit, podéis sustituirlo por el que tengáis dentro de la línea del comando (kwrite, kate, leafpad,nano…)

su -

.

gedit /etc/yum.repos.d/chromium.repo

Editamos dejando solamente lo siguiente:

[fedora-chromium-stable]
 name=Builds of the “stable” tag of the Chromium Web Browser
 baseurl=http://repos.fedorapeople.org/repos/spot/chromium-stable/fedora-$releasever/$basearch/
 enabled=1
 skip_if_unavailable=1
 gpgcheck=0
[fedora-chromium-stable-source]
 name=Builds of the “stable” tag of the Chromium Web Browser – Source
 baseurl=http://repos.fedorapeople.org/repos/spot/chromium-stable/fedora-$releasever/SRPMS
 enabled=0
 skip_if_unavailable=1
 gpgcheck=0

Actualizamos los repositorios:

yum update

Instalamos Chromium.

yum -y install chromium

Quedadas Google plus , chupate esta skype

Una de las características mas llamativas e importantes en la nueva red social Google plus es la de Quedadas.
(Lee primero: Manual Google Plus.)

Invitación Google Plus

Que es esto de quedadas, pues es una forma de poder ver a nuestros amigos por vídeo chat, si lanzamos una llamada de quedada en el grupo de nuestros amigos, todos los miembros del grupo tendrán un aviso en su panel y se sumara a la “videoconferencia”.
Ya que veremos a todos los amigos en un fila de cámaras, y todos participamos al mismo tiempo, tendremos que seguir obviamente las normas de videoconferencia e intentar que no se convierta en un gallinero nuestra quedada, que suele pasar. La paciencia y el respeto a los demás no es una mera norma de educación es una obligación.
Esta es la imagen de nuestro Google Plus aquí veremos el botón quedada. Lo pulsamos y veremos la siguiente pantalla, la primera quedada veremos que nos sale esta pantalla.
Lo pulsamos y veremos la siguiente pantalla, la primera quedada veremos que nos sale esta pantalla. Es para instalar el plugin de vídeo conferencias.
Le daremos al botón de INSTALL PLUGIN, y pasaremos a ver esta siguiente pantalla
Pasamos a ver esta pantalla donde nos indica que sistema operativo tenemos que utilizar seria difícil que no usaras uno de estos. Muy, muy Geek tendríamos que ser. Bien le damos al boton INSTALL y veremos lo siguiente.
En esta pantalla el sistema operativo que utilizamos saldrá ya en la lista si que concretaremos que bits si 64 o 32, si no lo sabes consulta o tendrás que arriesgarte a los 32 que te funcionara, con 64 pero no pongas 64 si no estas seguro que no funcionara si es 32.
Una vez elegido le damos a instalas chat de vídeo y voz
Se instalara y cuando termines lo veras como esta imagen de arriba y en el primer botón de la derecha ves que pone invitar, clic en el
Aquí en esta pantalla podremos elegir a que anillo va dirigida la quedada elegimos el que nos interese. Y volveremos a ver nuestra cam y la de todos los amigos que acepten la invitación.
Tenemos la opción de chat, que abrirá un chat para el grupo
Y la opción de YouTube que es para ver YouTube.
Y luego tienes apagar vídeo, apagar micrófono, configuración (cam, sonido, etc) y como no salir de la quedada.
Te agradecería un +1 si te a gustado el Post o simplemente te apetece, Un saludoEspero que este manual os sea de utilidad un abrazo a todos.

Scipt en Bash para instalar ipkg en DD WRT

Buscando y buscando, con Manuel Alaba  después de luchar con problemas de escritura y cuanta cosa , encontramos un scrip que realiza todo el proceso para instalar los paquetes IPKG en el router DD WRT.

Acá se los dejo, el scipt es awesom ;

#!/bin/sh
################################################
# Modding script for Linksys WRT160NL & WRT500NL
# Features:
#    -graphical torrent client
#    -pure-ftpd virtual user system
#    -samba
#    -printer sharing
#
# Author: tsoky, tema (2010)
################################################
#VERSION v1.056291

case "$1" in
initiate)
	echo "##################################"
	echo "# wrt160nlmod INITIAL SETUP ($VERSION) #"
	echo "##################################"
	echo -n "Finding USB drives... "
	DEV=`find /dev/scsi/ -name part1`;
	echo "done."

	echo -n "Mounting USB drive... "
	if [ "$(mount | grep /mnt)" != "" ]
	then
	echo -e -n "\n/mnt has been already used. umounting... "
	umount /mnt
	mount $DEV /mnt
	echo "done."
	else
	mount $DEV /mnt
	echo "done."
	fi

	echo -n "Copying stuff to USB... "
	cp -a /etc/ /mnt/
	cp -a /bin/ /mnt/
	cp -a /dev/ /mnt/
	cp -a /lib/ /mnt/
	cp -a /usr/ /mnt/
	cp -a /tmp/ /mnt/
	cp -a /jffs/ /mnt/
	echo "done."

	echo -n "Mounting USB over running system... "
	mount /mnt/etc /etc
	mount /mnt/bin /bin
	mount /mnt/dev /dev
	mount /mnt/lib /lib
	mount /mnt/usr /usr
	mount /mnt/tmp /tmp
	mount /mnt/jffs /jffs
	echo "done."

	echo -n "Setting up ipkg... "
	mv /etc/ipkg.conf /etc/ipkg.conf.orig
	echo -e "src backfire http://downloads.openwrt.org/backfire/10.03-rc2/atheros/packages/\ndest root /\ndest ram /tmp" > /etc/ipkg.conf
	cp /bin/ipkg /bin/ipkg.orig
	cat /bin/ipkg.orig |sed -e "s/--passive-ftp //" > /bin/ipkg
	ipkg update >> /dev/null 2>&1
	ipkg install libc >> /dev/null 2>&1
	ipkg install coreutils-sort >> /dev/null 2>&1
	echo "done."

	echo -e "nvram show | grep wan_ipaddr= > /tmp/ip_currentquery
	IPMATCH=\140cmp /tmp/ip_currentquery /tmp/ip_neweststored\140
	if [ \042\044IPMATCH\042 == \042\042 ]; then echo -e \042IP match no action needed\042; else
	echo -e \042New WAN IP, therefore restoring iptables settings\042
	cat /etc/rc.* | grep iptables > /etc/rcc.iptables
	sh /etc/rcc.iptables
	nvram show | grep wan_ipaddr= > /tmp/ip_neweststored
	fi" > /etc/rcc.iptables.cronjob
	chmod +x /etc/rcc.iptables.cronjob

	nvram show | grep wan_ipaddr= > /tmp/ip_neweststored

	stopservice cron
	nvram set cron_jobs="*/2 * * * * root /etc/rcc.iptables.cronjob
	* * * * * root date > /etc/rcdate"
	nvram set cron_enable=1
	nvram commit
	startservice cron 

	echo -n "Creating startup scripts... "
	nvram set rc_startup="sleep 5
	mount \`find /dev/scsi/ -name part1\` /mnt
	mount /mnt/etc /etc
	mount /mnt/bin /bin
	mount /mnt/dev /dev
	mount /mnt/lib /lib
	mount /mnt/usr /usr
	mount /mnt/tmp /tmp
	mount /mnt/jffs /jffs
	sleep 70
	nvram show | grep wan_ipaddr= > /tmp/ip_neweststored
	if [ -f /mnt/etc/rc.transmission ]; then /bin/sh /mnt/etc/rc.transmission; fi
	if [ -f /mnt/etc/rc.samba ]; then /bin/sh /mnt/etc/rc.samba; fi
	if [ -f /mnt/etc/rc.pureftpd ]; then /bin/sh /mnt/etc/rc.pureftpd; fi
	if [ -f /mnt/etc/rc.p910nd ]; then /bin/sh /mnt/etc/rc.p910nd; fi
	if [ -f /mnt/etc/rc.3g ]; then /bin/sh /mnt/etc/rc.3g; fi"
	nvram commit
	echo "done."

	mkdir -p /mnt/downloads
	mkdir -p /mnt/downloads/.incomplete
	chmod -R 777 /mnt/downloads
;;

disable)
	echo "##########################"
	echo "# DISABLING AUTO STARTUP #"
	echo "##########################"
	echo -n "Are you really want to disable wrt160nlmod tools? [Y/N]: "
	read SURE;
	if [ "$SURE" == "Y" -o "$SURE" == "y" ]
	then
	    echo -n "Clearing rc_startup... "
	    nvram set rc_startup=""
	    nvram commit
	    echo "done."
	    echo -n "Do you want to reboot the router now? [Y/N]: "
	    read REB;
	    if [ "$REB" == "Y" -o "$REB" == "y" ]
	    then
	    reboot
	    else
	    echo "Please reboot your router manually."
	    fi
	fi
;;

update)
    echo -n "Updating wrt160nlmod script... "
    wget http://wrt160nl.org/files/wrt160nlmod.sh -O wrt160nlmod.sh.new -q
    mv wrt160nlmod.sh wrt160nlmod.sh.old
    mv wrt160nlmod.sh.new wrt160nlmod.sh
    chmod +x wrt160nlmod.sh
    echo "done."
;;

start)
	echo -n "Finding USB drives... "
	DEV=`find /dev/scsi/ -name part1`;
	echo "done."

	echo -n "Mounting USB drive... "
	mount $DEV /mnt
	echo "done."

	echo -n "Mounting USB over running system... "
	mount /mnt/etc /etc
	mount /mnt/bin /bin
	mount /mnt/dev /dev
	mount /mnt/lib /lib
	mount /mnt/usr /usr
	mount /mnt/tmp /tmp
	mount /mnt/jffs /jffs
	echo "done."

	echo -n "Starting services... "
	if [ -f /mnt/etc/rc.transmission ]; then /bin/sh /mnt/etc/rc.transmission; fi
	if [ -f /mnt/etc/rc.samba ]; then /bin/sh /mnt/etc/rc.samba; fi
	if [ -f /mnt/etc/rc.pureftpd ]; then /bin/sh /mnt/etc/rc.pureftpd; fi
	if [ -f /mnt/etc/rc.p910nd ]; then /bin/sh /mnt/etc/rc.p910nd; fi
	if [ -f /mnt/etc/rc.3g ]; then /bin/sh /mnt/etc/rc.3g; fi
	echo "done."
;;

torrent)
    case "$2" in
    install)
	echo "#########################################"
	echo "# INSTALLING TRANSMISION TORRENT CLIENT #"
	echo "#########################################"
	echo -n "Setting up client... "
	ipkg install libevent >> /dev/null 2>&1
	ipkg install libcurl >> /dev/null 2>&1
	ipkg install zlib >> /dev/null 2>&1
	ipkg install transmission-daemon >> /dev/null 2>&1
	ipkg install transmission-web >> /dev/null 2>&1
	transmission-daemon
	sleep 5
	killall transmission-daemon
	sleep 8
	cp /tmp/root/.config/transmission-daemon/settings.json /tmp/root/.config/transmission-daemon/settings.json.orig
	cat /tmp/root/.config/transmission-daemon/settings.json.orig |sed -e "s/127\.0\.0\.1/127\.0\.0\.1,\*\.\*\.\*\.\*/;s/\\\\\/tmp\\\\\/root\\\\\/Downloads/\/mnt\/downloads/;s/\\\\\/tmp\\\\\/root\\\\\/.config\\\\\/transmission-daemon\\\\\/Incomplete/\/mnt\/downloads\/incomplete/;s/incomplete-dir-enabled\": false/incomplete-dir-enabled\": true/" > /tmp/root/.config/transmission-daemon/settings.json
	rm /tmp/root/.config/transmission-daemon/settings.json.orig
	ln -s /mnt/downloads/ /tmp/root/Downloads
	echo -e "done.\n\n"
	$0 torrent setup
    ;;

    setup)
	echo "#########################################"
	echo "# SETTING UP TORRENT CLIENT PREFERENCES #"
	echo "#########################################"
	echo -n "Do you want authentication for the TRANSMISSION GUI? [Y/N]: "
	read AUTH;
	if [ "$AUTH" == "Y" -o "$AUTH" == "y" ]
	then
	echo -n "Enter username: "
	read TUSER;
	echo -n "Enter password: "
	read TPASS;
	echo "transmission-daemon -a *.*.*.* -t -u $TUSER -v $TPASS -g /tmp/root/.config/transmission-daemon/ -w /mnt/downloads" > /mnt/etc/rc.transmission
	else
	echo "transmission-daemon -T -a *.*.*.* -g /tmp/root/.config/transmission-daemon/ -w /mnt/downloads" > /mnt/etc/rc.transmission
	fi
#	echo "Running transmission daemon... "

	echo -n "Do you want to access TRANSMISSION GUI through the internet? [Y/N]: "
	read RAT;
	if [ "$RAT" == "Y" -o "$RAT" == "y" ]; then echo "iptables -I INPUT -p tcp --dport 9091 -j ACCEPT" >> /mnt/etc/rc.transmission;
	iptables -I INPUT -p tcp --dport 9091 -j ACCEPT; else
	for i in `iptables --line-number -n -L |grep 9091 |awk '{print $1}' |sort -n -r`; do iptables -D INPUT $i; done
	cat /mnt/etc/rc.transmission |grep -v 'iptables' > /mnt/etc/rc.transmission;
	fi

#	PID=`pidof transmission-daemon`;
	if [ "`pidof transmission-daemon`" != "" ]
	then
	    echo -n "Do you want to restart transmission-daemon? [Y/N]: "
	    read REST;
	    if [ "$REST" == "Y" -o "$REST" == "y" ]; then kill -2 `pidof transmission-daemon`; /bin/sh /mnt/etc/rc.transmission; fi
	else
	    /bin/sh /mnt/etc/rc.transmission
	fi

	echo -e "You can access the GUI via http://192.168.1.1:9091\n"
	echo -e "Very important to read http://wrt160nl.org FAQ Q114. related to settings and general info how to switch-off the router.\n"
	;;
	esac
;;

samba)
    case "$2" in
    install)
	echo "###########################"
	echo "# INSTALLING SAMBA SERVER #"
	echo "###########################"
	echo -n "Installing SAMBA server... "
	ipkg install samba-common >> /dev/null 2>&1
	ipkg install samba-server >> /dev/null 2>&1
	cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
	cat /etc/samba/smb.conf.orig |sed "s/tmp/mnt\/downloads/;s/writeable = no/writeable = yes/;s/\[mnt\/downloads\]/\[downloads\]/" > /etc/samba/smb.conf
	echo "done."
	$0 samba setup
    ;;

    setup)
	echo "############################"
	echo "# CONFIGURING SAMBA SERVER #"
	echo "############################"
	if [ ! -f /etc/samba/smbpasswd ]; then touch /etc/samba/smbpasswd; fi
	echo -n "Do you want password authentication? [Y/N]: "
	read AUTH;
	if [ "$AUTH" == "Y" -o "$AUTH" == "y" ]; then smbpasswd -a root; else smbpasswd -a root -n; fi
	echo "/usr/sbin/smbd -D" > /mnt/etc/rc.samba
	/bin/sh /mnt/etc/rc.samba
	echo "Samba is now accessible with user name \"OpenWrt\\root\" at \\\\192.168.1.1\\downloads\\"
	echo "Please note that Windows 7 users should enable NTLMv2 authentication"
	echo "HOWTO: http://www.builderau.com.au/blogs/viewblogpost.htm?p=339270746"
    ;;
    esac
;;

ftp)
    case "$2" in
    install)
	echo "###############################"
	echo "# INSTALLING PURE-FTPD SERVER #"
	echo "###############################"
	echo -n "Installing PURE-FTPD server... "
	ipkg install pure-ftpd >> /dev/null 2>&1
	echo "done."
	echo -n "Do you want to use different port than 21? [Y/N]: "
	read DPF;
	if [ "$DPF" == "Y" -o "$DPF" == "y" ]
	then
	    echo -n "Enter port: "
	    read PORT;
	    echo "pure-ftpd -E -b -B -S0.0.0.0,$PORT -lpuredb:/etc/pureftpd.pdb" > /mnt/etc/rc.pureftpd
	else
	    echo "pure-ftpd -E -b -B -S0.0.0.0,21 -lpuredb:/etc/pureftpd.pdb" > /mnt/etc/rc.pureftpd
	fi
	$0 ftp setup
    ;;

    setup)
        echo "################################"
        echo "# CONFIGURING PURE-FTPD SERVER #"
        echo "################################"
        if [ -f /etc/pureftpd.passwd ]; then echo -e "Existing accounts:\n`pure-pw list`\n"; fi
        while [ "$FTPA" != 6 ];
        do
        echo "1. List existing accounts"; echo "2. Add new account"; echo "3. Delete account";
        echo "4. Enable FTP over internet (INSECURE)"; echo "5. Disable FTP over internet (SECURE)"; echo "6. Exit setup";
        read FTPA;
            case "$FTPA" in
            1)
		echo "Listing users: "
                LIST=`pure-pw list 2>>/dev/null`
		if [ "$LIST" == "" ]; then echo -e "No users found. Please create a new user!\n"; else echo -e "$LIST\n"; fi
                ;;
            2)
                echo -n "Enter username: "
                read ADDUSER;
                pure-pw useradd $ADDUSER -u 1 -g 1 -d /mnt/downloads
                pure-pw mkdb
		echo -e "'$ADDUSER' has been added.\n"
                ;;
            3)
                echo -n "Enter username for deletion: "
		read RMUSER;
		IFEXIST=`pure-pw list |grep $RMUSER`
		if [ "$IFEXIST" == "" ]; then echo -e "User not found. Please enter a valid user for deletion!\n"; else
                pure-pw userdel $RMUSER
                pure-pw mkdb
		echo -e "'$RMUSER' has been deleted.\n"
		fi
                ;;
            4)
		echo -n "Enabling Pure-FTPD over public iptables... "
		PORT=`cat /mnt/etc/rc.pureftpd |grep pure-ftpd |awk '{print $5}' |sed -e "s/.*,//"`
                echo "iptables -I INPUT -p tcp --dport $PORT -j ACCEPT" >> /mnt/etc/rc.pureftpd
		echo -e "done.\n"
                ;;
            5)
		echo -n "Disabling Pure-FTPD over public internet... "
		PORT=`cat /mnt/etc/rc.pureftpd |grep pure-ftpd |awk '{print $5}' |sed -e "s/.*,//"`
		for i in `iptables --line-number -n -L |grep $PORT |awk '{print $1}' |sort -n -r`; do iptables -D INPUT $i; done
                if [ -f /mnt/etc/rc.pureftpd ]; then cat /mnt/etc/rc.pureftpd |grep -v 'iptables' > /mnt/etc/rc.pureftpd; fi
		echo -e "done.\n"
                ;;
            esac
        done
	/bin/sh /mnt/etc/rc.pureftpd
    ;;
    esac
;;

printer)
	echo -n "Setting up printer... "
	PRINTER=`dmesg |grep usblp0`
	if [ "$PRINTER" == "" ]
	then
	    echo "ERROR: No USB printer found!";
	    echo "Please attach the USB printer, and enable USB support in the web administration page.";
	else
	    mkdir /dev/usb
	    mknod -m 660 /dev/usb/lp0 c 180 0
	    ipkg install p910nd >> /dev/null 2>&1
	    echo "/usr/sbin/p910nd  -b -f /dev/usb/lp0 0" > /mnt/etc/rc.p910nd
	    echo "done."
	fi
	/bin/sh /mnt/etc/rc.p910nd
;;

3g)
case "$2" in
    install)
	echo -n "Setting up device... "
	mkdir -p /dev/usb
	mkdir -p /dev/usb/tts
	mknod -m 600 /dev/usb/tts/0 c 188 0
	mknod -m 600 /dev/usb/tts/1 c 188 1
	echo "done."
	echo -n "Setting up scripts... "
	echo -e "iptables -A FORWARD -i br0 -o ppp0 -j ACCEPT\niptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE\n" > /mnt/etc/rc.3g
	/bin/sh /mnt/etc/rc.3g
	echo "
#!/bin/sh
WANGW=`ip route |grep default |grep eth1 |awk '{print $3}'`
3GGW=`ip route |grep default |grep ppp0 |awk '{print $3}'`
if [ \"`ip route |grep 4.2.2.2`\" == \"\" ]; then ip route add 4.2.2.2 via $WANGW dev eth1; fi
if [ \"`pidof pppd`\" == \"\" ]; then pppd file /tmp/ppp/options.pppoe; fi
if [ \"`ping -I eth1 -c 1 4.2.2.2 |grep '64 bytes'`\" == \"\" ];
then
if [ \"`ip route |grep default |awk '{print $5}'`\" == \"ppp0\" ];
        then sleep 15;
        else
        echo \"`date` - Missing hearthbeat... falling back to 3G\" >> /tmp/root/netmon.log
        ip route del default via $WANGW dev eth1
        ip route add default via $3GGW dev ppp0
        fi
else
if [ \"`ip route |grep default |awk '{print $5}'`\" == \"eth1\" ];
        then sleep 15;
        else
        echo \"`date` - Found new hearthbeat... falling back to DHCP\" >> /tmp/root/netmon.log
        ip route del default via $3GGW dev ppp0
        ip route add default via $WANGW dev eth1
        fi
fi
/bin/sh /tmp/root/netmon.sh
" > /tmp/root/netmon.sh
	chmod +x /tmp/root/netmon.sh
	echo "done."
	echo "Please attach the 3G modem to the router and perform setup via GUI"
	echo "When finished, please run /tmp/root/netmon.sh"
    ;;
esac
;;

*)
	echo "wrt160nlmod VERSION v1.0561"
	echo "Usage: $0 option"
	echo "Available options:"
	echo "	initiate	- INITIAL SETUP - THIS SHOULD BE RUN FIRST!"
	echo "	disable		- Clearing auto-startup and restore to defaults"
	echo "	update		- Update wrt160nlmod script to the latest version"
#	echo "	start		- Needed after router reboots. Don't run this after initiation."
	echo "	torrent install	- Installing transmission torrent client"
	echo "	torrent setup	- Setting up transmission torrent client"
	echo "	samba install	- Installing Samba server"
	echo "	samba setup	- Setting up Samba server"
	echo "	ftp install	- Installing pure-ftpd server"
	echo "	ftp setup	- Setting up pure-ftpd server"
	echo " 	printer		- Setting up the USB printer and sharing"
#	echo "	3g install	- Installing WAN monitor for 3G/DSL/LAN"
#	echo "	3g setup	- Setting up WAN monitor script"
	echo "	"
;;
esac

 

Fuente:  http://wrt160nl.org/tutoeng.html

Saludos