<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hodžův blog &#187; Apache</title>
	<atom:link href="http://hodza.net/category/linux/sluzby/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://hodza.net</link>
	<description>I přestože jsem paranoidní neznamená, že mě nedostanou...</description>
	<lastBuildDate>Sat, 05 May 2012 08:18:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HowTo install Oracle Instant Client and PHP OCI8 module under Debian Squueze (Ubuntu) 64bit</title>
		<link>http://hodza.net/2011/08/01/howto-install-oracle-instant-client-and-php-oci8-module-under-debian-squueze-ubuntu-64bit/</link>
		<comments>http://hodza.net/2011/08/01/howto-install-oracle-instant-client-and-php-oci8-module-under-debian-squueze-ubuntu-64bit/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 12:22:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Scriptíky]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=2099</guid>
		<description><![CDATA[1) Download the Basic and the SDK packages from http://www.oracle.com (registration needed). # mkdir -p /opt/oracle/instantclient # cd /opt/oracle/instantclient # wget http://download.oracle.com/otn/linux/instantclient/112020/instantclient-basic-linux-x86-64-11.2.0.2.0.zip # wget http://download.oracle.com/otn/linux/instantclient/112020/instantclient-sdk-linux-x86-64-11.2.0.2.0.zip" 2) Unzip files, move it in correct location and delete unnecessary archives unzip instantclient-basic-linux-x86-64-11.2.0.2.0.zip unzip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip mv instantclient_11_2/* ./ rm -r instantclient_11_2/ instantclient-basic-linux-x86-64-11.2.0.2.0.zip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip 3) Craate missing simlinks ln -s [...]]]></description>
			<content:encoded><![CDATA[<p>1) Download the Basic and the SDK packages from http://www.oracle.com (registration needed).<br />
<code># mkdir -p /opt/oracle/instantclient<br />
# cd /opt/oracle/instantclient<br />
# wget http://download.oracle.com/otn/linux/instantclient/112020/instantclient-basic-linux-x86-64-11.2.0.2.0.zip<br />
# wget http://download.oracle.com/otn/linux/instantclient/112020/instantclient-sdk-linux-x86-64-11.2.0.2.0.zip"<br />
</code><br />
<span id="more-2099"></span><br />
2) Unzip files, move it in correct location and delete unnecessary archives<br />
<code>unzip instantclient-basic-linux-x86-64-11.2.0.2.0.zip<br />
unzip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip<br />
mv instantclient_11_2/* ./<br />
rm -r instantclient_11_2/ instantclient-basic-linux-x86-64-11.2.0.2.0.zip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip<br />
</code></p>
<p>3) Craate missing simlinks<br />
<code>ln -s libclntsh.so.10.1 libclntsh.so<br />
ln -s libocci.so.10.1 libocci.so</code></p>
<p>4) Install packages<br />
<code># aptitude install build-essential php5-dev php-pear libaio1 </code><br />
<code># pecl install oci8 (on question reply: instantclient,/opt/oracle/instantclient)</code></p>
<p>5) Enable the oci8 module in the php.ini<br />
<code># vi /etc/php5/apache2/php.ini<br />
extension=oci8.so (put this line after the examples starting with ;Dynamic Extension).</code><br />
<code># vi /etc/php5E/cli/php.ini<br />
extension=oci8.so (put this line after the examples starting with ;Dynamic Extension).</code></p>
<p>6) Restart Apache Web server<br />
<code>/etc/init.d/apache2 restart</code></p>
<p>Now stop and start Apache. You should see the oci8 module in the output of phpinfo().</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2011/08/01/howto-install-oracle-instant-client-and-php-oci8-module-under-debian-squueze-ubuntu-64bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generování Self-Signed Certifikátu skriptem</title>
		<link>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/</link>
		<comments>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 07:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scriptíky]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=245</guid>
		<description><![CDATA[Už mě to nebaví pořád psát, takže: #!/bin/bash SERVER_NAME=$1 OPENSSL_PATH=/usr/bin/openssl $OPENSSL_PATH genrsa -des3 -out $SERVER_NAME.key 1024 $OPENSSL_PATH genrsa -out $SERVER_NAME.key 1024 $OPENSSL_PATH rsa -in $SERVER_NAME.key -out $SERVER_NAME.pem $OPENSSL_PATH req -new -key $SERVER_NAME.pem -out $SERVER_NAME.csr $OPENSSL_PATH x509 -req -days 365 -in $SERVER_NAME.csr -signkey $SERVER_NAME.pem -out $SERVER_NAME.crt]]></description>
			<content:encoded><![CDATA[<p>Už mě to nebaví pořád psát, takže:</p>
<p><code>#!/bin/bash<br />
SERVER_NAME=$1<br />
OPENSSL_PATH=/usr/bin/openssl<br />
$OPENSSL_PATH genrsa -des3 -out $SERVER_NAME.key 1024<br />
$OPENSSL_PATH genrsa -out $SERVER_NAME.key 1024<br />
$OPENSSL_PATH rsa -in $SERVER_NAME.key -out $SERVER_NAME.pem<br />
$OPENSSL_PATH req -new -key $SERVER_NAME.pem -out $SERVER_NAME.csr<br />
$OPENSSL_PATH x509 -req -days 365 -in $SERVER_NAME.csr -signkey $SERVER_NAME.pem -out $SERVER_NAME.crt<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache mod-security</title>
		<link>http://hodza.net/2007/03/21/apache-mod-security/</link>
		<comments>http://hodza.net/2007/03/21/apache-mod-security/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 10:46:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=52</guid>
		<description><![CDATA[Několikrát jsem měl bohužel tu &#8222;čest&#8220; nahlédnout do zdrojových kódů webových stránek našich klientů a teda řeknu Vám fuj&#8230; Troufám si říct, že bych byl schopný během několika málo vteřin vymyslet alespoň 10 XSS útoků. Vzhledem k tomu, že tato firma u nás hostuje více jak 300 různých portálů, bylo mi jasné, že oprava všech [...]]]></description>
			<content:encoded><![CDATA[<p>Několikrát jsem měl bohužel tu &#8222;čest&#8220; nahlédnout do zdrojových kódů webových stránek našich klientů a teda řeknu Vám fuj&#8230; Troufám si říct, že bych byl schopný během několika málo vteřin vymyslet alespoň 10 XSS útoků. Vzhledem k tomu, že tato firma u nás hostuje více jak 300 různých portálů, bylo mi jasné, že oprava všech php scriptů je nemožná a tak jsem přemýšlel, jak jim alespoň trochu pomoci s bezpečností z mé strany.<span id="more-52"></span></p>
<p>Původně jsem zamýšlel použít globalní .htaccess a vněm mod_rewrite. Chtěl jsem parsovat veškeré požadavky na jednotlivé portály a sanitizovat je. Ačkoliv se toto řešení jevilo jako správné, v praxi jsem od něj musel upustit a najít řešení lepší. Oprášil jsem tak své záložky v prohlížeči a narazil na mod_security do Apache. Něco málo jsem o něm slyšel a už dlouho jsem ho chtěl vyzkoušet &#8211; teď k tomu byla velice vhodná příležitost.</p>
<p><strong>Instalace na debianu byla více než snadná:</strong></p>
<p># 1. Nejprve jsem nainstaloval samotný modul<br />
<code>apt-get install libapache2-mod-security</code></p>
<p># 2. Následně jsem jej povolili ke spuštění v Apache<br />
<code>a2enmod mod-security</code></p>
<p># 3. Nechtěl jsem vymýšlet celou konfiguraci z hlavy a tak jsem si zkopíroval vzorovou<br />
<code>cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/conf.d/mod_security.conf</code></p>
<p># 4. A tu jsem si upravil<br />
<code>vi /etc/apache2/conf.d/mod_security.conf</code><br />
<code><ifmodule><br />
SecFilterEngine On<br />
SecFilterCheckURLEncoding On<br />
SecFilterCheckUnicodeEncoding Off<br />
SecFilterForceByteRange 0 255<br />
SecAuditEngine RelevantOnly<br />
SecAuditLog /var/log/apache2/audit_log<br />
SecFilterDebugLog /var/log/apache2/modsec_debug_log<br />
SecFilterDebugLevel 0<br />
SecFilterScanPOST On<br />
SecFilterDefaultAction "deny,log,status:500"<br />
SecFilter /etc/[0-9a-z]<br />
SecFilter /bin/[0-9a-z]<br />
SecFilter /usr/[0-9a-z]<br />
SecFilter /usr/bin/[0-9a-z]<br />
SecFilter /tmp/[0-9a-z]<br />
SecFilter cd\x20/tmp<br />
SecFilter wget\x20<br />
SecFilter "delete[[:space:]]+from"<br />
SecFilter "insert[[:space:]]+into"<br />
SecFilter "select.+from"<br />
SecFilter "&lt; [[:space:]]*script"<br />
#SecFilter "&lt;(.|\n)+&gt;"<br />
</ifmodule></code></p>
<p># 6. Následoval reload Apache serveru<br />
<code>/etc/init.d/apache2 force-reload</code></p>
<p><strong>Co to všechno umí?</strong><br />
Mod_security nám vyčistí veškeré požadavky (jak GEt tak i POST) od zbytečných dvojitých lomítek (//), odkazů na sebe sama (./), dokáže zaměnit &#8222;\&#8220; za &#8222;/&#8220;, přehodí %00 za obyčejnou mezeru kontroluje validitu a bytovou přesnost požadavku, dokáže vyhodnotit požadavek na základě regexpů.</p>
<p>Na základě detekce &#8222;řetezce&#8220; je pak podle konfiguračního souboru (SecFilterDefaultAction) schopný vytvořit i několik akcí mezi něž patří:<br />
deny &#8211; zakáže požadavek<br />
allow &#8211; zastaví kontrolu pravidel a povolí request<br />
status:xxx, &#8211; odpoví s HTTP statusem xxx<br />
redirect:url, &#8211; přesměruje požadavek na danou (absolutní) adresu<br />
exec:cmd &#8211; vykoná příkaz cmd (vhodné s nějakým odesílátkem emailů)<br />
log &#8211; uloží request s detaily do logu<br />
nolog &#8211; neukládá request do logu<br />
pass &#8211; ignoruje toto pravidlo a pokračuje v dalších pravidlech<br />
pause:xxx &#8211; pozdrží request o xxx milisekund (pozor at neprovedete DoS útok na sebe sami)<br />
chain &#8211; skočí na další pravidlo v chainu<br />
skipnext:n, přskočí n pravidel</p>
<p><strong>Regexpové filtry</strong><br />
Asi nejjednodušším filtrem v mod_security je zadání SecFilter.<br />
V konfiguračním souboru apache/mod_security máme:<br />
<code>SecFilterEngine On<br />
SecFilterCheckURLEncoding On<br />
SecFilterCheckUnicodeEncoding Off<br />
SecAuditEngine RelevantOnly<br />
SecAuditLog /var/log/apache2/audit_log<br />
SecFilterDebugLog /var/log/apache2/modsec_debug_log<br />
SecFilterScanPOST On<br />
SecFilterDefaultAction "deny,log,status:500"<br />
SecFilter /etc/passwd</code></p>
<p>Jakmile do prohlížeče zadáme adresu například <a href="http://hodza.net/test.php?shell=/etc/passwd">http://hodza.net/test.php?shell=/etc/passwd</a>, vyhodí nám prohlížeč chybu 500 a  do /var/log/apache2/audit_log zapíše následující:</p>
<p><code>HTTP/1.1 500 Internal Server Error<br />
X-Powered-By: PHP/4.3.10-19<br />
Content-Length: 2166<br />
Connection: close<br />
Content-Type: text/html<br />
========================================<br />
Request: 85.160.65.12 - - [21/Mar/2007:11:23:55 +0100] "GET /test.php?shell=/etc/passwd HTTP/1.1" 500 2157<br />
Handler: (null)<br />
----------------------------------------<br />
GET /test.php?shell=/etc/passwd HTTP/1.1<br />
Host: hodza.net<br />
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11<br />
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5<br />
Accept-Language: en-us,en;q=0.5<br />
Accept-Encoding: gzip,deflate<br />
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<br />
Keep-Alive: 300<br />
Connection: keep-alive<br />
Cookie: IMAIL_SESS_KEY_1174461441-18654=LIuOFNUhDI3vlqgL; IMAIL_SESS_KEY_1174458493-41266=6pdFfVCoIZlnTdz2; IMAIL_SESS_KEY_1174458956-45632=22MSPZFhVgcl4HBF; wpthemefd01865e503f46c67c4df25a7c0983da=Magellan; IMAIL_SESS_KEY_1174458444-78097=yICVpRLlelQ7b4WR; IMAIL_TEST_COOKIE=test; PHPSESSID=4968f3ea1b79953b8e1e20febf5c3bfd; phpMyAdmin=d44d6e2f64ccd35352989d45c30a9b90; wordpressuser_fd01865e503f46c67c4df25a7c0983da=admin; wordpresspass_fd01865e503f46c67c4df25a7c0983da=2fb3192c5df98faf13d864c4a3b1fd06; dbx-postmeta=grabit:0+|1-|2-|3-|4-|5-&amp;advancedstuff:0-|1-|2-<br />
mod_security-message: Access denied with code 500. Pattern match "/etc/passwd" at THE_REQUEST<br />
mod_security-action: 500<br />
HTTP/1.1 500 Internal Server Error<br />
X-Powered-By: PHP/4.3.10-19<br />
Content-Length: 2157<br />
Connection: close<br />
Content-Type: text/html</code></p>
<p><strong>Jak vidíte &#8211; krásné, jednoduché účinné a spolehlivé.</strong><br />
Další využití mod_security je na snadě. Při psaní příspěvku jsem si vzpomněl na <a href="http://e-ott.info/">Vlastu</a>, kdy měl v komentářích na blogu snad desetkrát řetězec &#8222;Cheap phentermine….&#8220;. Přitom stačilo zapnout mod_security a dát do konfiguráku <em>SecFilter &#8222;Cheap phentermine&#8220;</em> nebo zakázat spamerského User-Agenta, případně znepřístupnit blok IP adres odkud jsou příspěvky rozesílány.</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2007/03/21/apache-mod-security/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

