Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Siguiendo IPTables para newbies
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
sunbqto
Tux's lil' helper
Tux's lil' helper


Joined: 02 Jun 2007
Posts: 104

PostPosted: Sat Sep 29, 2007 6:22 pm    Post subject: Siguiendo IPTables para newbies Reply with quote

Hola amigos,
Siguiendo el Howto: http://gentoo-wiki.com/HOWTO_Iptables_for_newbies, estoy algo confuso, en la parte donde debo crear mi propio script, no se como enlazarlo para ponerlo a rodar

*********** A ver esta es mi configuracion:

genshosam etc # /sbin/iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 127.0.0.1 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
genshosam etc #

******************* y estas mis escazas reglas:

genshosam etc # cat /var/lib/iptables/rules-save
# Generated by iptables-save v1.3.8 on Sat Sep 29 20:15:04 2007
*mangle
:PREROUTING ACCEPT [457:38860]
:INPUT ACCEPT [457:38860]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [255:28156]
:POSTROUTING ACCEPT [255:28156]
COMMIT
# Completed on Sat Sep 29 20:15:04 2007
# Generated by iptables-save v1.3.8 on Sat Sep 29 20:15:04 2007
*filter
:INPUT ACCEPT [457:38860]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [255:28156]
[0:0] -A INPUT -s 127.0.0.1 -j ACCEPT
COMMIT
# Completed on Sat Sep 29 20:15:04 2007
genshosam etc #


estoy enfrascado, debe ser una tonteria, pero no lo veo claro en ningun otro hilo.

Por ejemplo, este seria el script definitivo a usar, no se como echarlo a correr:

Code Listing 5: /etc/init.d/firewall

#!/sbin/runscript
IPTABLES=/sbin/iptables
IPTABLESSAVE=/sbin/iptables-save
IPTABLESRESTORE=/sbin/iptables-restore
FIREWALL=/etc/firewall.rules
DNS1=212.242.40.3
DNS2=212.242.40.51
#inside
IIP=10.0.0.2
IINTERFACE=eth0
LOCAL_NETWORK=10.0.0.0/24
#outside
OIP=217.157.156.144
OINTERFACE=eth1

opts="${opts} showstatus panic save restore showoptions rules"

depend() {
need net
}

rules() {
stop
ebegin "Setting internal rules"

einfo "Setting default rule to drop"
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP

#default rule
einfo "Creating states chain"
$IPTABLES -N allowed-connection
$IPTABLES -F allowed-connection
$IPTABLES -A allowed-connection -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed-connection -i $IINTERFACE -m limit -j LOG --log-prefix \
"Bad packet from ${IINTERFACE}:"
$IPTABLES -A allowed-connection -j DROP

#ICMP traffic
einfo "Creating icmp chain"
$IPTABLES -N icmp_allowed
$IPTABLES -F icmp_allowed
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
time-exceeded -j ACCEPT
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
destination-unreachable -j ACCEPT
$IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP traffic:"
$IPTABLES -A icmp_allowed -p icmp -j DROP

#Incoming traffic
einfo "Creating incoming ssh traffic chain"
$IPTABLES -N allow-ssh-traffic-in
$IPTABLES -F allow-ssh-traffic-in
#Flood protection
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL RST --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL FIN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL SYN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT

#outgoing traffic
einfo "Creating outgoing ssh traffic chain"
$IPTABLES -N allow-ssh-traffic-out
$IPTABLES -F allow-ssh-traffic-out
$IPTABLES -A allow-ssh-traffic-out -p tcp --dport ssh -j ACCEPT

einfo "Creating outgoing dns traffic chain"
$IPTABLES -N allow-dns-traffic-out
$IPTABLES -F allow-dns-traffic-out
$IPTABLES -A allow-dns-traffic-out -p udp -d $DNS1 --dport domain \
-j ACCEPT
$IPTABLES -A allow-dns-traffic-out -p udp -d $DNS2 --dport domain \
-j ACCEPT

einfo "Creating outgoing http/https traffic chain"
$IPTABLES -N allow-www-traffic-out
$IPTABLES -F allow-www-traffic-out
$IPTABLES -A allow-www-traffic-out -p tcp --dport www -j ACCEPT
$IPTABLES -A allow-www-traffic-out -p tcp --dport https -j ACCEPT

#Catch portscanners
einfo "Creating portscan detection chain"
$IPTABLES -N check-flags
$IPTABLES -F check-flags
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit \
--limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit \
5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
-m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit \
--limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# Apply and add invalid states to the chains
einfo "Applying chains to INPUT"
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -p icmp -j icmp_allowed
$IPTABLES -A INPUT -j check-flags
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -j allow-ssh-traffic-in
$IPTABLES -A INPUT -j allowed-connection

einfo "Applying chains to FORWARD"
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -p icmp -j icmp_allowed
$IPTABLES -A FORWARD -j check-flags
$IPTABLES -A FORWARD -o lo -j ACCEPT
$IPTABLES -A FORWARD -j allow-ssh-traffic-in
$IPTABLES -A FORWARD -j allow-www-traffic-out
$IPTABLES -A FORWARD -j allowed-connection

einfo "Applying chains to OUTPUT"
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -p icmp -j icmp_allowed
$IPTABLES -A OUTPUT -j check-flags
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -j allow-ssh-traffic-out
$IPTABLES -A OUTPUT -j allow-dns-traffic-out
$IPTABLES -A OUTPUT -j allow-www-traffic-out
$IPTABLES -A OUTPUT -j allowed-connection

#Allow client to route through via NAT (Network Address Translation)
$IPTABLES -t nat -A POSTROUTING -o $OINTERFACE -j MASQUERADE
eend $?
}

start() {
ebegin "Starting firewall"
if [ -e "${FIREWALL}" ]; then
restore
else
einfo "${FIREWALL} does not exists. Using default rules."
rules
fi
eend $?
}

stop() {
ebegin "Stopping firewall"
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
eend $?
}

showstatus() {
ebegin "Status"
$IPTABLES -L -n -v --line-numbers
einfo "NAT status"
$IPTABLES -L -n -v --line-numbers -t nat
eend $?
}

panic() {
ebegin "Setting panic rules"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
eend $?
}

save() {
ebegin "Saving Firewall rules"
$IPTABLESSAVE > $FIREWALL
eend $?
}

restore() {
ebegin "Restoring Firewall rules"
$IPTABLESRESTORE < $FIREWALL
eend $?
}

restart() {
svc_stop; svc_start
}

showoptions() {
echo "Usage: $0 {start|save|restore|panic|stop|restart|showstatus}"
echo "start) will restore setting if exists else force rules"
echo "stop) delete all rules and set all to accept"
echo "rules) force settings of new rules"
echo "save) will store settings in ${FIREWALL}"
echo "restore) will restore settings from ${FIREWALL}"
echo "showstatus) Shows the status"
}



Gracias TOTALES
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sat Sep 29, 2007 6:46 pm    Post subject: Reply with quote

No es necesario hacer un script con las reglas. Haz iptables -nL y observa si ya está a tu gusto, si lo está, solo tienes que hacer como root /etc/init.d/iptables save

Edito: Espera jeje, acabo de leer mejor tu mensaje y veo que has pegado un iptables -nL, que basicamente viene a decir que lo tienes todo ABIERTO, sin ninguna regla activa. Todas esas "escasas" reglas que has pegado no se han aplicado. Haz una copia de seguridad de tu rules-save y prueba a reiniciar iptables a ver si las coge, hasta que no veas esas reglas haciendo un iptables -nL, no hagas /etc/init.d/iptables save


Last edited by Cereza on Sat Sep 29, 2007 6:52 pm; edited 1 time in total
Back to top
View user's profile Send private message
sunbqto
Tux's lil' helper
Tux's lil' helper


Joined: 02 Jun 2007
Posts: 104

PostPosted: Sat Sep 29, 2007 6:52 pm    Post subject: ??? Reply with quote

Cereza wrote:
No es necesario hacer un script con las reglas. Haz iptables -nL y observa si ya está a tu gusto, si lo está, solo tienes que hacer como root /etc/init.d/iptables save


He llegado hasta donde modifico el archivo /etc/iptables.bak, con las reglas que requiero, peroooooooo, cuando hago

#iptables-restore /etc/iptables.bak, me da un error en la ultima linea que intenta restaurar y no restaura nada,
creo que con un script, los errores serian mas facil de depurar.

