Visualizzazione post con etichetta linux. Mostra tutti i post
Visualizzazione post con etichetta linux. Mostra tutti i post

Centralino Voip trixbox + euteliavoip

Esiste un modo per abbassare drasticamente il costo delle chiamate? Certo, un centralino voip.

Avevo già trattato la configurazione di ekiga per euteliavoip (skypho) per tutti gli utenti che hanno poche pretese, ma spesso il problema nasce con le configurazioni complicate delle aziende.

Per mantenere una linea comune ai post in questo esempio ho utilizzato appunto eutelia voip, che permette le autoricariche da carte di credito ed i number portability; ma nulla vieta con un centralino voip di registrarvi anche altri operatori con una procedura analoga.

Premessa:

Un centralino non necessita di un gran hardware, per aziende fino a 10 telefoni posso consigliarvi tranquillamente di utilizzare una macchina virtuale VmWare con 1 solo processore, 8Gb di disco, lan in bridge e 256Mb di ram; oppure un pentium 3 con almeno le stesse caratteristiche.

Ora che avrete l'hardware possiamo procedere, procuratevi una iso di trixbox (distribuzione linux basata su centos già preconfigurata) dal sito ufficiale, posto qui un mirror diretto:
http://superb-east.dl.sourceforge.net/sourceforge/asteriskathome/trixbox-2.6.2.1.iso
A questo punto servirà inoltre un'account registrato gratuitamente presso il provider voip, in questo caso:
http://www.euteliavoip.com
tramite il quale potrete registrare tutte le numerazioni che volete, ed attivare anche numerazioni fax che vi permetteranno di ricevere direttamente su e-mail i fax (tiff,jpg,pdf) ed i rapportini di invio (i fax sono inviabili tramite e-mail, software free, via interfaccia web).

Sarà necessario per ultimo avere un adsl con ip fisso, (un esempio molto economico, con buone bande garantite può essere cheapnet); per chi avesse ip dinamico (come di norma per tutte le adsl casalinghe) può trovare come soluzione dyndns.com, anch'esso con registrazione gratuita, permette di associare un dominio ad un ip dinamico, tramite un apposito software gratuito che effettua costantemente l'aggiornamento dell'ip sul sito ( http://www.dyndns.com/support/clients/ ) in tal caso ove nella spiegazione troverete la dicitura vostroipesterno, dovrete inserire il dominio dinamico registrato (es: example.dyndns.org).

Nota per i firewall router
Avevo notato che aprendo e nattando solo le porte consigliate da eutelia non funzionava quindi eccole:

udp 123
udp 5004
udp 5060
udp 5061
udp 5062
udp 5063
udp 4569
udp 4570
udp 8000
udp 8001
udp 8002
udp 8003
udp
3478
udp 60028
udp 16384
udp 16482
tcp 5038
tcp 4559
tcp 8088
tcp 6600
tcp 4445
tcp 60476
tcp 60477
tcp 60478
tcp 60479
tcp 42359
tcp 59579
tcp 59581

Ora avete a disposizione tutto il necessario per l'installazione e la lan configurata correttamente.

Installazione:
L'installazione è molto semplice, inserite il cdrom all'avvio, quando comparirà la prima schermata con il logo trixbox date [invio] e rispondete mano a mano alle domande che vi vengono poste.
Se avete il dhcp attivato internamente sappiate che il centralino funzionerà comunque, il problema sarà solo per i client che lo devono contattare (con un dns interno ed un dhcp configurato bene non avrete problemi).

NOTA: l'installer effettuerà un paio di riavvi per effettuare le auto configurazioni, lasciatelo fare finche non vedrete comparire stabile la schermata nera di login.

Configurazione:
La configurazione è molto semplice, in quanto avrete a disposizione fin da subito un centralino funzionante, con già un interfaccia web per l'amministrazione.

A questo punto entrate nel pannello amministrativo digitando in un browser:

http://ipinterno.del.vostro.server/maint/?freepbx


La cosa più importante e delicata sarà la configurazione dei "trunk" (fasci) che sono le connessioni ai provider.

Create quindi un nuovo trunk sip che dovrà avere la seguente struttura:
identificativo di uscita:
Never Override Caller id: selezionato
Regole chiamate:
0039+XXXXXXXXX
0039+XXXXXXXXXX
0039+XXXXXXXXXXX
0039+XXXXXXXX

Impostazioni in Uscita

Nome Fascio: numerovoip

dettagli peer:

allow=ulaw&alaw&gsm&g723&g729&h261&h263&h263p
callerid=Unknown
context=from-sip-external
defaultexpirey=1800
disallow=all
dtmfmode=inband
externip=vostroipesterno
fromuser=
numerovoip
host=voip.eutelia.it
insecure=very
language=it
nat=yes
port=5060
qualify=yes
secret=password
srvlookup=yes
type=friend
useragent=Asterisk_Eut
username=
numerovoip

Impostazioni in entrata

Nome Fascio: in_
numerovoip

dettagli peer:
allow=ulaw&alaw&gsm&g723&g729&h261&h263&h263p
callerid=Unknown
disallow=all
dtmfmode=inband
externip=vostroipesterno
fromuser=
numerovoip
host=voip.eutelia.it
insecure=very
language=it
nat=yes
qualify=yes
realm=voip.eutelia.it
secret=password
srvlookup=yes
type=friend
username=
numerovoip

Stringa di registrazione:
numerovoip:password:numerovoip@voip.eutelia.it:5060/numerovoip
Per euteliavoip sarà necessario andare nelle impostazioni generali (pbx - pbx settings - general settings) ed abilitare l'opzione:
Allow Anonymous Inbound SIP Calls? YES
Trixbox ha già una regola di uscita di default configurata per digitare 9 per uscire, ma dovrete legarvi il trunk appena creato con il menu a tendina che troverete in basso.
Configurate quindi le regole di uscita e di entrata a vostro piacimento.

NOTA: Con una configurazione di più di un trunk in uscita con lo stesso provider, in questo caso eutelia voip, molti router/modem spesso hanno un problema noto; la arp tables impazzisce e bisogna riavviarli spesso. Per risolvere il problema è sufficente modificare in "
Impostazioni in Uscita" la variabile defaultexpirey=300 con defaultexpirey=1800 (consiglio di utilizzarla sempre così per risolvere possibili problemi di timeout) e la variabile port=5060, che diventerà 5061 per il secondo fascio, 5062 per il terzo e così via, ma senza modificare la stringa di registrazione che dovrà sempre essere numerovoip:password:numerovoip@voip.eutelia.it:5060/numerovoip.

Abilitare il supporto tapi e astapi per asterisk 1.4.* (nuova trixbox 2.6):
Il nuovo trixbox ha finalmente integrato un asterisk più recente con molte più funzionalità.
Una di queste news di asterisk 1.4 è il supporto per i tapi driver sia di outlook che http, in poche parole potrete rendere il vostro asterisk analogo a qualsiasi skype, installando l'apposito plugin per firefox "nooje click" scaricabile ed installabile tramite questa guida:

http://blog.liberailvoip.it/2008/10/31/noojee-soluzione-click-to-call-per-asterisk/

di cui riporto qui i passi fondamentali adattati a trixbox (i file di conf e i context hanno nomi diversi);

scaricate il plugin da QUI ed installatelo sui client (dopo aver installato firefox)

Editate il file /etc/asterisk/manager_custom.conf aggiungedo in fondo:
[nojeeclick]
secret = nojeepasswd
permit=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

Modificate il file /etc/asterisk/manager.conf in modo che la sezione "general" corrisponda a:
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled=yes
Modificate (o create se non presente) il file /etc/asterisk/http.conf che deve contenere:
; Asterisk Builtin mini-HTTP server
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
uploads = /var/lib/asterisk/uploads/
Date ora i comandi da terminale:
mkdir /var/lib/asterisk/uploads
chown asterisk:asterisk /var/lib/asterisk/uploads
amportal restart
asterisk -rx "http show status"
L'ultimo comando dovrà restituirvi un report delle funzionalità di asterisk correttamente configurate tipo:
HTTP Server Status:
Prefix: /asterisk
Server Enabled and Bound to 0.0.0.0:8088

