Newsgroup: it.comp.sicurezza.varie
Titolo: Porte alte da chiudere

Quali porte devo chiudere forzatamente?
In uno script di IPTables ho trovato che vengono chiuse le porte dalla 5.000
alla 6.000.
Vedo per esempio che i seguenti porgrammi lavorano con:
SubSeven : 27374
NetBus: 12345
SubSeven : 1243
Back Orifice : 31337
BioNet : 12348
Devo chiuderle di forza?

 Devo chiuderle di forza?
Forse sarebbe necessario conoscere lo script, che dici? la mia sfera di 
cristallo e' in verniciatura....
Fatti fare uno portscan da internet, completo, e se le porte risultano 
aperte, chiudile
HappyCactus e li risposte banali
-- 
HappyCactus - Linux User #209744 - LFS User #6046 - >>> SMSPM950 <<<
 
Ci sono 10 categorie di persone al mondo: quelle che capiscono
il sistema binario e quelle che non lo capiscono.

Il file di conf. del mio FIREWALL è questo.
Se faccio un portscan da fuori tutte le porte tranne la SSH2 risultano
chiuse, ma se mi connetto al sito 
http://www.pcflank.com/
 mi da questi
risultati:
Check for vulnerabilities of your computer system to remote attacks
We have scanned your system for open ports and for ports visible to others
on the Internet. As a rule an open port means your computer is vulnerable to
attacks by crackers. They gain access to your computer and its files through
these open ports.
     Danger!
The test found open port(s) on your system: 21, 23
The test also found visible port(s) on your system: 80, 135, 137, 138, 139,
1080, 3128
Recommendation:
It is urgent that you install personal firewall software. If you have
already installed and are using a firewall, check if it is set to make all
the ports of your computer closed and invisible (hidden). If you have any
problems adjusting your firewall, get help from the firewall developer. If
the firewall is correctly set but fails this test, replace the firewall
software and redo this test.
Trojan horse check
The test scanned your system to find signs of a Trojan. If a Trojan horse is
on your computer a cracker can access your system's files and your personal
data.
     Warning!
The test found visible ports on your system: 27374, 12345, 1243, 31337,
12348.
The following Trojans use these ports: SubSeven, NetBus, SubSeven, Back
Orifice, BioNet
Although these ports are visible, they are not open, so your system is not
infected. However, having visible ports on your system means your computer
can be "seen" over the Internet. This makes it very easy for skillful
intruders to explore your system.
Recommendation:
Install personal firewall software and use an anti-Trojan program. If you
have a firewall, check if it is set to make all your computer ports
invisible (hidden). If it is, then it failed miserably. Replace it and redo
this test.
Browser privacy check
The test checked if your web browser reveals any private information while
you visit Web sites. Usually such information is: the last site visited,
your locale and who your Internet Service Provider is.
    Danger!
While visiting web sites your browser reveals private information about you
and your computer. It sends information about previous sites you have
visited. It may also save special cookies on your hard drive that have the
purpose of directing advertising or finding out your habits while web
surfing.
################################################ INIZIO
############################
#!/bin/bash
/bin/echo -n "Setting up firewalling... "
# Moduli dinamici...
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
modprobe iptable_filter
IPTABLES=/sbin/iptables
ETH_EXT=eth0  # interfaccia rete esterna
ETH_INT=eth1  # interfaccia rete interna
IP_EXT=192.168.1.100    # IP rete esterna
IP_INT=192.168.1.102    # IP rete interna
TCP_PORT='21 22 25 80 110' # porte tcp abilitate
UDP_PORT='53'                 # porte udp abilitate
PRIV_PORT='5000:6000'           # porte alte da bloccare
UP_PORTS='1024:65535'
# Pulisce tutte le politiche
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
# Politiche di default
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
# POLITICHE DI INPUT
# Abilita ingresso a VPN
$IPTABLES -A INPUT -i cipcb+ -j ACCEPT
############# Inizio Impostazioni standard ##########
## SYN-FLOODING PROTECTION
# This rule maximises the rate of incoming connections. In order to do this
# we divert tcp packets with the SYN bit set off to a user-defined chain.
# Up to limit-burst connections can arrive in 1/limit seconds .....
# in this case 4 connections in one second.
# After this, one of the burst is regained every second and connections are
# allowed again. The default limit is 3/hour. The default limit burst is 5.
#
$IPTABLES -N syn-flood
$IPTABLES -A INPUT -i $ETH_EXT -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
## Make sure NEW tcp connections are SYN packets
$IPTABLES -A INPUT -i $ETH_EXT -p tcp ! --syn -m state --state NEW -j DROP
## FRAGMENTS
# I have to say that fragments scare me more than anything.
# Sending lots of non-first fragments was what allowed Jolt2 to effectively
# "dron" Firewall-1. Fragments can be overlapped, and the subsequent
# interpretation of such fragments is very OS-dependent (see this paper
# for details). I am not going to trust any fragments.
# Log fragments just to see if we get any, and deny them too.
$IPTABLES -A INPUT -i $ETH_EXT -f -j LOG --log-level info --log-prefix
"IPTABLES FRAGMENTS: "
$IPTABLES -A INPUT -i $ETH_EXT -f -j DROP
$IPTABLES -A INPUT -i $ETH_EXT -d 
224.0.0.0/8
 -j DROP