Gracias
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sat Sep 29, 2007 6:58 pm    Post subject: Re: ??? Reply with quote

sunbqto wrote:
Cereza wrote:
No es necesario hacer un script con las reglas. Haz iptables -nL y observa si ya está a tu gusto, si lo está, solo tienes que hacer como root /etc/init.d/iptables save


He llegado hasta donde modifico el archivo /etc/iptables.bak, con las reglas que requiero, peroooooooo, cuando hago

#iptables-restore /etc/iptables.bak, da un error y no restaura nada, creo que con un script, los errores serian mas facil de depurar.

Gracias


Ni siquiera tengo ese archivo, /etc/iptables.bak, olvidate de iptables-restore, usa /etc/init.d/iptables para restart, save, start, stop y demás. No he leído ese howto pero a mi iptables me va muy bien, y solo lo configuré a base de meter las reglas a mano y guardarlas con /etc/init.d/iptables save una vez tenía lo que quería.

Guarda tus reglas en /var/lib/iptables/rules-save y prueba a reiniciar iptables
Back to top
View user's profile Send private message
sunbqto
Tux's lil' helper
Tux's lil' helper


Joined: 02 Jun 2007
Posts: 104

PostPosted: Sat Sep 29, 2007 7:05 pm    Post subject: A mano Reply with quote

Cereza wrote:
Ni siquiera tengo ese archivo, /etc/iptables.bak, olvidate de iptables-restore, usa /etc/init.d/iptables para restore, save, start, stop y demás. No he leído ese howto pero a mi iptables me va muy bien, y solo lo configuré a base de meter las reglas a mano y guardarlas con /etc/init.d/iptables save una vez tenía lo que quería.



A mano..., estoy aprendiendo para enmascarar paquetes y frenar los p2p, aplicar las reglas una por una, me da como ganas de volverme a shorewall.

Cereza, mis archivos /etc/iptables.bak = /var/lib/iptables/rules-save = /var/lib/iptables/rules.working, en otras palabras,
por donde sea obtengo el mismo stop, sin una aclaracion del error que tengo.

Cuando tu aplicas /iptables save, que archivo estas grabando, no es un script, es el conjunto de reglas, ese mismo a quien
no he podido meterle mano

Cereza, Gracias
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sat Sep 29, 2007 7:58 pm    Post subject: Reply with quote

Ésta fué la pequeña guía que me abrió los ojos sobre iptables http://www.badopi.org/node/977

Solo añadir a esa guía, que cuando para cambiar la politica de un protocolo dice "iptables -P INPUT -j DROP" en mi caso, no me lo acepta, y tengo que harlo sin el -j (¿diferentes versiones tal vez?)

Es muy básica pero bastante clara, lo que no sé es si cubrirá tus necesidades.
Back to top
View user's profile Send private message
sunbqto
Tux's lil' helper
Tux's lil' helper


Joined: 02 Jun 2007
Posts: 104

PostPosted: Sun Sep 30, 2007 3:50 pm    Post subject: Muy util Reply with quote

Cereza wrote:
Ésta fué la pequeña guía que me abrió los ojos sobre iptables http://www.badopi.org/node/977

Solo añadir a esa guía, que cuando para cambiar la politica de un protocolo dice "iptables -P INPUT -j DROP" en mi caso, no me lo acepta, y tengo que harlo sin el -j (¿diferentes versiones tal vez?)

Es muy básica pero bastante clara, lo que no sé es si cubrirá tus necesidades.


Si realmente muy util, al final te recomiendan que pases tus reglas a un script: "En eso ando"

Mil Gracias
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sun Sep 30, 2007 4:51 pm    Post subject: Reply with quote

Bueno, yo no he hecho nada así pero creo que bastaría con que hicieras un script sencillo en bash, añadiendo todas las reglas como si lo hicieras a mano, tal que así:

Code:
#!/bin/bash/

iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT
iptables ........


Por ejemplo, y lo guardas como firewall.sh, le das permisos de ejecución, y una vez hecho esto editas /etc/conf.d/local.start para poner la ruta del script que acabas de hacer, es decir, añadas la linea:
Code:
/root/firewall.sh