Enabled URI's:
/asterisk/httpstatus => Asterisk HTTP General Status
/asterisk/manager => HTML Manager Event Interface
/asterisk/rawman => Raw HTTP Manager Event Interface
/asterisk/static/... => Asterisk HTTP Static Delivery
/asterisk/mxml => XML Manager Event Interface
Il test di funzionamento lo potete fare aprendo il firefox di un client ed andare all'indirizzo:
http://ip_asterisk:8088/asterisk/manager?action=login&username=noojeclick&secret=nojeepasswd
A questo punto potete configurare i plugin noojee click nei client con la seguente configurazione:
server type: AJAM (Asterisk 1.4+)
host: ip del centralino
port: 8088
username: nojeeclick
password: nojeepasswd
extension: interno sip dell'utente (a quale numero verrà trasferita la chiamata al click)
context: from-internal
phone type: Aastra
dial prefix: 0
international prefix: 00
pattern:
XXXX XXX XXX
XXXX XXXX XXXXXX
XXXX XXXX
XX XXXX XXXX
XXXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XX XXXXXXXX
XXX-XXX-XXXX
(XX) XXXX XXXX
(XX) XXXX-XXXX
(XXXX) XXXX XXXX
(XXXX) XXXX-XXXX
(XXXX) XXX XXXX
(XXXX) XXX-XXXX
(XXX) XXX XXXX
(XXX) XXX-XXXX
+XX X XXXX XXXX
Riavviate firefox e quando l'utente clicckerà su l'icona rossa a fianco di un numero in una pagina web, verrà trasferita al suo telefono sip (softphone tipo qutecom o apparato fisico) che avvierà la chiamata al numero esterno solo dopo aver alzato la cornetta.

