#!/bin/bash # # port(fw) v1.0 , < by neuronal@2500hz.net > # -------------------------------------------- # 02/10/2002 # # Script casero util para realizar redirecciones de conexiones entrantes # a tu host. Semiautomatiza el uso de la funcion 'portfw' de ipmasqadm # mediante las asignaciones de puertos redirigidos hacia aquellos hosts # que tu elijas. # # Requisitos de uso: # - El script esta pensado para su manejo en sistemas con nucleos 2.2.X. # - Se vale de ipchains+ipmasqadm. # - Se ha de usar en conexiones enmascaradas. # - Se ha de tener el kernel compilado con las siguientes opciones: # CONFIG_EXPERIMENTAL=y # CONFIG_IP_MASQUERADE=y # CONFIG_IP_MASQUERADE_MOD=y # CONFIG_IP_MASQUERADE_IPAUTOFW=y/m # CONFIG_IP_MASQUERADE_IPPORTFW=y/m # CONFIG_IP_MASQUERADE_MFW=y/m # # # @_2500Hz Labs # http://www.2500hz.net/ # ## # version="1.0" portfw_info() { echo echo -e "--------------------------------------------------------" echo -e " port\033[1;37m(\033[0mfw\033[1;37m)\033[0m v$version , by neuronal@2500hz.net (@_2500Hz Labs)" echo -e "--------------------------------------------------------" } portfw_stop() { /usr/sbin/ipmasqadm portfw -f } portfw_start() { portfw_info portfw_stop printf "Indique interfaz de red de la que quiere extraer su IP -> " read interfaz ip_origen=`ifconfig $interfaz|grep "inet addr"|cut -f 2 -d:|awk '{print $1}'` printf "Indique el puerto local que desea redirigir -> " read puerto printf "Indique el IP/HOST de destino -> " read ip_destino /usr/sbin/ipmasqadm portfw -a -P tcp -L $ip_origen $puerto -R $ip_destino $puerto portfw_condicion bucle="s" while [ "$bucle" = "$respuesta" ] do portfw_condicion done } portfw_condicion() { echo printf "¿Desea redirigir algun otro puerto? [s/n] -> " read respuesta condicion="s" if [ "$condicion" = "$respuesta" ] then printf "Indique el puerto local que desea redirigir -> " read puerto printf "Indique el IP/HOST de destino -> " read ip_destino /usr/sbin/ipmasqadm portfw -a -P tcp -L $ip_origen $puerto -R $ip_destino $puerto else echo exit 1 fi } portfw_static() { # # Uso de la funcion(static) -------------------------------------------- # Esta funcion es la mas util de todas y, por tanto, deberia de ser la # mas utilizada. Con ella conseguimos que la redireccion de puertos sea # totalmente automatica. # Antes de usar 'static' SE DEBE EDITAR EL VALOR DE DE LAS VARIABLES QUE # LA FUNCION UTILIZARA. Si no hace este paso previo (y obligado), el # script utilizara los valores que tiene asignados por defecto. # Seguramente estos valores no coincidan con los que desea. # # definicion de variables locales - [ REVISAR Y EDITAR SI ES NECESARIO ] IFACE="ppp0" # interfaz de red LPORT1="21" # puerto local RHOST1="192.168.0.2" # host destino # Mas variables por si queremos redirigir mas de un puerto. LPORT2="80" # SEGUNDO puerto local RHOST2="192.168.0.3" # SEGUNDO host destino #LPORT3="" #RHOST3="" #LPORT4="" #RHOST4="" # mi_ip=`ifconfig $IFACE|grep "inet addr"|cut -f 2 -d:|awk '{print $1}'` # definicion de reglas para ipmasqadm /usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT1 -R $RHOST1 $LPORT1 /usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT2 -R $RHOST2 $LPORT2 #/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT3 -R $RHOST3 $LPORT3 #/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT4 -R $RHOST4 $LPORT4 } case "$1" in 'start') portfw_start ;; 'stop') portfw_stop ;; 'restart') portfw_stop portfw_start ;; 'static') portfw_stop portfw_static ;; 'state') portfw_info echo /usr/sbin/ipmasqadm portfw -l echo ;; *) portfw_info echo -e " Uso: `basename $0` start\033[1;37m|\033[0mstop\033[1;37m|\033[0mrestart\033[1;37m|\033[0mstatic\033[1;37m|\033[0mstate" echo esac # ## @_2500Hz Labs , http://www.2500hz,net/ ##