[PIU' CHE RISOLTO :) ] iptables - creazione rc.firewall

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

[PIU' CHE RISOLTO :) ] iptables - creazione rc.firewall

Messaggio da danix »

Ciao a tutti,
sto mettendo mano per la prima volta ad iptables, mi ha aiutato molto sardylan su irc, e adesso sto vedendo di rifinire il tutto cercando qua e la le info che mi servono...
La situazione è la seguente:
Ho un modem ethernet (AliceGate), a questo c'è collegato il mio serverino (tramite eth0), su cui lancio la connessione usando pppoe, quest'ultimo ha anche un'altra interfaccia di rete (eth1) a cui è collegato il laptop.

Quello che sto cercando di ottenere è che il server mi faccia da gateway per il laptop, permettendomi di navigare in rete, il server mi fa da webserver e dns principalmente. Ho attivato anche dyndns per rendere visibile dall'esterno il mio server.

Questo è lo script che ho preparato fin ora (sarebbe più corretto dire "che sardylan ha preparato", io mi sono solo limitato ad apportare qualche modifica):

Codice: Seleziona tutto

#!/bin/bash

IPT_CMD="/usr/sbin/iptables"
SW_VERB="-v"
IF_LAN="eth0"
IF_WAN="ppp0"
IF_INT="eth1"

firewall_init() {
	echo "0" > /proc/sys/net/ipv4/ip_forward
	$IPT_CMD -F $SW_VERB
	$IPT_CMD -t nat -F $SW_VERB
	$IPT_CMD -t mangle -F $SW_VERB
	$IPT_CMD -X $SW_VERB
	$IPT_CMD -t nat -X $SW_VERB
	$IPT_CMD -t mangle -X $SW_VERB
}

firewall_policies() {
	$IPT_CMD -P INPUT $1 $SW_VERB
	$IPT_CMD -P OUTPUT $1 $SW_VERB
	$IPT_CMD -P FORWARD $1 $SW_VERB
}

main_rules() {
	$IPT_CMD -A INPUT -i lo -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_LAN -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o lo -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o $IF_LAN -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o $IF_WAN -j ACCEPT $SW_VERB
}

forwarding_rules() {
	$IPT_CMD -A FORWARD -i $IF_LAN -o $IF_WAN -j ACCEPT $SW_VERB
	$IPT_CMD -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A FORWARD -i $IF_LAN -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A FORWARD -i $IF_INT -o $IF_LAN -j ACCEPT $SW_VERB
	# ABILITO IL MASQUERADING
	$IPT_CMD -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE $SW_VERB
}

closing_rules() {
	$IPT_CMD -A INPUT -j DROP $SW_VERB
	$IPT_CMD -A OUTPUT -j DROP $SW_VERB
	$IPT_CMD -A FORWARD -j DROP $SW_VERB
	$IPT_CMD -Z $SW_VERB
	$IPT_CMD -t nat -Z $SW_VERB
	$IPT_CMD -t mangle -Z $SW_VERB
	echo "1" > /proc/sys/net/ipv4/ip_forward
}



case "$1" in
	start)
		echo "Configuring firewall... "
		firewall_init
		firewall_policies DROP
		main_rules
		forwarding_rules
		closing_rules
	;;
	stop)
		echo "Resetting firewall... "
		firewall_init
		firewall_policies ACCEPT
	;;
	status)
		$IPT_CMD -L -n -v --line-numbers > /tmp/firewall.out
		echo >> /tmp/firewall.out
		$IPT_CMD -t nat -L -n -v --line-numbers >> /tmp/firewall.out
		cat /tmp/firewall.out | less
		rm /tmp/firewall.out
	;;
	*)
		echo "Usage:  `basename $0`  start|stop|status"
		exit 1
	;;
esac

Potrebbe andare bene o sto dimenticando qualcosa??
Il mio timore è quello di non riuscire a collegarmi in ssh al server se dovessi sbagliare qualcosa, quindi se mi date una mano faccio qualche esperimento :D
Un'altra domanda, per aprire, ad esempio, la porta 8022 per ssh solo dall'interno dovrei fare

