Come creare un hosting professionale con debian

Spesso si ha l'esigenza di avere un server web con svariati servizi, in modo da poter evitare di appoggiarsi a quelle costosissime aziende di hosting.
Dovremo cominciare partendo da un'installazione base e minimale di debian.

La premessa è che molti consigliano di compilare manualmente i pacchetti fondamentali come apache e mysql, io non concordo in quanto i pacchetti standard hanno molti accorgimenti di compilazione per le sicurezze.

Ora installeremo i software base da utilizzare:

GESTIONE QUOTE SPAZIO DISCO:
sudo apt-get -y install quota quotatool
DATABASES:
sudo apt-get -y install sqlite3 mysql-client mysql-server postgresql-8.1 postgresql-client-8.1
WEBSERVER:
sudo apt-get -y install apache2 openssl php-pear php5 php5-cgi php5-cli php5-common php5-curl php5-gd php5-ldap libgd2-xpm php5-mcrypt php5-mysql php5-odbc php5-imap php5-xmlrpc libapache2-mod-fcgid libapache2-mod-jk libapache2-mod-perl2 libapache2-mod-ruby libapache2-svn libapache2-mod-python libapache2-mod-php5 libapache2-reload-perl ruby rdoc rake rails libfcgi-ruby libpgsql-ruby libmysql-ruby libsqlite3-ruby gem gems phpmyadmin libcrypt-passwdmd5-perl makepasswd
Installeremo anche i moduli pear per php:
sudo pear config-set auto_discover yes
sudo pear config-set preferred_state beta
sudo pear install Archive_Tar Cache Cache_Lite Config Console_Getopt DB Date FSM Fileinfo Gtk_FileDrop Gtk_ScrollingLabel Gtk_Styled HTML_Javascript HTTP HTTP_Request Log MDB2 MDB2_Driver_mysql MIME_Type Mail Net_SMTP Net_Socket Net_URL Numbers_Roman PEAR Payment_Clieop Payment_DTA QA_Peardoc_Coverage Stream_SHM Stream_Var Structures_Graph XML_Parser XML_Query2XML XML_RPC XML_RPC2 XML_RSS XML_SVG XML_Tree XML_Util XML_Wddx
WEBSERVER JAVA:
(personalmente consiglio di scaricare gli ultimi binari dal sito della sun e di jboss)


Sarà necessaria la jdk:
sudo apt-get -y install sun-java5-jdk
potrete scegliere se installare una tecnologia semplice (tomcat) :
sudo apt-get -y install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
oppure la nuova generazione di J2EE (jbossAS):
sudo apt-get -y install jbossas4 libjboss-j2ee-java libjboss-connector-java libjboss-deployers-java libjboss-deployment-java libjboss-jms-java libjboss-managed-java libjboss-messaging-java libjboss-naming-java libjboss-security-java libjboss-server-java libjboss-system-java libjboss-transaction-java libjtds-java libjboss-webservices-java libehcache-java libajaxtags-java libaopalliance-java
SERVER DI POSTA:
sudo apt-get -y install postfix fetchmail procmail courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authdaemon courier-authlib sasl2-bin gsasl libsasl2-modules pyzor spamassassin spamc
SERVER LDAP GESTIONE UTENTI:
sudo apt-get -y install ldap-utils phpldapadmin slapd
SERVER DNS:
sudo apt-get -y install bind9
sudo echo "nameserver 127.0.0.1" > /etc/resolv.conf

editate il file /etc/bind/named.conf.options rendendolo come segue:
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";
};
SERVER DI COLLEGAMENTO:
sudo apt-get -y install vsftpd subversion ssh
SERVER ADS CONTROLLO SICUREZZE:
sudo apt-get -y install aide snort snort-rules snort-rules-default denyhosts
NEL CASO NON AVESTE IP PUBBLICO REGISTRATEVI A DYNDNS.ORG E:
sudo apt-get -y install ddclient
CONFIGURAZIONE:
Ora basterà configurare il tutto.
Di default i pacchetti debian spesso sono già funzionanti appena installati, anche se spesso non avranno una configurazione ottimale.