Per installare il supporto click-to-call di Outlook, vi consiglio di scaricare ed installare sui client windows il seguente driver TAPI:
http://outcall.sourceforge.net/
Ora se volete traducete le voci del vostro centralino in italiano, loggatevi in console da root e date i seguenti comandi:
wget http://mirror.tomato.it/ftp/pub/asterisk/suoni_ita/it_mm_sounds_20060510.tar.gz
mkdir /var/lib/asterisk/sounds/it
mkdir /var/lib/asterisk/sounds/dictate/it
mkdir /var/lib/asterisk/sounds/digits/it
mkdir /var/lib/asterisk/sounds/letters/it
mkdir /var/lib/asterisk/sounds/phonetic/it
cp -rfp sounds_it_2006_05_10/*.gsm /var/lib/asterisk/sounds/it
cp -rfp sounds_it_2006_05_10/dictate/* /var/lib/asterisk/sounds/dictate/it
cp -rfp sounds_it_2006_05_10/digits/* /var/lib/asterisk/sounds/digits/it
cp -rfp sounds_it_2006_05_10/letters/* /var/lib/asterisk/sounds/letters/it
cp -rfp sounds_it_2006_05_10/phonetic/* /var/lib/asterisk/sounds/phonetic/it
E le voci italiane sono state installate.

Creazione client (postazioni telefoniche):
Il mio consiglio è di utilizzare sempre SIP, come softphone Qutecom, che supporta anche msn per poter eguagliare in tutto soluzioni molto pesanti come skype.
Per crearli, basterà andare da interfaccia web-pbx-pbx settings-extension (interni)

Invio di fax tramite voip ( hylafax + iaxmodem + Winprint )

Installate da terminale i pacchetti necessari:
yum -y install ghostscript sharutils mgetty-voice hylafax iaxmodem
ln -s /usr/share/fonts/default/ghostscript/ /usr/share/ghostscript/fonts
mkdir /var/log/iaxmodem
touch /var/log/iaxmodem/iaxmodem-cfg.ttyIAX
echo "t2:23:respawn:/usr/sbin/faxgetty ttyIAX" >> /etc/inittab
echo "IAX:2345:respawn:/usr/sbin/iaxmodem iaxmodem-cfg.ttyIAX"
>> /etc/inittab
Io consiglio di scaricare le ultime versioni di iaxmodem e hylafax, ma anche così funzionerà.
Create dall'interfaccia web un interno IAX2 con le seguenti caratteristiche:
Extension Number: 1100
Display Name: IAXModem
Record Incoming: Never
Record Outgoing: Never
Secret: password
Modificate (o create se non presente) il file /etc/iaxmodem/iaxmodem-cfg.ttyIAX come segue
device /dev/ttyIAX
owner uucp:uucp
mode 660
port 4570
refresh 60
server 127.0.0.1
peername 1100
secret password
cidname Fax
cidnumber NumeroVoipDiUscita
codec slinear
Il codec potete sceglierlo tra alaw, ulaw e slinear; ma a me ha sempre funzionato solo con slinear.
Modificate (o create se non presente) il file
/etc/hylafax/etc/config (oppure /etc/hylafax/config se compilato) come segue:
LogFacility: daemon
CountryCode: 39
AreaCode: 51 ------------------> quello della vostra provincia
LongDistancePrefix: 0
InternationalPrefix: 00
DialStringRules: etc/dialrules.europe
ServerTracing: 1
Modificate (o create se non presente) il file
/etc/hylafax/etc/config.ttyIAX (oppure /etc/hylafax/config.ttyIAX se compilato) come segue:
CountryCode: 39
AreaCode: 51
FAXNumber: +39.051.vostronumerovoip
LongDistancePrefix: 0
InternationalPrefix: 00
DialStringRules: etc/dialrules.europe
ServerTracing: 1
SessionTracing: 11
RecvFileMode: 0664
LogFileMode: 0644
DeviceMode: 0644
RingsBeforeAnswer: 2
SpeakerVolume: off
GettyArgs: "-h %l dx_%s"
LocalIdentifier: "IAXmodem"
TagLineFont: etc/lutRS18.pcf
TagLineFormat: "From %%l|%c|Page %%P of %%T"
MaxRecvPages: 200
ModemType: Class1 # use this to supply a hint
ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display
ModemReadyCmds: ATH0
Class1AdaptRecvCmd: AT+FAR=1
Class1TMConnectDelay: 400 # counteract quick CONNECT response
Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving
#Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending
ModemResetCmds: AT+VCID=1 # enables CallID display
PagerTTYParity: none
CallIDPattern: "NMBR="
CallIDPattern: "NAME="
CallIDPattern: "ANID="
CallIDPattern: "NDID="
Class1JBIGSupport: no
Class1PPMWaitCmd: "" # \072 == : to avoid awk problem
Class1TCFWaitCmd: ""
Class1EOPWaitCmd: ""
Class1SwitchingCmd: "" # assumption: +FRS not supported

ModemReadyState: R

Modificate (o create se non presente) il file /etc/hylafax/etc/FaxDispatch
(oppure /etc/hylafax/FaxDispatch se compilato) come segue:
case "$DEVICE" in
ttyIAX) SENDTO=FaxMaster;;

esac
Ora potete dare il comando
faxsetup
Che configurerà hylafax controllando le dipendenze, quando vi verrà chiesto se configurare il modem digitate:
no
e date invio, in quanto il modem è già configurato con i precedenti passaggi.

Create gli utenti per le stampanti winprint:
faxadduser -a passw0rd -p passw0rd faxuser0
faxadduser -a passw1rd -p passw1rd faxuser1
faxadduser -a passw2rd -p passw2rd faxuser2
.... e cosi via.
Riavviate il centralino e i fax dovrebbero poter essere spediti come da un normale hylafax, per il quale vi rimando alla guida che scrissi qualche tempo fa.

Per Poter creare una paginetta sul vostro sito in php che tramite un apposito form crei una chiamata tra un interno ed il numero del cliente automaticamente a carico del centralino potete usare la seguente pagina in php:

<html>
<head>
<title> HelpDesk gratis!</title>
</head>
<body>
<?

$strHost = “127.0.0.1&#8243;;
$strUser = “admin”;
$strSecret = “amp111&#8243;;
$strContext = “from-internal”;
$strWaitTime = “30&#8243;;
$strPriority = “1&#8243;;
$strMaxRetry = “2&#8243;;
$strExten = $_POST['txtphonenumber'];
$callNumber = $strExten;
$strCallerId = “Web Call <$callNumber> “;
$length = strlen($strExten);
if ($length == 10 && is_numeric($strExten))
{
$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die(”Connection to host failed”);
fputs($oSocket, “Action: loginrn”);
fputs($oSocket, “Events: offrn”);
fputs($oSocket, “Username: $strUserrn”);
fputs($oSocket, “Secret: $strSecretrnrn”);
fputs($oSocket, “Action: originatern”);
fputs($oSocket, “Channel: Local/$callNumber@from-internalrn”);
fputs($oSocket, “WaitTime: $strWaitTimern”);
fputs($oSocket, “CallerId: $strCallerIdrn”);
fputs($oSocket, “Exten: 699rn”);
fputs($oSocket, “Context: $strContextrn”);
fputs($oSocket, “Priority: 1rnrn”);
fputs($oSocket, “Action: Logoffrnrn”);
sleep(3);
fclose($oSocket);
?>
<div>
<h3>Compila il form e verrai contattato gratuitamente dal nostro staff!</h3>
<p>
<table width=”300&#8243; border=”1&#8243; bordercolor=”#0f0f0f” cellpadding=”3&#8243; cellspacing=”0&#8243;>

<tr>
<td> <p> <font color=”#000000&#8243; size=”2&#8243; face=”verdana,georgia”> Stiamo processando
la tua chiamata, entro pochi secondi squillerà il telefono al numero
che hai inserito.<br>
Sarai messo in contatto con il nostro call center gratuitamente!</font> </p>
<p> <font color=”#000000&#8243; size=”2&#8243; face=”verdana,georgia”> HelpDesk Service
VoIP <br>
<a xhref=”javascript:history.go(-1)” mce_href=”javascript:history.go(-1)” > riprova.</a> </font> </p> </td>
</tr>
</table>
<p>
<h3> <a xhref=”javascript:history.go(-1)” mce_href=”javascript:history.go(-1)” > Indietro</a> </h3>
</p>

<?
}
else
{
?>
<p>
<table width=”300&#8243; border=”1&#8243; bordercolor=”#0f0f0f” cellpadding=”3&#8243; cellspacing=”0&#8243;>
<tr>
<td> <font size=”2&#8243; face=”verdana,arial,georgia”
color=”#000000&#8243;> Inserisci il tuo numero di telefono, comprensivo di prefisso (es.
0577XXXXXX) sul quale vuoi ricevere la chiamata dal nostro sistema automatico.</font>
<form action=”<? echo $_SERVER['PHP_SELF'] ?> ” method=”post”>

<input type=”text” size=”20&#8243; maxlength=”10&#8243; name=”txtphonenumber”> <br>
<input type=”submit”
value=”Telefonami”>
</form>
</td> </tr>
</table>
</p>
<?
}
?>
</div>
</body>
</html>
Consiglio:
Tramite il menu in alto "strumenti" potrete accedere a "module admin" sulla sinistra, che vi permetterà di installare un risponidore automatico IVR, suonerie di attesa, sistemi di backup, gruppi di chiamata, sistemi di code, sitemi per la registrazione di nuovi messaggi, ecc...

Appena avrete finito la configurazione ricordatevi di applicare le modifiche tramite il pulsante rosso in alto a sinistra che comparirà dopo la prima azione, questo applicherà istantaneamente le modifiche e riavvierà asterisk ricollegandolo.

Buone telefonate a tutti!
Swipon

changelog dell'howto:
-----------------------------------------------------------------------------------------
- aggiunti codec per chiamate video nel trunk
- risolto e spiegato problema con trunk multipli
- aggiornamento per nuove funzioni asterisk 1.4.* e 1.6.*
- aggiunto how to noojeclick x click to call
- aggiornato dopo il rilascio del meraviglioso qutecom
- inserita integrazione hylafax e iaxmodem
- inserito personalizzazione con voci italiane
- aggiunta pagina php per farsi chiamare gratis dal web
- aggiunta sezione firewall

Come creare un firewall debian completo

Ultimamente ho studiato molto le sicurezze, il risultato di quest'analisi è stata la seguente guida adatta anche a newbie.
Mi sono posto il problema di creare un firewall/proxy per 5 zone (wan - lan - wifi - vpn - dmz) che possa anche gestire gli accessi wireless tramite mac address ma solo per i servizi scelti, in modo da ottenere una diversificazione di uso e protezione della stessa wireless per clienti ed interni.

Installate una debian base senza grafico e senza compilatori.

Preparazione del sistema :

apt-get -y install ssh squid3 clamav denyhosts dansguardian aide openvpn bind9 snort snort-rules oinkmaster

Configurate le interfacce di rete come:
wan - eth0 - 192.168.1.4 (probabilmente il 254 è il router)
lan - eth1 - 192.168.2.254
wifi - eth2 - 192.168.3.254
dmz - eth3 - 192.168.4.254

Ora la prima parte più importante... il firewall.
Modificando e prendendo spunto da altri firewall usati in passato ho creato questo script che direi abbastanza completo e professionale che inseriremo in /etc/init.d/firewall.

create quidi il file /etc/init.d/firewall ed inseriteci dentro:

#! /bin/sh

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

case "$1" in start)

echo "Setting up firewall rules..."
#-------------------------------------------------------------------------------
# Script variables
#
# Reti
#
# wan - internet
# lan - interna
# dmz - wifi
# dmzsec - webserver
# firewallMAC.conf - elenco macaddress permessi
#

IF_WAN="eth0" #integrata
IF_LAN="eth1" #primo slot pci
IF_DMZ="eth2" #secondo slot pci
IF_DMZSEC="eth3" #secondo slot pci
IF_VPN="tap0" #secondo slot pci

IP_WAN="192.168.1.4"
IP_LAN="192.168.2.254"
IP_DMZ="192.168.3.254"
IP_DMZSEC="192.168.4.254"
IP_VPN="192.168.25.254"

MAC="`cat /etc/firewallMAC.conf`"

#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# Adjust /proc
#-------------------------------------------------------------------------------
echo -ne "\t\tAdjusting /proc"

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/send_redirects
#echo 0 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward

echo -e "\t\t\t\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# Flush existing settings
#-------------------------------------------------------------------------------
echo -ne "\t\tFlushing existing settings"

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -t mangle -F

echo -e "\t\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# Table policies
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up tables policies"

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

echo -e "\t\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# Loopback traffic
#-------------------------------------------------------------------------------
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# Icmp settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up icmp rules"

# Connessioni per fw
iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Connessioni da fw
iptables -A OUTPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A OUTPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Connessioni attraverso fw
iptables -A FORWARD -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $IF_LAN -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A FORWARD -i $IF_LAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -i $IF_WAN -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_WAN -p icmp --icmp-type redirect -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_WAN -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -i $IF_DMZ -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -p icmp --icmp-type redirect -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A FORWARD -i $IF_DMZ -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -i $IF_DMZSEC -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZSEC -p icmp --icmp-type redirect -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZSEC -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_DMZSEC -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A FORWARD -i $IF_DMZSEC -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

iptables -A FORWARD -i $IF_VPN -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_VPN -p icmp --icmp-type redirect -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_VPN -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i $IF_VPN -p icmp --icmp-type echo-request -m length --length 128:65535 -j DROP
iptables -A FORWARD -i $IF_VPN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# la seguente regola e` necessaria SOLO se si usa un modem al posto di un router.
# iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

echo -e "\t\t\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# Filter settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting LAN up FILTER rules"

# Connessioni da LAN a fw
iptables -A INPUT -i $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $IF_WAN -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A INPUT -i $IF_LAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A INPUT -i $IF_LAN -p tcp --dport 25 -j ACCEPT #smtp
iptables -A INPUT -i $IF_LAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A INPUT -i $IF_LAN -p udp --dport 53 -j ACCEPT #dns
iptables -A INPUT -i $IF_LAN -p tcp --dport 67 -j ACCEPT
iptables -A INPUT -i $IF_LAN -p tcp --dport 68 -j ACCEPT
iptables -A INPUT -i $IF_LAN -p udp --dport 67 -j ACCEPT
iptables -A INPUT -i $IF_LAN -p udp --dport 68 -j ACCEPT
iptables -A INPUT -i $IF_LAN -p tcp --dport 143 -j ACCEPT #imap
iptables -A INPUT -i $IF_LAN -p tcp --dport 110 -j ACCEPT #pop3
iptables -A INPUT -i $IF_LAN -p tcp --dport 80 -j ACCEPT #http
iptables -A INPUT -i $IF_LAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A INPUT -i $IF_LAN -p tcp --dport 3128 -j ACCEPT #proxy
iptables -A INPUT -i $IF_LAN -p tcp --dport 8088 -j ACCEPT #http asterisk
iptables -A INPUT -i $IF_LAN -p tcp --dport 443 -j ACCEPT #https
iptables -A INPUT -i $IF_LAN -p udp --dport 5060 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 5061 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 3478 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 8000 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 8001 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 8002 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 8003 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 5004 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p udp --dport 60028 -j ACCEPT #voip
iptables -A INPUT -i $IF_LAN -p tcp --dport 5038 -j ACCEPT #asterisk
iptables -A INPUT -i $IF_LAN -p udp --dport 5038 -j ACCEPT #asterisk

# Connessioni da fw a LAN
iptables -A OUTPUT -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $IF_LAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A OUTPUT -o $IF_LAN -p tcp --dport 80 -j ACCEPT #http
iptables -A OUTPUT -o $IF_LAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A OUTPUT -o $IF_LAN -p tcp --dport 443 -j ACCEPT #https
iptables -A OUTPUT -o $IF_LAN -p tcp --dport 3128 -j ACCEPT #proxy

# Connessioni da WAN a fw
iptables -A INPUT -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $IF_WAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A INPUT -i $IF_WAN -p tcp --dport 1194 -j ACCEPT #openvpn
iptables -A INPUT -i $IF_WAN -p udp --dport 1194 -j ACCEPT #openvpn
#iptables -A INPUT -i $IF_WAN -p udp --dport 5060 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 5061 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 3478 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 8000 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 8001 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 8002 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 8003 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 5004 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p udp --dport 60028 -j ACCEPT #voip
#iptables -A INPUT -i $IF_WAN -p tcp --dport 5038 -j ACCEPT #asterisk
#iptables -A INPUT -i $IF_WAN -p udp --dport 5038 -j ACCEPT #asterisk

# Connessioni da fw a WAN
iptables -A OUTPUT -o $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $IF_WAN -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 25 -j ACCEPT #smtp
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A OUTPUT -o $IF_WAN -p udp --dport 53 -j ACCEPT #dns
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 80 -j ACCEPT #http
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 3128 -j ACCEPT #tomcat
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 8088 -j ACCEPT #http asterisk
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 443 -j ACCEPT #https
iptables -A OUTPUT -o $IF_WAN -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 873 -j ACCEPT
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 1194 -j ACCEPT #openvpn
iptables -A OUTPUT -o $IF_WAN -p udp --dport 1194 -j ACCEPT #openvpn
iptables -A OUTPUT -o $IF_WAN -p tcp --dport 5038 -j ACCEPT #asterisk
iptables -A OUTPUT -o $IF_WAN -p udp --dport 5038 -j ACCEPT #asterisk
iptables -A OUTPUT -o $IF_WAN -p udp --dport 5060 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 5061 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 3478 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 8000 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 8001 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 8002 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 8003 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 5004 -j ACCEPT #voip
iptables -A OUTPUT -o $IF_WAN -p udp --dport 60028 -j ACCEPT #voip

# Connessioni da LAN a WAN
iptables -A FORWARD -i $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_LAN -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A FORWARD -i $IF_LAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A FORWARD -i $IF_LAN -p tcp --dport 25 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_LAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_LAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_LAN -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -p udp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -p tcp --dport 8088 -j ACCEPT #http asterisk
iptables -A FORWARD -i $IF_LAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -p tcp --dport 110 -j ACCEPT #pop3
iptables -A FORWARD -i $IF_LAN -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -p tcp --dport 873 -j ACCEPT #rsync
iptables -A FORWARD -i $IF_LAN -p tcp --dport 143 -j ACCEPT #imap
iptables -A FORWARD -i $IF_LAN -p tcp --dport 443 -j ACCEPT #https
iptables -A FORWARD -i $IF_LAN -p udp --dport 443 -j ACCEPT #https
iptables -A FORWARD -i $IF_LAN -p tcp --dport 993 -j ACCEPT #pop3-ssl
iptables -A FORWARD -i $IF_LAN -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -p tcp --dport 5500 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_LAN -p tcp --dport 5900 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_LAN -p tcp -m multiport --dports 9000,9001 -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_LAN -p tcp -m multiport --dports 9200,9201 -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_LAN -p tcp --dport 5222 -j ACCEPT #jabber
iptables -A FORWARD -i $IF_LAN -p tcp --dport 1863 -j ACCEPT #msn myspace
iptables -A FORWARD -i $IF_LAN -p tcp --dport 23399 -j ACCEPT #skype
iptables -A FORWARD -i $IF_LAN -p tcp --dport 1533 -j ACCEPT #sametime
iptables -A FORWARD -i $IF_LAN -p tcp --dport 6667 -j ACCEPT #irc
iptables -A FORWARD -i $IF_LAN -p tcp --dport 5190 -j ACCEPT #icq aim
iptables -A FORWARD -i $IF_LAN -p tcp --dport 1194 -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_LAN -p udp --dport 1194 -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_LAN -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -p udp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -p udp --dport 5060 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 5061 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 3478 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 8000 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 8001 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 8002 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 8003 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 5004 -j ACCEPT #voip
iptables -A FORWARD -i $IF_LAN -p udp --dport 60028 -j ACCEPT #voip

# Connessioni da WAN a LAN
iptables -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp --dport 80 -j ACCEPT # web server backup interno
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp --dport 8080 -j ACCEPT # web server backup interno
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp --dport 443 -j ACCEPT # web server backup interno
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp --dport 5500 -j ACCEPT # vnc interno
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp --dport 5900 -j ACCEPT # vnc interno
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp -m multiport --dports 9000,9001 -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p tcp -m multiport --dports 9200,9201 -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 5060 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 5061 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 3478 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 8000 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 8001 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 8002 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 8003 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 5004 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.2.0/24 -p udp --dport 60028 -j ACCEPT # voip

# Connessioni da WAN a DMZ
iptables -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p tcp --dport 80 -j ACCEPT # web server backup2
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p tcp --dport 8080 -j ACCEPT # web server backup2
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p tcp --dport 443 -j ACCEPT # web server backup2
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p tcp --dport 5500 -j ACCEPT # vnc
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p tcp --dport 5900 -j ACCEPT # vnc
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 5060 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 5061 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 3478 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 8000 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 8001 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 8002 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 8003 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 5004 -j ACCEPT # voip
iptables -A FORWARD -i $IF_WAN --source ! 192.168.3.0/24 -p udp --dport 60028 -j ACCEPT # voip

# Connessioni da LAN a DMZ
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 22 -j ACCEPT #ssh
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 25 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 443 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 5500 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 5900 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -o $IF_DMZ -p udp --dport 3389 -j ACCEPT #terminal server

# Connessioni da fw a DMZ
iptables -A OUTPUT -o $IF_DMZ -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -m multiport -p tcp --dports 20,21 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -p tcp --dport 3128 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZ -p tcp --dport 443 -j ACCEPT

echo -e "\t\t\tdone"
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# MAC filtering
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up DMZ with MAC filter rules"

for MACSOURCE in $MAC; do

echo
echo -ne "\t\t\tAppling rules for: "

# Connessioni da DMZ a WAN
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 22 -m mac --mac-source $MACSOURCE -j ACCEPT #ssh
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 25 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 443 -j ACCEPT #https
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 443 -j ACCEPT #https
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 110 -j ACCEPT #pop3
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 143 -j ACCEPT #imap
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 993 -j ACCEPT #pop-ssl
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 1194 -m mac --mac-source $MACSOURCE -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 1194 -m mac --mac-source $MACSOURCE -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 23399 -j ACCEPT #skype
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 5222 -j ACCEPT #msn
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 6667 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 1863 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 5190 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 5500 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 5900 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp -m multiport --dports 9000,9001 -m mac --mac-source $MACSOURCE -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p tcp -m multiport --dports 9200,9201 -m mac --mac-source $MACSOURCE -j ACCEPT #gestionale mexal
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 5060 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 5061 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 3478 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 8000 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 8001 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 8002 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 8003 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 5004 -m mac --mac-source $MACSOURCE -j ACCEPT #voip
iptables -A FORWARD -i $IF_DMZ -o $IF_WAN -p udp --dport 60028 -m mac --mac-source $MACSOURCE -j ACCEPT #voip


# Connessioni da DMZ a LAN
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp -m multiport --dports 20,21 -m mac --mac-source $MACSOURCE -j ACCEPT #ftp-data
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 22 -m mac --mac-source $MACSOURCE -j ACCEPT #ssh
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 25 -m mac --mac-source $MACSOURCE -j ACCEPT #smtp
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 53 -m mac --mac-source $MACSOURCE -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p udp --dport 53 -m mac --mac-source $MACSOURCE -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 80 -m mac --mac-source $MACSOURCE -j ACCEPT #htp
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 8080 -m mac --mac-source $MACSOURCE -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 443 -m mac --mac-source $MACSOURCE -j ACCEPT #https
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 123 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 110 -m mac --mac-source $MACSOURCE -j ACCEPT #pop3
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 993 -m mac --mac-source $MACSOURCE -j ACCEPT #pop3-ssl
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 1194 -m mac --mac-source $MACSOURCE -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p udp --dport 1194 -m mac --mac-source $MACSOURCE -j ACCEPT #openvpn
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 23399 -m mac --mac-source $MACSOURCE -j ACCEPT #skype
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 5222 -m mac --mac-source $MACSOURCE -j ACCEPT #msn
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 6667 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 1863 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 5190 -m mac --mac-source $MACSOURCE -j ACCEPT #chat
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 5500 -m mac --mac-source $MACSOURCE -j ACCEPT #vnc
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 5900 -m mac --mac-source $MACSOURCE -j ACCEPT #vnc
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p tcp --dport 3389 -m mac --mac-source $MACSOURCE -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_DMZ -o $IF_LAN -p udp --dport 3389 -m mac --mac-source $MACSOURCE -j ACCEPT #terminal server

# Connessioni da DMZ a fw
iptables -A INPUT -i $IF_DMZ -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p tcp --dport 22 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p tcp --dport 80 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p tcp --dport 3128 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p tcp --dport 443 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $IF_DMZ -p udp --dport 53 -j ACCEPT

echo -e "\t$MACSOURCE"

done

echo -e "\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# VERY SECURE ZONE settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up Very Secure Zones rules"

# Connessioni da WAN a VPN
iptables -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.25.0/24 -p tcp --dport 80 -j ACCEPT # web server backup2
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.25.0/24 -p tcp --dport 8080 -j ACCEPT # web server backup2
# iptables -A FORWARD -i $IF_WAN --source ! 192.168.25.0/24 -p tcp --dport 443 -j ACCEPT # web server backup2
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.25.0/24 -p tcp --dport 5500 -j ACCEPT # vnc
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.25.0/24 -p tcp --dport 5900 -j ACCEPT # vnc

# Connessioni da LAN a VPN
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 25 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 110 -j ACCEPT #pop3
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 143 -j ACCEPT #imap
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 443 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 5500 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 5900 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -o $IF_VPN -p udp --dport 3389 -j ACCEPT #terminal server

# Connessioni da fw a VPN
iptables -A OUTPUT -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -m multiport -p tcp --dports 20,21 -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -p tcp --dport 3128 -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -o $IF_VPN -p tcp --dport 443 -j ACCEPT

# Connessioni da WAN a DMZSEC
iptables -A FORWARD -i $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp -m multiport --dports 20,21 -j ACCEPT # web server
iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 80 -j ACCEPT # web server
iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 443 -j ACCEPT # web server
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 8080 -j ACCEPT # web server
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 8081 -j ACCEPT # web server
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 25 -j ACCEPT # web server
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 110 -j ACCEPT # web server
#iptables -A FORWARD -i $IF_WAN --source ! 192.168.4.0/24 -p tcp --dport 143 -j ACCEPT # web server

# Connessioni da LAN a DMZSEC
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp -m multiport --dports 20,21 -j ACCEPT #ftp
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 22 -j ACCEPT #ssh
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 25 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 110 -j ACCEPT #pop3
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 143 -j ACCEPT #smtp
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 443 -j ACCEPT #http
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 5500 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 5900 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_LAN -o $IF_DMZSEC -p udp --dport 3389 -j ACCEPT #terminal server

# Connessioni da fw a DMZSEC
iptables -A OUTPUT -o $IF_DMZSEC -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $IF_DMZSEC -m multiport -p tcp --dports 20,21 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZSEC -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZSEC -p tcp --dport 3128 -j ACCEPT
iptables -A OUTPUT -o $IF_DMZSEC -p tcp --dport 443 -j ACCEPT

# Connessioni da VPN a WAN
iptables -A FORWARD -i $IF_VPN -o $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_VPN -o $IF_WAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_VPN -o $IF_WAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_VPN -o $IF_WAN -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_VPN -o $IF_WAN -p udp --dport 80 -j ACCEPT #http

# Connessioni da VPN a LAN
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp -m multiport --dports 20,21 -m mac --mac-source $MACSOURCE -j ACCEPT #ftp-data
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 22 -j ACCEPT #ssh
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 80 -j ACCEPT #htp
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 8080 -j ACCEPT #tomcat
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 443 -j ACCEPT #https
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 110 -j ACCEPT #pop3
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 993 -j ACCEPT #pop3-ssl
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 137 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 137 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 138 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 138 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 139 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 139 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 445 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 445 -j ACCEPT #samba
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 5500 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 5900 -j ACCEPT #vnc
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p tcp --dport 3389 -j ACCEPT #terminal server
iptables -A FORWARD -i $IF_VPN -o $IF_LAN -p udp --dport 3389 -j ACCEPT #terminal server

# Connessioni da VPN a fw
iptables -A INPUT -i $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $IF_VPN -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $IF_VPN -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i $IF_VPN -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i $IF_VPN -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $IF_VPN -p udp --dport 53 -j ACCEPT

# Connessioni da DMZSEC a WAN
iptables -A FORWARD -i $IF_DMZSEC -o $IF_WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_DMZSEC -o $IF_WAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZSEC -o $IF_WAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZSEC -o $IF_WAN -p tcp --dport 80 -j ACCEPT #http
iptables -A FORWARD -i $IF_DMZSEC -o $IF_WAN -p tcp --dport 443 -j ACCEPT #http

# Connessioni da DMZSEC a LAN
iptables -A FORWARD -i $IF_DMZSEC -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_DMZSEC -o $IF_LAN -p tcp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZSEC -o $IF_LAN -p udp --dport 53 -j ACCEPT #dns
iptables -A FORWARD -i $IF_DMZSEC -o $IF_LAN -p tcp --dport 8080 -j ACCEPT #tomcat

# Connessioni da DMZSEC a fw
iptables -A INPUT -i $IF_DMZSEC -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $IF_DMZSEC -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $IF_DMZSEC -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i $IF_DMZSEC -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i $IF_DMZSEC -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $IF_DMZSEC -p udp --dport 53 -j ACCEPT

echo -e "\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# NAT settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up NAT rules"

# SNAT rules
iptables -t nat -A POSTROUTING -o $IF_WAN -j SNAT --to-source $IP_WAN

# PROXY Settings for Squid with DansGuardian (lan and wifi)
iptables -t nat -A PREROUTING -i $IF_LAN -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i $IF_DMZ -p tcp --dport 80 -j REDIRECT --to-ports 3128

# DNAT rules
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 80 -j DNAT --to-destination 192.168.4.1 #public webserver
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 443 -j DNAT --to-destination 192.168.4.1 #public webserver
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.1 #public tomcat
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 5500 -j DNAT --to-destination 192.168.2.1 #vnc server
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 5900 -j DNAT --to-destination 192.168.2.1 #vnc server
# iptables -t nat -A PREROUTING -i $IF_WAN -p tcp --dport 3389 -j DNAT --to-destination 192.168.2.1 #terminal server
# iptables -t nat -A PREROUTING -i $IF_WAN -p udp --dport 3389 -j DNAT --to-destination 192.168.2.1 #terminal server

echo -e "\t\t\t\tdone"
#-------------------------------------------------------------------------------


#-------------------------------------------------------------------------------
# TOS settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up TOS rules"

# tcp
iptables -t mangle -A PREROUTING -p tcp -m tcp -m multiport --dports 21,22,80 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -p tcp -m tcp -m multiport --dports 20,25,143 -j TOS --set-tos 0x08
iptables -t mangle -A PREROUTING -p tcp -m tcp -m multiport --dports 53,110 -j TOS --set-tos 0x04

# udp
iptables -t mangle -A PREROUTING -p udp -m udp -m multiport --dports 53,110 -j TOS --set-tos 0x04
iptables -t mangle -A PREROUTING -p udp -m udp -m multiport --dports 143 -j TOS --set-tos 0x08

echo -e "\t\t\t\tdone"
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# LOGGING settings
#-------------------------------------------------------------------------------
echo -ne "\t\tSetting up Logging rules"

# default only unicast
#
iptables -A INPUT -m pkttype --pkt-type unicast -j LOG --log-prefix "FIREWALL: " --log-level 7
#
# any example to log all:
#
#iptables -A FORWARD -j LOG --log-prefix="FORWARD: "
#iptables -A INPUT -j LOG --log-prefix="INPUT:"
#iptables -A OUTPUT -j LOG --log-prefix="OUTPUT:"

echo -e "\t\t\tdone"
#-------------------------------------------------------------------------------

echo "The firewall is up."
;;

stop)
echo "pulizia regole..."
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
echo "repristino regole di default..."
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
;;
restart|reload)
$0 stop
$0 start
;;
*)
echo "Usage /etc/init.d/firewall start|stop|restart|reload"
;;
esac
exit 0
Ora come alcuni hanno notato bisogna inserire almeno un mac address nel file /etc/firewallMAC.conf, se non ne conoscete ancora nessuno inserite quello del firewall ricavabile dal comando ifconfig.

Dobbiamo permettere che parta all'avvio:
update-rc.d -f firewall defaults
Ora potete configurare squid per la navigazione tramite proxy, aprite /etc/squid3/squid.conf, cancellate tutto ed inserite:
http_port 127.0.0.1:3128 transparent
http_port 192.168.2.254:3128 transparent
http_port 192.168.3.254:3128 transparent

icp_port 0
#icp_port 3130

#havp
cache_peer localhost parent 8080 0 no-query no-digest no-netdb-exchange default proxy-only

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

#cache_mem 256 MB
# cache_swap_low 90
# cache_swap_high 95
# maximum_object_size 4096 KB
# maximum_object_size_in_memory 8 KB

cache_dir ufs /var/spool/squid3 100 16 256
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %a %Ss/%03Hs %h] [%a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh

access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
# log_ip_on_direct on
mime_table /usr/share/squid3/mime.conf
pid_filename /var/run/squid3.pid
debug_options ALL,1
hosts_file /etc/hosts
ftp_user anonymous@workgroup

#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#

http_access allow localhost
acl workgroup src 192.168.100.0/24 192.168.101.0/24
http_access allow workgroup
http_access deny all

http_reply_access allow all
icp_access allow all
cache_mgr swipon@email.it
cache_effective_group proxy
visible_hostname proxy.workgroup
#append_domain .workgroup
ie_refresh on
# acl buggy_server url_regex ^http://....
# broken_posts allow buggy_server
coredump_dir /var/spool/squid
vary_ignore_expire on
# relaxed_header_parser on
Perfetto, ora configuriamo dansguardian per il controllo delle pagine.
scaricate una lista blacklist prepronta come questa:
http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist
e la copiate in /etc/dansguardian:
cd /etc/dansguardian
tar xvfz bigblacklist.tar.gz

Ora lo abilitiamo, commentate la terza righa in alto del file /etc/dansguardian/dansguardian.conf

Passiamo alla configurazione del DNS server come autoritario solo all'interno della lan e della wifi, in modo da impostare in ip fisso e rendere un po' più sicura la dmz e la vpn.
Aprite il file /etc/resolv.conf, cancellate tutto ed inseriteci:
search workgroup
nameserver 127.0.0.1
Ora aptrite il file /etc/bind/named.conf.options, cancellate tutto ed inserite:
options {
directory "/var/cache/bind";
// query-source address * port 53;
forward first;
forwarders {
151.99.0.100;
151.99.125.1;
// 62.211.69.150;
// 212.48.4.15;
};

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

zone "workgroup" in
{
type master;
file "/etc/bind/db.workgroup";
};

zone "wifi" in
{
type master;
file "/etc/bind/db.wifi";
};
Ora create il file
/etc/bind/db.workgroup per la lan:
;Dati autorevoli per zona locale
;
$TTL 10800 ; TTL 3 Ore

@ IN SOA proxy.workgroup. hostmaster.proxy.workgroup. (
2008120101 ; 2008 dicembre 01 seriale01
10800 ; refresh 3 ore
3600 ; rentry rate 1 ora
604800 ; expiry time 7 giorni
86400 ) ; ttl 24ore
IN NS proxy.workgroup.
IN A 192.168.2.254

proxy IN A 192.168.2.254
firewall IN CNAME proxy.workgroup.

server-srv IN A 192.168.2.250
server IN CNAME server-srv.workgroup.

ws01 IN A 192.168.2.101
ws02 IN A 192.168.2.102
ws03 IN A 192.168.2.103
ws04 IN A 192.168.2.104
ws05 IN A 192.168.2.105
Fate lo stesso per il file
/etc/bind/db.wifi per la wireless:

;Dati autorevoli per zona locale
;
$TTL 10800 ; TTL 3 Ore

@ IN SOA proxy.wifi. hostmaster.proxy.wifi. (
2008120101 ; 2008 dicembre 01 seriale01
10800 ; refresh 3 ore
3600 ; rentry rate 1 ora
604800 ; expiry time 7 giorni
86400 ) ; ttl 24ore
IN NS proxy.wifi.
IN A 192.168.3.254

proxy IN A 192.168.3.254
firewall IN CNAME proxy.wifi.
server-srv IN A 192.168.3.1
server IN CNAME server-srv.wifi.
ws01 IN A 192.168.3.101
ws02 IN A 192.168.3.102
ws03 IN A 192.168.3.103
ws04 IN A 192.168.3.104
ws05 IN A 192.168.3.105

Riavviate e benvenuti nel vostro nuovo firewall!
Potrete ora divertirvi a provare a configurare la vpn e i vari filtri di dansguardian.

Swipon

Joomla Virtuemart joomfish - ecommerce multi lingua

Attualmente stò ancora sviluppando e sistemando la versione 1.0.15b tramite anche al meraviglioso supporto presente nei siti vmitalia e joomlaitalia (in quanto mi sembra molto più snella, stabile e pratica, anche se meno carina graficamente, della 1.1) .
Ho effettuato una sessione personale di bug fix ed aggiornamento di virtuemart-1.0.15b, joomla-1.0.15b e joo!fish1.7 Scaricabili liberamente dal seguente link:

ftp://195.250.34.113/joomla-virtuemart/

Ho ritenuto di rinominare i pacchetti modificati da versione "b" a "c" in modo da distinguerli meglio.
Ecco le modifiche (visualizzabili anche dai changelog):

Joomla:

28-Oct-2008 Luca Piccinini
+ Add .htaccess with all setup for php enviroments (di default è tutto ok nei parametri installer)
+ Add jceutilities for lightbox
+ Add some template
# Add some bug fix for virtuemart (xls export, joo!fish,...)

Virtuemart:

* Integrato pacchetto files di lingua completo
* modifica per importazione\esportazione da excel\csv
(mantenendo il gettone di sicurezza)
(hack - http://www.designjoomla.com/index.php?option=com_content&task=view&id=22&Itemid=57)
(Le funzioni virtuemart vengono create automaticamente dall'installer)
* modifica per listino prezzi
(hack - http://www.vmitalia.net/index.php?view=article&catid=40%3ATips+&id=82%3Avisualizzare-il-listino-prezzi-completo&option=com_content&Itemid=65)
* modifica per funzionamento corretto con joo!fish
(hack tania - http://forum.joomla.it/index.php?topic=18736.0)
* Creata opzione {allimages} rimpiazza {more_images} con lightbox
(è comunque possibile utilizzare {more_images} per chi preferisse)
(hack marco ranieri - http://forum.vmitalia.net/index.php/topic,1689.0.html)
(da usare con pacchetto jceutilities presente dalla Joomla!1.0.15c)
* inserimento {product_image_2} per ridimensionare immagine in flypage
(hack by Luca Piccinini in administrator/html/shop.product_details.php)
(bisogna impostare width e height nella riga 313 e sostituire in)
(flypage {product_image} con {product_image_2})

Joo!Fish:

Aggiunta Fix virtuemart.product_attributes.xml
Modificato in modo tale da non dover necessariamente installare il componente jfcei in quanto appena installato è pronto per joomla > 1.0.x, virtuemart > 1.0.x, mojoblog > 0.x

A breve modificherò anche il modulo per la sitemap del sito.

Sono pacchetti sviluppati per aiutare i miei clienti e/o amici nell'installazione e configurazione, li rilascio liberamente in quanto esiste già la versione 1.5 di joomla e 1.1 di virtuemart che comprendono molti feature della mia versione, ma aiuterò volentieri chi li volesse provare.

Ciao a tutti
Swipon

La mia chiave Pubblica

Allego qui la mia chiave pubblica, in modo che chiunque volesse supporto via ssh, possa farmi connettere senza bisogno di comunicarmi la password di root.

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuWnYjnX3fPaL5ecD1XanCBvEIuLewUWLYC6iUzOzEiWZvwQHCUdfDAR/KwQLLkW6yFp+eXG1fruBwyhpzI8CA8B8wiK0orF3JNC5pdrARMiixaJDsBFO+fp/3+Zb/dx6YSV39X9ov6jRcEvfNV9hk7dtHwYFt4BA0gB6J2pFa9MJ+HrBszJDBtYVg6vqBpHIPb7luprUucz4QH3w+51NspstFIezFpBe7zZZaPV0OFMvSl8m3qgXkOz5kEEdbc61kQof2J2+hGgsIwyolUs1KLbYsZoPlAYUdlKRNnW9Sy1+364AsCqg5FEd69UvbUFe+b+gZonLa8UXV2LXybjAaw== piccinini SSH
Per chi volesse supporto basterà installare ssh:
sudo apt-get install ssh
ed editare (o creare se non presente) il suo /root/.ssh/authorized_keys inserendo la mia chiave sopracitata.

A questo punto potrete mandarmi una mail direttamente a swipon83@gmail.it comunicandomi il vostro indirizzo ip (ricavabile da qui: http://www.ip-adress.com/) e il problema.

Ciao a tutti i lettori
Swipon

Creare un fax server con Hylafax

Spesso viene richiesto a livello aziendale un fax server, cioè un server con modem 56k che riceva i fax, li inoltri ad una casella postale oppure li condivida in pdf o tiff tramite samba, magari che si possano inviare tramite menu stampa.
Il mio consiglio è hylafax in quanto molto semplice ed immediato.

Premessa:
Qui installo postifix come mail sender e samba come file share, voi potete scegliere ciò che preferite (es: sendmail + nfs).

Preparazione
sudo apt-get -y install hylafax-server hylafax-client hylafax-doc libtiff-tools minicom postfix samba smbclient smbfs
A questo punto possiamo configurare il fax mediante il comando
sudo faxsetup

Questo tool effettuerà un controllo del sistema (librerie ghostscrpt in particolare) ed una configurazione del modem passo passo, basterà rispondere alle domande.

Vediamo insieme una configurazione:

HylaFAX configuration parameters are:

[1] Init script starts faxq: yes
[2] Init script starts hfaxd yes
[3] Start old protocol: no
[4] Start paging protocol: no
Are these ok [yes]? yes

Restarting HylaFAX server processes.

You have a HylaFAX scheduler process running. faxq will be
restarted shortly, as soon as some other work has been completed.
Can I terminate this faxq process (17828) [yes]? yes
Should I restart the HylaFAX server processes [yes]? yes

You do not appear to have any modems configured for use. Modems are
configured for use with HylaFAX with the faxaddmodem(8) command.
Do you want to run faxaddmodem to configure a modem [yes]? yes

You do not appear to have any modems configured for use. Modems are
configured for use with HylaFAX with the faxaddmodem(8) command.
Do you want to run faxaddmodem to configure a modem [yes]?
Serial port that modem is connected to [ttyS0]?ttyS0
Qui potete inserire la porta identificativa della seriale com, ttyS0 per com1 e ttyS1 per com2.
NB: il modem da adesso in avanti deve essere acceso e collegato.

No existing configuration, let's do this from scratch.

Country code [1]? 39
Area code [415]? 0522
Phone number of fax modem [+1.999.555.1212]? +39.0522.888888
Local identification string (for TSI/CIG) ["NothingSetup"]? FaxServer
Long distance dialing prefix [1]? 0
International dialing prefix [011]? 00
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]? etc/dialrules
Tracing during normal server operation [1]? 1
Tracing during send and receive sessions [11]?11
Protection mode for received facsimile [0600]? 0777
Protection mode for session logs [0600]? 0777
Protection mode for rfcomm0 [0600]? 0666
Rings to wait before answering [1]? 3
Modem speaker volume [off]? quiet
Command line arguments to getty program ["-h %l dx_%s"]?
Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]?
Pathname of Caller-ID access control list file (relative to /var/spool/hylafax) [""]?
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
Tag line format string ["From %%l|%c|Page %%P of %%T"]?
Time before purging a stale UUCP lock file (secs) [30]?
Hold UUCP lockfile during inbound data calls [Yes]?
Hold UUCP lockfile during inbound voice calls [Yes]?
Percent good lines to accept during copy quality checking [95]?
Max consecutive bad lines to accept during copy quality checking [5]?
Max number of pages to accept in a received facsimile [25]?
Syslog facility name for ServerTracing messages [daemon]?
Set UID to 0 to manipulate CLOCAL [""]?
Use available priority job scheduling mechanism [""]?

The non-default server configuration parameters are:

CountryCode: 39
AreaCode: 0522
FAXNumber: +39.0522.888888
LongDistancePrefix: 1
InternationalPrefix: 011
DialStringRules: etc/dialrules
SessionTracing: 11
RecvFileMode: 0777
RingsBeforeAnswer: 3
SpeakerVolume: quiet
GettyArgs: "-h %l dx_%s"
LocalIdentifier: FaxServer
TagLineFont: etc/lutRS18.pcf
TagLineFormat: "From %%l|%c|Page %%P of %%T"
MaxRecvPages: 25

Are these ok [yes]? yes
Successivamente farà un test della connessione con il modem definendone la classe, i parametri e la frequenza.
Creerà un file /etc/hylafax/config.ttyS0 che potrete editare anche manualmente ricordandovi però di riavviare hylafax subito dopo.

Aggiungete ora in fondo al vostro /etc/inittab :
S0:2345:respawn:/usr/sbin/faxgetty /dev/ttyS0
S1:2345:respawn:/usr/sbin/faxgetty /dev/ttyS1
sostituendo ttyS0 con la vostra porta Com in input e ttyS1 con la com in output (potete usarne anche solo una per pochi fax).
Ricaricate il file con il seguente comando:
kill -HUP 1
Ora aggiungete in fondo al vostro /etc/crontab (se non già presenti) le seguenti 2 righe:
0 * * * * /usr/local/sbin/faxqclean
0 0 * * * /usr/local/sbin/faxcron | mail -s "HylaFAX Usage Report" faxmaster
Facciamo ricaricare il crontab per sicurezza:

sudo /etc/init.d/cron restart

Con il comando faxstat potrete verificare lo stato del faxserver e dei modem.
Potrete comunque aggiungere altri modem, ad esempio per separare fax in ingresso e quelli in uscita, tramite il comando con menu contestuale a quello già visto:
sudo faxaddmodem ttyS1
per la sola ricezione dovrete aggiungere manualmente al file /etc/hylafax/config.ttySX la seguente riga in fondo:
ModemReadyState: D
Mentre per il solo invio dovrete aggiungere al file corrispettivo la seguente riga in fondo:
RingsBeforeAnswer: 0
Impostando gli squilli prima di rispondere a zero, stiamo dicendo di non rispondere.

Per effettuare una prova di invio da terminale potete dare il comando:
sendfax -n -d file.ps|.pdf|.txt|.tiff
Per eliminare la coda usate il comando:
faxrm
Aggiungere utenti per l'invio e l'accesso al servizio fax (consiglio di creare un unico utente fauser per tutte le workstation se sono meno di 10) dovrete connettervi via telnet alla console hylafax integrata tramite il comando:
telnet localhost 4559
ora identificatevi come amministratore e aggiungete l'utente con i seguenti comandi:
user root
admin
site adduser nomeutente@host.dominio.lan password:password
quit
Ora creiamo il file /etc/hylafax/FaxDispatch inserendo le righe sottostanti; questo permette la condivisione via samba e l'invio via mail al faxmaster:
SENDTO=FaxMaster #non modificare
FILETYPE=pdf;
NOTIFY_FAXMASTER="always"

n=`date +%Y.%m.%d.%H.%M.%S`
t=/var/lib/samba/fax/$n
$TIFF2PDF -o $t.pdf $FILE
/bin/cp $FILE $t.tif
/bin/rm $t.pdf
if [ -f log/c$COMMID ]; then
$SED -e '/-- data/d' \
-e '/start.*timer/d' -e '/stop.*timer/d' \
-e 's/=/=3D/g' \
log/c$COMMID
elif [ -n "$COMMID" ]; then
echo "$DICTNOLOGAVAIL ($DICTCOMMID c$COMMID)."
else
echo "$DICTNOLOGAVAIL."
fi
A questo punto possiamo modificare l'alias di FaxMaster in modo da inviare la mail a chi vogliamo sostituendo (o aggiungendo se non presente) nel file /etc/aliases la riga:

faxmaster:


con
faxmaster: fax@dominio.ricevente.com

Diamo il comando per rendere attivo il redirect della posta:
newaliases


Aggiungiamo le seguenti righe in fondo al nostro /etc/samba/smb.conf :
[fax]
comment = Archivio fax
inherit acls = Yes
path = /var/lib/samba/fax
read only = No
create mask = 0777
force create mode = 0777
force security mode = 0777
directory mask = 0777
guest only = yes
guest ok = yes
hide files = *.tmp
hide unreadable = yes
hide dot files = yes
e riavviamo hylafax e samba:
sudo /etc/init.d/hylafax restart
sudo /etc/init.d/samba restart
Ecco il fax server funzionante sia via mail che via samba.

Potrete usarlo tramite le workstation linux installando gfax
sudo apt-get -y install gfax
E tramite le workstation windows usando Pila oppure Winprint; personalmente preferisco winprint, in quanto installa una stampante, quindi molto user-friendly e permette la ricezione via mail delle ricevute di conferma.

Per la guida all'installazione e il link per scaricarlo vi rimando al sito ufficiale molto chiaro:

http://winprinthylafax.sourceforge.net/

Buon Fax a tutti
Swipon

Chiamare con ekiga e skypho

Volevo creare questa guida per permettere a tutti di sfruttare la tecnologia voip, quindi eccola.

Come gestore io consiglio euteliavoip (skypho), in quanto ha una tariffa decorosa e permette molte funzioni senza dover installare un centralino asterisk (numeri illimitati, centralino, trasferimenti, fax....)

Sul sito esiste una guida di riferimento da cui ho preso spunto.

Installate ekiga:

sudo apt-get install ekiga

avviate il softphone e configuratelo come segue:

Modifica - Account:
Nome Account: numeroSKYPHO
Registrante: voip.eutelia.it
Utente: numeroSKYPHO
Password: password numeroSKYPHO
nelle opzioni avanzate
Nome di Accesso: numeroSKYPHO
Tempo limite: 3600
Modifica - Preferenze:
DatiPersonali:
Nome: numeroSKYPHO
Impostazioni di Rete:
Metodo: STUN
server stun: stun.voip.eutelia.it
CodecAudio (mantenere quest'ordine):
PCMU
PCMA
GSM
MS-GSM
Disabilitate la riduzione dell'eco
Disabilitate il rilevamento silenzi
Codec Video:
Disabilitate il supporto (se avete una nuova webcam integrata spesso crasha)
Buone chiamate!!!
Ciao
Swipon

Condivisione file samba con cestino di rete

Qui spiego come configurare samba, il programma di condivisione files per windows, per mantenere un cestino di rete.

Installate il software necessario:

sudo apt-get install samba cups cups-pdf cupsys cupsys-client cups-pt samba smbfs smbclient

Ora editate il file di configurazione /etc/samba/smb.conf

sudo vi /etc/samba/smb.conf

Cancellate tutto ed inserite questo:



#======================= Global Settings =======================

[global]

## Browsing/Identification ###

workgroup = workgroup
server string = %h
netbios name = server-pdc
wins support = yes
dns proxy = yes
os level = 64
time server = Yes
; remote announce = 192.168.1.255
; name resolve order = lmhosts host wins bcast
Dos charset = 850
Unix charset = ISO8859-1
min passwd length = 3
fstype = NTFS
;get quota command = /usr/local/sbin/query_quota

#### Networking ####

; hostname lookups = yes
; interfaces = 127.0.0.0/8 eth0
; host allow = 127.0.0.1 192.168.100.0/255.255.255.0
; hosts deny = ALL
; bind interfaces only = true

#### Debugging/Accounting ####

log file = /var/log/samba/log.%m
max log size = 1000
syslog only = yes
syslog = 0
panic action = /usr/share/samba/panic-action %d

####### Authentication #######

security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
; guest account = nobody
invalid users = root
admin users = administrator

; unix password sync = no
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd chat debug = yes
; pam password change = no

########## Domains ###########

; domain logons = yes
; logon path = \\%N\profiles\%U
; logon path = \\%N\%U\profile
; logon drive = H:
; logon home = \\%N\%U
; logon script = logon.cmd
; add user script = /usr/sbin/useradd -m %u
; delete user script = /usr/sbin/userdel -r %u
; add group script = /usr/sbin/groupadd %g
; delete group script = /usr/sbin/groupdel %g
; add user to group script = /usr/sbin/usermod -G %g %u
# Aggiunge automaticamente al sistema l'account di una nuova macchina.
; add machine script = /usr/sbin/useradd -d /dev/null -g lpadmin -s /bin/false -M %u

########## Ldap ##########

; ldap passwd sync = Yes
; passdb backend = ldapsam:ldap://127.0.0.1/
# passdb backend = ldapsam:"ldap://127.0.0.1/ ldap://slave.idealx.com"
# ldap filter = (&(objectclass=sambaSamAccount)(uid=%u))
# ldap admin dn = uid=samba,ou=People,dc=municipio,dc=org
; ldap suffix = dc=municipio,dc=org
; ldap machine suffix = ou=People
; ldap user suffix = ou=People
; ldap group suffix = ou=Groups
; ldap idmap suffix = ou=Idmap
; ldap admin dn = cn=Manager,dc=municipio,dc=org
; idmap backend = ldap://draco.municipio.org
# ldap ssl = start tls

########## Printing ##########

load printers = yes
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
printer admin = @ntadmin
show add printer wizard = yes

############ Misc ############

; include = /home/samba/etc/smb.conf.%m
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
; domain master = auto
; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
; winbind enum groups = yes
; winbind enum users = yes

#======================= Share Definitions =======================

[homes]
comment = Home Directories
inherit acls = Yes
inherit owner = Yes
browseable = no
writable = no
create mask = 0700
directory mask = 0700
valid users = %S
hide dot files = yes

;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; write list = root

;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700

;[users]
; comment = All users
; path = /home
; read only = No
; inherit acls = Yes
; veto files = /aquota.user/groups/shares/

;[groups]
; comment = All groups
; path = /home/groups
; read only = No
; inherit acls = Yes

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
write list = root, @lpadmin

# A sample share for sharing your CD-ROM with others.
;[cdrom]
; comment = CD-DVD
; writable = no
; locking = no
; path = /cdrom
; public = yes
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom

# A sample share for sharing Hylafax recived folder with others.
;[FAX]
; comment = Archivio fax
; inherit acls = Yes
; path = /var/lib/samba/fax
; read only = No
; create mask = 0777
; force create mode = 0777
; force security mode = 0777
; directory mask = 0777
; guest only = no
; guest ok = yes
; hide dot files = yes
; vfs object = recycle
; recycle:repository = .deleted/%U
; recycle:keeptree = Yes
; recycle:touch = Yes
; recycle:versions = Yes
; recycle:maxsixe = 0
; recycle:exclude = *.tmp
; recycle:exclude_dir = /tmp
; recycle:noversions = *.doc

[Pubblica]
comment = Cartella pubblica
inherit acls = Yes
path = /home
read only = No
create mask = 0777
force create mode = 0777
force security mode = 0777
directory mask = 0777
guest only = yes
guest ok = yes
hide dot files = yes
hide files = /.*
hide special files = no
hide unreadable = no
hide unwriteable files = no
vfs object = recycle
recycle:repository = .deleted/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
recycle:noversions = *.doc

[C]
comment = Hard Disk protetto
inherit acls = Yes
path = /
read only = Yes
create mask = 0777
force create mode = 0777
force security mode = 0777
directory mask = 0777
guest only = no
guest ok = no
hide dot files = no
vfs object = recycle
recycle:repository = .deleted/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
recycle:noversions = *.doc

Adesso sarà sufficente creare le cartelle di cestino nei path condivisi:
sudo mkdir /.deleted
sudo mkdir /home/.deleted
sudo mkdir /var/lib/samba/fax/.deleted
Ed assegnare i permessi a queste ultime:
sudo chmod -R 777 /.deleted /home/.deleted /var/lib/samba/fax/.deleted
Riavviate samba:
sudo /etc/init.d/samba restart
Ora godetevi il vostro server con cestino di rete!
Ciao
Swipon