6th febbraio 2009

Traffic Shaping: come ti limito la banda con tc e iptables

Questa sera ho avuto l’esigenza di fare un po’ di traffic shaping casalingo per un piccolo progetto.

Dovevo limitare la banda globale (quella globale non quella del singolo file scaricato), del server ftp.

Soluzione al problema due comandi linux: tc e iptables.

Lo script che ci permetterà di fare tutto è questo:

# Change this to your link bandwidth
# (for cable modem, DSL links, etc. put the maximal bandwidth you can
# get, not the speed of a local Ethernet link)
REAL_BW='20Mbit'

# Change this to the bandwidth you want to allocate to FTP.
# We're talking about megabits, not megabytes, so 80Kbit is
# 10 Kilobytes/s
FTP_BW='600Kbit'

# Change this to your physical network device (or 'ppp0')
NIC='eth0'

# Change this to the ports you assigned for passive FTP
FTP_PORT_LOW="10000"
FTP_PORT_HIGH="20000"

tc qdisc add dev "$NIC" root handle 1: cbq \
bandwidth "$REAL_BW" avpkt 1000

tc class add dev "$NIC" parent 1: classid 1:1 cbq bandwidth "$REAL_BW" \
rate "$REAL_BW" maxburst 5 avpkt 1000

tc class add dev "$NIC" parent 1:1 classid 1:10 cbq \
bandwidth "$REAL_BW" rate "$FTP_BW" maxburst 5 avpkt 1000 bounded

tc qdisc add dev "$NIC" parent 1:10 sfq quantum 1514b

tc filter add dev "$NIC" parent 1: protocol ip handle 1 fw flowid 1:10

iptables -t mangle -A OUTPUT -p tcp --sport 20:21 -j MARK --set-mark 1

iptables -t mangle -A OUTPUT -p tcp \
--sport "$FTP_PORT_LOW":"$FTP_PORT_HIGH" -j MARK --set-mark 1

Nel mio caso specifico, ho forzato il mio server ftp (pureftpd) ad utilizzare come porte in uscita un range che va dalla porta 10000 alla 20000 (questo lo si fa lanciando pureftpd con il parametro -p 10000:20000 oppure modificando direttamente il file di configurazione),  e su questo range ho effettuato lo shaping di banda, bloccandola di fatto a 600Kbit/s, circa 80KByte/s.

Evito di commentare lo script in quanto è già stato fatto in inglese.

Tratto da: http://download.pureftpd.org/pub/pure-ftpd/doc/FAQ

Saluti

Matteo

posted in Internet, Matteo, file sharing, firewall, howto, iptables, kernel, networking, server, servizi | 1 Comment

27th gennaio 2009

Virtual Users And Domains With Postfix, Courier, MySQL (Ubuntu 8.04 LTS 64bit)

Questa guida vuole essere una quick reference per installare un server di posta con antispam e gestione relativamente semplice di utenti e domini, tramite ubuntu 8.04 TLS 64bit.

Le feature principali sono:

- SMTP-AUTH e TLS

- password encrypted

- Amavisd, SpamAssassin e ClamAV

Read the rest of this entry »

posted in DNS, Domain Name System, Postfix, Ubuntu, apache, cyrus, hosting, howto, imap, mail, mysql, pop3, posta, server, servizi, sicurezza, smtp, virtualhost, web, webserver | 3 Comments

18th gennaio 2009

Team viewer : la risposta moderna ai vari VNC

Avete mai voluto dare assistenza a qualcuno che aveva un problema con il pc? Problema che avreste potuto risolvere in approssimativamente 5 minuti se foste stati li in loco davanti alla macchina?

La risposta di alcuni potrebbe essere “si certo basta installare un vnc”, però se non è già stato installato precedentemente, configurato opportunamente firewall e router e giochini simili, tutto questo è assai irrealizzabile.

Ecco la soluzione, si chiama TeamViewer, è un prodotto free se non utilizzato per fare business (se sperate di usarlo in azienda, basta pagare un piccolo obolo e siete liberi di usarlo anche li).

Funziona in un modo molto semplice, le due persone interessate scaricano il programma sui loro client e lo installano.

Una volta lanciato verrà generato un ID e una Password, ora non vi basterà che comunicare questi dati all’altro interlocutore per potergli permettere di poter amministrare il vostro pc da remoto, come se tutti i lavori di configurazione o simi per una vpn o un vnc fosserò già stati fatti.

E’ inoltre possibile registrarsi al sito gratuitamente per poter avere un itnerefaccia di amministrazione per controllare vari client, suddividerli per cliente o per gruppi e potere gestire al meglio la vostra assistenza.

Il programma presenta 4 aspetti importanti, permette infatti di:

- Chiedere supoprto remoto

- Fare “vedere” il proprio desktop (quindi senza dare possibilità all’altro di modificare qualcosa)

- Trasferire file

- Creare una VPN

Tutto il sistema penso funzioni tirando su delle vpn, bypassando in questo modo ogni eventuale sistema di sicurezza o blocco dovuto ai vari NAT o router del caso.

Al momento ho fatto alcune prove anche fra sistemi eterogenei (Windows e Mac funziona alla grande), solo in casi MOLTO particolari ha fatto cilecca.

L’unica pecca è che per ora è disponibile solo per Mac e Windows (gli utenti Linux lavorano via shell, quindi penso che non lo faranno mai), per il resto può tornare utile in moltissime situazioni,

Saluti
Matteo

posted in file sharing, howto, linux, mac, networking, openvpn, vpn | 5 Comments

7th gennaio 2009

Abilitare connessioni remote su mysql

Può capitare a volte che sia necessario connettersi a mysql da remoto, pensiamo ad esempio a un sistema in cui il webserver e il server sql risiedano su due macchine differenti.

Dobbiamo quindi permettere al webserver di connettersi in remoto (o anche all’interno della stessa LAN), al server di mysql, per far questo dobbiamo editare il file my.cnf di mysql.

Il sistema che ho utilizzato è ubuntu server 8.04. Ipotizziamo di dover abilitare le connessioni per il nostro server, la macchina che hosta il servizio di mysql avrà indirizzo ip 172.16.46.251.

Editiamo il file

nano /etc/mysql/my.cnf

a questo punto cerchiamo la riga contentente

bind-address            = 127.0.0.1

e sostiuiamola con

bind-address            = 172.16.46.251

ed il gioco è fatto, non abbiamo fatto altro che cambiare il bind del servizio in modo che si mettesse in ascolto sull’ip pubblico invece che solo sul localhost.

Ricordate che dovete anche modificare i permessi di accesso sui database, in quanto sui database già creati l’accesso è consentito solamente da 127.0.0.1.

Se per ipotesi volete permettere connessioni remote dall’ip 172.16.46.250 sul database ‘mysql’ con l’utente root, dovrete eseguire i seguenti comandi

root@localhost #  mysql

mysql > use mysql;

mysql> update db set Host='172.16.46.250' where Db='mysql';

mysql> update user set Host='172.16.46.250' where user='root';

mysql> flush privileges;

Ora dovreste potervi connettere in remoto da mysql, vi ricordo inoltre che se volete usare phpmyadmin dovrete ricordarvi di modificare l’indirizzo ip del server direttametne dal file di configurazione, cambiando quindi l’ip anche li da 127.0.0.1 all’ip che vi interessa, nello specifico del nostro esempio 172.16.46.251.

Saluti

Matteo

posted in apache, linux, mysql, web | 9 Comments

7th ottobre 2008

Virtualizzazione: come convertire la vostra linux box e importarla su vmware esx server

Salve a tutti oggi ci occupiamo di un problema, dal mio punto di vista molto interessante: come convertire il proprio server linux in una virtual machine e importarla sul nostro vmware esx server.

Pre-requisiti di questo articolo sono una buona conoscenza dei sistemi linux, conoscenze di base di virtualizzazione, disponibilità si un esx server già installato.

Per prima cosa avviamo la macchina linux con un cd di avvio (slackware, knoppix o cosa preferite), e assicuriamoci di avere un hard disk (interno o esterno) per poter creare l’immagine del nostro disco, che utilizzeremo successivamente per la conversione.

Una volta avviata la shell di emergenza ci accingiamo a creare la nostra immagine tramite il comando dd, ipotizzando che il nostro disco fisico dove è installato linux sia /dev/hda e che l’immagine la metteremo nella cartella /mnt/sda1 (ovviamente dopo aver montato il disco esterno tramite appositi comandi) procediamo come segue:

# mkdir /mnt/sda1

# mount /dev/sda1 /mnt/sda1

# dd if=/dev/hda conv=sync,noerror bs=64K > /mnt/sda1/hda.img

Avremo a questo punto un immagine perfetta del nostro disco nel file /mnt/sda1/hda.img, che sarà la base che useremo per la nostra conversione.

Scarichiamo ora sul nostro client il programma LiveView, che ci permetterà di creare una VM a partire dall’immagine che gli forniremo.

Tale programma è talmente facile da usare che evito di spiegarvi come fare, il frontend parla da solo.

A questo punto il gioco è fatto: abbiamo la VM che funziona perfettamente vmware server, ora tramite vmware converter (basta anche solo la versione free non l’enterprise), possiamo importare la macchina creata tramite LifeView direttaente sul nostro esx server, scegliendo opportunamente le informazioni che ci vengono chieste dal converter.

ATTENZIONE!!!!!: una volta avviata la macchina su esx, fate attenzione che probabilmente alcuni device saranno cambiati (es: i dischi saranno diventati /dev/sda mentre prima erano /dev/hda, dovrete quindi entrare in rescue mode anche sulla macchina virtualizzate e fixare il dovuto, solitamente /etc/fstab, /etc/mtab e /etc/lilo.conf), per il resto non ho avuto altri problemi.

Saluti

Matteo

posted in Matteo, howto, linux, server, virtualizzazione, vmware | 0 Comments

22nd agosto 2008

Ancora Squid: SquidGuard

Alcuni articoli fa ho parlato di come configurare squid e come implementare un minimo sistema di autenticazione.

Vedremo ora come integrare SquidGuard, nel nostro proxy.

Innannzitutto che cos’è SquidGuard? E’ un plugin per Squid che permette di effettuare filtri, redirect e controlli di accesso in maniera semplice e portabile da un sistema all’altro. Vediamo ora come installarlo.

Installazione

Per prima cosa procuriamoci i sorgenti

# wget http://www.squidguard.org/Downloads/squidGuard-1.3.tar.gz
# cd squidGuard-1.3
# tar -zxvf squidGuard-1.3.tar.gz
#./configure
# make
# make install

a questo punto se non ci sono stati problemi nella compilazione dovreste avere squidguard installato correttamente nel vostro sistema, per eventuali installazione particolari fate riferimento come sempre a ./configure –help

Installiamo ora le blacklist dei siti che vogliamo rendere inaccessibili ai nostri utenti. Una black list è una semplice lista di siti e url, ognuno scritto su una riga. Se non ne avete a disposizione potrete trovarne moltissime disponibili in rete.

Potete trovare alcune blacklist direttamente al link http://www.squidguard.org/blacklists.html scegliete quale vi risulta più congeniale.

Prendiamo per esempio le blacklist presenti all’indirizzo http://squidguard.mesd.k12.or.us/blacklists.tgz completamente free e scompattiamole nella directory che conterrà le blacklist del nostro SquidGuard

# wget http://squidguard.mesd.k12.or.us/blacklists.tgz
# mkdir /usr/local/squidGuard/db
# mkdir /usr/local/squidGuard/logs
# mkdir /usr/local/squidGuard/db/adult/
# cp blacklists.tgz /usr/local/squidGuard/db/adult
# cd /usr/local/squidGuard/db/adult
# gzip -d blacklists.tgz
# tar xfv blacklists.tar

Configurazione di base

Spostiamoci ora nella cartella /usr/local/squidGuard per poter editare il nostro file di configurazione

cd /usr/local/squidGuard
vim /usr/local/squidGuard.conf

Il nostro file di fongiurazione è qualcosa di molto simile a quello di seguito riportato

dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs

# Definisco i periodi in cui è consentita la navigazione
# Permesso accesso solo dalle 7.30 alle 21.00 dal lunedì al sabato

time notworktime {
weekly * 21:00-07:00
weekly sunday 00:00-24:00
}

src all {
ip 0.0.0.0-255.255.255.255
}

dest adult {
domainlist adult/domains
urllist adult/urls
log pornaccesses
}

acl {
all within notworktime {
pass none
redirect http://10.1.241.254/ERR_NO_TIME.html
}
else {
pass !adult all
redirect http://10.1.241.254/ERR_NO_POVNO.html
}
default {
pass none
redirect http://10.1.241.254/block.html
}
}

Questo file di configurazione vi permette di effettuare un filtro sui siti basato sulla blacklist che avete fornito, e di bloccare il traffico passate dalle 21.00 alle 7.00 del mattino. Inoltre in base alla violazione si viene rediretti su di una pagina personalizzata particolare.

Inizializziamo ora i database. Spostiamoci nella cartella dove abbiamo messo la nostra blacklist, e digitiamo il comando

squidGuard -C all
chown -R nobody:nogroup /usr/local/squidGuard/db/*
chown -R nobody:nogroup /usr/local/squidGuard/logs/*

Verifica della configurazione

Ora per testare che la nostra configurazione funzioni correttamente digitiamo

echo "http://www.sex.com 10.0.0.1/ - - GET" | squidGuard -c /usr/local/squidGuard/squidGuard.conf -d

Se tutto è corretto dovreste vedere visualizzato l’url che ha bloccato il sito, invece se il sito non viene bloccato dovreste vedere qualcosa tipo:

2007-03-25 16:18:05 [30042] squidGuard ready for requests (1174832285.085)

2007-03-25 16:18:05 [30042] squidGuard stopped (1174832285.089)

Inserimento in squid.conf

Ora per attivare lo squid affinchè passi il suo output a SquidGuard non ci resta altro da fare che attivarlo inserendo nel nostro file di configurazione di squid (solitamente /etc/squid/squid.conf) la seguente riga.

redirect_program /usr/local/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf

posted in Uncategorized | 4 Comments

  • Etichette

  • Statistiche