|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2000
Città: Trana (Torino)
Messaggi: 141
|
Firewall con iptables... chi ci coregge il compitino ?
Io e miei amici abbiamo cercato di creare uno script per farci un piccolo firewall casalingo con una macchina dedicata ad esso, e prendendo spunto da varie guide abbiamo realizzato questo piccolo script che pubblichiamo qui per farlo correggere e sperando che possa servire anche ad altri.
![]() ilsensine che dici mi correggi il compitino ![]() Codice:
#!/bin/sh # ## ========== IMPOSTAZIONE VARIABILI ========== ## # ipt="/sbin/iptables" echo="/bin/echo" lan=192.168.0.0/24 red=eth1 green=eth0 # ## ========== PULIZIA DELLE CATENE ========== ## # # RESET DELLE REGOLE INPUT, OUTPUT, FORWARD $ipt -F # # DELETE DELLE CATENE CREATE DALL'UTENTE $ipt -X # # RESET DEI CONTATORI $ipt -Z # # RESET DELLE TABELLE DI MANGLE E DI NAT $ipt -t mangle -F $ipt -t nat -F # ## ========== SETTAGGI DELLE REGOLE DI DEFAULT ========== ## # $ipt -P INPUT DROP $ipt -P OUTPUT DROP $ipt -P FORWARD DROP # ## ========== SETTAGGI DI IPFORWARDING ========== ## # # DISABILITA L'IP FORWARDING $echo "0" > /proc/sys/net/ipv4/ip_forward # # DISABILITA TUTTI GLI ECHO ICMP $echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # # DISABILITA GLI ECHO BROADCAST ICMP $echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # # IMPOSTA LA PROTEZIONE CONTRO ATTACCHI SPOOFING $echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses $echo "1" > /proc/sys/net/ipv4/tcp_syncookies $echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter # # ABILITA IL LOG IN /var/log/messages DEI PACCHETTI MALFORMATI E LI SCARTA AUTOMATICAMENTE $echo "1" > /proc/sys/net/ipv4/conf/all/log_martians $echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route $echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # ## ========== SETTAGGI NAT ========== ## # # ABILITA IL MASCHERAMENTO DEGLI INDIRIZZI LAN $ipt -t nat -A POSTROUTING -s $lan -j MASQUERADE # ## ========== SETTAGGI PERSONALIZZAZIONE FIREWALL ========== ## # # SCARTO DEI PACCHETTI MALFORMATI $ipt -A INPUT -m unclean -j DROP # # ABILITA LA CONNESSIONE SSH LATO LAN $ipt -A INPUT -s $lan -i $green -p tcp --dport 22 -j ACCEPT $ipt -A OUTPUT -d $lan -o $green -p tcp --sport 22 -j ACCEPT # # SCARTA I PACCHETTI DESTINATI AL FIREWALL PROVENIENTI DALLA WAN $ipt -A INPUT -i $red -j DROP # # BLOCCA I PACCHETTI IN USCITA DAL FIREWALL LATO WAN $ipt -A OUTPUT -o $red -j DROP # # ABILITA DNS (53) $ipt -A FORWARD -s $lan -p tcp --dport 53 -j ACCEPT $ipt -A FORWARD -s $lan -p udp --dport 53 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 53 -j ACCEPT $ipt -A FORWARD -d $lan -p udp --sport 53 -j ACCEPT # # ABILITA HTTP (80), HTTPS (443), PROXY (8080) $ipt -A FORWARD -s $lan -p tcp --dport 80 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 80 -j ACCEPT $ipt -A FORWARD -s $lan -p tcp --dport 8080 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 8080 -j ACCEPT $ipt -A FORWARD -s $lan -p tcp --sport 443 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 443 -j ACCEPT # # ABILITA SMTP (25) $ipt -A FORWARD -s $lan -p tcp --dport 25 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 25 -j ACCEPT # # ABILITA POP3 (110) $ipt -A FORWARD -s $lan -p tcp --dport 110 -j ACCEPT $ipt -A FORWARD -d $lan -p tcp --sport 110 -j ACCEPT # # BLOCCA TUTTI I PACCHETTI IN TRANSITO CHE NON SODDISFANO LE REGOLE $ipt -A FORWARD -j DROP # # ABILITO L'IP FORWARD $echo "1" > /proc/sys/net/ipv4/ip_forward # # # ## ========== REGOLE DA VERIFICARE ========== ## # # $ipt -A FORWARD -d $lan -p icmp ! --icmp-type echo-request -j ACCEPT # $ipt -A FORWARD -d $lan -p icmp ! --icmp-type time-exceeded -j ACCEPT #iptables -N syn-flood #iptables -A INPUT -i $red -p tcp syn -j syn-flood #iptables -A syn-flood -m limit limit 1/s limit-burst 4 -j RETURN #iptables -A syn-flood -j DROP #iptables -A FORWARD -d $lan -p icmp -j ACCEPT |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Giusto un esempio, vale anche per gli altri casi:
Quote:
![]() Aspè, qual'è l'indirizzo pubblico della tua lan che la hackko? ![]() Usa questa regola, vale per _tutte_ le situazioni nelle quali ricevi pacchetti di risposta (la puoi usare sia nella catenda di forward che di input, con le dovute modifiche): $ipt -A FORWARD -d $lan -m state --state ESTABLISHED,RELATED -j ACCEPT
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2000
Città: Trana (Torino)
Messaggi: 141
|
Inanzitutto grazie per la risposta
![]() Se vuoi bombarci il nostro ip è 207.46.249.27 (www.microsoft.com ![]() ![]() ![]() Quote:
![]() ![]() ![]() Quindi la stessa cosa vale anche per la porta 80, 110 ect... allora dovrei scrivere le regole così ? Codice:
$ipt -A FORWARD -s $lan -p tcp --dport 80 -j ACCEPT $ipt -A FORWARD -d $lan -m state --state ESTABLISHED,RELATED -j ACCEPT Non è che mi spiegheresti gentilmente l'utilità delle ultime regole dato che non sapevamo se utilizzarle o meno Grazie per le risposte, e speriamo che questo script non serva solo a noi ma anche ad altri utenti sul forum ![]() |
|
![]() |
![]() |
![]() |
#4 | |||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Basta che abiliti in ingresso una sola volta i pacchetti con stato established o related, e vale per tutte le situazioni.
Quote:
nb la documentazione dice che "!" va dopo --icmp-type...boh... Quote:
Nella seconda riga occorrerebbe scrivere "--syn", non "syn" Guarda man iptables per altre informazioni sui pacchetti syn; probabilmente nel tuo caso devi bloccare i pacchetti syn del tutto. Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2000
Città: Trana (Torino)
Messaggi: 141
|
[color=red][color]
Dovremmo offrirti una cena per l'aiuto che ci stai dando ![]() Secondo te ha senso specificare le due regole : Codice:
$ipt -A FORWARD -d $lan -p icmp ! --icmp-type echo-request -j ACCEPT $ipt -A FORWARD -d $lan -p icmp ! --icmp-type time-exceeded -j ACCEPT Codice:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts Scusa la valanga di domande ma ne ho ancora una "Le sai tutte ?" ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 400
|
Codice:
$ipt -t mangle -F Codice:
# ABILITA IL LOG IN /var/log/messages DEI PACCHETTI MALFORMATI E LI SCARTA AUTOMATICAMENTE Codice:
# BLOCCA TUTTI I PACCHETTI IN TRANSITO CHE NON SODDISFANO LE REGOLE $ipt -A FORWARD -j DROP ![]() Codice:
# $ipt -A FORWARD -d $lan -p icmp ! --icmp-type echo-request -j ACCEPT # $ipt -A FORWARD -d $lan -p icmp ! --icmp-type time-exceeded -j ACCEPT $ipt -A FORWARD -d $lan -p icmp --icmp.type echo-request -J DROP $ipt -A FORWARD -d $lan -p icmp --icmp.type time-exceeded -J DROP $ipt -A FORWARD -d $lan -p icmp -J ACCEPT Inoltre non includerei la LAN nelle limitazioni del Syn Flood almeno che tu non abbia motivi particolari per considerarla insicura. Ciao
__________________
-=( Trust No One )=- |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 1999
Città: Fermo (FINALMENTE FM!!!)
Messaggi: 828
|
io non ne capisco quasi niente, ma se lo ripubblichi con tutte le correzioni mi fai un piacere...
![]() ![]()
__________________
- Visita il mio blog |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:26.