Per quanto riguarda il databases l'installer installerà senza password di root, dovrete come prima cosa impostarla tramite l'indirizzo web http://localhost/phpmyadmin.
Sconsiglio di abilitare eventuali connessioni esterne al database e di lasciare le autorizzazzioni di default (solo localhost), ma se volete potete abilitare il networking per mysql editando /etc/mysql/my.cfg e commentando (aggiungere un # davanti) o meglio eliminando completamente la riga seguente:
bind-address = 127.0.0.1
APACHE:
Per quanto riguarda apache il mio consiglio è di creare un'unico virtualhost dinamico, che quindi direzionerà le richieste http alle varie cartelle in base all'url.
Lascieremo il default per le richieste eventualmente non riconosciute, e ne creremo uno aggiuntivo editate /etc/apache2/sites-avaiable/default-php (createlo) ed inseritevi:
NameVirtualHost *:80

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/www/%0/logs/access_log combined
ServerAdmin webmaster@%0
VirtualDocumentRoot /var/www/%0
VirtualScriptAlias /var/www/%0/cgi-bin

Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all

Order Allow,Deny

RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.com\.it\.net\.eu\.biz\.info$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^www\.([a-z-]+)\.isp\.com/(.*) /var/www/$1/$2
Ora cancellate tutto all'interno della directory /var/www, poi ammettendo di voler creare un virtualhost per il dominio example.com, basterà creare la cartella in modo opportuno:
sudo mkdir /var/www/example.org
sudo chown -R www-data: /var/www/example.org
Così facendo NON avete alcun bisogno di riavviare apache per creare nuovi virtualhost, riducendo al minimo i disguidi tecnici ed eventuali down.

Ora aggiungiamo un'altro virtualhost dinamico per i siti ROR
Create un nuovo sito dinamico:
sudo mkdir /var/rails
sudo chown -R www-data: /var/rails
sudo cp /etc/apache2/sites-avaiable/default /etc/apache2/sites-avaiable/default-rails
ora editate /etc/apache2/sites-avaiable/default-rails rendendolo come segue:
NameVirtualHost *:80

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/rails/%0/logs/access_log combined
ServerAdmin webmaster@%0
VirtualDocumentRoot /var/rails/%0/application/public
VirtualScriptAlias /var/rails/%0/cgi-bin

AddHandler fcgid-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
AllowOverride all
Order allow,deny
Allow from all
RewriteEngine On
RewriteBase /
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all
Order Allow,Deny

RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.com\.it\.net\.eu\.biz\.info$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^www\.([a-z-]+)\.isp\.com/(.*) /var/www/$1/$2
Controllate anche il file /etc/apache2/mods-enabled/fcgid.conf, cancellate tutto (o createlo) ed inseriteci:
AddHandler fcgid-script .fcgi fcg fcgi fpl
DefaultInitEnv RAILS_ENV development
IdleTimeout 600
ProcessLifeTime 3600
MaxProcessCount 8
DefaultMinClassProcessCount 3
DefaultMaxClassProcessCount 3
IPCConnectTimeout 8
IPCCommTimeout 48
Ma ricordatevi che una volta completate le fasi di test e sviluppo dell'aplicatiovo ruby on rails dovrete sostituire :
DefaultInitEnv RAILS_ENV development
Con
DefaultInitEnv RAILS_ENV production
E riavviare apache.

Ora potrete creare l'applicazione rails:
cd /var/rails
sudo rails example.org
sudo chown -R www-data: example.org
Come ultima cosa prima di riavviare (quindi per la vostra ultima volta) apache2, dovrete abilitare i moduli necessari e i siti creati:
sudo a2ensite default-rails
sudo a2ensite default-php
sudo a2enmod proxy_http rewrite proxy setenvif alias cache autoindex dav deflate env fcgid include jk log_forensic mime_magic perl php5 proxy proxy_ajp ssl vhost_alias
Ora riavviate apache:
sudo /etc/init.d/apache2 restart
E verificate il funzionamento dell'apache e dei moduli alle url http://localhost/server-status e http://localhost/server-info, le disattiveremo in seguito (vedi PULIZIA).

Per limitare l'accesso via ssh solo ad un'utente (che potrà usare il comando su per diventare root) dovrete aggiungere al file /etc/ssh/sshd_config:
AllowUsers nomeutente1 nomeutente2
Ora per non rischiare di essere auto-bannati da denyhosts inserite il vostro ip del client in /etc/hosts.allow

Per il server FTP vi basterà editare /etc/vsftpd.conf, cancellare tutto ed inserire:
listen=YES
anonymous_enable=YES
local_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ftpd_banner=Welcome to FTP service.
chroot_local_user=YES
chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
Poi per abilitare un utente all'uso ftp dovrete inserirlo nel file /etc/vsftpd.chroot_list.

Per il server di posta dovrete aggiungere in fondo al file /etc/postfix/main.cf :
home_mailbox = Maildir/
E per creare le caselle postali basterà lanciare i seguenti comandi per ogni utente:
su - nomeutente
maildirmake.courier Maildir
exit
Ora create il file /etc/fetchmailrc come segue:
set daemon 300
set no bouncemail
set no syslog
set logfile /var/log/fetchmail.log
defaults:
antispam -1
batchlimit 100
## Caselle di posta
#poll mail.host.xx with protocol pop3 user USERNAME@example.org there is #NOMEUTENTELOCALE here with password 'POPPASSWORD' options keep;
Gli ads non hanno bisogno di configurazioni particolari.

Abilitiamo ora le quote disco, che ci serviranno per poter ridimensionare le dimensioni delle cartelle dei siti (come se fossero hard disk fisici) senza bisogno di creare dei down.
Modificate /etc/fstab come indicato (le parti in rosso non vanno modificate e possono dipendere dall'installazione eseguita):

/dev/sda1 / ext3 defaults,usrquota,grpquota 0 1
Creo i files che conterranno le indicazioni quote disco:

sudo touch /aquota.user
sudo touch /aquota.group
sudo chmod 600 /aquota.user
sudo chmod 600 /aquota.group
Rimontiamo ora i filesystem con le nuove impostazioni:
sudo mount -o remount /dev/sda1
Editiamo /etc/mtab come segue (stessa modifica dell fstab):
/dev/sda1 / ext3 defaults,usrquota,grpquota 0 1
Editiamo /etc/modules per caricare il modulo quota all'avvio:
sudo echo quota_v2 >> /etc/modules
Controlliamo il tutto con l'apposto tool del pacchetto installato:
sudo quotacheck -vgum /
Se tutto è ok ora potrete impostare la dimensione come per le quote di windows.

PULIZIA:
Terminata la configurazione vi consiglio di rimuovere tutto il non necessario es:
sudo apt-get --purge remove sudo phpmyadmin
sudo apt-get clean
sudo a2dismod status info
sudo a2dissite default
Riavviate il tutto e dovreste avere un ottimo server web adatto a molti siti web.

Ultima cosa può essere creare alcuni script bash per la creazione automatica di tutto che potrete andare a richiamare con funzioni php come "exec".

Create quindi la cartella /usr/local/scripts
sudo mkdir /usr/local/scripts
ed ora al suo interno potete inserire gli script da richiamare, una linea guida sugli script da creare potrebbe essere:

1)
Generazione Password utente:
makepasswd > /usr/local/scripts/password_utente-`date +%Y%m%d`
export PASSWORD_UTENTE="$(cat /usr/local/scripts/password_utente
-`date +%Y%m%d`)"
Creazione databases
echo "CREATE DATABASE `date +%Y%m%d`-nome_utente" | mysql -u root -ppassword
Creazione utente mysql
echo "GRANT ALL PRIVILEGES ON `date +%Y%m%d`-nome_utente.* TO ‘nome_utente’@'%’ IDENTIFIED BY ‘$PASSWORD_UTENTE’ WITH GRANT OPTION;" | mysql -u root -ppassword
Creazione cartella sito php
sudo mkdir /var/www/nomedominio.estensione
Creazione cartella sito rails
sudo mkdir /var/rails/nomedominio.estensione
cd /var/rails/nomedominio.estensione
sudo rails application
Creazione utente fisico (con la homecorrispondente alla cartella del sito)
sudo useradd -o -c clientevirtual -d /var/www/nomedominio.estensione -g www-data -p $PASSWORD_UTENTE -u 33 nome_utente
2)
Impostazione permessi home
sudo chmod -R 644 /var/www/nomedominio.estensione
sudo chown -R nomeutente /var/www/nomedominio.estensione
Impostazioni permessi database
echo "FLUSH PRIVILEGIES;" | mysql -u root -ppassword
3)
Come altri passaggi si potrebbe fare un script che in base alla scelta del cliente lasci la home vuota oppure vi decomprima all'interno un cms opensource.
Consiglio i seguenti pacchetti da poter fornire ai propri clienti
Joomla10 (cms) , Joomla15 (cms) , Magento (e-commerce) , Drupal (cms) , WordPress (blog) , SMF (forum)
Posso segnalarvi anche "redhat el5 ES" per sviluppare una piattaforma web, in quanto molto stabile ed ora con una gestione di pacchetti più vicina a debian che a rpm tramite YUM. Ottima se cercate supporto per qualche applicativo proprietario.

Ciao A tutti
Swipon

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

Configurazione Amule - p2p for linux

Spesso si ha il problem di amule / emule con i settaggi di fabbrica, qui elenco la mia configurazione per poter dare supporto a tutti i nuovi del peer to peer.

Installate amule:
sudo apt-get install amule amule-utils-gui

ps: per chi ha fastweb sarà necessario scaricare ed installare il pacchetto amule-adunanza:

x debian lenny/sid
wget http://mesh.dl.sourceforge.net/sourceforge/amule-adunanza/aMule-AdunanzA-3.14b3-2.2.2-lenny-i386.deb
sudo dpkg -i aMule-AdunanzA-3.14b3-2.2.2-lenny-i386.deb
rm
aMule-AdunanzA-3.14b3-2.2.2-lenny-i386.deb
x ubuntu hardy
http://heanet.dl.sourceforge.net/sourceforge/amule-adunanza/aMule-AdunanzA-3.14b3-2.2.2-hardy-i386.deb
sudo dpkg -i aMule-AdunanzA-3.14b3-2.2.2-hardy-i386.deb
rm aMule-AdunanzA-3.14b3-2.2.2-hardy-i386.deb
Lanciate amule, la prima volta creerà la cartella .aMule con i file di configurazione, la cartella Temp ed Incoming.

Ora entrate nel pannello preferenze ed impostate com seguito:

Nick : VsUtente
Browser: firefox + apri in una nuova scheda se possibile

Limite Download: 0
Limite Upload: 128
Allocazione slot: 2
Capacità Download 1024
Capacità Upload: 128
reti: ed2k + Kademlia
Connetti all'avvio: yes
Limite massimo: 500
Connessioni massime: 500

Certi firewall come zywall2plus non supportano più di 250 connessioni massime

Rimuovi Server dopo: 3 tentativi
Aggiorna lista server: si - cliccate su lista, inserite nel file
http://update.adunanza.net/amule/adu_nodes.dat
Aggiorna lista quando ci si connette al server: no
Aggiorna lista quando si connette un client: no

Cartelle: selezionate la cartella Incoming poi dove tenete la musica e i video
Riproduttore Video: /usr/bin/totem

Puo vedere i files condivisi: chiunque

Ora chiudete amule e riavviatelo.
Cliccate sulla scheda Kad
inserite nel campo di testo
http://update.adunanza.net/amule/adu_nodes.dat
E cliccate sull'icona in alto a sinistra con la freccia azzurra verso sinistra Per aggiornare la lista dei nodi kad.

Se tutto è andato bene siete a posto.
Ciao
Swipon

Debian for Realtime Audio on Laptop

