elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


  Mostrar Temas
Páginas: [1] 2
1  Programación / Desarrollo Web / Registrar dominio y obtener certificado SSL desde AWS en: 12 Febrero 2021, 07:52 am
Hola,

Les comparto este pequeño tutorial para dar de alta un dominio y activar HTTPS en Wordpress con los certificados SSL gratuitos de AWS.

2  Foros Generales / Sugerencias y dudas sobre el Foro / Notificaciones en el navegador para el foro en: 19 Junio 2014, 22:47 pm
Hoy en días muchas aplicaciones hacen uso de las notificaciones en el navegador, estaría bueno tener algo así en el foro. No sé si exista algo ya hecho para SMF o podríamos intentar hacer algo entre los integrantes del foro.

Imaginen, tener notificaciones cada vez que alguien responda a un tema, o a tu foro favorite, o un mensaje privado.

Les dejo el tema, a ver que piensan.
Saludos
3  Programación / PHP / Clase PHP para editar texto en un archivo PDF en: 2 Mayo 2014, 01:59 am
Les comparto un pequeño proyecto, se trata de una clase en conjunto con TCPDF Parser para reemplazar texto en archivos PDF.

http://jorgeemx.org/2014/05/clase-en-php-para-editar-texto-en-archivos-pdf/

Saludos
4  Programación / Java / [ Java ] Error a ejecutar archivo JAR (solucionado) en: 4 Enero 2007, 20:29 pm
He querido ejecutar un archivo *.jar en windows y linux y me salta el mismo error, el archivo .jar contiene lo siguiente:

Código:
- Carpeta_Paquete
 |
 |_ archivo.class

-META-INF
 |
 |_ MANIFEST.MF

.classpath
.project


Los archivos en linux:

.classpath
Código:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/usr/lib/eclipse-3.2/plugins/org.eclipse.swt_3.2.1.v3235e.jar"/>
<classpathentry kind="lib" path="/usr/lib/eclipse-3.2/plugins/org.eclipse.swt.gtk.linux.x86_3.2.1.v3235.jar"/>
<classpathentry kind="output" path=""/>
</classpath>

.project
Código:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ProyectoEscuela</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

MANIFEST.MF
Código:
Manifest-Version: 1.0
Main-Class: funciones.Multiplicar

Y al ejecutar en linux:

Código:
soullost@UnderHouse ~/workspace/ProyectoEscuela/funciones $ java -jar multiplicar.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite

Los archivos en windows:

.classpath
Código:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/eclipse/plugins/org.eclipse.swt_3.1.0.jar"/>
<classpathentry kind="lib" path="C:/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.1.0.jar"/>
<classpathentry kind="output" path=""/>
</classpath>

.project
Código:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ProyectoEscuela</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

MANIFEST.MF
Código:
Manifest-Version: 1.0
Sealed: true
Main-Class: Calculadora.Multiplicar

Y al ejecutar en windows:



El archivo .jar lo he generado con Eclipse  :rolleyes:
5  Programación / Java / [SWT - JAVA] Crear matriz de números en: 26 Diciembre 2006, 18:17 pm
Hay alguna forma de crear varios componentes en por ejemplo un for, osea, crear un num. x de componentes (delimitado por un número ingresado por el usuario) y a partir de ahi generarlos..

La cuestión viene de que quiero hacer que cuando se pulse una opción se creé un label con un matriz de números, algo como:

Código:
1 2 3 4 5 6
2
3
4
5
6

La dimensión de la matriz dependerá del número que se ingrese por el usuario, y bueno, aqui es donde no sé bien como hacer para mostrar esa matriz :P, alguna idea? :-\
También he creado dos cuadros de texto (asi se llaman?) para que se ingresen los numeros, pero no sé como hacerles un casting o algo por el estilo, lo de la acción de boton es algo como esto:

Código:
boton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
System.out.println("El boron ha sido pulsado");
}
});

Esta claro que es solo de prueba, me estoy leyendo algunos manuales de: http://www.cs.umanitoba.ca/~eclipse/

