Sono necessarie due
schede di rete,
- Una su cui sarà
attivo il servizio DHCP per la lan. (eth1)
- Una che andrà
verso il router ADSL (eth0)
yum install unzip file-roller zip -y
Scaricare lo script
di megalab e scompattarlo:
#!/bin/sh
#File di routing realizzato da MegaLab.it
#Per info, vedi http://www.megalab.it/7050/
#Ultimo aggiornamento: 26 Aprile 2011
# Notifico l'avvio dello script
echo "MLI: Script di routing in caricamento.."
# Questo è il percorso in cui si trova l'eseguibile di iptables
# (su CentOS, dovrebbe essere sempre nel percorso proposto di default)
IPT="/sbin/iptables"
# Devi specificare qui le interfacce di rete da utilizzare
# La variabile "WAN" contiene il nome di quella rivolta verso Internet
# La variabile "LAN1" contiene il nome di quella rivolta verso la rete LAN
WAN="eth0"
LAN1="eth1"
# ============ QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
# First we need to clear up any existing firewall rules
# and chain which might have been created
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X
# Default policies: Drop any incoming packets
# accept the rest.
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
# To be able to forward traffic from your LAN
# to the Internet, we need to tell the kernel
# to allow ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Masquerading will make machines from the LAN
# look like if they were the router
$IPT -t nat -A POSTROUTING -o $WAN -j MASQUERADE
# ============ fine QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
# ============ QUESTO BLOCCO DI ISTRUZIONI È DEDICATO AL PORT FORWARDING ============
# Per rilanciare una specifica porta verso un client, devi inserire due linee basate su questo modello:
# (personalizza i valori fra parentesi quadre)
# $IPT -t nat -A PREROUTING -i $WAN -p [scrivi tcp oppure udp] --dport [scrivi il numero della porta] -j DNAT --to [scrivi l'indirizzo IP del computer di destinazione]
# $IPT -A FORWARD -i $WAN -p [scrivi tcp oppure udp] --dport [scrivi il numero della porta] -m state --state NEW -j ACCEPT
# ============ fine QUESTO BLOCCO DI ISTRUZIONI È DEDICATO AL PORT FORWARDING ============
# ============ QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
# Do not allow new or invalid connections to reach your internal network
$IPT -A FORWARD -i $WAN -m state --state NEW,INVALID -j DROP
# Accept any connections from the local machine
$IPT -A INPUT -i lo -j ACCEPT
# plus from your local network
$IPT -A INPUT -i $LAN1 -j ACCEPT
# Here we define a new chain which is going to handle
# packets we don't want to respond to
# limit the amount of logs to 10/min
$IPT -N Firewall
$IPT -A Firewall -m limit --limit 10/minute -j LOG --log-prefix "Firewall: "
$IPT -A Firewall -j DROP
# log those packets and inform the sender that the packet was rejected
$IPT -N Rejectwall
#$IPT -A Rejectwall -m limit --limit 10/minute -j LOG --log-prefix "Rejectwall: "
$IPT -A Rejectwall -j REJECT
# use the following instead if you want to simulate that the host is not reachable
# for fun though
#$IPT -A Rejectwall -j REJECT --reject-with icmp-host-unreachable
# here we create a chain to deal with unlegitimate packets
# and limit the number of alerts to 10/min
# packets will be drop without informing the sender
$IPT -N Badflags
$IPT -A Badflags -m limit --limit 10/minute -j LOG --log-prefix "Badflags: "
$IPT -A Badflags -j DROP
# A list of well known combination of Bad TCP flags
# we redirect those to the Badflags chain
# which is going to handle them (log and drop)
$IPT -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ACK,URG URG -j Badflags
$IPT -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j Badflags
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j Badflags
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j Badflags
$IPT -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j Badflags
# Accept certain icmp message, drop the others
# and log them through the Firewall chain
# 0 => echo reply
$IPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT
# 3 => Destination Unreachable
$IPT -A INPUT -p icmp --icmp-type 3 -j ACCEPT
# 11 => Time Exceeded
$IPT -A INPUT -p icmp --icmp-type 11 -j ACCEPT
# 8 => Echo
# avoid ping flood
$IPT -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/second -j ACCEPT
$IPT -A INPUT -p icmp -j Firewall
# ============ fine QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
# ============ BLOCCO DI ISTRUZIONI CHE ABILITANO IL CONTROLLO DEL SERVER DA REMOTO ============
# Eliminando i cancelletti dalla prossime due righe, il server accetterà connessioni SSH e VNC in entrata anche via Internet
# PRUDENZA! Questo vi consente di gestire il server da tutto il mondo, ma espone anche ad accessi non autorizzati
# $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# $IPT -A INPUT -i $WAN -p tcp --dport 5900 -j ACCEPT
# ============ fine BLOCCO DI ISTRUZIONI CHE ABILITANO IL CONTROLLO DEL SERVER DA REMOTO ============
# ============ BLOCCO DI ISTRUZIONI CHE ABILITANO L'USO DI SQUID ============
# Per maggiori info su questo blocco di comandi, vedi http://www.megalab.it/7083/
#$IPT -t nat -A PREROUTING -i $LAN1 -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i $LAN1 -p tcp --dport 3128
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 80
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 80
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o $LAN1 -p tcp --sport 80
#$IPT -t nat -A PREROUTING -i $LAN1 -p tcp --dport 8080 -j REDIRECT --to-port 3128
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i $LAN1 -p tcp --dport 3128
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 8080
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 8080
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o $LAN1 -p tcp --sport 8080
#$IPT -t nat -A PREROUTING -i $LAN1 -p tcp --dport 443 -j REDIRECT --to-port 3129
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i $LAN1 -p tcp --dport 3129
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 443
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 443
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o $LAN1 -p tcp --sport 443
# ============ fine BLOCCO DI ISTRUZIONI CHE ABILITANO L'USO DI SQUID ============
# ============ BLOCCO DI ISTRUZIONI CHE ABILITANO LE CONNESSIONI VPN IN ENTRATA ============
# Per maggiori info su questo blocco di comandi, vedi http://www.megalab.it/7254/
$IPT -A INPUT -i ppp0 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 1723 -j ACCEPT
#Attivando i prossimi comandi, le richieste web in ingresso dalla VPN saranno gestite da Squid
#$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i ppp0 -p tcp --dport 3128
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 80
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 80
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o ppp0 -p tcp --sport 80
#$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 8080 -j REDIRECT --to-port 3128
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i ppp0 -p tcp --dport 3128
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 8080
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 8080
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o ppp0 -p tcp --sport 8080
#$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 443 -j REDIRECT --to-port 3129
#$IPT -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i ppp0 -p tcp --dport 3129
#$IPT -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o $WAN -p tcp --dport 443
#$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i $WAN -p tcp --sport 443
#$IPT -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o ppp0 -p tcp --sport 443
# ============ fine BLOCCO DI ISTRUZIONI CHE ABILITANO LE CONNESSIONI VPN IN ENTRATA ============
# ============ BLOCCO DI ISTRUZIONI CHE ABILITANO LE CONNESSIONI FTP ============
# Per maggiori info su questo blocco di comandi, vedi http://www.megalab.it/7226/
$IPT -A INPUT -i $WAN -p tcp --dport 20 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 21 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 2121 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 2122 -j ACCEPT
# ============ fine BLOCCO DI ISTRUZIONI CHE ABILITANO LE CONNESSIONI FTP ============
# ============ QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
# Accept related and established connections
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Drop netbios from the outside, no log, just drop
$IPT -A INPUT -p udp --sport 137 --dport 137 -j DROP
# Finally, anything which was not allowed yet
# is going to go through our Rejectwall rule
$IPT -A INPUT -j Rejectwall
echo "MLI: server pronto al routing!"
# ============ QUESTE IMPOSTAZIONI DOVEREBBERO RIMANERE SEMPRE UGUALI ============
Con questo script
apre le porte giuste oppure mette regole del firewall per consentire al server
di oprerare come Gateway, Firewall, SQUID, SSH, VNC, ftp e permette di gestire
la VPN
chmod ugo+x /root/routing.sh
sh /root/routing.sh
Andare su un client
e dare il comando:
tracert
www.google.it
sincerarsi che La prima riga dovrebbe sempre
riportare l'indirizzo del vostro server, chiaro segnale che il traffico sta
passando attraverso lo stesso e tutto sta funzionando come previsto
Per essere sicuri
che lo script venga eseguito ad ogni avvio è sufficiente dare il seguente
comando:
gedit /etc/rc.local
ed accodare il comando sh /root/routing.sh
Nella sezione del
file precedente PORT FORWARDING si può usare il seguente stratagemma per
dedicare un pc della lan a fungere da Web server:
Se, ad esempio,
volessimo inoltrare la porta 80 TCP (server web) verso il PC che ha l'indirizzo
192.168.0.87, scriveremo:
- $IPT -t nat -A PREROUTING -i
$WAN -p tcp --dport 80 -j DNAT --to 192.168.0.87
- $IPT -A FORWARD -i $WAN -p tcp
--dport 80 -m state --state NEW -j ACCEPT
yum install openssl -y
openssl req -x509 -nodes -days 3650 -newkey
rsa:1024 -keyout "root/miocertificato.pem" -out
"root/miocertificato.pem"
Verrà richiesto:
- Country Name (2 letter code)
[AU]: Digitare IT per la nazione
- State or
Province Name (full name) [Some-State]: il nome esteso del Paese. Nel
nostro caso, Italia;
- Locality
Name (eg, city) []: il nome della località.
- Organization
Name (eg, company) [Internet Widgits Pty Ltd]: il nome della vostra
organizzazione.
- Organizational
Unit Name (eg, section) []: l'unità operativa della quale fate parte
all'interno dell'azienda.
- Common
Name (eg, YOUR name) []: questo campo non può essere lasciato vuoto. Se
state generando un certificato digitale da utilizzarsi per creare
connessioni HTTPS indicare l'hostname oppure il nome e cognome
- Email Address []:
Il certificato
pronto per l'uso si troverà in /root
Adesso vediamo come
installare una VPN PPTP:
1. rpm --import
http://poptop.sourceforge.net/yum/RPM-GPG-KEY-PPTP
rpm -Uvh
http://poptop.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm
yum clean all
yum install pptpd ppp -y
2. vim /etc/ppp/options.pptpd
cercare la stringa #ms-dns per definire il dns da usare
e mettere il DNS
(preferibilmente quello locale)
3. vim /etc/pptpd.conf
Vanno scelti gli IP
dell'interfaccia della VPN (nella lan) e l'IP che verrà assegnato all'utente
remoto.
localip 192.168.0.201
remoteip
192.168.0.2-254
Aprire:
4. vim
/etc/dhcpd.conf
e verificare che il
campo range sia 192.168.0.2
192.168.0.200
5. Creiamo
gli account che possono collegarsi al server:
vim
/etc/ppp/chap-secrets
creare gli account
seguendo questo modello:
NomeUtenteClient
pptpd PasswordAssociata *
6. service pptpd
start
chkconfig pptpd on
E' evidente che va
aperta la porta sul firewall, la 1723,
è sufficiente modificare lo script che si avvia con il superouter e modificare
la sezione del port forwarding
7. A
questo punto è sufficiente creare una connessione VPN sui sistemi
Windows.
Ricordarsi che per
settare il firewall si può usare il seguente comando:
ntsysv
yum install squid -y
vim /etc/squid/squid.conf
cancellare # per la sezione acl our_networks e la
sezione http_access allow
our_networks
modificare la
sezione:
acl our_networks src
192.168.0.0/24
Cercare la sezione TAG: visible_hostname ed aggiungere subito dopo la sezione #none aggiungere:
visible_hostname mioserver
modificare
http_port 3128
in
http_port 3128
transparent
Notate ora il blocco
di commenti che inizia con #
TAG: https_port presente
immediatamente sotto.
Scorrere verso il
basso fino a raggiungere la riga che recita soltanto # none.
Subito dopo mettere:
https_port 3129
transparent cert=/root/mycert.pem
(mettere il path del proprio certificato digitale, per la creazione del certificato vedere l'articolo relativo nel blog)
(mettere il path del proprio certificato digitale, per la creazione del certificato vedere l'articolo relativo nel blog)
Cercare:
cache_mgr
trasformarlo in :
cache_mgr a.mazzanti(at)gmail.com
Questa informazione
sarà riportata su tutte le pagine "di servizio" mostrate ai client
service squid start
chkconfig squid on
modificare il file
routing.sh di megalab.it
e modificarlo nella
sezione di SQUID togliendo ogni #
sh /root/routing.sh
tail -f /var/log/squid/access.log
provare a navigare e
vedere cosa succede stoppando il proxy (sul router adsl bisogna abilitare solo
il server a navigare su internet)
Con la
configurazione ottenuta fin qui, tutte le richieste a pagine quali https://google.com mostreranno un avviso di sicurezza
nel browser dell'utente, il quale sarà chiamato a confermare una o più
finestre di dialogo prima di poter procedere
L'alternativa è
creare un non transparent proxy (mi riprometto di testare tale soluzione) e poi
pubblicarla.
Se uno vuole
filtrare i contenuti è sufficiente utilizzare Squiddguard come visto in un
altro articolo
Utile per bloccare
siti web:
yum install squidguard -y
mkdir /var/log/squidguard
chown -R squid /var/log/squidguard
SquidGuard lavora
appoggiandosi a lunghe liste di siti già classificati e pronti per essere
bloccati (o meno).
La prima cosa da
fare è quindi quella di prelevare uno di questi archivi. La sezione "SquidGuard - Blacklists".
L'uso di questa
lista è gratuito sia per i privati, sia per le aziende. Alle realtà
professionali è però richiesto di firmare esplicitamente un contratto
d'uso.
Scarichiamo:
Free for non commercial/privat use; commercial
usage requires a feedback contract at no additional costs; selling the lists is not free of charge. More than 1.5 million entries. Updated regularly.
Salviamo in /var/lib/squidguard/ e scompattiamo con il comando
tar zxvf
shallalist.tar.gz
ci sarà una cartella BL
chown -R squid /var/lib/squidguard/*
creare in /etc/squid/squidguard.conf con le seguenti caratteristiche:
dbhome
/var/lib/squidguard/BL
logdir /var/log/squidguard
#Blocca i siti pornografici
dest porn {
domainlist porn/domains
urllist porn/urls
}
#Blocca vari siti che distribuiscono malware
dest spyware {
domainlist spyware/domains
urllist spyware/urls
}
#Blocca i social network, come Facebook
dest socialnet {
domainlist socialnet/domains
urllist socialnet/urls
}
#Blocca i YouTube ed altri siti di streaming
dest movies {
domainlist movies/domains
urllist movies/urls
}
#Blocca i servizi studiati per aggirare il filtro
dest redirector {
domainlist redirector/domains
urllist redirector/urls
}
acl {
default {
pass !porn !spyware !socialnet !movies !redirector all
#Pagina da mostrare per le richieste bloccate
redirect http://www.sitobloccato.it
}
}
logdir /var/log/squidguard
#Blocca i siti pornografici
dest porn {
domainlist porn/domains
urllist porn/urls
}
#Blocca vari siti che distribuiscono malware
dest spyware {
domainlist spyware/domains
urllist spyware/urls
}
#Blocca i social network, come Facebook
dest socialnet {
domainlist socialnet/domains
urllist socialnet/urls
}
#Blocca i YouTube ed altri siti di streaming
dest movies {
domainlist movies/domains
urllist movies/urls
}
#Blocca i servizi studiati per aggirare il filtro
dest redirector {
domainlist redirector/domains
urllist redirector/urls
}
acl {
default {
pass !porn !spyware !socialnet !movies !redirector all
#Pagina da mostrare per le richieste bloccate
redirect http://www.sitobloccato.it
}
}
inizializziamo le
liste di controllo:
squidGuard -C all
Rendete poi
accessibili tutti i file creati lanciando
chown -R squid /var/lib/squidguard/*
se si sente la
necessità di aggiungere siti web particolari o categorie ecco la procedura:
- entrare in /var/lib/squidguard/ e guardare il nome delle cartelle
per scegliere le categorie da bloccare
- E' sufficiente
prendere spunto dal precedente file per aggiungere nuove sezioni (tenere a
mente che ! serve per indicare la negazione)
- Inizializzare
tutte le volte le liste di blocco come segue:
chown -R squid /var/lib/squidguard/*
&& squidGuard -C all && chown -R squid
/var/lib/squidguard/* && service squid restart
Per inibire una
propria lista di siti web:
mkdir /var/lib/squidguard/BL/personal
touch /var/lib/squidguard/BL/personal/domains
&& touch /var/lib/squidguard/BL/personal/urls;
inserire un nome di
sito da bloccare uno per riga
vim /var/lib/squidguard/BL/personal/domains
se uno mette black.com verrà bloccato anche musica.black.com
...
<------other -----="" articles="" blogs="" related="">------other>
...
SCCM 2012 - How to install AnyConnect VPN with SCCM 2012
Tips - Locating the Cisco AnyConnect Profiles
Linux - Creare un Gateway Server
Backup - Fare il backup delle connessioni di rete e VPN
Tips - Cisco VPN e Vodafone Connect Card
Tips - Cisco errore Secure VPN Connection terminated locally by the Client. Reason 440: Driver Failure.
Tips - Cisco VPN 5.0 e Windows 8