Codice: Seleziona tutto

iptables -A INPUT -i $IF_INT -p tcp -dport 8022 -j ACCEPT
così??


Grazie mille a tutti in anticipo...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

ci capisco poco con tutte quelle variabili, ma ssh lo gestisci sia da sshd_config sia da tcp_wrap (host.deny e host.allow).
Naturalmente se chiudi con iptables, non serve a niente, ma per sicurezza configura bene sshd_config e poi pensa ad aprire iptables
Quella regola dovrebbe andare bene

invece di fare

Codice: Seleziona tutto

echo "1" > /proc/sys/net/ipv4/ip_forward
lancia lo script /etc/rc.d/rc.ip_forward che si prende cura di aggiornare i valori di sysctl se ne hai qualcuno
quindi

Codice: Seleziona tutto

sh /etc/rc.d/rc.ip_forward start
se lo vuoi sempre basta che lo rendi eseguibile e ti parte in automatico all'avvio, senza inserire nessuna regola apposita per l'ip forward

per costruire una "base" puoi anche partire da qui
http://www.slackware.com/~alien/efg/

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da danix »

grazie per il link conraid, gli darò un'occhiata, comunque sshd_config è configurato bene, per il resto ho modificato in modo che lanci rc.ip_forward e adesso mi sa che farò qualche prova... :)

Se avete altri suggerimenti io sono tutt'orecchi (tutt'occhi forse è meglio :D )
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da danix »

Per forwardare (che brutto termine) il traffico in entrata sulla 80 da ppp0 alla eth0 va bene questa regola??

Codice: Seleziona tutto

iptables -A FORWARD -i ppp0 -o eth0 -p tcp -dport 80 -j ACCEPT -v
Ma ho un dubbio, perchè sia visibile il sito che c'è sul mio server, devo effettuare il forwarding da ppp0 a eth0 o basta che io accetti indiscriminatamente le connessioni in entrata da ppp0 sulla 80??
Nel secondo caso allora dovrebbe bastare questa regola:

Codice: Seleziona tutto

iptables -A INPUT -i ppp0 -p tcp -dport 80 -j ACCEPT -v
no??
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

Se ho ben capito la tua situazione eth0 non entra in gioco
Secondo me ti basta

Codice: Seleziona tutto

iptables -A INPUT -p tcp -dport 80 -j ACCEPT
così che ci accedi anche da LAN, in quanto non vedo una regola per la LAN
forse voleva essere questa

Codice: Seleziona tutto

$IPT_CMD -A INPUT -i $IF_LAN -j ACCEPT $SW_VERB
ma allora avrei messo

Codice: Seleziona tutto

$IPT_CMD -A INPUT -i $IF_INT -j ACCEPT $SW_VERB
o cambiato i valori alle variabili

sempre se ho capito il tutto, e non è detto :-)

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da sardylan »

danix ha scritto:Per forwardare (che brutto termine) il traffico in entrata sulla 80 da ppp0 alla eth0 va bene questa regola??

Codice: Seleziona tutto

iptables -A FORWARD -i ppp0 -o eth0 -p tcp -dport 80 -j ACCEPT -v
Ma ho un dubbio, perchè sia visibile il sito che c'è sul mio server, devo effettuare il forwarding da ppp0 a eth0 o basta che io accetti indiscriminatamente le connessioni in entrata da ppp0 sulla 80??
Nel secondo caso allora dovrebbe bastare questa regola:

Codice: Seleziona tutto

iptables -A INPUT -i ppp0 -p tcp -dport 80 -j ACCEPT -v
no??

Se vuoi rendere accessibile il sito che sta sul server, allora ti basta aprire la porta 80 nell'interfaccia ppp0...

Codice: Seleziona tutto

iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
Perché nella LAN hai già aperto tutto il traffico... (ricordi iptables -A INPUT -i eth0 -j ACCEPT ????)