Saludos!!
6  Programación / Java / Duda Retornar valor en java (solucionado) en: 13 Noviembre 2006, 04:47 am
Hola estoy tratando de hacer un método que multiplique dos numeros complejos, pero no sé bien como devolver el resultado ya que los resultados los guardo en dos variables, una para el valor real y otra para el valor imaginario..

Código:
double multiplicar(double x, double y){
double real;
double imaginario;
real=(this.r*x)+(this.i*y*-1);
imaginario=(this.i*x)+(this.r*y);
}
p.d Notesé que no sé practicamente nada de java xD, lo hago a pura intuición  :rolleyes: ;D ;D ;D ;D
7  Programación / Scripting / [ Duda ] XML y Flash (closed) en: 7 Octubre 2006, 22:09 pm
Buenas  ;D

Tengo una duda en cuanto a la integración de xml y html en flash..

Tengo una estructura de un *.xml algo similar a lo siguiente:
Código:
<catalogue>
<entry>
<director>
<center>Pedro Almodovar</center>
</director>
<pelicula>HABLE CON ELLA</pelicula>
<argumento>
<p>Esta pelicula</p>
<p>no la conozco, asi que</p>
<center>no puedo opinar</center>

</argumento>
<foto>hable.jpg</foto>
</entry>
</catalogue>

El problema es que html no lo lee como debería, algunas etiquetas no las toma en cuenta o simplemente algo esta pasando..
El el archivo de flash agrego el formato *.XML a unos marcos de texto con un nombre de variable, también habilito el html mediante nombres de instancía..
No sé bien si flash admita todos las etiquetas ó lo este implementa mal..

Alguna sugerencía ó comentario será bienvenido..

Saludos!!
8  Programación / Scripting / [ ActionScript ] Duda con componente list en: 17 Agosto 2006, 07:02 am
Hola..

Como puedo saber que elemento de un componente list a sido seleccionado y poder realizar una acción, por el momento los elemento sólo tienen el texto y ningún identificador asociado ( la verdad no sé como se diga xD)..
Si alguién me manda alguna recomendación/lectura les estaré agradecido..

Saludos!!
9  Programación / Scripting / [Duda] ActionScript (solucionado) en: 3 Agosto 2006, 07:49 am
Hola   :)

No habia visto este subforo nuevo XD.

Bien pues tengo una duda, la situación es que tengo varios botones para realizar acciones con ellos al pulsarlo ( llamados "btn" + 1-9 ), la cuestión es que necesito crear el código en la primera capa ( y no dentro de los botones) ya que necesito hacer más instrucciones con respeto a esto. Además al pulsar un botón determinado este debe crear un videoclip en la misma posición del botón y a su vez deshabilitarlo (no sé si me epxlico bien  :rolleyes:)..

Bueno he intentado lo siguiente y no toma las coordenadas del botón que ha sido presionado.

Código:
function dibuja(){
for( i=1; i<=9; i++ ) {
var x:Number = 0;
var y:Number = 0;

                 //var i:Number = 0;
//Obtiene coordenadas del boton

               //if ( _root["btn"+i].onPress){

                 _root["btn"+i].onPress = function(){

///eje=_root["btn"+i]._x;
//trace(eje);
//x=_root["btn"+i]._x;
//y=_root["btn"+i]._y;
//if( _root["btn"+i].onPress){
//trace("btn"+i);

                          attachMovie("circulo","cir" + i,10 + i,{_x:(_root["btn"+i]._x),_y:(_root["btn"+i]._x)});
}
}
}

El script no me marca errores pero no hace lo que quiero, cuando dibuja el movieClip me aparece en la parte superior izquiera de la película flash  :P

Las partes comentadas han sido las diferentes formas en la que he intentado y he tratado de comprobar los datos en ejecución..

Si alguién tiene alguna otra solución, es bienvenida ;D

Saludos!!
10  Informática / Tutoriales - Documentación / [ IPtables ] Introducción en: 7 Enero 2006, 00:37 am
Iptables

