Protezione di un sistema linux agendo su parametri di sistema
Della serie “tutto fà brodo”, qui trovate una lista di impostazioni da fare sulle regole di firewall di iptables e su alcuni impostazioni di sistema che possono rendere la vita un pochino più difficile agli “acher” che invece di andare a fare cose più divertenti si divertono con i port scanning ed altre amenità.
.
Fatene buon uso, tanto e’ gratis
.
#
#—————————————————————
# protezione dai syn-flood
#—————————————————————
iptables -A FORWARD -p tcp –syn -m limit –limit 3/s -j ACCEPT
#—————————————————————
# protezione da scan sospetti
#—————————————————————
iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
#—————————————————————
# Enabling spooginf protecion
#—————————————————————
echo ’1′ > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#—————————————————————
# Enabling SYN-flood protection – Protection from Denial of Service (DOS) attacks
#—————————————————————
echo “1″ > /proc/sys/net/ipv4/tcp_syncookies
#—————————————————————
# Disable the acception of ICMP-redirect messages.
#—————————————————————
echo “0″ > /proc/sys/net/ipv4/conf/all/accept_redirects
#—————————————————————
# Disable responding to ping broadcasts
#—————————————————————
echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#————————————————————-
# ICMP Dead Error Messages protection
#————————————————————-
echo “1″ > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#—————————————————————
# Disable routing triangulation. Respond to queries out
# the same interface, not another. Helps to maintain state
# Also protects against IP spoofing
#—————————————————————
echo “2″ > /proc/sys/net/ipv4/conf/all/rp_filter
#—————————————————————
# Drop Invalid packets
#—————————————————————
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A FORWARD -m state –state INVALID -j DROP
#—————————————————————
# Allow world to send ICMP packets?
#—————————————————————
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 20/second –limit-burst 100 -j ACCEPT
#—————————————————————
# Drop (NMAP) scan packets #
#—————————————————————
iptables -N VALID_CHECK
iptables -A VALID_CHECK -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags ALL ALL -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags ALL FIN -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A VALID_CHECK -p tcp –tcp-flags ALL NONE -j DROP
#—————————————————————
# Drop packets with bad tcp flags
#—————————————————————
iptables -A VALID_CHECK -p tcp –tcp-option 64 -j DROP
iptables -A VALID_CHECK -p tcp –tcp-option 128 -j DROP
iptables -A INPUT -p tcp –dport 0 -j DROP
iptables -A INPUT -p udp –dport 0 -j DROP
iptables -A INPUT -p tcp –sport 0 -j DROP
iptables -A INPUT -p udp –sport 0 -j DROP
#—————————————————————
# General stealth scan drop
#—————————————————————
iptables -A INPUT -p tcp ! –syn -j DROP
Potresti cortesemente spiegare ai profani come me a cosa servono le varie righe di codice????
Intuitivamente si capisce più o meno ma sarebbe molto ma molto meglio per noi ignorantoni avere una bella spiegazione fatta come si deve!
Grazie anticipatamente!
[...] completo da [...]
Ciao,
sarebbe stato bello una spiegazione riga per riga…..
Utilissimo. Mi accodo alla richiesta di avere una spiegazione comando per comando.
Mi pare di ricordare però che le impostazioni di iptables non sono permanenti, ma vanno perdute al riavvio della macchina.
C’è un modo per renderle permanenti?
straquoto flex e unwire
sarebbe bella una spiegazione (anche sommaria) riga per riga
e poi come rendere ciò permanente (csì magari mi ci configuro il router (dentro al quale ho openwrt)
@unwiredbrain: solitamente si fa uno script che all’avvio le mette dentro, oppure c’e’ iptables-save e iptables-restore.
Per una descrizione precisa..beh, e’ un gran pacco
@shark, la costruzione / la locazione dello script mi interessano in maniera particolare. Non sono particolarmente ferrato riguardo script, demoni e compagnia bella.
Qualche delucidazione in merito sarebbe davvero apprezzata, se hai voglia (e soprattutto **tempo**) di farlo.
Non conoscevo iptables-save e iptables-restore. Grazie mille.
Gli butto un occhio non appena mi ritrovo dieci minuti liberi.
Ve la do’ la delucidazione non temete, appena smaltisco la valanga di casino che ho al lavoro…
sic
oso dare un chiarimento…
per lo script basta:
1. copiare tutto il parapacchio in un file di testo da salvare come .sh (tanto per dire che e’ uno script per l’ascell…)
2. renderlo eseguibile con chmod a+x .sh
3. magari piazzarlo in un posto dove stanno tutti gli altri script fatti *in proprio* (/opt/scripts/ ? /home//scripts, etc.)
4. piazzare in /etc/rc.local una riga tipo:
/home//scripts/.sh
(magari preceduta da un commento tipo: questa riga attiva il fairuoll tosto)
ps: i commenti in bash si fanno iniziando la riga col cancelletto ‘#’)
per la spiegazione delle singole righe, mi sa che in realta’ verrebbe un poema, secondo me per una spiegazione sommaria possono bastare i commenti presenti, per una approfondita conviene rtfm…
con questo sistema ad ogni avvio viene eseguito il file indicato dal percorso al punto 4 (occhio a metterlo esatto)
il sistema va bene per qualsiasi script si voglia far eseguire all’avvio
in alternativa si potrebbe copiare direttamente il paparacchio in /etc/rc.local, ma cosi’ e’ tanticchia piu’ pulita la cosa
azz. mi sa che l’ottimo (pfui) wordpress mi ha segato le parole tra i segni di maggiore e minore…
ai punti 1. e 2. invece di ‘.sh’ leggasi ‘*nome*.sh’
ai punti 3. e 4 i percorsi sono ‘/opt/scripts/*utente* e /home/*utente*/scripts
*nome* e’ un nome generico da sostituire con il nome che si vuole dare allo script
*utente* e’ il nome dell’utente in questione
lavoro egregio,
a chi fosse davvero interessato a capirci, (la quantità di documentazione è imponente!) oso raccomandare l’ ottimo Iptables Tutorial:
“http://iptables-tutorial.frozentux.net/iptables-tutorial.html”.
E’ il famoso “F…M..” che qualcuno raccomandava di leggere…….. quasi certamente non farà chiarezza ai neofiti, però darà loro un’ idea del perchè la spiegazione riga per riga sia complicata assai…. (o no ?).
Se posso dare un piccolo contributo, aggiungo una precisazione:
le regole sulla catena di FORWARD hanno senso solo su un pc connesso su due (o più) reti.
poiché si applicano a tutti e soli quei pacchetti provenienti dall’esterno e diretti
verso un ip che NON sia quello del pc con iptables.
Se avete un pc connesso ad una sola rete (cioè che non faccia da firewall per altri pc)
sostituite le prime due istanze FORWARD con INPUT
Ad majora
Hai ragione, ma io non ho macchine sole, una lan per me e’ condizione necessaria e sufficente alla vita
non riesco a pensare se non in relazione ad un numero N di macchine collegate.
# protezione dai syn-flood
iptables -A FORWARD -p tcp –syn -m limit –limit 3/s -j ACCEPT
ottimo modo per spararsi da soli
Non motivando il commento hai perso un’ottima occasinoe per tacere.
per la cronaca serve come misura anti syn flood.
ciao,
se eseguo lo script mi viene restitua questa serie di errori:
Bad argument `–syn’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–state’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–state’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–icmp-type’
Try `iptables -h’ or ‘iptables –help’ for more information.
iptables: Chain already exists
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-flags’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-option’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–tcp-option’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–dport’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–dport’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–sport’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–sport’
Try `iptables -h’ or ‘iptables –help’ for more information.
Bad argument `–syn’
Try `iptables -h’ or ‘iptables –help’ for more information.
Qualche idea?
Grazie
mi sa che l’hai copiato paro paro e i doppi meno originali ‘- -’ sono stati trasformati da wordpress (ribleah…) in un trattino lungo
se ci fai caso, infatti, nelle opzioni con due parole, tipo ‘tcp option’, il primo trattino e’ un po’ piu’ lungo del secondo: quello, il primo, dovrebbero essere due trattini invece di uno lungo
come regola generale, tanto per dire, le opzioni dei comandi bash vogliono un trattino singolo se sono lettere (ls l) e due se sono parole (ls color)
non so se si capisce
ariuffa, sono spariti dei pezzi nei comandi fra parentesi dell’ultima frase…
quelli corretti sono:
ls ‘-’l e ls ‘- -’color
rp_filter
Nella documentazione del kernel (2.6.26) i “valori” del modulo sembrano essere soltanto 0 e 1
cat ………./linux-2.6.26/Documentation/networking/ip-sysctl.txt
rp_filter – BOOLEAN
1 – do source validation by reversed path, as specified in RFC1812
Recommended option for single homed hosts and stub network
routers. Could cause troubles for complicated (not loop free)
networks running a slow unreliable protocol (sort of RIP),
or using static routes.
0 – No source validation.
conf/all/rp_filter must also be set to TRUE to do source validation
on the interface
Default value is 0. Note that some distributions enable it
in startup scripts
Gogglando in giro, in effetti, si vedono altri post che suggeriscono di passaer il valore 2……boh!!!
Saluti
Max
@stirner
http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg566089.html
There is a long-standing bug in the kernel documentation, which is still
present in 2.6…