2008 - Debian 4 - Xen domU - WWW system - apache2 + mod_security2 + mod_suphp + php5 + php5_suhosin
The Slovak original of this document: 2008 - Debian 4 - Xen domU - WWW system - apache2 + mod_security2 + mod_suphp + php5 + php5_suhosin (slovensky).
|=---------------------------------=[ XEN ]=-------------------------------=| +---------------------------------------------------------------------------+ | | | XEN-server domU (REAL SERVER HW) | | Debian 4.0 Etch | | WWW SYSTEM | | | +---------------------------------------------------------------------------+ |=-------------------------------=[ BH 2008 ]=-----------------------------=| The BASE system is what further virtual machines are built from.
1. Vytvorenie noveho virtualneho stroja
Creating the logical partitions for the new system
==================================================
# lvcreate -L 1.5G -n www-disk system_vhosts
# lvcreate -L 1G -n www-var system_vhosts
# lvcreate -L 1G -n www-varlog system_vhosts
# lvcreate -L 0.5G -n www-tmp system_vhosts
# lvcreate -L 2G -n www-usr system_vhosts
# lvcreate -L 0.5G -n www-swap system_vhosts
# mkswap /dev/system_vhosts/www-swap
Vytvorenie VM z base LVM particii (snapshots)
=============================================
# lvcreate -s -L 1.5G -n snap-base-disk /dev/system_vhosts/base-disk
# lvcreate -s -L 1G -n snap-base-var /dev/system_vhosts/base-var
# lvcreate -s -L 1G -n snap-base-varlog /dev/system_vhosts/base-varlog
# lvcreate -s -L 0.5G -n snap-base-tmp /dev/system_vhosts/base-tmp
# lvcreate -s -L 2G -n snap-base-usr /dev/system_vhosts/base-usr
# lvcreate -s -L 0.5G -n snap-base-swap /dev/system_vhosts/base-swap
# dd if=/dev/system_vhosts/snap-base-disk of=/dev/system_vhosts/www-disk bs=1024k // (1610612736 bytes (1.6 GB) copied, 50.4256 seconds, 31.9 MB/s)
# dd if=/dev/system_vhosts/snap-base-var of=/dev/system_vhosts/www-var bs=1024k // (1073741824 bytes (1.1 GB) copied, 33.2976 seconds, 32.2 MB/s)
# dd if=/dev/system_vhosts/snap-base-varlog of=/dev/system_vhosts/www-varlog bs=1024k // (1073741824 bytes (1.1 GB) copied, 33.5406 seconds, 32.0 MB/s)
# dd if=/dev/system_vhosts/snap-base-tmp of=/dev/system_vhosts/www-tmp bs=1024k // (536870912 bytes (537 MB) copied, 16.2542 seconds, 33.0 MB/s)
# dd if=/dev/system_vhosts/snap-base-usr of=/dev/system_vhosts/www-usr bs=1024k // (2147483648 bytes (2.1 GB) copied, 66.4581 seconds, 32.3 MB/s)
Config novovytvoreneho systemu
==============================
# cp /etc/xen/base.cfg /etc/xen/www.cfg
# nano /etc/xen/www.cfg
-----------------------
disk = [ 'phy:system_vhosts/www-disk,sda1,w', 'phy:system_vhosts/www-swap,sda2,w', 'phy:system_vhosts/www-var,sda3,w', 'phy:system_vhosts/www-varlog,sda4,w', 'phy:system_vhosts/www-tmp,sda5,w', 'phy:system_vhosts/www-usr,sda6,w' ]
name = 'www'
vif = [ 'ip=10.0.0.2' ]
Spustenie noveho systemu
========================
# xm create -c www.cfg
Konfiguracia domU - ldap
========================
# nano /etc/hostname
--------------------
www
# nano /etc/network/interfaces
------------------------------
auto eth0
iface eth0 inet static
address 10.0.0.2
gateway 10.0.0.254
netmask 255.0.0.0
-------------------------------2. Setting up the network (NAT-ed network)
----
dom0
----
# nano /etc/xen/xend-config.sxp
-------------------------------
(network-script network-nat)
(vif-script vif-nat)
Zapneme SNAT pre siet 10.0.0.0/255.0.0.0
----------------------------------------
# iptables -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -j SNAT --to-source 192.168.254.254
Presmenurejeme poziadavky na 192.168.254.254:22222 na 10.0.0.2:22
----------------------------------------------------------------------
# iptables -t nat -A PREROUTING -p tcp -s xx.xx.xx.xx -d 192.168.254.254 --dport 22222 -j DNAT --to-destination 10.0.0.2:223. Installing the web server (apache2) + mod_suphp + php5 + php5_suhosin + php5_mysql + php5_pgsql
Switch to the console of the web server
---------------------------------------
# xm console www
Mod_security
==============
Pridanie GPG kluca pre debian vyvojara mod_security (Alberto Gonzalez Iniesta)
# gpg --keyserver pgpkeys.pca.dfn.de --recv-keys C514AF8E4BA401C3
# gpg --fingerprint C514AF8E4BA401C3
# gpg --export -a C514AF8E4BA401C3 | apt-key add -
Pridanie zdroja balickov do sources.list pre mod_security
=========================================================
# nano /etc/apt/sources.list
----------------------------
# mod_security pre apache
deb http://etc.inittab.org/~agi/debian/libapache-mod-security2/ etch/
---------------------------------------------------------------------------------
Install apache2 + mod_php5 + mod_suphp + php5-suhosin + php5_mysql + php5_pgsql
---------------------------------------------------------------------------------
Apache2 + mod_php5 + mod_suphp + php5_mysql + php5_pgsql
========================================================
# apt-get install apache2
# apt-get install libapache2-mod-php5
# apt-get install libapache2-mod-suphp
# apt-get install php5-suhosin
# apt-get install php5-mysql
# apt-get install php5-pgsql
# apt-get install ssl-cert
# mkdir /etc/apache2/mod_security2
# mkdir /var/log/mod_security2
----------------
Config apache2
----------------
# nano /etc/apache2/ports.conf
------------------------------
Listen 10.0.0.2:80
Edit /usr/sbin/make-ssl-cert so that it issues certificates valid for ten years.
V Debiane Etch je chyba a defaultne generuje certifikaty na 30 dni co je dost malo.
======================================================================================
# nano /usr/sbin/make-ssl-cert (Zmenit riadok cislo 118 a doplnit tam '-days 3650' = 10 rokov)
-----------------------------------------------------------------------------------------------
# L.H. OFF -> openssl req -config $TMPFILE -new -x509 -nodes -out $output -keyout $output > /dev/null 2>&1
# L.H. UPDATE
openssl req -config $TMPFILE -new -x509 -nodes -days 3650 -out $output -keyout $output > /dev/null 2>&1
Create the directory for ssl
----------------------------
# mkdir /etc/apache2/ssl
# nano /etc/apache2/apache2.conf (Vypneme zobrazovanie niektorych citlivych informacii)
---------------------------------------------------------------------------------------
ServerTokens Prod
ServerSignature Off
# nano /etc/apache2/conf.d/charset (nastavime defaultny charset)
----------------------------------------------------------------
AddDefaultCharset WINDOWS-1250
-----------------------
Install mod-security2
-----------------------
# wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/etch/mod-security2-common_2.1.5-1etch1_all.deb
# wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/etch/libapache2-mod-security2_2.1.5-1etch1_i386.deb
# dpkg -i mod-security2-common_2.1.5-1etch1_all.deb
# dpkg -i libapache2-mod-security2_2.1.5-1etch1_i386.deb
----------------------
Config mod_security2
----------------------
# mkdir -p /chroot/apache2/tmp
# mkdir -p /chroot/apache2/var/run /chroot/apache2/var/www
# cd /etc/apache2/mod_security2
# wget http://www.modsecurity.org/download/modsecurity-core-rules_2.1-1.4.3.tar.gz
# tar -xzvf modsecurity-core-rules_2.1-1.4.3.tar.gz
# rm modsecurity-core-rules_2.1-1.4.3.tar.gz
# echo "Include /etc/apache2/mod_security2/*.conf" >> /etc/apache2/httpd.conf
# nano /etc/apache2/mod_security2/modsecurity_crs_10_config.conf
----------------------------------------------------------------
SecDebugLog /var/log/mod_security2/modsec_debug.log
SecAuditLog /var/log/mod_security2/modsec_audit.log
SecChrootDir /chroot/apache2
# nano /etc/init.d/apache2
--------------------------
In the function apache_stop(), comment everything out down to "PID=" and change that line to:
PID=`cat /chroot/apache2/var/run/apache2.pid`
# /etc/init.d/apache2 start
----------------------
Config php5
----------------------
# nano /etc/php5/apache2/php.ini
--------------------------------
safe_mode = On
safe_mode_allowed_env_vars = PHP_
open_basedir = /var/www/
expose_php = Off
display_errors = Off
log_errors = On
error_log = /var/log/php_error.log
register_globals = Off
magic_quotes_gpc = Off
file_uploads = Off
session.use_trans_sid = 0
disable_functions = proc_nice, proc_terminate, proc_get_status, proc_close, proc_open, ini_alter, dl, system, exec, pfsockopen, fsockopen, curl_init, curl_setopt, curl_exec, curl_close, leak, shell_exec, proc_open, syslog, link, readlink, symlink, error_log, ini_restore, openlog, passthru, socket_create, socket_write, shmop_close, shmop_delete, shmop_open, shmop_read, shmop_size, shmop_size
disable_classes = posix
allow_url_fopen = Off
allow_url_include = Off
max_execution_time = 30
max_input_time = 60
memory_limit = 8M
upload_max_filesize = 262144
upload_tmp_dir = /tmp
post_max_size = 262144
--------------------------------END->/etc/php5/apache2/php.ini
------------------
Config DOMENA1
------------------
Vytvorime tzv. self-signed certifikat
-------------------------------------
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/www.domena1.sk.pem
----------------
SK, Slovakia, Mesto, www.domena1.sk, web, www.domena1.sk, webmaster@domena1.sk
# nano /etc/apache2/sites-available/www.domena1.sk
--------------------------------------------------
<VirtualHost 10.0.0.2:80>
ServerAdmin webmaster@domena1.sk
ServerName www.domena1.sk
ServerAlias domena1.sk
DocumentRoot /var/www/www.domena1.sk
ServerSignature off
ErrorLog /var/log/apache2/www.domena1.sk-error.log
CustomLog /var/log/apache2/www.domena1.sk-access.log common
LogLevel warn
suPHP_Engine on
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
suPHP_ConfigPath /etc/php5/sites/www.domena1.sk
</VirtualHost>
!!! Este NIE !!!
<VirtualHost 10.0.0.2:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/www.domena1.sk.pem
ServerAdmin webmaster@domena1.sk
ServerSignature Off
ServerName www.domena1.sk
DocumentRoot /var/www/www.domena1.sk
ServerAdmin webmaster@domena1.sk
ErrorLog /var/log/apache2/www.domena1.sk-SSLerror_log
CustomLog /var/log/apache2/www.domena1.sk-SSLaccess_log common
LogLevel warn
suPHP_Engine on
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
suPHP_ConfigPath /etc/php5/sites/www.domena1.sk
</VirtualHost>
--------------------------------------------------END->/etc/apache2/sites-available/www.domena1.sk
Create the directory with the php configuration for www.domena1.sk
------------------------------------------------------------------
# mkdir -p /etc/php5/sites/www.domena1.sk
# cp /etc/php5/apache2/php.ini /etc/php5/sites/www.domena1.sk/
Upravime php konfig pre domenu www.domena1.sk
---------------------------------------------
# nano /etc/php5/sites/www.domena1.sk/php.ini
---------------------------------------------
open_basedir /var/www/www.domena1.sk
upload_tmp_dir /var/www/www.domena1.sk/tmp
error_log /var/log/apache2/www.domena1.sk-php_error.log
Create the tmp directory for the domain www.domena1.sk
------------------------------------------------------
# mkdir -p /var/www/www.domena1.sk/tmp
# chown www.domena1.sk:www.domena1.sk /var/www/www.domena1.sk/tmp
# chmod 777 /var/www/www.domena1.sk/tmp
Zapneme site s nazvom www.domena1.sk
------------------------------------
# a2ensite www.domena1.sk
Zapneme modul ssl
-----------------
# a2enmod ssl
----------------------
Config php5-suhosin
----------------------