Introducción

Que es Iptables? Sirve para filtrar paquetes tcp/ip mediante reglas estrictamente establecidas (es pocas palabras :) es un cortafuegos o firewall).

Para que me demonios me sirve un firewall? Para controlar el trafico de información o paquetes que pasa por nuestra ordenador e internet (incluyendo redes locales).

Bien, como obtengo un firewall en Linux? Facil ;), solo debes cargar los "modulos" necesarios que te permitiran realizar cierta actividad con los paquetes que especifiques (Para información sobre los modulos consultar google.com o la ayuda del kernel), en conjunto con el kernel y el programa "Iptables" ( http://www.iptables.org/ http://www.linuximq.net/ http://l7-filter.sf.net/ ).
Para descargar iptables se puede usar nuestro gestor de paquetes, algunos de los que conozco:

Debian: apt-get install iptables
Gentoo: emerge iptables

Claro tambien puede optar por compilar el programa a mano o usar paquetes precompilados de ciertas distros..

Demonios! xD, pero como levanto esos mentados modulos? Basicamente estos modulos estan ya disponibles en la mayoria de las distribuciones GNU/Linux que existen en la actualidad..
Para darlos de alta utilizamos la herramienta modprobe, primero antes que nada hay que mirar que modulos tenemos disponibles con modprobe -l | grep netfilter :
Citar
UnderHouse linux # modprobe -l | grep netfilter
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_conntrack.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_nat.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_mangle.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_filter.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_state.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_limit.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_LOG.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_tables.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_nat.ko

Se preguntaran que modulos necesito, para esto les recomiendo levantar los modulos principales para el funcionamiento:
Citar
modprobe ip_tables  iptable_filter iptable_nat

Conforme estemos asignando nuestras reglas de iptables puede que pida algun modulo y mande algun error, solo quedaria montar dicho modulo que nos pida ;).


Mmm y si no tengo los modulos? Buena pregunta, pues habrá que modificar el kernel (tema que no nos corresponde en este momento). Solo como nota hay que entrar a la carpeta del kernel, modificar el kernel y hacer los cambios correspondientes en nuestro gestor de arranque si es necesario, sería algo como esto:
Citar
cd /usr/src/linux
make menuconfig

##Dejar la siguiente configuración (es la que recomiendo):
---------------------------------------------------------------------------
Networking  --->
   Networking options  --->
   
  • TCP/IP networking
  •    IP: multicasting
  •    IP: advanced router
  • Network packet filtering (replaces ipchains)  --->
      IP: Netfilter Configuration  --->
      <M> Connection tracking (required for masq/NAT)
      <M> IP tables support (required for filtering/masq/NAT)
         <M>   limit match support
         <M>   Connection state match support
         <M>   Packet filtering
         <M>   LOG target support
         <M>   Full NAT
         <M>     MASQUERADE target support          
         <M>     REDIRECT target support
         <M>   Packet mangling
-------------------------------------------------------------------------------
###############################################################################

make && make modules_install && make install

Conceptos basicos

En primera necesitamos saber las politicas que iptables usa por defecto:
Citar
UnderHouse soullost # iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Por asi definirlas, tenemos tres secciones: INPUT (entrada), OUTPUT (salida) y FORWARD (Redireccionamiento). Estas por defecto estan puestas para aceptar todo el trafico (ACCEPT), bien!?, pues aqui necesitamos saber bien que es lo que queremos:

- Denegar todo y aceptar solo lo que necesitamos
- Aceptar todo y denegar solo lo que se necesita

En este punto ustedes tendrán que idear una estrategia de filtrado, en mi caso les recomiendo denegar la entrada y el redireccionamiento (INPUT Y FORWARD) y aceptar todo lo que yo mande al exterior (OUTPUT). Para esto, hacemos lo siguiente:

Citar
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

Quedando:

Citar
UnderHouse soullost # iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nomenclatura de Iptables

iptables -A Agrega una regla
iptables -D Elimina una regla
iptables -P Politica por defecto
iptables -R Reemplazar una ragla
iptables -L Lista las reglas actuales
iptables -F Elimina todas las reglas

En las reglas podemos hacer uso de ciertos parametros que son los siguientes:

-p Potocolo (tcp,icmp,udp,etc)
-s Ip fuente
-d Ip destino
-o Interfaz de salida (ethx, lo, etc)
-i Interfaz de entrada (ethx, lo, etc)
--sport Puerto o rango de puertos fuente
--dport Puerto o rango de puertos destino
-j Acción a tomar ( ACCEPT o DROP, Aceptar o Denegar)

Denegar todo y aceptar solo lo que necesitamos

Quiero creer que esta es la mejor manera de entender las reglas de iptables y por obvió la opción mas segura para nuestro equipo de computo.

Les muestro mi ip de la tarjeta Ethernet:
Citar
soullost@UnderHouse ~ $ su -c "ifconfig eth0"
Password:
eth0      Link encap:Ethernet  HWaddr 00:0B:6A:8E:94:D8
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:137 errors:0 dropped:0 overruns:0 frame:0
          TX packets:137 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:92963 (90.7 Kb)  TX bytes:15155 (14.7 Kb)
          Interrupt:11 Base address:0x6f00

Asignamos politicas por defecto

Citar
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Haciendo ping?

(vale es como si la tarjeta de red estuviera desconectada) XD

Citar
UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2012ms

Aceptando ping al exterior
Citar
UnderHouse soullost # iptables -A OUTPUT -s 192.168.1.2 -d 192.168.1.1 -p icmp -j ACCEPT

Que demonios dice lo de arriba? Aceptamos paquetes de salida de la ip 192.168.1.2 (nuestra ip) hacia la ip 192.168.1.1 del protocolo icmp..

Excelente!! Hacemos el ping?
Citar
UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

Pero que sucede? Nada :), el problema esta en que aceptamos paquetes para enviar pero recuerden que tenemos cualquier paquete de entrada denegado. En este caso el ping usa el protocolo icmp el cual envia un paquete para saber si el host esta conectado a la red (echo-request), el host destino una ves recibido el paquete de pregunta xD reenvia otro paquete con el cual contestara a nuestra solicitud (conocido como echo-reply)..

Agregamos la regla faltante
Citar
UnderHouse soullost # iptables -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p icmp -j ACCEPT

Hacemos ping xO
Citar
UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=30 time=0.286 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=30 time=0.328 ms

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1006ms
rtt min/avg/max/mdev = 0.286/0.307/0.328/0.021 ms

Miramos nuestras primeras dos reglas para que se familiarizen con estos reportes :P

Citar
UnderHouse soullost # iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     icmp --  192.168.1.1          192.168.1.2

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     icmp --  192.168.1.2          192.168.1.1

Ejercicio: Permitir ping desde el exterior

Haciendo telnet?

Citar
UnderHouse soullost # telnet 192.168.1.1
Trying 192.168.1.1...

Malo malo, manos a la obra xD

Citar
UnderHouse soullost # iptables -A OUTPUT -s 192.168.1.2 -d 192.168.1.1 -p tcp --sport 1024:65535 --dport 23 -j ACCEPT

Aceptamos paquetes de salida de cualquier puerto privilegiado (1024:65535 son puertos que por default estan asignados a ciertos programas o servicios, paquetes enviados fuera de este rango puede ser inseguros) de mi ip hacia el puerto telnet (23) de la ip 192.168.1.1.

Citar
UnderHouse soullost # iptables -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p tcp --sport 23 --dport 1024:65535 -j ACCEPT

Aceptamos paquetes de entrada del puerto 23 de la ip 192.168.1.1 hacia nuestra ip en cualquiera de los puertos privilegiados.

Citar
UnderHouse soullost # telnet 192.168.1.1 Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
SpeedStream Telnet Server


login: as
password:
password: Connection closed by foreign host.

Ejercicio: Permitir que entre desde telnet del exterior

Obteniendo Internet?