############# Fine Impostazioni standard ##########
# Blocco netbios
$IPTABLES -A INPUT -p tcp -d $ETH_EXT --dport 137 -j DROP
$IPTABLES -A INPUT -p udp -d $ETH_EXT --dport 137 -j DROP
$IPTABLES -A INPUT -p tcp -d $ETH_EXT --dport 138 -j DROP
$IPTABLES -A INPUT -p udp -d $ETH_EXT --dport 138 -j DROP
$IPTABLES -A INPUT -p tcp -d $ETH_EXT --dport 139 -j DROP
$IPTABLES -A INPUT -p udp -d $ETH_EXT --dport 139 -j DROP
# Abilita localoop
$IPTABLES -A INPUT -i lo -j ACCEPT
# Impostazioni antispoofing (paranoiche)
$IPTABLES -A INPUT -i $ETH_INT -s ! $IP_INT/24 -j LOG --log-level
info --log-prefix "IPTABLES SPOOF-IN:"
$IPTABLES -A INPUT -i ! $ETH_INT -s $IP_INT/24 -j LOG --log-level
info --log-prefix "IPTABLES SPOOF-IN:"
$IPTABLES -A INPUT -i $ETH_INT -s ! $IP_INT/24 -j DROP
$IPTABLES -A INPUT -i ! $ETH_INT -s $IP_INT/24 -j DROP
# Consenti ICMP
$IPTABLES -A INPUT -p icmp -j ACCEPT
# Protezione delle porte alte ( > 1023 )
for i in $PRIV_PORT; do
 $IPTABLES -A INPUT -p tcp -d $IP_EXT --dport $i -j DROP
 $IPTABLES -A INPUT -p udp -d $IP_EXT --dport $i -j DROP
done
# Consenti le porte > 1023
$IPTABLES -A INPUT -p tcp -d $IP_EXT --dport 1024:65535 -j ACCEPT
$IPTABLES -A INPUT -p udp -d $IP_EXT --dport 1024:65535 -j ACCEPT
# Abilita le porte consentite
for i in $TCP_PORT; do
 $IPTABLES -A INPUT -p tcp -d $IP_EXT --dport $i -j ACCEPT
 $IPTABLES -A INPUT -p tcp -d $IP_INT --dport $i -j ACCEPT
done
for i in $UDP_PORT; do
 $IPTABLES -A INPUT -p udp -d $IP_EXT --dport $i -j ACCEPT
 $IPTABLES -A INPUT -p udp -d $IP_INT --dport $i -j ACCEPT