Con il mio gruppo ( yue ) suoniamo musica copileft utilizzando software open source.
Personalmente utilizzo il mio dell xps1330 con la sua scheda audio intel ich8 integrata ed una tastiera usb midi M-Audio di poco peso e poca spesa, come window manager è sicuramente meglio utilizzare fluxbox per sincerarsi della stabilità, ma non ho problemi utilizzando gnome.
L'installazione che vado a descrivere basata sul motore audio jack, è perfettamente equiparabile ai software windows o apple audio come cubase, qlogic ecc...

Premessa:
Normalmente linux utilizza alsa come motore audio primario, ma ultimamente ogni window manager ha sviluppato dei "connettori" a questo per permettere di integrare i suoni di sistema.
Es: esound(esd), pulseaudio, ecc..
Il mio consiglio è di pulire il più possibile il sitema lasciando solo alsa. Per gnome basta disabilitare il mixaggio audio vi software (ESD) nel pannello "opzioni audio" e esound non verrà avviato al login.
Alcune vecchie applicazioni come skype utilizzano ancora oss (ora rimpiazzato dal più prestante alsa), non è necessario abilitarlo nel kernel, esiste un pacchetto apposito che emula il tutto risolvendo ogni problema "alsa-oss".

Preparazione
sudo apt-get install qjackctl jackd jack-tools alsaplayer-jack rosegarden ardour alsa-base alsa-utils alsa-oss hydrogen hydrogen-drumkits timidity vkeybd rezound zynaddsubfx dssi-host-jack dssi-utils dssi-example-plugins fluidsynth-dssi xsynth-dssi fil-plugins ladspa-sdk mcp-plugins omins rev-plugins swh-plugins tap-plugins vco-plugins


Ora avete installato il motore audio Jack con interfaccia grafica di controllo qjackctl,
il motore alsa (nel caso vi siano stati problemi nella precedente installazione),
il sequencer alsa midi timidity,
la drum-machine hydrogen,
gli effetti ladspa (riverberi delay distorsori ecc...),
l'editor per il cut & paste rezound,
la tastiera virtuale vkeybd,
Il sintetizzatore zynaddsubfx

Configurare Jack per l'audio realtime:
Sappiate che troverete molti how to che diranno di compilarvi un kernel, e qui sono concorde, è necessario configurarlo con:
Timer frequency - 1000 HZ
Preemption Model - Low Latency Desktop
Però devo informarvi che dal kernel 2.6.24 in poi sono state stravolte le condizioni di sicurezza, quindi non si deve più patchare nulla, in quanto il modulo realtime non si usa più.

Aggiungete il vostro utente al gruppo audio:
sudo adduser nomeutente audio
create il file .jackdrc nella vostra home
vi .jackdrc
ed inseriteci la riga seguente:
/usr/bin/jackd -v -R -p128 -t2000 -dalsa -dhw:0 -r48000 -p1024 -n3 -o2 -Xraw -H -M
Ora modificate le security per permettere al gruppo audio le operazioni in realtime:
Editate il file /etc/security/limits.conf:
sudo vi /etc/security/limits.conf
inserendo in fondo le seguenti righe
@audio - rtprio 99
@audio - memlock 768000
@audio - nice -10

Configurazione del sequencer Alsa
Editate /etc/default/timidity e /etc/init.d/timidity modificando la riga
TIM_ALSASEQPARAMS="qualsiasi opzione ci sia"

con
TIM_ALSASEQPARAMS="-iA -B2,8 -Os1l -s 48000"

e solo in /etc/default/timidity
TIM_ALSASEQ=false

con
TIM_ALSASEQ=true

Editate il file /etc/modules
sudo vi /etc/modules
ed inserite le seguenti righe:
snd-seq-device
snd-seq-midi
snd-seq-oss
snd-seq-midi-event
snd-seq

Riavviate ed ecco ora pronto il vostro portatile per l'audio realtime

Chi volesse ottenere di più può comunque acquistare un scheda audio usb dedicata e potrà abbassare molto la latenza.

Per provare dovrete per prima cosa avviare qjackctl, che lancierà anche il demone jackd
Potete ora lanciare tutti i programmi che volete ed utilizzare la schermata connections di qjackctl come un normalissimo mixer.
Ciao a tutti
Swipon