Vamos estoy atras de un router el cual me comparte internet a la red local, por ende necesito tener comunicación con el..

Citar
UnderHouse soullost # iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

####Primero que nada quiero conexión entre ellos asi que habilitamos los paquetes icmp
Citar
UnderHouse soullost # iptables -A INPUT -s 192.168.1.1 -i eth0 -p icmp -j ACCEPT

Aceptamos paquetes de entrada icmp de la ip 192.168.1.1 (router) hacia la interfaz eth0

##Resolviendo mis DNS
Citar
UnderHouse soullost # iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT

Aceptamos paquetes de entrada del puerto 53 de nuestros servidores de nombres hacia mi interfaz eth0


####Accediendo a paginas WEB
Citar
UnderHouse soullost # iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT

Aceptamos paquetes de entrada del puerto 80 de cualquier ip hacia mi interfaz eth0

###Aceptar cualquier otra conexión del exterior ya establecida o relacionada anteriormente con nosotros:
Citar
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

Esto en gran medida puede reemplazar a las otras dos reglas anteriores XD..
Aqui se presnetan parametros nuevos:
-m --state se utiliza para comparar el tipo de conexión existente, puede obtener los siguientes estados:

NEW Conexión nueva
ESTABLISHED Conexión ya establecida anteriormente
RELATED Conexión relacionada
INVALID Conexión invalida

Les dejo las reglas realizadas:
Citar
UnderHouse soullost # iptables -L --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     icmp --  192.168.1.1          anywhere
2    ACCEPT     tcp  --  anywhere             anywhere            tcp spt:http
3    ACCEPT     udp  --  anywhere             anywhere            udp spt:domain
4    ACCEPT     tcp  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Si apreciaron con el paremtro --line-numbers enumeramos las reglas, esto es util al momento de reemplazar una o al querer eliminarlas..

Para eliminar la regla "ACCEPT     icmp --  192.168.1.1          anywhere" hacemos:
Citar
UnderHouse soullost # iptables -D INPUT 1

A estas altura ya sabrán como abrir y cerrar puertos, no¿?

Funcionar como gateway con iptables

Que es un gateway? También es conocido como encaminador, esto permite reenviar paquetes que pasa por una tarjeta de red hacia una dirección especifca..

Que necesitamos? Basicamente disponer de dos tarjetas de red, digo dos por que una será utilizada para obtener internet y otra para hacer funcionar la red local (LAN)..

Para activar nuestro sistema como gateway hay que permitir el forward entre interfaces de red. Hay dos formas de hacerlo, una temporal y otra permanente (la temporal puede servir para hacer pruebas nadamás):

Temporal (programación bash XD):

echo "1" > /proc/sys/net/ipv4/ip_forward

Permanente

Editar /etc/sysctl.conf (es necesario reiniciar):

Citar
net.ipv4.ip_forward = 1

Hay otras maneras claro, pero son las mas comunes, las cuales depende en gran medida de la distribución. Igual puede agregar el primer comando al momento de levantar su configuración de su tarjeta al iniciar el sistema..

Aqui hay algo importante de mencionar, para poder compartir internet deberán tener su modem en modo bridge o monopuesto conectado a la pc que funcionará como gateway (supongamos a la interfaz eth0) y la otra tarjeta de red (eth1) conectada a un switch o hub (o a otra pc si solo cuentan con dos). El esquema es algo así:

Código:
Modem
---------  eth0 ---------------   eth1 -----------
 router   ---->  MiPc (gateway) ------>  switch/hub
--------- --------------- -----------
  |__|___|__________________________     
| | |
   --------  -------  --------
     PC1       PC2     PC3
   --------  -------  --------

Un gateway funciona mas o menos como un router..

Como le digo a mis otros host que mi pc es el gateway al que deben de consultar? Regramos al mismo tema XD, depende de la distribución:

En debian y derivados: Editar /etc/sysconfig/network y agregar GATEWAY=ip

En gentoo: Editar /etc/conf.d/net y agregar routes_eth0=( "default gw ip" )