Se vuoi invece forwardare la porta 80 ad un'altro PC della rete c'è anche una regola nella tabella di nat:

Codice: Seleziona tutto

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 6667 -j DNAT --to 192.168.0.5:6667
iptables -A FORWARD -i ppp0 -o eth0 -d 192.168.0.5 -p tcp --dport 6667 -j ACCEPT



Lo script intero che uso è questo:

Codice: Seleziona tutto

#!/bin/bash

IPT_CMD="/usr/sbin/iptables"
SW_VERB="-v"
IF_LAN="eth0"
IF_WAN="ppp0"
IF_INT="eth1"

input_services() {
	$IPT_CMD -A WAN_SERVS -p tcp --dport 21 -j ACCEPT $SW_VERB		# FTP
	$IPT_CMD -A WAN_SERVS -p tcp --dport 22 -j ACCEPT $SW_VERB		# SSH
	$IPT_CMD -A WAN_SERVS -p tcp --dport 80 -j ACCEPT $SW_VERB		# HTTP
	$IPT_CMD -A WAN_SERVS -p tcp --dport 50000:55000 -j ACCEPT $SW_VERB	# FTP Passive
	$IPT_CMD -A WAN_SERVS -p tcp --dport 6667 -j ACCEPT $SW_VERB		# IRCd
	$IPT_CMD -A WAN_SERVS -p tcp --dport 30000:30010 -j ACCEPT $SW_VERB	# DCC XChat
	$IPT_CMD -A WAN_SERVS -p udp --dport 27960 -j ACCEPT $SW_VERB		# UrT Server
	$IPT_CMD -A WAN_SERVS -p tcp --dport 20000 -j ACCEPT $SW_VERB		# aMule TCP
	$IPT_CMD -A WAN_SERVS -p udp --dport 20001 -j ACCEPT $SW_VERB		# aMule UDP advanced
	$IPT_CMD -A WAN_SERVS -p udp --dport 20003 -j ACCEPT $SW_VERB		# aMule UDP
}

#port_forwarding() {
#	$IPT_CMD -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 6667 -j DNAT --to 192.168.0.5:6667 $SW_VERB
#	$IPT_CMD -A FORWARD -i $IF_WAN -o $IF_LAN -d 192.168.0.5 -p tcp --dport 6667 -j ACCEPT $SW_VERB
#}

sec_icmp() {
	$IPT_CMD -A IN_ICMP -i lo -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A IN_ICMP -i $IF_LAN -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A IN_ICMP -i $IF_WAN -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A IN_ICMP -i $IF_INT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A IN_ICMP -p icmp -j DROP $SW_VERB
	$IPT_CMD -A OUT_ICMP -o lo -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A OUT_ICMP -o $IF_LAN -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A OUT_ICMP -o $IF_WAN -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A OUT_ICMP -o $IF_INT -p icmp -j ACCEPT $SW_VERB
	$IPT_CMD -A OUT_ICMP -p icmp -j DROP $SW_VERB
}

firewall_init() {
	echo "0" > /proc/sys/net/ipv4/ip_forward
	$IPT_CMD -F $SW_VERB
	$IPT_CMD -t nat -F $SW_VERB
	$IPT_CMD -t mangle -F $SW_VERB
	$IPT_CMD -X $SW_VERB
	$IPT_CMD -t nat -X $SW_VERB
	$IPT_CMD -t mangle -X $SW_VERB
}

firewall_policies() {
	$IPT_CMD -P INPUT $1 $SW_VERB
	$IPT_CMD -P OUTPUT $1 $SW_VERB
	$IPT_CMD -P FORWARD $1 $SW_VERB
}

chain_creation() {
	$IPT_CMD -N IN_SPOOF $SW_VERB
	$IPT_CMD -N OUT_SPOOF $SW_VERB
	$IPT_CMD -N TCP_CHECKS $SW_VERB
	$IPT_CMD -N WAN_SERVS $SW_VERB
	$IPT_CMD -N IN_ICMP $SW_VERB
	$IPT_CMD -N OUT_ICMP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i lo -s ! 127.0.0.1 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i lo -d ! 127.0.0.1 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_WAN -s 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_WAN -s 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_WAN -s 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_WAN -s 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_WAN -s 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_INT -s 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_INT -s 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_INT -s 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_INT -s 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A IN_SPOOF -i $IF_INT -s 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o lo -s ! 127.0.0.1 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o lo -d ! 127.0.0.1 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -s 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -s 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -s 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -s 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -s 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -s 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -s 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -s 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -s 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -s 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -d 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -d 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -d 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -d 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_WAN -d 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -d 10.0.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -d 127.0.0.0/8 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -d 192.168.0.0/16 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -d 192.168.0.0/24 -j DROP $SW_VERB
	$IPT_CMD -A OUT_SPOOF -o $IF_INT -d 192.168.1.0/24 -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags ALL NONE -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags FIN,ACK FIN -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags ACK,PSH PSH -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags ACK,URG URG -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags FIN,RST FIN,RST -j DROP $SW_VERB
	$IPT_CMD -A TCP_CHECKS -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP $SW_VERB
}

main_rules() {
	$IPT_CMD -A INPUT -j IN_SPOOF $SW_VERB
	$IPT_CMD -A INPUT -j TCP_CHECKS $SW_VERB
	$IPT_CMD -A INPUT -i lo -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_LAN -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
	$IPT_CMD -A INPUT -i $IF_WAN -j WAN_SERVS $SW_VERB
	$IPT_CMD -A INPUT -i $IF_INT -j WAN_SERVS $SW_VERB
	$IPT_CMD -A OUTPUT -j OUT_SPOOF $SW_VERB
	$IPT_CMD -A OUTPUT -j TCP_CHECKS $SW_VERB
	$IPT_CMD -A OUTPUT -o lo -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o $IF_LAN -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o $IF_WAN -j ACCEPT $SW_VERB
	$IPT_CMD -A OUTPUT -o $IF_INT -j ACCEPT $SW_VERB
}

#sharing_rules() {
#	$IPT_CMD -A FORWARD -i $IF_LAN -o $IF_WAN -s 192.168.0.0/24 -j ACCEPT $SW_VERB
#	$IPT_CMD -A FORWARD -i $IF_WAN -o $IF_LAN -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT $SW_VERB
#	$IPT_CMD -t nat -A POSTROUTING -o $IF_WAN -d ! 192.168.0.0/24 -j MASQUERADE $SW_VERB
#	echo "1" > /proc/sys/net/ipv4/ip_forward
#}

closing_rules() {
	$IPT_CMD -A INPUT -j DROP $SW_VERB
	$IPT_CMD -A OUTPUT -j DROP $SW_VERB
	$IPT_CMD -A FORWARD -j DROP $SW_VERB
	$IPT_CMD -Z $SW_VERB
	$IPT_CMD -t nat -Z $SW_VERB
	$IPT_CMD -t mangle -Z $SW_VERB
}



case "$1" in
	start)
		echo "Configuring firewall... "
		firewall_init
		firewall_policies DROP
		chain_creation
		sec_icmp
		input_services
		main_rules
		#sharing_rules
		#port_forwarding
		closing_rules
	;;
	stop)
		echo "Resetting firewall... "
		firewall_init
		firewall_policies ACCEPT
	;;
	status)
		$IPT_CMD -L -n -v --line-numbers > /tmp/firewall.out
		echo >> /tmp/firewall.out
		$IPT_CMD -t nat -L -n -v --line-numbers >> /tmp/firewall.out
		cat /tmp/firewall.out | less
		rm /tmp/firewall.out
	;;
	*)
		echo "Usage:  `basename $0`  start|stop|status"
		exit 1
	;;
esac
E' un qualcosa iniziato tanto tempo fa ed in continua evoluzione... Quindi molte cose sono rimaste come erano ai tempi di test!!! Nonostante tutto fa il suo dovere...

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

Scusate:
Ho un modem ethernet (AliceGate), a questo c'è collegato il mio serverino (tramite eth0), su cui lancio la connessione usando pppoe, quest'ultimo ha anche un'altra interfaccia di rete (eth1) a cui è collegato il laptop.
poi ora leggo questo

Codice: Seleziona tutto

 iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 6667 -j DNAT --to 192.168.0.5:6667
iptables -A FORWARD -i ppp0 -o eth0 -d 192.168.0.5 -p tcp --dport 6667 -j ACCEPT
come fa un pacchetto ad entrare in ppp0, uscire in eth0 ed andare in altro pc?

non sto capendo niente io o avete situazioni diverse l'un l'altro?

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da sardylan »

Abbiamo più o meno le stesse situazioni... Solo che danix usa il server come gateway!!

Se vuoi rendere accessibile il sito che sta nel server, ti basta aprire la porta 80... STOP... Niente forwaridng...
Se vuoi invece (per esempio) rendere accessibili il sito sta su un altro PC della rete, allora c'è forwarding...
Ultima modifica di sardylan il ven 20 mar 2009, 18:56, modificato 1 volta in totale.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

sardylan ha scritto:Abbiamo più o meno le stesse situazioni... Solo che danix usa il server come gateway!!
allora quelle regole non hanno senso, o sbaglio?

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da sardylan »

No esatto!!! Servono solo nel caso voglia aprire delle porte che servono per ALTRI pc della lan... (ED2K, Torrent, etc)

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

sardylan ha scritto:No esatto!!! Servono solo nel caso voglia aprire delle porte che servono per ALTRI pc della lan... (ED2K, Torrent, etc)
Torrent a me funziona ugualmente, ed2k no.
Comunque metterei anche IRC, FTP, etc... con i moduli appositi
io aggiungo
modprobe nf_nat_ftp
modprobe nf_nat_irc

anche se "dovrebbe" caricarlo automaticamente, ma non si sa mai

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

Dimenticavo, se sei in pppoe è importante

Codice: Seleziona tutto

 iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
come mi "suggerì" il buon mozzo zozzo :-)

anche se puoi lasciarlo gestire a pppoe tramite un'opportuna opzione

Codice: Seleziona tutto

# Do you want to clamp the MSS?  Here's how to decide:
# - If you have only a SINGLE computer connected to the DSL modem, choose
#   "no".
# - If you have a computer acting as a gateway for a LAN, choose "1412".
#   The setting of 1412 is safe for either setup, but uses slightly more
#   CPU power.
CLAMPMSS=1412
#CLAMPMSS=no

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da sardylan »

conraid ha scritto:
sardylan ha scritto:No esatto!!! Servono solo nel caso voglia aprire delle porte che servono per ALTRI pc della lan... (ED2K, Torrent, etc)
Torrent a me funziona ugualmente, ed2k no.
Comunque metterei anche IRC, FTP, etc... con i moduli appositi
io aggiungo
modprobe nf_nat_ftp
modprobe nf_nat_irc

anche se "dovrebbe" caricarlo automaticamente, ma non si sa mai
Si... Torrent anche a me!! Ma per DHT etc vuole delle porte... ED2K confermo!!
I moduli che fanno di preciso??? Sono funzioni (diciamo) automatizzate per iptables?? Apposite per FTP, IRC etc??



Questa mi è nuova!!

Codice: Seleziona tutto

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Thanks... Provvedo subito!! :)

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da conraid »

per quelle funzioni fai prima a vedere l'help del config del kernel :-)
FTP serve per gestire meglio il "tracciamento" delle connessioni FTP
IRC serve principalmente per inviare file tramite DCC

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: iptables - creazione rc.firewall

Messaggio da sardylan »

Ottima cosa!!! Grazie mille Conraid!! Dopo mi spulcio bene gli help :)

P.S. Il fatto di aver inserito tutto in un unico file è un mio "modo di fare"... Praticamente dando chmod -x rc.local ottengo una slackware pulita (nei limiti del possibile)... :) Ma ho ancora un bel po di cose da finire di configurare...

Rispondi