o donde sea que lo hayas que lo hayas puesto. De este modo el script se lanzará automaticamente en cada booteo (todo lo que pongas en /etc/conf.d/local.start se lanza automaticamente al final de INIT, como root). Mi consejo es que el script lo guardes en /root y solo tenga permisos para root, ya que es un archivo de seguridad importante. Asegurate también de que el servicio local está en el runlevel default rc-update add local default

Si ha funcionado, al arrancar y hacer iptables -nL deberias ver todas tus reglas. Aún así y como ya he dicho yo no he hecho esto y sería cosa de que vayas probando.
Back to top
View user's profile Send private message
i92guboj
Bodhisattva
Bodhisattva


Joined: 30 Nov 2004
Posts: 10315
Location: Córdoba (Spain)

PostPosted: Mon Oct 01, 2007 12:57 pm    Post subject: Reply with quote

Cereza wrote:
Bueno, yo no he hecho nada así pero creo que bastaría con que hicieras un script sencillo en bash, añadiendo todas las reglas como si lo hicieras a mano, tal que así:

Code:
#!/bin/bash/

iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT
iptables ........


Por ejemplo, y lo guardas como firewall.sh, le das permisos de ejecución, y una vez hecho esto editas /etc/conf.d/local.start para poner la ruta del script que acabas de hacer, es decir, añadas la linea:
Code:
/root/firewall.sh

o donde sea que lo hayas que lo hayas puesto. De este modo el script se lanzará automaticamente en cada booteo (todo lo que pongas en /etc/conf.d/local.start se lanza automaticamente al final de INIT, como root). Mi consejo es que el script lo guardes en /root y solo tenga permisos para root, ya que es un archivo de seguridad importante. Asegurate también de que el servicio local está en el runlevel default rc-update add local default

Si ha funcionado, al arrancar y hacer iptables -nL deberias ver todas tus reglas. Aún así y como ya he dicho yo no he hecho esto y sería cosa de que vayas probando.


Como dice cereza, si quieres guardarlo en forma de script de bash lo único que necesitas es ponerlo todo en un archivo de texto plano y luego darle permisos de ejecución (chmod u+x <file>).

Yo, además de las reglas añadiría algunas líneas para limpiar las tablas antes de empezar, y para salvarlas al terminar. Así luego no es necesario guardarlas a mano.

Code:

#First we flush our current rules
iptables -F
iptables -t nat -F
...
[tus reglas aquí]
...
#Tell the kernel that ip forwarding is OK
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

#This is so when we boot we don't have to run the rules by hand
/etc/init.d/iptables save


La parte de ip forwarding tan solo es necesario si piensas hacer NAT o alguna otra cosa que lo requiera.
Back to top
View user's profile Send private message
opotonil
l33t
l33t


Joined: 17 Jun 2005
Posts: 801
Location: 127.0.0.1

PostPosted: Mon Oct 01, 2007 4:00 pm    Post subject: Reply with quote

Yo me tengo hecho un script, que ni se puede llamar script es mas bien un listado de reglas, me es mas comodo modificarlas teniendolo asi, basado en el de http://www.gentoo.org/doc/en/security/security-handbook.xml?part=1&chap=12#doc_chap5 te lo pego a continuacion:
Code:

#!/bin/bash

IPTABLES=/sbin/iptables
LAN=192.168.1.240/28

echo "Setting firewall rules"

# Erasing rules
$IPTABLES -F
$IPTABLES -X

# Setting default rule to drop
$IPTABLES -P INPUT   DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT  DROP


# Creating icmp chain
$IPTABLES -N allow-icmp
$IPTABLES -F allow-icmp
$IPTABLES -A allow-icmp -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A allow-icmp -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A allow-icmp -p icmp -j LOG --log-prefix "Bad ICMP traffic: "
$IPTABLES -A allow-icmp -p icmp -j DROP

# Creating portscan detection chain
$IPTABLES -N check-flags
$IPTABLES -F check-flags
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS: "
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS: "
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH: "
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN: "
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST: "
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN: "
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# Creating states chain
$IPTABLES -N allow-connection
$IPTABLES -F allow-connection
$IPTABLES -A allow-connection -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allow-connection -j DROP


echo "Setting incoming traffic"