Temporal: Teclear el siguiente comando (funciona en todas las distros):

# route add default gw ip

Citar
UnderHouse soullost # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
loopback        localhost       255.0.0.0       UG    0      0        0 lo
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Empezando a filtrar paquetes con la tabla NAT (Ejemplos)

Basicamente esta tabla se encarga de dos cosas:

1)Modificar la dirección ip fuente de los paquetes

2)Modificar la dirección ip destino de los paquetes

Por este motivo se divide en dos secciones:

SNAT (Source NAT): Cuando se altera la ip fuente del paquete (paquetes de salida)
DNAT (Destination NAT): Cuando se altera la ip destino del paquete (paquetes de entrada)

Como maneja iptables estas tablas?
En primera hay que usar la opción -t nat..
Seguido de una de estas dos opciones:

POSTROUTING: Se usa para SNAT
PREROUTING: Se usa para DNAT

Obteniendo Internet en la red local (SNAT)

Supongamos que tenemos salida hacia Internet con una ip fija.

Que necesitamos? Editar el paquete de salida a nombre de la ip que nos ofrece internet, el por que? es facil, cuando un host de la red local haga ping a google.com estará tratando de enviar paquetes con una ip privada, lo cual ni de risa nos permitirá hacer conexión con tal host (google.com), tengan en cuenta que siempre tenemos que tener una ip publica con acceso a internet..

Citar
UnderHouse soullost # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 200.33.146.217

Que bien, pero que coño dice?

-t nat Especificamos que usamos la tabla NAT para hacer forward (que por defecto esta activado)

-A POSTROUTING Indicamos que vamos a modificar la ip fuente del paquete

-o eth0 Es la interfaz de la cual vamos a enviar el paquete (deberá ser la interfaz con conexión a internet)

-j SNAT --to 200.33.146.217 Señalamos que todos los paquetes que salgan de la interfaz eth0 tendrán la ip 200.33.146.217,                 la cual tiene acceso a internet

Supongamos que tenemos salida hacia Internet con una ip dinamica.

La mayoria de los ISP dan a sus cliente acceso a internet mediante un rango de ip's (ip's dinamicas), por lo tanto es dificil decidir cual será la ip fuente con acceso a la red mundial. Para esto hacemos uso del Enmascaramiento (similar a SNAT) en donde no se especifica la ip fuente, la cual tomará la ip del host emisor el cuál pertenece a otra subred (en este caso la ip con salida a Internet):

Citar
UnderHouse soullost # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Servidor Web (DNAT)

Supongamos tenemos la siguiente situación: Internet ( 200.33.146.217) y un host con servidor WEB dentro de la red local (192.33.20.3)

Con esto deseamos que puedan acceder a nuestro sercvidor WEB desde cualquier parte del mundo, así que agregamos la siguiente regla al gateway ;)

 
Citar
UnderHouse soullost # iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 192.33.20.3:80

-t nat Especificamos que usamos la tabla NAT para hacer forward (que por defecto esta activado)

-A PREROUTING Indicamos que vamos a modificar la ip destino del paquete

-p tcp --dport 80 Los paquetes con el protocolo tcp y puerto destino 80

-i eth1 Es la interfaz de la cual vamos recibir los paquetes mencionados arriba (ip publica a Internet)

-j DNAT --to 192.33.20.3:80 Redireccionamiento al host 192.168.20.3 en el puerto 80

Se lee: Todos aquellos paquetes tcp que vengan de Internet con destino al puerto 80 serán reenviados a nuestro servidor web que se encuentra en el host y puerto 192.33.20.3:80

Redireccionamiento de puertos localmente (DNAT)

Citar
UnderHouse soullost # iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 113

Se lee: Todos los paquetes que se reciban con destino al puerto local 80 del gateway serán redireccionados al puerto 113..

Articulo realizado por: Soul Lost
Email: soullost [at] gmail. com
Se permite su libre distribución siempre y cuando se presente el nombre del autor original


Alguien lo puede momer a la sección de documentación del foro (haya abajito XD) :P
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines