Reverse Proxy
Configurazione tipo per un reverse proxy SSL basato su Gentoo Linux e apache2
TimeOut 30 SetOutputFilter DEFLATE AddOutputFilterByType INCLUDES application/pdf AddEncoding x-gzip .gz AddType application/x-javascript .gz AddType application/javascript .gz BrowserMatch Firefox/1\.0\.[0-9] no-gzip # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html BrowserMatch "MSIE 6" no-gzip gzip-only-text/html SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(htm|html|js|jsp|asp|php|do)$ !no-gzip SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(htm|html|js|jsp|asp|php|do)$ !no-gzip SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary #SetEnvIfNoCase Request_URI \.* no-gzip dont-vary #SetEnvIfNoCase Request_URI \.jsp$ !no-gzip !dont-vary #SetEnvIfNoCase Request_URI \.htm$ !no-gzip !dont-vary #SetEnvIfNoCase Request_URI \.html$ !no-gzip !dont-vary #SetEnvIfNoCase Request_URI \.asp$ !no-gzip !dont-vary DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio DeflateWindowSize 15 DeflateMemLevel 9 DeflateCompressionLevel 9 ServerName nome_server LoadModule proxy_module modules/mod_proxy.so LoadModule ssl_module modules/mod_ssl.so SetEnvIf User-Agent ".*MSIE.*" ssl-unclean-shutdown SSLSessionCache shm:/var/cache/apache2/ssl_scache(4096000) SSLSessionCacheTimeout 600 LogLevel error ErrorLog /var/log/apache2/ssl_error_log Listen 80 Options -All -Multiviews AllowOverride None Order allow,deny Allow from all DocumentRoot /home/domini-web/locale/www # ServerName nome_server # ServerAlias alias_server DirectoryIndex index.shtml index.php index.php3 index.html ScriptAlias /cgi-bin/ /home/domini-web/locale/cgi-bin/ CustomLog /var/log/apache2/access_log combined AddHandler server-parsed shtml Options +Includes Options -Indexes -All -Multiviews +Includes AllowOverride None Order allow,deny Allow from all Include /etc/apache2/conf/*.conf
/etc/apache2/conf/server_A.conf
Listen 400 # RewriteEngine on #RewriteCond %{REQUEST_URI} !^/galileo/public/ #RewriteCond %{REQUEST_URI} !^/galileo/ #RewriteRule / /galileo/public/menu.faces [R,L] # direttive proxypass ------------------------------------------ ProxyPass / http://X.X.X.X:8888/ retry=0 ttl=120 timeout=120 ProxyPassReverse / http://X.X.X.X:8888/ # autenticazione server ------------------------------------------ SSLEngine On #128bit SSLCipherSuite RC4-SHA:RC4-MD5:HIGH:MEDIUM:!ADH:!DSS:!SSLv2:+3DES SSLHonorCipherOrder on # 40 bit #SSLCipherSuite ALL:!ADH:!EXPORT56:!EXPORT40:!SSLv2:!LOW SSLCertificateFile /etc/apache2/ssl/server.crt #SSLCertificateChainFile /etc/apache2/ssl/cert-new.verisign.pem #SSLCertificateChainFile /etc/apache2/ssl/cert.verisign.pem SSLCertificateChainFile /etc/apache2/ssl/intermediate_good.crt SSLCertificateKeyFile /etc/apache2/ssl/server.nopassword.key # autenticazione client ------------------------------------------ # accesso permesso solo in presenza di comunicazione almeno a 128bit ErrorDocument 403 http://www.tuo_sito.it/ ErrorDocument 404 http://www.tuo_sito.it/ #SSLCACertificateFile /etc/apache2/ssl/client/CAcert.chain #SSLCARevocationFile /etc/apache2/ssl/crl.pem #SSLVerifyClient none #SSLVerifyDepth 10 #SSLOptions +StdEnvVars ServerName www.tuo_sito.it #ServerAlias Y.Y.Y.Y ProxyRequests on ProxyVia on AddOutputFilterByType SUBSTITUTE text/html #Eventuale sostituzione del testo proxato #Substitute "s|test_da_sostituire|vuoto|i" # eventuale log verso syslog esterno #CustomLog "|/usr/bin/logger -t reverseproxy -n syslog " combined
Ulteriori personalizzazioni possono essere inserite riguardi a questi tre moduli:
mod_evasive
mod_cband
mod_security
- Pubblicato il Sistemistica, Tips & Tricks
LTSP Ubuntu Remote Desktop con PC di Recupero
Per conto di Azalea Cooperativa Sociale, data la peculiarità dell’attività svolta e data la necessità di rinnovare il parco macchine esistente, abbiamo valutato la possibilità di migrare l’intero parco macchine aziendale verso soluzioni GNU/Linux.
Abbiamo scelto LTSP su Ubuntu per l’implementazione in server virtualizzati.
Grazie all’acquisto presso il Banco Informatico di 40 PC ricondizionati IBM Think Centre A52 con Pentium4, e 512Mb di RAM, Monitor 15″, Hard disk 40Gb e Licenza Windows XP Pro.
E’ stato possibile uniformare la dotazione software aziendale standardizzandola con Ubuntu 12.04 LTSP, Libreoffice, Browser Firefox, etc.
Un unico server Ubuntu, virtualizzato, è adibito alla gestione dell’intero parco utenti mentre per l’autenticazione è stato usato il Dominio Windows 2003 esistente.
Sullo stesso server sono stati installati i software necessari alla gestione delle stampe di numerose multifunzione Samsung. Il software gira nativamente in ambiente Linux e gestisce l’accaounting.
Ora gran parte degli utenti opera in ambiente uniforme, i dati sono memorizzati su due NAS in join al dominio uni dei quali tramite il filesystem ZFS permette la compressione in realtime dei files permettendo grandi economie di spazio occupato.
Le sessioni utente sono utilizzabili in rete locale ed in rete geografica su VPN tramite l’utilizzo della compressione NX per cui anche dalle sedi remote della Cooperativa è possibile utilizzare il proprio desktop, lo storage e le stampanti della sede.
LINK al progetto sul sito LTSP.org
- Pubblicato il Sistemistica
IPSET su Debian/PROXMOX
IPSET su Debian/PROXMOX
L’installazione su Debian/PROXMOX di ipset ha presentato alcune incongruenze dovute a diverse versioni tra tools e moduli del kernel.
Non ho trovato sistema migliore di quello che segue.
apt-get install module-assistant ipset-source apt-get install pve-headers-2.6.32-19-pve cd /usr/src tar vxfj ipset.tar.bz2 cd modules/ m-a a-i ipset
Per non so quale motivo la versione di IPSET nel kernel e quella così compilata differiscono e la versione del tool di gestione fa riferimento ad una versione vecchia,
Per utilizzarla comunque è necessario configurare il depmod per utilizzare il modulo presente nella dir extra appena generato.
Quindi in /etc/depmod.d/ipset.conf si inserisce:
override ip_set * extra override ip_set * extra/ipset
- Pubblicato il Sistemistica, Tips & Tricks
ZFS su Ubuntu/Debian
Tips per l’installazione di ZFS su Debian Wheezy o Ubuntu
E’ possibile installare il filesystem ZFS su qualsiasi macchina Ubuntu/Debian.
Su ubuntu:
apt-get install python-software-properties (se necessario) add-apt-repository ppa:zfs-native/stable apt-get update apt-get install ubuntu-zfs
Vengono installati i seguenti pacchetti.
# apt-get install ubuntu-zfs Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: binutils cpp-4.3 dkms fakeroot gcc gcc-4.3 gcc-4.3-base gcc-4.4 libc-dev-bin libc6-dev libgomp1 libnvpair1 libuutil1 libzfs1 libzpool1 linux-headers-2.6-amd64 linux-headers-2.6.32-5-amd64 linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev lsb-release make manpages-dev menu spl spl-dkms zfs-dkms zfsutils Suggested packages: binutils-doc gcc-4.3-locales gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbg libmudflap0-dbg gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc gcc-4.4-locales libcloog-ppl0 libppl-c2 libppl7 glibc-doc lsb make-doc menu-l10n gksu kdebase-bin kdebase-runtime ktsuss sux zfs-auto-snapshot samba-common-bin nfs-kernel-server zfs-initramfs The following NEW packages will be installed: binutils cpp-4.3 dkms fakeroot gcc gcc-4.3 gcc-4.3-base gcc-4.4 libc-dev-bin libc6-dev libgomp1 libnvpair1 libuutil1 libzfs1 libzpool1 linux-headers-2.6-amd64 linux-headers-2.6.32-5-amd64 linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev lsb-release make manpages-dev menu spl spl-dkms ubuntu-zfs zfs-dkms zfsutils 0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded. Need to get 27.6 MB of archives. After this operation, 95.3 MB of additional disk space will be used.
Su debian wheezy:
su - wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_3%7Ewheezy_all.deb dpkg -i zfsonlinux_3~wheezy_all.deb apt-get update apt-get install debian-zfs
Vengono installati i seguenti pacchetti.
# apt-get install debian-zfs Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'debian-zfs' for regex 'debian.zfs' The following extra packages will be installed: binutils build-essential cpp-4.6 dkms dpkg-dev fakeroot g++ g++-4.7 gcc gcc-4.6 gcc-4.6-base gcc-4.7 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libfile-fcntllock-perl libgomp1 libitm1 libnvpair1 libstdc++6-4.7-dev libuutil1 libzfs1 libzpool1 linux-headers-3.2.0-4-amd64 linux-headers-3.2.0-4-common linux-headers-amd64 linux-kbuild-3.2 linux-libc-dev make manpages-dev menu module-init-tools spl spl-dkms zfs-dkms zfsutils Suggested packages: binutils-doc gcc-4.6-locales zfs-auto-snapshot debian-keyring g++-multilib g++-4.7-multilib gcc-4.7-doc libstdc++6-4.7-dbg gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.6-multilib libmudflap0-4.6-dev gcc-4.6-doc libgcc1-dbg libgomp1-dbg libquadmath0-dbg libmudflap0-dbg binutils-gold gcc-4.7-multilib libmudflap0-4.7-dev gcc-4.7-locales libitm1-dbg libcloog-ppl0 libppl-c2 libppl7 glibc-doc libstdc++6-4.7-doc make-doc menu-l10n gksu kdebase-bin kdebase-runtime ktsuss sux samba-common-bin nfs-kernel-server zfs-initramfs Recommended packages: linux-headers The following NEW packages will be installed: binutils build-essential cpp-4.6 debian-zfs dkms dpkg-dev fakeroot g++ g++-4.7 gcc gcc-4.6 gcc-4.6-base gcc-4.7 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libfile-fcntllock-perl libgomp1 libitm1 libnvpair1 libstdc++6-4.7-dev libuutil1 libzfs1 libzpool1 linux-headers-3.2.0-4-amd64 linux-headers-3.2.0-4-common linux-headers-amd64 linux-kbuild-3.2 linux-libc-dev make manpages-dev menu module-init-tools spl spl-dkms zfs-dkms zfsutils 0 upgraded, 40 newly installed, 0 to remove and 0 not upgraded. Need to get 33.5 MB/52.1 MB of archives.
- Pubblicato il Sistemistica, Tips & Tricks
PROXMOX RAID Setup
Tips per l’installazione di PROXMOX con RAID software
Al momento del boot da CD è possibile stabilire la dimensione del disco e dello swap, questo è utile nel caso di setup su disci molto grandi o su dischi diversi da quelli che ospiteranno definitivamente il sistema.
linux hdsize=200 maxroot=25 swapsize=8
A questo punto si effettua il setup sul primo dei dischi disponibili, di avvia e si aggiorna con i conseguenti reboot.
Quando il setup è completato si può seguire il precedente articolo “PROXMOX Tips” per poi passare alla migrazione del sistema su un RAID software in standard Linux (mdadm).
Si duplica il partizionamento dei dischi che faranno parte del RAID10
sfdisk -d /dev/sda | sfdisk -f /dev/sdb sfdisk -d /dev/sda | sfdisk -f /dev/sdc sfdisk -d /dev/sda | sfdisk -f /dev/sdd
si setta la tipologia di partizione in fd
sfdisk -c /dev/sdb 1 fd sfdisk -c /dev/sdb 2 fd sfdisk -c /dev/sdc 1 fd sfdisk -c /dev/sdc 2 fd sfdisk -c /dev/sdd 1 fd sfdisk -c /dev/sdd 2 fd
E si creano i device RAID10 senza perdere tempo nella sincronizzazione
mdadm --create --level=1 --raid-devices=4 --chunk=128 --metadata=0.9 /dev/md126 missing /dev/sdb1 /dev/sdc1 /dev/sdd1 --assume-clean mdadm --create --level=10 --raid-devices=4 --chunk=128 /dev/md127 missing /dev/sdb2 /dev/sdc2/dev/sdd2 --assume-clean
Formattiamo /dev/md126, che diventerà la /boot, e copiamo il contenuto di /boo
mkfs.ext3 /dev/md126 -Lboot mkdir /mnt/tmp mount /dev/md126 /mnt/tmp rsync -av /boot /mnt/tmp/ umount /mnt/tmp
Sostituire in /etc/fstab la voce UUID=… con LABEL=boot
LABEL=boot /boot ext3 defaults 0 1
A questo punto tentiamo un reboot.
Appena ripartito il sistema si esegue in sequenza…
echo 'GRUB_DISABLE_LINUX_UUID=true' >> /etc/default/grub echo 'GRUB_PRELOAD_MODULES="raid dmraid"' >> /etc/default/grub echo raid1 >> /etc/modules echo raid1 >> /etc/initramfs-tools/modules grub-install /dev/sda grub-install /dev/sdb grub-install /dev/sdc grub-install /dev/sdd grub-install /dev/md126 update-grub update-initramfs -u
Uniformiamo sda alla configurazione in RAID10 e agganciamola al RAID
sfdisk -c /dev/sda 1 fd mdadm --add /dev/md126 /dev/sda1
Terminata la sincronizzazione si può reboottare.
Ripartita la macchina possiamo sportare il contenitore LVM.
pvcreate /dev/md127 vgextend pve /dev/md127 pvmove /dev/sda2 /dev/md127 vgreduce pve /dev/sda2 pvremove /dev/sda2 sfdisk -c /dev/sda 2 fd mdadm --add /dev/md127 /dev/sda2
Si attende la sincronizzazione e si riavvia la macchina ed il sistema si trova configurato su un sottosistema dischi affidabile e veloce.
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione
PROXMOX tips
Tips per la personalizzazione di PROXMOX
Al momento del boot da CD è possibile stabilire la dimensione del disco e dello swap, questo è utile nel caso di setup su disci molto grandi o su dischi diversi da quelli che ospiteranno definitivamente il sistema.
Basta digitare il seguente comando.
linux hdsize=200 maxroot=25 swapsize=8
Pacchetti da installare preliminarmente
apt-get install acpid vim mdadm dbench smartmontools irqbalance iotop tcpdump htop bmon
per la personalizzazione del prompt della bash usiamo questo, basta copiarlo in un file in /etc/bash_completion.d/
echo -ne "\033]0; ${USER}@${HOSTNAME} +${SHLVL} @${SSH_TTY/\/dev\/} - `uptime` \007" declare -x PROMPT_COMMAND="echo -en \"\\033[m\\033[38;5;2m\"\$(( \`sed -n \"s/MemFree:[\\t ]\\+\\([0-9]\\+\\) kB/\\1/p\" /proc/meminfo\`/1024))\"\\033[38;5;22m/\"\$((\`sed -n \"s/MemTotal:[\\t ]\\+\\([0-9]\\+\\) kB/\\1/Ip\" /proc/meminfo\`/1024 ))MB\"\\t\\033[m\\033[38;5;55m\$(< /proc/loadavg)\\033[m\"" declare -x PS1="\\[\\e[m\\n\\e[1;30m\\][\$\$:\$PPID \\j:\\!\\[\\e[1;30m\\]]\\[\\e[0;36m\\] \\T \\d \\[\\e[1;30m\\][\\[\\e[1;34m\\]\\u@\\H\\[\\e[1;30m\\]:\\[\\e[0;37m\\]\${SSH_TTY} \\[\\e[0;32m\\]+\${SHLVL}\\[\\e[1;30m\\]] \\[\\e[1;37m\\]\\w\\[\\e[0;37m\\] \\n(\$SHLVL:\\!)\\\$ "
mentre per il .bashrc
export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -alh' alias ll='ls $LS_OPTIONS -alht' alias l='ls $LS_OPTIONS -l' alias ..='cd ..' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ports='netstat -tulanp' alias pstree="pstree -G" alias t="tail -f /var/log/messages"
Su di un HP ML310eGen8, cpu Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz, con quattro dischi SATA in RAID10 otteniamo con pveperf
# pveperf CPU BOGOMIPS: 24745.92 REGEX/SECOND: 1450123 HD SIZE: 19.69 GB (/dev/mapper/pve-root) BUFFERED READS: 262.38 MB/sec AVERAGE SEEK TIME: 7.53 ms FSYNCS/SECOND: 1470.62 DNS EXT: 54.63 ms DNS INT: 62.04 ms (netlite.it)
Ottimizzazione della gestione dell’I/O da inserire in /etc/rc.conf o /etc/rc.local
#!/bin/bash # # rc.local echo 0 > /proc/sys/kernel/hung_task_timeout_secs echo 0 > /proc/sys/vm/swappiness DISKS=$(find /sys/block/ -iname "sd*") for DISK in $DISKS; do echo "Disk $DISK..." echo 0 > $DISK/queue/add_random; echo 0 > $DISK/queue/rq_affinity; #echo cfq > $DISK/queue/scheduler; echo noop > $DISK/queue/scheduler; #cat $DISK/queue/scheduler; done true > /etc/motd if [ -e /etc/lsb-release ] then grep DISTRIB_DESCRIPTION /etc/lsb-release | sed 's/^DISTRIB_DESCRIPTION="\(.*\)"$/\1/' > /etc/motd fi uname -a >> /etc/motd echo >> /etc/motd echo "server : `cat /root/.mdg 2>/dev/null`" >> /etc/motd echo "ip : `cat /etc/network/interfaces | grep "address" | head -n 1 | cut -f 3 -d " "`" >> /etc/motd echo "hostname : `hostname`" >> /etc/motd echo >> /etc/motd /bin/cat /etc/motd > /etc/issue
Scaricherei QUI i drivers più recenti per i sistemi Windows
cd /var/lib/vz/template/iso/ wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/virtio-win-0.1-74.iso
Aggiungerei in /etc/default/grub l’elevator più performante ed aggiornerei il grub2
GRUB_CMDLINE_LINUX_DEFAULT="quiet elevator=deadline" update-grub
In alcune migrazioni (Centos 5.X) i drivers virtio non sono presenti nell’initrd quindi il sistema va in crash al momento del boot per la mancanza della root. In seguente comando rigenera l’initrd con i moduli mancanti.
mkinitrd --with virtio_net --with virtio_pci --with virtio_blk -f /boot/initrd-$(uname -r).img $(uname -r)
Dalla versione 3.1 di Proxmox è presente un fastidioso alert presentato ad ogni login, pur comprendendone le ragioni trovo fastidioso che mi venga ricordato ogni volta.
Dopo aver letto l’articolo LINK ho scritto questo comando per evitare che l’alert appaia.
Ad ogni aggiornamento potrebbe essere necessario riapplicarlo o modificarlo leggermente (grazie Federico per la segnalazione).
LINEA=$(cat -n /usr/share/pve-manager/ext4/pvemanagerlib.js | grep "if (data.status !== 'Active') {" | awk '{print $1}') sed -i "${LINEA}s/.*/if (false) {/" /usr/share/pve-manager/ext4/pvemanagerlib.js
A volte può essere utile limitare la velocità di lettura per i backup di proxmox (vzdump) al fine di non saturare eventuali storage condivisi o non sovraccaricare l’hardware locale.
Dopo aver letto l’ articolo LINK riporto questa modifica al file /etc/vzdump.conf che limita a 40Mb/sec la lettura dai dispositivi locali.
bwlimit 40000
Backup differenziali con proxmox (vzdump).
Ho trovato QUESTO interessante articolo.
Quali drivers installare per i diversi sistemi operativi LINK.
In caso i componenti di un Cluster Proxmox si isolino le macchine virtuali continueranno a funzionare correttamente ma dall’interfaccia web non sarà più possibile amministrare i nodi remoti e non sarà possibile creare o eliminare VM.
Considerate di disabilitare l’alta affidabilità (HA) prima di procedere.
Per risolvere il problema è sufficiente eseguire i seguenti comandi su tutti i nodi in sequenza, senza un particolare ordine:
/etc/init.d/pve-cluster restart /etc/init.d/cman restart /etc/init.d/pvedaemon restart /etc/init.d/pvestatd restart /etc/init.d/pve-manager restart /etc/init.d/pve-cluster restart
Questo simula un riavvio dei nodi SENZA riavviare le VM.
Andrea Gagliardi – netlite.it
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione