Newsgroup: it.comp.os.linux.sys
Titolo: Consiglio per Regole IPTABLES

Ciao,
ho un server che gestisce un server
di Chat dove arrivano dei bei synflood.
Ora il firewall è così configurato:
( Centos 5.2 )
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j DROP
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 
-j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j 
ACCEPT
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL RST --dport 6005 -j ACCEPT
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL FIN --dport 6005 -j ACCEPT
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL SYN --dport 6005 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6005 
-j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 
60000:60900 -j ACCEPT
COMMIT
-----------------------------
Funziona abbastanza bene, ma vorrei loggare i synflood in un file
per poi scrivere un piccolo script che banni gli IP per un certo periodo 
di tempo.
Io farei così:
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL RST --dport 6005 -j LOG --log-prefix="SYNFLOOD:"
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL RST --dport 6005 -j LOG --log-prefix="SYNFLOOD:"
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL FIN --dport 6005 -j LOG --log-prefix="SYNFLOOD:"
-A RH-Firewall-1-INPUT -m limit --limit 1/second --limit-burst 3 -p tcp 
--tcp-flags ALL SYN --dport 6005 -j LOG --log-prefix="SYNFLOOD:"
---------------------------------------------------
E' corretto ?
Se volessi loggare in un file apposito come configuro syslog.conf ?
Ora è così:
---------------------------------------------------
kern.*                                                  /var/log/kernel.log
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
---------------------------------------------------
Ho letto che occorre lavorare sul "log-level" nelle regole di iptables 
.. ma non capisco come modificare il syslog.conf
Per aumentare la protezione ho anche fatto le seguenti modifiche:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 256960 > /proc/sys/net/core/rmem_default;
echo 256960 > /proc/sys/net/core/rmem_max;
echo 256960 > /proc/sys/net/core/wmem_default;
echo 256960 > /proc/sys/net/core/wmem_max;
echo 0 > /proc/sys/net/ipv4/tcp_timestamps;
echo 4000 > /proc/sys/net/core/netdev_max_backlog;
echo 40960 > /proc/sys/net/core/optmem_max;
Grazie mille !
			-- Yena --

 .. ma non capisco come modificare il syslog.conf
Ad esempio, imposti
kern.warning /var/log/firewall.log
e
--log-level 4 nelle regole di logging di iptables.
Con sistemi di logging differenti dal classico syslog hai anche maggiore
fleissibilità, volendo.

 fleissibilità, volendo.
Ti chiamerò "O PROFESSORE" !
Complimenti e grazi mille !! .. procedo con le modifiche .. poi le 
posto.. magari riesco a fare cazzatine anche in quelle :-)
		-- Yena --

 Te lo dimostro.
[cuttone]
Un meritato applauso per l'esposizione chiara e circostanziata
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Fashion is a form of ugliness so intolerable that we have to alter it
every six months.
		-- Oscar Wilde

 Un meritato applauso per l'esposizione chiara e circostanziata
Mi fa piacere che sia chiara, perchè sul "circostanziata" mi
ci sono messo d'impegno, ma non ero certo che fosse anche chiara.

 posto.. magari riesco a fare cazzatine anche in quelle :-)
Ecco, sempre testare con attenzione e dare feedback sul gruppo.
Non fidarsi mai di quello che scrivono gli altri come fosse
oro colato...:-)

 oro colato...:-)
Azz Centos 5 non ha il modulo connlimits ..
mi tocca ricompilarlo .. speriamo bene ..
			-- Yena --

 Un meritato applauso per l'esposizione chiara e circostanziata
Un giudizio da uno come me, che usa iptables in modo un po' rozzo non 
vale moltissimo, comunque wiplash è abbastanza ferrato su queste cose. 
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo

 ci sono messo d'impegno, ma non ero certo che fosse anche chiara.
Domandona:
ma è necessaria la regola sul synflood
o bastano:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
Perchè ho letto che il Kernel ha già una protezione sui synflood..
ed infatti dal dmesg me li evidenzia:
kernel: possible SYN flooding on port 6005. Sending cookies
Grazie ancora
			-- Yena --

 echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
Intervenire sul backlog dei syn serve indubbiamente, ma...
Dai un'occhiata alla documentazione dei parametri di sistema del tcp:
http://ipsysctl-tutorial.frozentux.net/chunkyhtml/tcpvariables.html
dove scopri, ad esempio, che se scegli di utilizzare i syn cookies
ciò ha influenza su tutta un'altra serie di parametri dello stack tcp.