
<?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>Linux Tips &#187; Dodatki do kursów</title>
	<atom:link href="http://www.gumularz.net/linux-tips/category/dodatki-do-kursow/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gumularz.net/linux-tips</link>
	<description>Linux - HowTo, Tips &#38; Tricks, ...</description>
	<lastBuildDate>Fri, 30 Jul 2010 11:09:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Xen + SAN + blokady czyli &#8222;prawie jak klaster&#8221;</title>
		<link>http://www.gumularz.net/linux-tips/2010/07/xen-san-blokady-czyli-prawie-jak-klaster/</link>
		<comments>http://www.gumularz.net/linux-tips/2010/07/xen-san-blokady-czyli-prawie-jak-klaster/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 11:08:07 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/linux-tips/?p=118</guid>
		<description><![CDATA[Jedną z zalet wirtualizacji jest możliwość migrowania maszyn między maszynami fizycznymi. Migrowanie rzecz jasna wymaga więcej niż jednej maszyny fizycznej z dostępem do konfiguracji i zasobów maszyny wirtualnej &#8211; czyli współdzielonej pamięci masowej. I tu zaczyna się mały problem. Jeśli przez przypadek maszyna zostanie uruchomiona na więcej niż jednym hoście &#8211; uszkodzenie dysku wirtualnego mamy [...]]]></description>
			<content:encoded><![CDATA[<p>Jedną z zalet wirtualizacji jest możliwość migrowania maszyn między maszynami fizycznymi. Migrowanie rzecz jasna wymaga więcej niż jednej maszyny fizycznej z dostępem do konfiguracji i zasobów maszyny wirtualnej &#8211; czyli współdzielonej pamięci masowej. I tu zaczyna się mały problem. Jeśli przez przypadek maszyna zostanie uruchomiona na więcej niż jednym hoście &#8211; uszkodzenie dysku wirtualnego mamy jak w banku. Jak temu zapobiec bez stawiania klastra HA? Rozwiązaniem jest włączenie blokad na współdzielonym zasobie&#8230;</p>
<p><span id="more-118"></span>Mechanizm blokowania w Xenie opiera się na wywołaniu skryptu zakładającego bądź usuwającego blokadę w formie pliku tekstowego i sterują nim trzy parametry z plik konfiguracyjnego <strong>/etc/xen/xend-config.sxp</strong>:</p>
<ul>
<li>(xend-domain-lock yes)</li>
<li>(xend-domain-lock-path /path/to/lock/directory)</li>
<li>(xend-domain-lock-utility domain-lock)</li>
</ul>
<p>Pierwszy parametr włącza mechanizm blokowania, drugi precyzuje katalog z blokadami a trzeci pozwala na zmianę narzędzia blokującego (domyślnie demon xend używa skryptu <strong>/etc/xen/scripts/domain-lock</strong>).</p>
<p>Aby zabezpieczyć się przed przypadkowym równoczesnym uruchomieniu tej samej maszyny wirtualnej na dwóch hostach, wystarczy włączyć mechanizm blokowania, zamontować do wybranego katalogu udział sieciowy (NFS/Samba/OCFS/etc.), wskazać znajdujący się na nim katalog w zmiennej <strong>xend-domain-lock-path</strong> i przeładować konfigurację demona xend (/etc/ini.t/xend reload).  Od tej chwili demon xend będzie zakładał blokady dla wszystkich uruchamianych maszyn, a próba wystartowania tak zablokowanej maszyny na innym hoście zakończy się błędem.</p>
<p>Jeśli restartowanie maszyn wydaje się być niewygodne można ręcznie założyć blokady dla wszystkich już działających domen takim prostym poleceniem (przy założeniu że katalog na blokady to /mnt/vm/lock):</p>
<pre>xm list --state=running |  tail +3 | cut -d' ' -f1 | while read domain
    do
    virsh dumpxml $domain | sed -n '2,3{s/.*&gt;\(.*\)&lt;.*/\1/;p}'
    done | xargs -n 2 echo | while read domain uuid
        do
        mkdir /mnt/vm/lock/$uuid &amp;&amp;  \
        /etc/xen/scripts/domain-lock -l -n $domain -i $uuid -p `hostname`  \
                /mnt/vm/lock/$uuid
        done</pre>
<p>Blokowanie domen jest prostym rozwiązaniem i zabezpiecza przed uszkodzeniem dysków maszyn wirtualnych. Następnym krokiem może być skonfigurowanie klastra HA opartego o pakiet <strong>Pacemaker</strong>,  ale to już inna historia <img src='http://www.gumularz.net/linux-tips/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2010/07/xen-san-blokady-czyli-prawie-jak-klaster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gdy wredny admin blokuje porty&#8230;</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/gdy-wredny-admin-blokuje-porty/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/gdy-wredny-admin-blokuje-porty/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 22:23:49 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/linux-tips/?p=75</guid>
		<description><![CDATA[Częstą praktyką wśród administratorów jest ograniczanie możliwości "wyjścia na świat" z ich sieci do kilku dobrze znanych portów. Dla ludzi takich jak ja - "zwiedzających" różne sale konferencyjne, hotele itp. bywa to uciążliwe. Brak połączenia z pocztą czy jabberem nie zawsze jestem w stanie zaakceptować :) Na szczęście jest światełko w tunelu...]]></description>
			<content:encoded><![CDATA[<p>Chciałbyś posiedzieć na gadulcu ale firewall nie puszcza? A może często bywasz w siedzibie klienta, z której łaskawie wypuszczają tylko HTTP lub HTTPS? W takim razie witaj w klubie <img src='http://www.gumularz.net/linux-tips/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Ja bywam od czasu do czasu w miejscach, w których trzeba zdrowo kombinować żeby spiąć Jabbera albo nawet pocztę sprawdzić. Na szczęście nie wszystkich stać na komercyjne rozwiązania filtrujące ruch i analizujące przepuszczane protokoły i stawiają Squida. Dzięki temu można pokusić się o przetunelowanie praktycznie każdego ruchu na zewnątrz&#8230;<br />
<span id="more-75"></span><br />
<strong>Squid a HTTPS&#8230;.</strong></p>
<p>Przepuszczanie i kontrolowanie ruchu HTTP nie jest specjalnie skomplikowane. Niestety (a może na szczęście) konstrukcja protokołu SSL uniemożliwia wykonanie tego samego z HTTPS&#8217;em. Tak długo jak nie stosuje się metod opartych o &#8216;man in the middle&#8217; &#8211; możemy tylko kontrolować dostęp na poziomie portów i adresów IP. Jedyne co może zrobić Squid w przypadku transmisji HTTPS to zablokować ją lub otworzyć tunel i przepuścić. Standardowa polityka konfiguracji squida opiera się o zdefiniowanie tzw. &#8222;bezpiecznych portów&#8221; dla połączeń metodą CONNECT:</p>
<pre>acl SSLPorts dport 443
acl CONNECT method connect
...
http_access deny CONNECT !SSLPorts
...</pre>
<p>Tłumacząc na ludzki język, Squid blokuje próby zestawienia tunelu na porty inne niż określone w zmiennej SSLPorts. Ponieważ standardowo HTTPS działa na porcie TCP 443 &#8211; ten port jest z reguły przepuszczany bez większych obostrzeń. Można go więc wykorzystać do zbudowania tunelu SSH, jeśli mamy dostęp do serwera SSH działającego na porcie 443.</p>
<p>Serwer OpenSSH może słuchać na dowolnym porcie &#8211; w szczególności 443, wystarczy tylko ustawić dyrektywę &#8216;Port 443&#8242; w pliku /etc/ssh/sshd_config i zrestartować serwer SSH.</p>
<p><strong>Korkociągiem w prosiaka&#8230;.</strong></p>
<p>Jeśli już dysponujemy działającym gdzieś w sieci na porcie 443 serwerem SSH &#8211; możemy zbudować tunel przez proxy. Do tego celu można wykorzystać narzędzie corkscrew, które w imieniu klienta SSH połączy się z proxy i otworzy tunel. Aby oszczędzić sobie ustawiania parametru ProxyCommand przy każdym połączeniu SSH, można utworzyć plik ~/.ssh/.config z następującą zawartością:</p>
<pre>ProxyCommand corkscrew IP.SQ.UI.DA 3128 %h %p</pre>
<p>Na tym etapie można się już logować po SSH do naszego serwera i korzystać z możliwości tunelowania portów, zestawienia proxy SOCKS a nawet kanału VPN&#8230;</p>
<p><strong>Proxy w tunelu przez proxy <img src='http://www.gumularz.net/linux-tips/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>Gdy już nam się uda oszukać proxy i przetunelować SSH &#8222;w świat&#8221;, możemy wykorzystać funkcjonalność SSH do zbudowania proxy SOCKS i przekierować przez nie praktycznie dowolny ruch. W tym celu podczas logowania na nasz serwer SSH należy dodać parametr -D, np.:</p>
<pre>bash$ ssh -D1080  -p443  user@nasz.serwer.ssh -f -N</pre>
<p>Dodatkowe parametry -f -N powodują zestawienie tunelu w tle &#8211; bez przejmowania powłoki na zdalnej maszynie. Teraz pozostaje tylko zmusić aplikacje do wykorzystania naszego proxy. W przypadku aplikacji, które nie posiadają obsługi proxy SOCKS przydatna jest biblioteka tsocks dostępna w podstawowych lub dodatkowych repozytoriach większości dystrybucji linuksowych. Po zainstalowaniu należy utworzyć plik konfiguracyjny /etc/tsocks.conf:</p>
<pre>server = 127.0.0.1
server_port = 1080</pre>
<p>Aby aplikacja wykorzystywała nasz serwer proxy należy ją uruchomić za pośrednictwem polecenia tsocks lub &#8211; w wersji bardziej &#8222;hakierskiej&#8221; z dyrektywą LD_PRELOAD;</p>
<pre>bash$ LD_PRELOAD=/usr/lib/libtsocks.so.1 pidgin</pre>
<p><strong>Mało?</strong></p>
<p>Od niedawna OpenSSH wspiera tworzenie tuneli VPN między wirtualnymi interfejsami TUN &#8211; jak znajdę czasopodwajacz to może przetestuję i opiszę&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/gdy-wredny-admin-blokuje-porty/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Konsola szeregowa w linuksie</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/konsola-szeregowa-w-linuksie/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/konsola-szeregowa-w-linuksie/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 07:52:55 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[konsola]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/blog/?p=64</guid>
		<description><![CDATA[Karty sieciowe mają to do siebie że - jak większość sprzętu - nie są w 100% niezawodne. W związku z tym inna metoda dostępu do maszyny "w razie czego" bywa dobrym zabezpieczeniem... zwłaszcza gdy serwer zarządzany jest zdalnie...]]></description>
			<content:encoded><![CDATA[<p>Karty sieciowe mają to do siebie że &#8211; jak większość sprzętu &#8211; nie są w 100% niezawodne. W związku z tym inna metoda dostępu do maszyny &#8222;w razie czego&#8221; bywa dobrym zabezpieczeniem&#8230; zwłaszcza gdy serwer zarządzany jest zdalnie&#8230;<br />
<span id="more-64"></span><br />
<strong>Konfiguracja standardowa</strong><br />
Aby skonfigurować dostęp do konsoli szeregowej w linuksie należy zmodyfikować dwa pliki: <em>/boot/grub/menu.lst</em> (czasem grub.conf) oraz <em>/etc/inittab</em>. W pierwszym z nich należy w sekcji globalnej umieścić wpis:</p>
<pre>serial --unit=0 --speed=9600
terminal --timeout=5 serial console</pre>
<p>dzięki któremu będzie możliwy dostęp do menu GRUB&#8217;a przez port szeregoewy. Aby przekierować komunikaty jądra linuksa na port szeregowy należy do parametrów jądra dodać parametr <em>console</em>:</p>
<pre>...
kernel /vmlinuz root=LABEL=/ console=ttyS0,9600 console=tty0
...</pre>
<p>Na końcu pozostało jeszcze dodać linię w pliku inittab (najlepiej tam, gdzie skonfigurowane są konsole tekstowe):</p>
<pre>S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102</pre>
<p><strong>Jądro Xen</strong><br />
W przypadku maszyn z jądrem Xen sprawa ma się trochę inaczej. Po pierwsze jako jądro w pliku konfiguracyjnym (dyrektywa <em>kernel</em>) jest podany xen a nie vmlinuz. Ten drugi (czyli właściwe jądro linuksa) jest podawany jako moduł (dyrektywa <em>module</em>). Po drugie w parawirtualizowanym systemie linuksowym pod kontrolą Xen&#8217;a zmieniają się nazwy urządzeń, i port szeregowy będzie się nazywał nie ttyS0 a xvc0. Poniżej wkleiłem przykładową konfigurację z jądrem Xen:</p>
<pre>default 0
timeout 5
serial --unit=0 --speed=9600
terminal --timeout=10 serial consoletitle Xenpae - SLES10SP2
root (hd0,0)
kernel /xen-pae.gz console=vga,com1 com1=9600
module /vmlinuz-xenpae console=xvc0,9600 console=tty0 root=/dev/system/root
module /initrd-xenpae</pre>
<p>Po skonfigurowaniu maszyny można spiąć ją kablem szeregowym z inną maszyną aby w razie awarii karty sieciowej mieć dostęp do systemu za pośrednictwem innego hosta. Dobrym pomysłem może byc również postawienia jakiegoś &#8222;szrota&#8221; z dodatkową kartą &#8211; powiedzmy 4 x RS232 &#8211;  podpiąć do niego swoje serwery i uruchomić serwer ssh&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/konsola-szeregowa-w-linuksie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script &#8211; czyli nieme kino w bashu :)</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/script-czyli-nieme-kino-w-bashu/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/script-czyli-nieme-kino-w-bashu/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 21:34:31 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/blog/?p=53</guid>
		<description><![CDATA[Dwa słowa o programie "script"...]]></description>
			<content:encoded><![CDATA[<p>Od czasu do czasu (a w moim przypadku to nawet częściej) pojawia się potrzeba nagrania sekwencji poleceń wraz z wynikami, do celów prezentacyjnych. Do tego zadania świetnie nadaje się program <em>script</em>. Ten prosty programik nagrywa wszystkie znaki i sekwencje sterujące do pliku o nazwie <em>typescript</em>, a z dodatkową opcją potrafi zapisać również dokładny timing, czyli mówiąc po naszemu &#8211; czas między pojawiającymi się znakami. Odtworzenie takiego &#8216;filmu&#8217; nie powoduje wykonania poleceń z pliku wejściowego, a jedynie wyświetlenie efektu ich działania. Przykład nagrywania prostej sesji:</p>
<pre>wg@moher:~/tmp&gt; script -t 2&gt;times
Script started, file is typescript
wg@moher:~/tmp&gt; ps
  PID TTY          TIME CMD
10184 pts/3    00:00:00 bash
10203 pts/3    00:00:00 ps
wg@moher:~/tmp&gt; ls
times  typescript
wg@moher:~/tmp&gt; exit
Script done, file is typescript
wg@moher:~/tmp&gt;</pre>
<p>Po nagraniu całej sekwencji można odtworzyć nasz &#8216;film&#8217; poleceniem scriptreplay:</p>
<pre>wg@moher:~/tmp&gt; scriptreplay  times</pre>
<p>Wygenerowane pliki przykładowe można znaleźć <a href="/stuff/script-example.tgz">tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/script-czyli-nieme-kino-w-bashu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bind &#8211; generowanie wpisów i dynamiczna aktualizacja stref</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/bind-uzupelnienie-do-kursu-rh253/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/bind-uzupelnienie-do-kursu-rh253/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 08:03:01 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[dnssec]]></category>

		<guid isPermaLink="false">http://lms.compendium.pl/linux-zone/?p=36</guid>
		<description><![CDATA[Krótka instrukcja konfiguracji ciekawej funkcjonalności serwera BIND :)]]></description>
			<content:encoded><![CDATA[<p>Kilka słów o tym jak upraościć sobie administrowanie strefami w serwerze BIND&#8230;<br />
<span id="more-36"></span><br />
<strong>Automatyczne generowanie wpisów w pliku strefy</strong></p>
<p>Przy tworzeniu stref z wieloma podobnymi wpisami typu hostXXX użyteczna jest instrukcja GENERATE. Przykładowy wpis z pliku strefy może wyglądać następująco:</p>
<pre>[...]
$GENERATE 100-110 host$ IN A		10.0.0.$
[...]</pre>
<p>Po umieszczeniu takiego wpisu w pliku strefy wynik polecenia <em>dig -t axfr labnet.com</em> wykonującego transfer strefy dla zony będzie wyglądał następująco:</p>
<pre>&lt;&lt;&gt;&gt; DiG 9.5.0-P2 &lt;&lt;&gt;&gt; -t axfr labnet.com
;; global options:  printcmd
labnet.com.		172800	IN SOA	moher.vnet.com. [...]
labnet.com.		172800	IN NS	moher.vnet.com.
labnet.com.		172800	IN TXT	"v=spf1 mx ~all"
labnet.com.		172800	IN MX	5 melman.labnet.com.
host100.labnet.com.	172800	IN A	10.0.0.100
host101.labnet.com.	172800	IN A	10.0.0.101
host102.labnet.com.	172800	IN A	10.0.0.102
host103.labnet.com.	172800	IN A	10.0.0.103
host104.labnet.com.	172800	IN A	10.0.0.104
host105.labnet.com.	172800	IN A	10.0.0.105
host106.labnet.com.	172800	IN A	10.0.0.106
host107.labnet.com.	172800	IN A	10.0.0.107
host108.labnet.com.	172800	IN A	10.0.0.108
host109.labnet.com.	172800	IN A	10.0.0.109
host110.labnet.com.	172800	IN A	10.0.0.110
melman.labnet.com.	172800	IN A	10.0.0.5
labnet.com.		172800	IN SOA	moher.vnet.com. [...]
;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun  8 09:46:36 2009
;; XFR size: 17 records (messages 1, bytes 460)</pre>
<p><strong>Dynamiczne modyfikowanie strefy</strong></p>
<p>W niektórych wypadkach dogodne jest modyfikowanie strefy &#8222;w locie&#8221; &#8211; bez przeładowywania strefy z pliku. Rozwiązanie takie często spotyka się na styku serwerów DNS i DHCP. Konfigurację tej funkcjonalności w serwerze BIND należy rozpocząć od wygenerowania klucza poleceniem <em>dnssec-keygen</em>:</p>
<pre>dnssec-keygen -a HMAC-MD5 -b 512 -n HOST labnet-update</pre>
<p>W wyniku tego polecenia wygenerowane zostaną pliki <em>Klabnet-update.+157+63533.key</em> oraz <em>Klabnet-update.+157+63533.private</em>. Na ich podstawie należy wygenerować wpis do pliku named.conf, bądź innego umieszczonego w katalogu /etc/named.d/ z następującą zawartością:</p>
<pre>key labnet-update {
algorithm hmac-md5;
        secret  "UPLyG8ScPjErGo7XU [...] MVxWXHfvIlz/Dhy/9EvYzZA==";
};</pre>
<p>zastępując rzecz jasna wartość pola secret kluczem z jednego z plików <em>Klabnet-update*</em><br />
Dla każdej strefy, która ma być edytowana z wykorzystaniem tego klucza należy dodać dyrektywę <em>allow-update</em>:</p>
<pre>[...]
zone "labnet.com" in {
        allow-transfer { none; };
        allow-update { key labnet-update; };
        file "master/labnet.com";
        type master;
};
[...]</pre>
<p>Po wprowadzeniu tej sekcji do konfiguracji demona BIND można wykorzystywać narzędzie nsupdate do szybkiej edycji pliku strefy lub napisać własny skrypt, np. w języku perl w oparciu o moduł  <em>Net::DNS</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/bind-uzupelnienie-do-kursu-rh253/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix &#8211; wybrane zabezpieczenia przed spamem</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/postfix-wybrane-zabezpieczenia-przed-spamem/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/postfix-wybrane-zabezpieczenia-przed-spamem/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 20:20:10 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[Poczta]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://lms.compendium.pl/wp/?p=17</guid>
		<description><![CDATA[W tym artykule opisuję trzy wybrane metody zabezpieczania serwera przed przyjmowaniem spamu: greylisting, weryfikację adresu nadawcy oraz wykorzystanie rekordów SPF]]></description>
			<content:encoded><![CDATA[<p><strong>SPAM, SPAM, SPAM&#8230;</strong></p>
<p>Spam jest obecnie jednym z największych utrapień administratorów na całym świecie &#8211; co do tego chyba nie trzeba nikogo przekonywać. I jak to zwykle bywa, każdy nowy rodzaj spamu powoduje powstanie nowych metod zwalczania niechcianej poczty i na odwrót..  I tak to dorobiliśmy się takich metod jak:</p>
<ul>
<li>greylisting</li>
<li>weryfikacja adresu nadawcy</li>
<li>rekory SPF</li>
<li>RBL-e</li>
<li>metody oparte o analizę treści</li>
<li>&#8230;itd., itp.</li>
</ul>
<p>W tym artykule przyjglądniemy się konfiguracji trzech z nich&#8230;<br />
<span id="more-17"></span><br />
<strong>Greylisting</strong></p>
<p>Technika greylistingu polega na chwilowym odrzuceniu przesyłki przez MTA i opiera się na założeniu że porządny serwer pocztowy i tak spróbuje za chwilę, natomiast wirus czy automat spamowy &#8211; nie. Na pierwszy rzut oka nie wygląda to może zbyt sensownie &#8211; ale działa! Co więcej, jest to technika nie obciążająca serwera pocztowego a wymagająca jedynie przechowywania mapy adresów na serwerze pocztowym.</p>
<p>Włączenie tej metody ochrony przed spamem w postfixie jest bardzo prosta. Po pierwsze trzeba zainstalować pakiet postgrey, który w większości dystrybucji dostępny jest w głównym repozytorium. Jeśli jesteśmy szczęśliwymi posiadaczami dystrybucji &#8222;enterprajzowej&#8221; to być może będziemy musieli poszukać go w jednym z wielu dodatkowych repozytoriów.</p>
<p>Po zainstalowaniu pakietu należy uruchomić demona postgrey i upewnić się że będzie uruchamiany zawsze podczas startu systemu. Następnie można &#8211; a czasem nawet trzeba &#8211; dostosować parametry w pliku konfiguracyjnym <em>/etc/sysconfig/postgrey</em> ustawiając odpowiednio czas po którym postgrey przepuści wiadomość:</p>
<pre>OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"</pre>
<p>Ostatni element to poinformowanie postfixa, że powinien skorzystać z usługi postgrey. Przy założeniu że przepuszczamy całość ruchu pocztowego przez postgreya, dodajemy następujący wpis do ustawień restrykcji:</p>
<pre>smtpd_recipient_restrictions =
   permit_mynetworks,
   reject_unauth_destination,
   ...
   check_policy_service unix:postgrey/socket,
   ...</pre>
<p>Na koniec wypada dodać, że postfix pozwala na wybiórcze przesyłanie maili do postgreya za pośrednictwem tabeli access. Po więcej szczegółów odsyłam do <a href="http://www.postfix.org/SMTPD_POLICY_README.html#greylist" target="_blank">tej strony</a></p>
<p><strong>Weryfikacja adresu nadawcy</strong></p>
<p>Podczas transakcji SMTP Postfix może przeprowadzić weryfikację adresu nadawcy symulując proces wysyłania odpowiedzi na adres nadawcy. Innymi słowy MTA łączy się z serwerem pocztowym odpowiednim dla domeny nadawcy i rozpoczyna równoległą transację SMTP. Jako odbiorcę fikcyjnej wiadomości podaje konto nadawcy weryfikowanej przesyłki i po wysłaniu poleceń <em>MAIL FROM:</em> oraz <em>RCPT TO:</em> zrywa transakcję. Jeśli zdalny serwer zaakceptował połączenie &#8211; nadawca jest zweryfikowany pomyślnie. Jeśli nie &#8211; Postfix odpowiada tą samą klasą błedu (tymczasowy/permanentny).  Aby nie weryfikować ponownie adresów, Postfix przetrzymuje adresy wraz z informacją o wyniku weryfikacji w odpowiedniej mapie  (zalecany typ <em>btree</em>)</p>
<p>Za konfigurację tej funkcjonalności odpowiadają następujące parametry konfiguracyjne:</p>
<ul>
<li>address_verify_map &#8211; wskazujący na położenie pliku z mapą</li>
<li>reject_unverified_sender &#8211; dodawany do listy restrykcji</li>
</ul>
<p>Poniżej przedstawiona jest przykładowa konfiguracja:</p>
<pre>address_verify_map = hash:/var/log/postfix-verify

smtpd_recipient_restrictions = permit_mynetworks,
         check_policy_service unix:postgrey/socket,
         reject_unverified_sender,reject_unauth_destination,
         check_policy_service unix:private/policy</pre>
<p><strong>Sender Policy Framework</strong></p>
<p>Na koniec ostatnia technika, która w gruncie rzeczy jest bardzie zabezpieczeniem przed wysyłaniem spamu z naszej domeny niż blokadą przychodzącego spamu. Jej działanie opiera się bowiem na umieszczeniu w strefie DNS informacji o tym, z których hostów dozwolone jest wysyłanie poczty z naszej domeny<strong>.</strong></p>
<p>Poniżej przedstawiony jest przykładowyrekord <em>TXT</em> informujący o tym, że zdomeny vnet.com możliwe jest wysyłanie poczty wyłącznie z hostów określonych jako MX dla vnet.com<em>:</em></p>
<pre>vnet.com.	IN TXT	"v=spf1 mx -all"</pre>
<p>Postfix sam w sobie nie potrafi przeglądać rekordów SPF. Do tego celu służy zewnętrzne narzędzi, np. <em><a href="http://www.openspf.org/Software" target="_blank">postfix-policyd-spf-perl</a></em>. Jak wskazuje nazwa, jest to narzędzie napisane w perlu i  wymaga zainstalowania modułu Mail::SPF.</p>
<p>Po zainstalowaniu wymaganego modułu należy zciągnąć pakiet ze strony <a href="http://www.openspf.org/Software" target="_blank">www.openspf.org/Software</a>, umieścić go w katalogu <em>/usr/lib/postfix/</em> np. pod nazwą <em>policyd-spf-perl</em> i dodać następujący wpis do pliku <em>master.cf</em>:</p>
<pre>policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl</pre>
<p>Ostatni etap to dodanie do restrykcji frazy:</p>
<pre>check_policy_service unix:private/policy</pre>
<p>Po przeładowaniu Postfixa nasz MTA powinien już sprawdzać wpisy SPF z DNSu</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/postfix-wybrane-zabezpieczenia-przed-spamem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSSL: CA w pięć minut&#8230;</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/dodatki-do-kursu-rh253/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/dodatki-do-kursu-rh253/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 10:13:20 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Dodatki do kursów]]></category>
		<category><![CDATA[ca]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://lms.compendium.pl/wp/?p=3</guid>
		<description><![CDATA[Chcesz szybko postawić małe własne CA? Wszystko czego potrzebujesz to pakiet openssl oraz edytor tekstowy :)]]></description>
			<content:encoded><![CDATA[<p>Chcesz szybko postawić małe własne CA? Wszystko czego potrzebujesz to pakiet openssl oraz edytor tekstowy <img src='http://www.gumularz.net/linux-tips/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-5"></span><br />
<strong>Zakładanie prostego CA</strong></p>
<p>Do szybkiego zbudowania  CA w linuksie wystarczy kilka poleceń. Cały proces składa się z:</p>
<ol>
<li>przygotowania pliku konfiguracyjnego (a właściwie przerobienie pliku opnessl.cnf)</li>
<li>wygenerowania odpowiedniej struktury katalogów</li>
<li>wygenerowania samopodpisanego certyfikatu CA</li>
</ol>
<p>Plik openssl.cnf zawiera sekcję <em>[ CA_default ] </em>opisującą domyślne CA. W tej sekcji należy podmienić wartość zmiennej <em>dir</em> na katalog, w którym umieszczone będzie CA. Tam też można dla wygody umieścić zmodyfikowaną wersję pliku konfiguracyjnego.</p>
<p>Kolejny krok to założenie struktury katalogów:</p>
<pre>bash$ mkdir certs private newcerts crl
bash$ touch index.txt
bash$ echo -n '00' &gt; serial</pre>
<p>Ostatni krok to wygenerowanie samopodpisanego certyfikatu dla naszego CA:</p>
<pre>bash$ openssl req -x509 -newkey rsa:2048 -keyout private/cakey.pem\
 -out cacert.pem -days 3650 -config ./openssl.cnf</pre>
<p>Na koniec pozostaje podać polecenia do generowania nowego certyfikatu przez nasze CA (pierwsze generuje rządanie certyfikatu a drugie podpisuje je kluczem prywatnym naszego CA):</p>
<pre>bash$ openssl req -newkey rsa:1024 -keyout private/NAZWA.pem \
-out req.pem -days 365 -config ./openssl.cnf
bash$ openssl ca -config ./openssl.cnf -policy policy_anything \
-in req.pem -out certs/NAZWA.pem</pre>
<p>Aby sprawnić sobie proces generowania certyfikatów można wyedytować plik openssl.cnf i ustawić odpowiednio domyślne wartości pól z certyfikatów (np. Organization, Locality, itp&#8230;)</p>
<p>Do przechowywania tak skonstruowanego CA można wykporzystać zaszyfrowany pendrive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/dodatki-do-kursu-rh253/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