done
# Stateful Inspection per FTP
# FTP attivo (connessione in entrata dalla 20/tcp alla porta locale passata
# tramite il comando PORT. Il modulo ip_conntrack_ftp riconosce questa
# connessione come RELATED a quella orginale in uscita sulla 21/tcp)
$IPTABLES -A INPUT -p tcp -i $ETH_EXT --sport 20 -m state state
ESTABLISHED,RELATED -j ACCEPT
# FTP passivo (connessione in uscita da una porta non privilegiata a una
porta
# remota anch'essa non privilegiata, passata precedentemente tramite il
# comando PORT. Anche questa viene riconosciuta da ip_conntrack_ftp)
$IPTABLES -A INPUT -p tcp -i $ETH_EXT --sport $UP_PORTS --dport $UP_PORTS -m
state state ESTABLISHED -j ACCEPT
# Consenti traffico dall'interno
$IPTABLES -A INPUT -i $ETH_INT -s $IP_INT/24 -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -i lo -s $IP_INT/24 -d $IP_INT -j ACCEPT
# Negazione di tutto il resto (logging)
$IPTABLES -A INPUT -j LOG --log-level info --log-prefix "IPTABLES INPUT:"
$IPTABLES -A INPUT -j DROP
####### POLITICHE DI FORWARDING
# Abilita forward a VPN
$IPTABLES -A FORWARD -i cipcb+ -j ACCEPT
# Attiva la NAT
$IPTABLES -t nat -A POSTROUTING -o $ETH_EXT -j MASQUERADE
$IPTABLES -A FORWARD -j ACCEPT
###### POLITICHE DI OUTPUT
# Abilita output a VPN
$IPTABLES -A OUTPUT -o cipcb+ -j ACCEPT
# Abilita localoop
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Stateful Inspection per FTP
# FTP attivo
$IPTABLES -A OUTPUT -p tcp -o $ETH_EXT --dport 20 -m state state
ESTABLISHED -j ACCEPT
# FTP passivo
$IPTABLES -A OUTPUT -p tcp -o $ETH_EXT --sport $UP_PORTS --dport
$UP_PORTS -m state state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o ! $ETH_INT -d $IP_INT/24 -j LOG --log-level
info --log-prefix "IPTABLES SPOOF-OUT:"
$IPTABLES -A OUTPUT -o ! $ETH_INT -d $IP_INT/24 -j DROP
$IPTABLES -A OUTPUT -o $ETH_INT -d $IP_INT/24 -j ACCEPT
$IPTABLES -A OUTPUT -o $ETH_EXT -s $IP_EXT -j ACCEPT
$IPTABLES -A OUTPUT -s $IP_ADD -j ACCEPT
$IPTABLES -A OUTPUT -j LOG --log-level info --log-prefix "IPTABLES OUTPUT:"
$IPTABLES -A OUTPUT -j DROP
/bin/echo "done."
################################################ FINE
############################

 ############################
uhm, posso sapere dove hai trovato questo script? io sinceramente (ma e' 
una considerazione personale, che potrebbe differire di molto dalla 
prassi comune, dalle tue esigenze personali e da tutto il resto) ho uno 
script decisamente piu' breve, nonostrante il NAT e il Masquerading. In 
pratica chiudo tutto, apro solo le porte effettivamente necessarie, e che 
vanno ai server interni. Io ridurrei di molto le regole nella catena di 
input, ridurrei all'essenziale quelle di output (a meno che tu non voglia 
filtrare anche i uscita... ma occhio che IMHO molte regole erano 
ridondanti, perche' se non attraversano la catena di input e la NAT di 
sicuro non passano per l'output).
Naturalmente prendi tutto quanto con il beneficio di inventario, non so 
la tua specifica situazione, e quindi puo' essere che vi siano delle 
ragioni ben precise per ciascuna regola: anzi, se non hai copiato lo 
script paro paro senza capirne niente, sicuramente vi avrai fatto sopra 
un ragionamento! quindi... 


> nmap -p 1-65535 (tuoip)
Mi dice che ho solo la porta 22 aperta.
Per le altre considerazioni, non sono cosi' ferrato su IPTABLES.
Dovrei avere piu' dettagli.
Grazie a tutti.

 Dovrei avere piu' dettagli.
Ti consiglio:
a) #man iptables
e, anche se non è riferito a iptables,
b) 
http://cnuce-arch.cnuce.cnr.it/Linux/docs/howto/IPCHAINS-HOWTO
i dettagli di sintassi li ricavi da a)
In bocca al lupo.
-- 
Luca

>> Fatti fare lo scan con nmap via Internet qualcuno, che forse e' meglio.
Sul firewall ho fatto questa prova:
nmap -v -sS -O -p 1-65535
e il risultato è PORTA 22 aperta (MI SERVE)
Difficulty = 1643081 (GOOD LUCK!)
Cosa vuol dire?

 ricerca con Google.
Anche a te quello script aveva convinto poco? a me pareva molto confuso, 
IMHO meno regole ci sono, meglio e'...



Thorin, ha scritto che gli serve: evidentemente deve accedere a quella
macchina in SSH, e se la chiude la vedo difficile riuscirci dopo... ^^
-- 
Renato "Hitman" Salzano | 
http://spazioinwind.iol.it/hitman/
GdG #6-IHGGer #778-VFNCL counter-仟ne Fan Club #00-TxBass 2ofS
"And I'm all mixed up, feeling cornered and rushed / They say 
 it's my fault but I want her so much" - T.a.T.U.


Se sai da che IP dovrai collegarti. Altrimenti devi tenerla aperta al
mondo (mi č capitato con alcuni server che dovevo gestire in remoto e mi
collego da un IP dinamico).
-- 
Renato "Hitman" Salzano | 
http://spazioinwind.iol.it/hitman/
GdG #6-IHGGer #778-VFNCL counter-Ąane Fan Club #00-TxBass 2ofS


 mondo 
Limitala ad un certo blocco di IP (ad esempio, infostrada)



Uhmm... è un'idea. O magari una serie di ping di una certa lunghezza
[rif a un certo post del sommo Leo] precisa... 
... il problema è se il gioco vale la candela, come sempre.
-- 
Renato "Hitman" Salzano | 
http://spazioinwind.iol.it/hitman/
GdG #6-IHGGer #778-VFNCL counter-¥ane Fan Club #00-TxBass 2ofS



No, perchč mi poteva capitare di collegarmi anche da altri provider.
L'idea suggerita da Thorin č piů interessante, e anche abbastanza
fattibile [in fondo si tratta di aggiungere uno script ad hoc + un hook
in .procmailrc].


 in .procmailrc].
Pero' se non hai un MX, devi risolvere il problema dell'asincronicita' 
dell'arrivo della mail (si usa fetchmail?).



Basta che lo script rimandi indietro una mail di avviso, magari criptata
*g* quando ha fatto, magari tenendo solo per un tempo X il "tunnel"
aperto se uno da SSH non lancia un certo comando...
-- 
Renato "Hitman" Salzano | 
http://spazioinwind.iol.it/hitman/
GdG #6-IHGGer #778-VFNCL counter-¥ane Fan Club #00-TxBass 2ofS


 aperto se uno da SSH non lancia un certo comando...
Non mi sembra una gran soluzione. Hai cosi' una doppia asincronicita', 
sempre ammesso che il client sia sempre collegato ad internet e lavori 
con fetchamil, il ritardo massimo e' Tc+Ts (periodo di fetchmail del 
client TC e del server Ts, si intende client e server SSH), se invece vai 
in manuale...


 aperto se uno da SSH non lancia un certo comando...
Forse e' piu' facile usare qualcosa di piu' preconfezionato e
meno asincrono, come scand del sommo o logsurfer + netfilter:
quando arriva un pachetto sulla porta xx ed entro y minuti un
altro sulla porta zz allora viene eseguito kk.sh, che fa quel
che vuoi tu.
Fabio

in .procmailrc].
Puoi fare in un modo assai piu' losco.
Occorre scand e ipchains.
sshd e' aperto a tutti, pero' ipchains blocca l'inbound --dport 22.
Sottoponi a logging, pur permettendoli, gli inbound ICMP. A questo punto,
chiunque ti pinga l'host automaticamente crea una riga di log - che scand
vede.
Il modo _semplice_ di procedere e' regolare scand in modo che ogni "ping"
attivi un comando speciale (se non si hanno comandi speciali, si puo' non
usare scand, e lanciare tail -n X /var/log/messages da crontab).
Il comando speciale sedda :-) le ultime righe di messages, e cerca quanto
sono lunghi i pacchetti ICMP in arrivo.
Se arrivano tre pacchetti di fila di dimensioni X1, X2, X3, allora questo
comando speciale capisce che sulla macchina ci siei te, ed ipschaina sshd
a colpi di -I -j ACCEPT dallo stesso host da cui proviene il ping.
Per maggiore sicurezza, si puo' aprire la shell di sshd su una AlShell in
grado di ripristinare un collegamento umano solo se si fornisce ANCHE una
password. La password arriva via sshd, dunque crittata: chiunque si fosse
sniffato il traffico ICMP e avesse replayato i pacchetti [1] ottiene solo
una shell cieca, che in piu' lo prende per i fondelli [3]
QUASI istantaneo [4], e mi sembra ragionevolmente sicuro.
Leonardo
[1] sempre che X1, X2 e X3 non siano funzione non banale di $SOURCEIP, il
    che e' facile se si ha un apposito programmino sul Palm [2]
[2] gcc-m68k-palmos, pilrctools-samples ed un'infarinatura di C avanzano
[3] sulle capacita' della Al Shell vedasi googlegroups.
[4] ancora piu' istantaneo usando iplogd <grin>
-- 
So here's tae the lassie; I canna forget her,
And ilka young laddie whae's listenin' to me:
don't ever be sweir to convey a young lassie,
Tho't's only to show her the road tae Dundee.


Salvato e poi me lo studio con calma. Non sono ancora cosě evoluto da
leggere e implementare al volo ^^