# Creating incoming ssh traffic chain
$IPTABLES -N allow-ssh-in
$IPTABLES -F allow-ssh-in
# Flood protection
$IPTABLES -A allow-ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT

# Creating incoming nut traffic chain
$IPTABLES -N allow-nut-in
$IPTABLES -F allow-nut-in
$IPTABLES -A allow-nut-in -p tcp -s $LAN --dport nut -j ACCEPT

# Creating incoming ldap traffic chain
$IPTABLES -N allow-ldap-in
$IPTABLES -F allow-ldap-in
$IPTABLES -A allow-ldap-in -p tcp -s $LAN --dport ldap -j ACCEPT
$IPTABLES -A allow-ldap-in -p tcp -s $LAN --dport ldaps -j ACCEPT

# Creating incoming samba traffic chain
$IPTABLES -N allow-samba-in
$IPTABLES -F allow-samba-in
$IPTABLES -A allow-samba-in -p udp -s $LAN --dport netbios-ns -j ACCEPT
$IPTABLES -A allow-samba-in -p udp -s $LAN --dport netbios-dgm -j ACCEPT
$IPTABLES -A allow-samba-in -p tcp -s $LAN --dport netbios-ssn -j ACCEPT
$IPTABLES -A allow-samba-in -p tcp -s $LAN --dport microsoft-ds -j ACCEPT

# Creating incoming cups traffic chain
$IPTABLES -N allow-cups-in
$IPTABLES -F allow-cups-in
$IPTABLES -A allow-cups-in -p tcp -s $LAN --dport ipp -j ACCEPT

# Creating incoming mail traffic chain
$IPTABLES -N allow-mail-in
$IPTABLES -F allow-mail-in
$IPTABLES -A allow-mail-in -p tcp -s $LAN --dport smtp -j ACCEPT
$IPTABLES -A allow-mail-in -p tcp --dport submission -j ACCEPT
$IPTABLES -A allow-mail-in -p tcp -s $LAN --dport pop3 -j ACCEPT
$IPTABLES -A allow-mail-in -p tcp --dport pop3s -j ACCEPT
$IPTABLES -A allow-mail-in -p tcp -s $LAN --dport imap -j ACCEPT
$IPTABLES -A allow-mail-in -p tcp --dport imaps -j ACCEPT

# Creating incoming www traffic chain
$IPTABLES -N allow-www-in
$IPTABLES -F allow-www-in
$IPTABLES -A allow-www-in -p tcp -s $LAN --dport http -j ACCEPT
$IPTABLES -A allow-www-in -p tcp --dport https -j ACCEPT

# Creating incoming p2p traffic chain
$IPTABLES -N allow-p2p-in
$IPTABLES -F allow-p2p-in
$IPTABLES -A allow-p2p-in -p tcp -s $LAN --dport 4000 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s $LAN --dport 4001 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s $LAN --dport 4080 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s ! $LAN --dport 32250 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s ! $LAN --dport 32251 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s ! $LAN --dport 32252 -j ACCEPT
$IPTABLES -A allow-p2p-in -p udp -s ! $LAN --dport 32253 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s ! $LAN --dport 32253 -j ACCEPT
$IPTABLES -A allow-p2p-in -p udp -s ! $LAN --dport 32254 -j ACCEPT
$IPTABLES -A allow-p2p-in -p udp -s ! $LAN --dport 32255 -j ACCEPT
$IPTABLES -A allow-p2p-in -p tcp -s ! $LAN --dport 32255 -j ACCEPT

echo "Setting outgoing traffic"

# Creating outgoing dns traffic chain
$IPTABLES -N allow-dns-out
$IPTABLES -F allow-dns-out
$IPTABLES -A allow-dns-out -p udp --dport domain -j ACCEPT

# Creating outgoing ssh traffic chain
$IPTABLES -N allow-ssh-out
$IPTABLES -F allow-ssh-out
$IPTABLES -A allow-ssh-out -p tcp --dport ssh -j ACCEPT

# Creating outgoing samba traffic chain
$IPTABLES -N allow-samba-out
$IPTABLES -F allow-samba-out
$IPTABLES -A allow-samba-out -p udp --dport netbios-ns -j ACCEPT
$IPTABLES -A allow-samba-out -p udp --dport netbios-dgm -j ACCEPT

# Creating outgoing rsync traffic chain
$IPTABLES -N allow-rsync-out
$IPTABLES -F allow-rsync-out
$IPTABLES -A allow-rsync-out -p tcp --dport rsync -j ACCEPT

# Creating outgoing mail traffic chain
$IPTABLES -N allow-mail-out
$IPTABLES -F allow-mail-out
$IPTABLES -A allow-mail-out -p tcp --dport smtp -j ACCEPT

# Creating outgoing www traffic chain
$IPTABLES -N allow-www-out
$IPTABLES -F allow-www-out
$IPTABLES -A allow-www-out -p tcp --dport http -j ACCEPT
$IPTABLES -A allow-www-out -p tcp --dport https -j ACCEPT

# Creating outgoing ftp traffic chain
$IPTABLES -N allow-ftp-out
$IPTABLES -F allow-ftp-out
$IPTABLES -A allow-ftp-out -p tcp --dport ftp -j ACCEPT
$IPTABLES -A allow-ftp-out -p tcp --dport ftp-data -j ACCEPT

# Creating outgoing p2p traffic chain
$IPTABLES -N allow-p2p-out
$IPTABLES -F allow-p2p-out
$IPTABLES -A allow-p2p-out -p tcp --dport 1025:65535 -j ACCEPT
$IPTABLES -A allow-p2p-out -p udp --dport 1025:65535 -j ACCEPT

echo "Adding and applying chains"

# Applying chains to INPUT
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -p icmp -j allow-icmp
$IPTABLES -A INPUT -j check-flags
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -j allow-ssh-in
$IPTABLES -A INPUT -j allow-nut-in
$IPTABLES -A INPUT -j allow-ldap-in
$IPTABLES -A INPUT -j allow-samba-in
$IPTABLES -A INPUT -j allow-cups-in
$IPTABLES -A INPUT -j allow-mail-in
$IPTABLES -A INPUT -j allow-www-in
$IPTABLES -A INPUT -j allow-p2p-in
$IPTABLES -A INPUT -j allow-connection

# Applying chains to FORWARD
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -p icmp -j allow-icmp
$IPTABLES -A FORWARD -j check-flags
$IPTABLES -A FORWARD -i lo -j ACCEPT
$IPTABLES -A FORWARD -j allow-connection

# Applying chains to OUTPUT"
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -p icmp -j allow-icmp
$IPTABLES -A OUTPUT -j check-flags
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -j allow-dns-out
$IPTABLES -A OUTPUT -j allow-ssh-out
$IPTABLES -A OUTPUT -j allow-samba-out
$IPTABLES -A OUTPUT -j allow-rsync-out
$IPTABLES -A OUTPUT -j allow-mail-out
$IPTABLES -A OUTPUT -j allow-www-out
$IPTABLES -A OUTPUT -j allow-ftp-out
$IPTABLES -A OUTPUT -j allow-p2p-out
$IPTABLES -A OUTPUT -j allow-connection

echo "Finished"

bueno pues lo tengo guardado como iptables.sh de manera que lo ejecuto con:
Code:

bash iptables.sh

ahora si haces un:
Code:

iptables -L

ya te deberian de aparecer todas las reglas, asi que te valdria con usar el script de inicio que se incluye en el ebuild del iptables de la siguiente manera:
Code:

/etc/init.d/iptables save
/etc/init.d/iptables start
rc-update add iptables default

Por cierto la regla "allow-p2p-out" es una autentica chapuza, pero no he encontrado nada mejor con lo que me funcione bien el mldonkey. Probe ipp2p y l7-filter pero no hubo manera.

Salu2.

PD: Cereza, ese avatar ¿era un juego del msx?
Back to top
View user's profile Send private message
gringo
Advocate
Advocate


Joined: 27 Apr 2003
Posts: 3793

PostPosted: Mon Oct 01, 2007 4:31 pm    Post subject: Reply with quote

yo para esto ya no me rompo la cabeza y uso scripts de terceros, ahora mismo uso el de arno. Fácil y flexible, no pido nada mas :)
Una vez que tengas tus reglas creadas y cargadas, guárdalas con iptables save y luego simplemente carga iptables como otro servicio cualquiera.

saluetes
_________________
Error: Failing not supported by current locale
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum