<?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>my personal page</title>
	<atom:link href="http://konrad.bechler.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://konrad.bechler.pl</link>
	<description>Tutaj powinno być coś mądrego, ale nie przychodzi mi nic do głowy...</description>
	<lastBuildDate>Fri, 04 May 2012 12:18:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>pseudo VPN za pomocą putty</title>
		<link>http://konrad.bechler.pl/2012/05/pseudo-vpn-za-pomoca-putty/</link>
		<comments>http://konrad.bechler.pl/2012/05/pseudo-vpn-za-pomoca-putty/#comments</comments>
		<pubDate>Fri, 04 May 2012 12:18:45 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=577</guid>
		<description><![CDATA[Zdarza się tak, że potrzebujemy dostępu do hosta w odległej sieci, a do dyspozycji mamy jedynie dostęp do Internetu, gdzie &#8211; jak wiadomo &#8211; czają się przestępcy. Naturalnym rozwiązaniem jest zestawienie bezpiecznego połączenia (VPN) ze zdalną siecią i za jej pomocą dostanie się do pożądanych zasobów. Co jednak w przypadku małej sieci, do której nikt [...]]]></description>
			<content:encoded><![CDATA[<p>Zdarza się tak, że potrzebujemy dostępu do hosta w odległej sieci, a do dyspozycji mamy jedynie dostęp do Internetu, gdzie &#8211; jak wiadomo &#8211; czają się przestępcy. Naturalnym rozwiązaniem jest zestawienie bezpiecznego połączenia (VPN) ze zdalną siecią i za jej pomocą dostanie się do pożądanych zasobów. Co jednak w przypadku małej sieci, do której nikt nigdy zdalnie się nie łączy i w której nie ma skonfigurowanej usługi VPN, której moglibyśmy użyć? Jeżeli wystarczy nam kilka portów TCP i mamy po drugiej stronie SSH &#8222;wystające&#8221; na świat, to możemy użyć Putty.</p>
<p>Zadanie jest następujące: dostać się za pomocą protokołu RDP (port tcp/3389) do maszyny o adresie 192.168.0.2. Host, do którego będziemy ustanawiać sesję SSH musi oczywiście wiedzieć, co to jest 192.168.0.2 i mieć dostęp do odpowiedniego portu.</p>
<p><strong>1.</strong> Uruchamiamy PUTTY i wpisujemy nazwę domenową (lub adres IP) hosta, który rozumie SSH:</p>
<div align="center"><img src="http://konrad.bechler.pl/wp-content/uploads/2012/05/putty_tunel_1-300x286.jpg" alt="" width="300" height="286" class="aligncenter size-medium wp-image-579" /></div>
<p><strong>2.</strong> Przechodzimy do zakładki &#8222;Connection -&gt; SSH &#8211; &gt; Tunnels&#8221; i wypełniamy odpowiednie pola:<br />
&#8222;Source port&#8221; to port TCP po stronie naszego lokalnego komputera, który &#8222;zmapujemy&#8221; na zdalną maszynę<br />
&#8222;Destination&#8221; to adres i numer portu TCP zdalnego systemu</p>
<div align="center"><img src="http://konrad.bechler.pl/wp-content/uploads/2012/05/putty_tunel_2-300x286.jpg" alt="" width="300" height="286" class="aligncenter size-medium wp-image-580" /></div>
<p>Potem wciskamy guzik &#8222;Add&#8221;. Możemy oczywiście dodać więcej portów (niekoniecznie do tego samego hosta).</p>
<p>Na koniec wciskamy &#8222;Open&#8221;, uwierzytelniamy się po SSH i możemy łączyć się ze zdalnymi zasobami używając adresu loopback (127.0.0.1) i odpowiednich portów.</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/05/pseudo-vpn-za-pomoca-putty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>putty i ustawienia domyślne</title>
		<link>http://konrad.bechler.pl/2012/03/putty-i-ustawienia-domyslne/</link>
		<comments>http://konrad.bechler.pl/2012/03/putty-i-ustawienia-domyslne/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 20:20:26 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[default settings]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[ustawienia domyślne]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=563</guid>
		<description><![CDATA[Jakiś czas temu pisałem o ustawianiu kodowania dla sesji terminalowych w programie putty. Udało mi się wtedy wykombinować metodę, za pomocą której uzyskałem ładne ramki w Midnight Commanderze oraz wparcie dla UTF-8. Tylko nie napisałem jednej, dość ważnej rzeczy &#8211; jak zmienić ustawienia domyśle putty tak, żeby nie trzeba było za każdym razem mozolnie wybierać [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Jakiś czas temu <a href="http://konrad.bechler.pl/2010/02/midnight-commander-i-ladne-ramki/">pisałem</a> o ustawianiu kodowania dla sesji terminalowych w programie <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">putty</a>. Udało mi się wtedy wykombinować metodę, za pomocą której uzyskałem ładne ramki w Midnight Commanderze oraz wparcie dla UTF-8. Tylko nie napisałem jednej, dość ważnej rzeczy &#8211; jak zmienić ustawienia domyśle putty tak, żeby nie trzeba było za każdym razem mozolnie wybierać odpowiednich opcji.</p>
</p>
<p align="justify">
Okazuje się, że zmiana domyślnych wartości parametrów jest wyjątkowo trywialna. Oto, co należy zrobić:<br />
1. Otworzyć nowe okno putty,<br />
2. Wybrać &#8222;Default Settings&#8221; z okna zapisanych sesji i wcisnąć &#8222;Load&#8221;,<br />
3. Poustawiać sobie opcje według uznania (np. zmienić domyślne kodowanie na UTF-8 i &#8222;podrasować&#8221; kolorki),<br />
4. Wrócić do &#8222;głównego&#8221; okna programu, czyli zakładki &#8222;Session&#8221;,<br />
5. Pilnując, aby &#8222;Default Settings&#8221; było ciągle aktywną opcją, wcisnąć &#8222;Save&#8221;.</p>
<p align="justify">
I tyle. Dzięki temu, w rejestrze Windows w gałęzi HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions zostanie utworzona nowa struktura opisująca domyślne parametry, które putty będzie od tej pory wczytywało od razy po uruchomieniu. Niby proste, ale na tyle nieuntuicyjne (przynajmniej dla mnie), że postanowiłem to opisać.</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/03/putty-i-ustawienia-domyslne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorowanie routerów</title>
		<link>http://konrad.bechler.pl/2012/03/monitorowanie-routerow/</link>
		<comments>http://konrad.bechler.pl/2012/03/monitorowanie-routerow/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 13:11:20 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[cisco]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[oid]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[translations]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=552</guid>
		<description><![CDATA[[dzisiaj będzie odrobina narzekania] Mam router łączący sieć lokalną w pewnym budynku ze światem. Prosty routing, kilka ACLek, NAT, niby nic ciekawego. Ale zachciało mi się podłączyć to urządzenie do Cacti celem stałego monitorowania działalności użytkowników. O ile wykresy dotyczące obciążenia procesora oraz ilości przepływających przez interfejsy danych udało mi się wyklikać w ciągu minuty, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://konrad.bechler.pl/wp-content/uploads/2012/03/cisco_1811.jpg" rel="lightbox[552]"><img src="http://konrad.bechler.pl/wp-content/uploads/2012/03/cisco_1811-300x240.jpg" alt="" width="150" height="120" class="alignleft size-medium wp-image-555" /></a>[dzisiaj będzie odrobina narzekania]</p>
<p>Mam router łączący sieć lokalną w pewnym budynku ze światem. Prosty routing, kilka ACLek, NAT, niby nic ciekawego. Ale zachciało mi się podłączyć to urządzenie do <a href="http://www.cacti.net/">Cacti</a> celem stałego monitorowania działalności użytkowników. O ile wykresy dotyczące obciążenia procesora oraz ilości przepływających przez interfejsy danych udało mi się wyklikać w ciągu minuty, to na badaniu ilości bieżących translacji poległem. Wymęczyłem dość porządnie wujka Google i udało mi się dowiedzieć jedynie tyle, że inni także mają taki problem. Niby <a href="http://forums.cacti.net/about33233.html">znalazłem template</a> do kaktusa, który robi dokładnie to, czego mi potrzeba, jednak mój router (<a href="http://www.cisco.com/en/US/products/ps6187/index.html">Cisco 1811</a>) uparcie wyrzuca na użytym w szablonie (nie wiem, jak przetłumaczyć <em>template</em>) OIDzie (.1.3.6.1.4.1.9.10.77.1.2.3.0) same zera. I wygląda na to, że w prosty sposób nie da się tego zrobić. Jedyne, co mi &#8211; na razie &#8211; przychodzi do głowy, to napisanie jakiegoś wrappera do CLI, ale eleganckie to to nie będzie&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/03/monitorowanie-routerow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c.vim i linkowanie bibliotek</title>
		<link>http://konrad.bechler.pl/2012/03/c-vim-i-linkowanie-bibliotek/</link>
		<comments>http://konrad.bechler.pl/2012/03/c-vim-i-linkowanie-bibliotek/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 11:47:23 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=543</guid>
		<description><![CDATA[Jakiś czas próbowałem się zaprzyjaźnić z VIMem jako &#8222;edytorem programisty&#8221;. Konkretnie chodziło o napisanie dość prostego programiku w ANSI C. Znalazłem sobie fajny skrypt/dodatek o nazwie &#8222;c.vim&#8222;, który bardzo ułatwia tworzenie i testowanie kodu we wspomnianym języku, jednak natknąłem się na dość poważny problem: nie umiałem poustawiać zmiennych c.vim&#8217;a tak, aby linkował zewnętrze biblioteki (czyli [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas próbowałem się zaprzyjaźnić z <a href="http://www.vim.org/" title="VIM">VIM</a>em jako &#8222;edytorem programisty&#8221;. Konkretnie chodziło o napisanie dość prostego programiku w ANSI C. Znalazłem sobie fajny skrypt/dodatek o nazwie &#8222;<a href="http://www.vim.org/scripts/script.php?script_id=213" title="c.vim">c.vim</a>&#8222;, który bardzo ułatwia tworzenie i testowanie kodu we wspomnianym języku, jednak natknąłem się na dość poważny problem: nie umiałem poustawiać zmiennych c.vim&#8217;a tak, aby linkował zewnętrze biblioteki (czyli &#8222;przekazywał&#8221; do gcc parametry -lthreads albo podobne).<br />
Chociaż nadal nie bardzo wiem, jak to zrobić poprawnie (ogólnie moja wiedza o VIMie jest raczej skromna), to znalazłem pewne obejście: do pliku <strong>~/.vimrc</strong> dodać taką linijkę:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">let</span> g<span style="color: #000000;">:</span>C_Libs = <span style="color: #C5A22D;">'-lm -lpthread'</span></pre></div></div>

<p>Wprawdzie działa to w odniesieniu do wszystkich &#8222;projektów&#8221;, które otwieram z VIMie, ale jest jednak bardziej eleganckie od ręcznego grzebania w samym c.vim&#8217;ie.</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/03/c-vim-i-linkowanie-bibliotek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jak wysłać maila?</title>
		<link>http://konrad.bechler.pl/2012/02/jak-wyslac-maila/</link>
		<comments>http://konrad.bechler.pl/2012/02/jak-wyslac-maila/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 13:27:28 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[konsola]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[x.509]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=510</guid>
		<description><![CDATA[Ostatnio pojawił się pewien problem. Ktoś w firmie wymyślił, że będziemy do klientów wysyłać jakieś bardzo ważne dane za pomocą maila. Dane te występują w formie plików PDF i są na tyle wrażliwe, że trzeba je jakoś zabezpieczyć. Idea jak najbardziej słuszna, bo kto by chciał, aby dane o jego wynagrodzeniu czy stanie zdrowia były [...]]]></description>
			<content:encoded><![CDATA[<p STYLE="text-align: justify">Ostatnio pojawił się pewien problem. Ktoś w firmie wymyślił, że będziemy do klientów wysyłać jakieś bardzo ważne dane za pomocą maila. Dane te występują w formie plików PDF i są na tyle wrażliwe, że trzeba je jakoś zabezpieczyć. Idea jak najbardziej słuszna, bo kto by chciał, aby dane o jego wynagrodzeniu czy stanie zdrowia były narażone na przeczytanie przez osoby niepowołane. Oczywiście to tylko przykłady, ale dość dobrze oddają zagrożenia, jakie czyhają na nas w dobie wszechobecnego i nielimitowane dostępu do Internetu (<a href="Anti-Counterfeiting Trade Agreement">ACTA</a> i jej podobne próby cenzurowania na razie pomijam).<br />
Podstawowym założeniem dla zabezpieczenia poczty jest wykorzystanie ogólnodostępnej i dobrze zdefiniowanej metody szyfrowania oraz podpisywania treści. Konkretnie <a href="http://en.wikipedia.org/wiki/X.509">X.509</a>, czyli infrastruktura klucza publicznego. Zrobiło się ciekawie, bo o ile wygenerowanie odpowiedniego certyfikatu (a właściwie pary klucz prywatny &#8211; certyfikat) nie jest specjalnie trudne, to wysłanie odpowiednio zabezpieczonego maila z poziomu konsoli Linuksa jest już pewnym wyzwaniem.<br />
Żeby osiągnąć założony cel i zadowolenie klientów, musimy zrobić kilka rzeczy:</p>
<p STYLE="text-align: justify"><strong>1.</strong> Musimy posiadać odpowiedni certyfikat do podpisywania maili. Ponieważ podpisywanie odbywa się za pomocą klucza prywatnego, a potwierdzenia autentyczności można dokonać przy użyciu (ogólnie dostępnego) certyfikatu &#8211; musimy takową w jakiś sposób zdobyć.<br />
Można ją kupić w dowolnym centrum, jak np. <a href="http://www.verisign.com/">VeriSign</a> &#8211; wtedy będziemy wyglądać bardzo profesjonalnie, a nasz certyfikat będzie automatycznie rozpoznawany przez większość używanych obecnie programów. Jest to jedyna rozsądna opcja, jeżeli chcemy taką funkcjonalność oferować klientom. Jednak do testów wygenerowałem sobie certyfikat podpisany przez moje (światowo niezaufane :-)) centrum. Opisów, jak &#8222;zrobić&#8221; sobie taką infrastrukturę jest w Sieci całkiem sporo i nie będę tego teraz opisywał.</p>
<p STYLE="text-align: justify"><strong>2.</strong> Musimy zebrać certyfikaty użytkowników, do których będziemy wysyłać maile. Szyfrowanie danych odbywa się za pomocą certyfikatu (dostępnego publicznie) i bez niego raczej ciężko nam będzie cokolwiek zrobić. Certyfikaty klientów nie muszą by wygenerowane przez zaufane centrum, a nam zależy wyłącznie na tym, aby klucze prywatne, które są z nimi powiązane, były odpowiednio bezpieczne.</p>
<p STYLE="text-align: justify"><strong>3.</strong> Ktoś powinien nam dostarczyć odpowiednie dane, które będziemy wysyłać &#8211; w moim przypadku będą to pliki PDF, które wygeneruje SAP lub jakiś inny potwór, którego działania nie rozumiem.</p>
<p><strong>4.</strong> Trzeba tego PDFa jakoś zaszyfrować, podpisać i wysłać.</p>
<p STYLE="text-align: justify">I tu zaczynają się schody&#8230; o ile zaszyfrowanie i podpisanie maila jest operacją dość prostą:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> .<span style="color: #000000; font-weight: bold;">/</span>plik.txt <span style="color: #000000; font-weight: bold;">|</span> openssl smime <span style="color: #660033;">-encrypt</span> cert_kogos.pem <span style="color: #000000; font-weight: bold;">|</span> openssl smime <span style="color: #660033;">-sign</span> <span style="color: #660033;">-signer</span> cert.pem <span style="color: #660033;">-inkey</span> privkey.pem</pre></div></div>

<p STYLE="text-align: justify">to wysłanie tego mailem w taki sposób, żeby było poprawnie wyświetlone w czytniku poczty, nie jest już takie oczywiste.</p>
<p STYLE="text-align: justify">Próbowałem na różne sposoby, jednak za pomocą &#8222;czystej&#8221; konsoli nie udało mi się osiągnąć tego, co sobie wymyśliłem. Rozwiązaniem okazało się napisanie prostego skryptu w PERLu, który to wszystko po kolei zrobi:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #000000; font-weight: bold;">use</span> MIME<span style="color: #339933;">::</span><span style="color: #006600;">Lite</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Crypt<span style="color: #339933;">::</span><span style="color: #006600;">SMIME</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$wiadomosc</span> <span style="color: #339933;">=</span> MIME<span style="color: #339933;">::</span><span style="color: #006600;">Lite</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
        From            <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'moj_adres@gmail.com'</span><span style="color: #339933;">,</span>
        To              <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'odbiorca@wp.pl'</span><span style="color: #339933;">,</span>
        Subject         <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'temat'</span><span style="color: #339933;">,</span>
        Type            <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'TEXT'</span><span style="color: #339933;">,</span>
        Data            <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;Dzien dobry<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>TRESC<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>-- <span style="color: #000099; font-weight: bold;">\n</span>Pozdrawiam,<span style="color: #000099; font-weight: bold;">\n</span>Konrad&quot;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$wiadomosc</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">attach</span><span style="color: #009900;">&#40;</span>
        Type            <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'application/pdf'</span><span style="color: #339933;">,</span>
        Path            <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'tajne_dane.pdf'</span><span style="color: #339933;">,</span>
        Filename        <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'tajne_dane.pdf'</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">local</span> <span style="color: #0000ff;">$/</span><span style="color: #339933;">=</span><span style="color: #000066;">undef</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>MY_PKEY<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;certs/moj_klucz.pem&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;open failed: $!&quot;</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$privkey</span> <span style="color: #339933;">=</span> <span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>MY_CERT<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;certs/moj_cert.pem&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;open failed: $!&quot;</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$cert</span> <span style="color: #339933;">=</span> <span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>TO_CERT<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;certs/cert_odbiorcy.pem&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;open failed: $!&quot;</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$to_cert</span> <span style="color: #339933;">=</span> <span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$smime</span> <span style="color: #339933;">=</span> Crypt<span style="color: #339933;">::</span><span style="color: #006600;">SMIME</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$smime</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">setPrivateKey</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$privkey</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$cert</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$smime</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">setPublicKey</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$to_cert</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$tmp</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$smime</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">sign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$wiadomosc</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">as_string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>MAIL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;|/usr/sbin/sendmail -t&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> MAIL <span style="color: #0000ff;">$smime</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">encrypt</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$tmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span>MAIL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p STYLE="text-align: justify">No dobra, biblioteka <a href="http://search.cpan.org/~rjbs/MIME-Lite-3.028/lib/MIME/Lite.pm">MIME::Lite</a> została tutaj użyta dość osobliwie, bo wcale nie do wysyłania maili, ale jest to najprostszy sposób sformatowania maila przed jego zaszyfrowaniem, na który wpadłem. Poza tym, PERLa właściwie nie znam, a ten kod powyżej to &#8222;składanka&#8221; z przykładów, które znalazłem gdzieś w Sieci.</p>
<p STYLE="text-align: justify">Teraz muszę się jeszcze zająć tematem podpisywania samych PDFów. No bo skoro ma być tak super profesjonalnie, to dlaczego nie? :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/02/jak-wyslac-maila/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Czego nie wiedziałem o Adaptecu?</title>
		<link>http://konrad.bechler.pl/2012/01/adaptec-recover-array/</link>
		<comments>http://konrad.bechler.pl/2012/01/adaptec-recover-array/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 08:21:53 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[sprzęt]]></category>
		<category><![CDATA[adaptec]]></category>
		<category><![CDATA[fast init]]></category>
		<category><![CDATA[RAID5]]></category>
		<category><![CDATA[recovery]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=498</guid>
		<description><![CDATA[Dziś znowu będzie kolejny opis przypadku (ang. case study), tym razem o sprzęcie i odzyskiwaniu (dużej ilości) danych. W jednym z oddziałów jest sobie serwerek, robiący bardzo ważne rzeczy. Do maszyny udało się kiedyś &#8222;wepchnąć&#8221; siedem dysków SCSI oraz kontroler Adaptec 2130. Dyski podzielone zostały na dwie macierze: RAID-1 (mirror, 2 dyski) na system, oraz [...]]]></description>
			<content:encoded><![CDATA[<p>Dziś znowu będzie kolejny opis przypadku (ang. case study), tym razem o sprzęcie i odzyskiwaniu (dużej ilości) danych.</p>
<p>W jednym z oddziałów jest sobie serwerek, robiący bardzo ważne rzeczy. Do maszyny udało się kiedyś &#8222;wepchnąć&#8221; siedem dysków SCSI oraz kontroler <a href="http://www.adaptec.com/en-us/support/raid/scsi_raid/asr-2130s/">Adaptec 2130</a>. Dyski podzielone zostały na dwie macierze: RAID-1 (mirror, 2 dyski) na system, oraz RAID-5 na pięciu pozostałych dyskach na dane. Działało to przez ostatnich kilka lat bez żadnych problemów, dokładnie tak samo, jak podobne maszyny w innych miejscach. Niestety, w pewnym momencie urządzenie stwierdziło, że ma dość i postanowiło się zepsuć, dość dziwnie z resztą. Do tej pory widziałem już różne awarie sprzętowe &#8211; łącznie z wybuchem backplane&#8217;a, który osmalił kilka najbliżej zamontowanych dysków i zaczął niemiłosiernie śmierdzieć. Ale sytuacja, w której kontroler zgubił jednocześnie dwa dyski &#8211; a przynajmniej tak twierdził &#8211; była dla mnie czymś zupełnie nowym.<br />
Pierwsze, co zrobiliśmy, to otworzenie obudowy i sprawdzenie, czy wszystkie kabelki są na swoich miejscach, czy dyski się kręcą i czy nie ma śladów pożaru. Po dokładnych oględzinach okazało się, że wszystko powinno działać poprawnie. Jednak nie działało.<br />
BIOS kontrolera poprosił o zaakceptowanie &#8222;nowej&#8221; konfiguracji i bez tego nie chciał współpracować. Dalej było jeszcze gorzej &#8211; macierz zniknęła! Poza tym okazało się, że kontroler owszem, widzi wszystkie dyski, ale dwa z nich mają wyjątkowo dziwne wielkości (na poziomie 100MB każdy). Co ciekawe, modele dysków wyświetlane były poprawnie. Wszelkie próby nakłonienia sprzętu do zmiany błędnych wartości (poprzez wybieranie &#8222;rescan&#8221; we wszelkich możliwych miejscach) nie dały nic. Dopiero &#8222;initialize disks&#8221; pomogło i dyski zaczęły identyfikować się poprawnie. Ale co z tego, jak macierzy w dalszym ciągu nie było i zapowiadało się żmudne odtwarzanie systemu z kopii zapasowej, która znajdowała się w innej lokalizacji (backup off-site)?<br />
I w tym momencie z pomocą przyszła strona producenta kontrolera. Okazało się, że w przypadku utworzenia nowej macierzy z tego samego zestawu dysków i z tymi samym parametrami, jest szansa na dostęp do znajdujących się tam danych. Szczegóły opisane są na <a href="http://ask.adaptec.com/scripts/adaptec_tic.cfg/php.exe/enduser/std_adp.php?p_faqid=17012">tej</a> stronie. Szczęśliwie poprzednio tworzyliśmy tą macierz w sposób wyjątkowo standardowy, więc nie miałem problemów z &#8222;odtworzeniem&#8221; parametrów.<br />
Po restarcie okazało się, że faktycznie zawartość macierzy ocalała i mogłem się dostać do danych. Oczywiście pierwsze, co zrobiłem, to skopiowanie tego wszystkiego w inne miejsce, ale cała procedura zaoszczędziła kilkunastu/kilkudziesięciu godzin, które zajęłoby odtwarzanie tego wszystkiego z zewnątrz.</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/01/adaptec-recover-array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zepsuty YUM</title>
		<link>http://konrad.bechler.pl/2012/01/zepsuty-yum/</link>
		<comments>http://konrad.bechler.pl/2012/01/zepsuty-yum/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 13:45:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pliki blokad]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=493</guid>
		<description><![CDATA[Tym razem &#8222;case study&#8221; z nie-do-końca działającego systemu. Mamy mało krytyczny serwer, świadczący pewne usługi dla użytkowników. Dopóki działa i robi swoje, nikt się do niego nie dotyka. Ale ostatnio zachciało mi się przejrzeć listę systemów i porobić trochę aktualizacji. Byłem dość mocno zdziwiony, jak po zalogowaniu i wpisaniu &#8222;yum clean all&#8221;, program zawisł. Dosłownie [...]]]></description>
			<content:encoded><![CDATA[<p>Tym razem &#8222;case study&#8221; z nie-do-końca działającego systemu.</p>
<p>Mamy mało krytyczny serwer, świadczący pewne usługi dla użytkowników. Dopóki działa i robi swoje, nikt się do niego nie dotyka. Ale ostatnio zachciało mi się przejrzeć listę systemów i porobić trochę aktualizacji. Byłem dość mocno zdziwiony, jak po zalogowaniu i wpisaniu &#8222;yum clean all&#8221;, program zawisł. Dosłownie &#8211; nie reagował na nic, poza &#8222;kill -9&#8243;. Zacząłem przeglądać logi, porównałem konfigurację, wyłączyłem wszystkie pluginy &#8211; nadal nic. Następnym krokiem byłoby przeinstalowanie pakietu, ale w tym wypadku było to mało realne (no bo przecież do instalacji potrzebny jest właśnie YUM, który nie działa).<br />
Poszedłem więc odrobinę inną drogą i ściągnąłem sobie ręcznie nową wersję bezpośrednio z repozytorium CentOSa (wget jest jednym z bardziej przydatnych narzędzi w ratowaniu systemu). &#8222;rpm -U yum&#8230;&#8221; i&#8230;. wisi!<br />
Okazało się, że uszkodzeniu uległa baza pakietów (a dokładniej, pliki blokad) RPMa. Wystarczyło je usunąć:<br />
<code>rm -f /var/lib/rpm/__db*</code>żeby wszystko wróciło do normy. Warto zapamiętać ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/01/zepsuty-yum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Szyfrowanie w Linuksie</title>
		<link>http://konrad.bechler.pl/2012/01/szyfrowanie-w-linuksie/</link>
		<comments>http://konrad.bechler.pl/2012/01/szyfrowanie-w-linuksie/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 08:44:31 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[luks]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=484</guid>
		<description><![CDATA[Jest sobie zdalne centrum danych, w którym umiejscowione są krytyczne dla działania firmy systemy. A skoro są krytyczne, to robimy z nich backupy, dość często nawet i wyjątkowo regularnie. Niestety, kopie zapasowe są na tyle duże, że problematyczne jest kopiowanie ich przez istniejące łącza, a rozbudowa tych ostatnich tylko dla naszej wygody byłaby zdecydowanym przerostem [...]]]></description>
			<content:encoded><![CDATA[<p>Jest sobie zdalne centrum danych, w którym umiejscowione są krytyczne dla działania firmy systemy. A skoro są krytyczne, to robimy z nich backupy, dość często nawet i wyjątkowo regularnie. Niestety, kopie zapasowe są na tyle duże, że problematyczne jest kopiowanie ich przez istniejące łącza, a rozbudowa tych ostatnich tylko dla naszej wygody byłaby zdecydowanym przerostem formy nad treścią (co wcale nie oznacza, że nie robimy backupu &#8222;off site&#8221;, bo byłoby to dużym niedopatrzeniem i zaburzyło procedury <a href="http://pl.wikipedia.org/wiki/Disaster_Recovery">DR</a>).<br />
Potrzebą techniczną jest posiadanie kopii niektórych baz danych, żeby można było w nich grzebać, psuć i niszczyć, a żeby żaden z klientów nie był z tego powodu smutny. Najprostszym rozwiązaniem jest podpięcie dysku USB do maszyny robiącej kopie bezpieczeństwa i przywiezienie takiego dysku (razem z zawartością oczywiście) do biura, gdzie będzie można się nad tym wszystkim znęcać.<br />
Potrzebą biznesową jest za to konieczność zabezpieczenia przewożonych danych w taki sposób, aby potencjalnemu złodziejowi odechciało się walki z tymi zabezpieczeniami. Osobiście uważam to za bardzo rozsądny wymóg, którego warto przestrzegać i który (w skrajnych przypadkach) może w drastyczny sposób ograniczyć straty firmy.</p>
<p>Systemem wykonującym kopie bezpieczeństwa dla wspomnianych przeze mnie systemów jest Linux (konkretnie CentOS w wersji 5). Po przejrzeniu informacji dostępnych w <a href="http://pl.wikipedia.org/wiki/Internet">Internecie</a> okazało się, że metod szyfrowania systemów plików nie ma wcale tak dużo. Pierwszym kandydatem był TrueCrypt, którego z powodzeniem używam w wielu innych miejscach (zarówno zawodowo, jak i prywatnie), jednak &#8211; z niewiadomych mi przyczyn &#8211; był mało stabilny i potrafił wywalić całą maszynę. Znalazłem nawet informację, że problem faktycznie występuje i że zostanie to kiedyś poprawione. Ale potrzebowałem czegoś &#8222;na już&#8221;, więc zacząłem szukać dalej. Ostatecznie padło na <a href="http://code.google.com/p/cryptsetup/">LUKS</a>a. Nie będę się specjalnie rozpisywał, co można za pomocą tego oprogramowania zrobić, bo jest to ładnie opisane na stronie domowej. Ograniczę się jedynie do krótkiej ściągawki, jak wykonać podstawowe czynności.</p>
<p>Załóżmy, że dysk, który chcemy &#8222;zaLUKSować&#8221; to /dev/sdd1. Podstawowym narzędziem, jakiego będziemy używać to &#8222;cryptsetup&#8221;.</p>
<p>Sprawdzanie, czy dane urządzenie nie jest już przypadkiem zaszyfrowane:<br />
<code>cryptsetup isLuks /dev/sdd1 2&gt;&gt;/dev/null &amp;&amp; echo TAK || echo NIE</code><br />
Jeżeli poprzednie polecenie dało wynik negatywny (czyli nie jest jeszcze zaszyfrowane), to możemy je &#8222;sformatować&#8221;:<br />
<code>cryptsetup luksFormat /dev/sdd1</code><br />
Teraz warto sprawdzić, czy operacja się faktycznie udała i podejrzeć nagłówek LUKSa:<br />
<code>cryptsetup luksDump /dev/sdd1</code><br />
Nastepnym krokiem jest &#8222;otworzenie&#8221; zaszyfrowanego urządzenia:<br />
<code>cryptsetup luksOpen /dev/sdd1 bkp</code>Po tej operacji powinno nam się w systemie pojawić nowe urządzenie blokowe, do którego możemy uzyskać dostęp poprzez /dev/mapper/bkp.<br />
<br />
Po zamontowaniu możemy sobie obejrzeć jego &#8222;stan&#8221;:<br />
<code>dmsetup info bkp</code><br />
Jeżeli wszystko się zgadza (a przynajmniej nie ma żadnych rażących błędów), przystępujemy do tworzenia systemu plików:<br />
<code>mke2fs -j /dev/mapper/bkp<br />
</code><br />
Na koniec wystarczy zamontować system plików w systemie:<br />
<code>mount /dev/mapper/bkp /mnt/usb</code>&#8230;i cieszyć możliwością ukrywania naszych ściśle tajnych danych przed światem.</p>
<p>Po zakończeniu zabawy należy oczywiście odpowiednio wszystko pozamykać:<br />
<code>sync<br />
umount /mnt/usb<br />
cryptsetup luksClose bkp</code></p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2012/01/szyfrowanie-w-linuksie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jak usunąć pliki starsze niż&#8230;</title>
		<link>http://konrad.bechler.pl/2011/11/jak-usunac-pliki-starsze-niz/</link>
		<comments>http://konrad.bechler.pl/2011/11/jak-usunac-pliki-starsze-niz/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 19:48:54 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=476</guid>
		<description><![CDATA[Do napisania tego postu skłoniło mnie pewne wydarzenie&#8230; Kilka lat temu napisałem w VBscripcie prosty skrypt, który kasuje pliki starsze, niż zadana ilość dni. Niby nic wielkiego &#8211; tych kilku linijek kodu używam z powodzeniem do dnia dzisiejszego i zawsze działa to tak samo dobrze. Niedawno jeden z moich współpracowników potrzebował zautomatyzować pewien proces i [...]]]></description>
			<content:encoded><![CDATA[<p>Do napisania tego postu skłoniło mnie pewne wydarzenie&#8230;</p>
<p>Kilka lat temu napisałem w <a href="http://pl.wikipedia.org/wiki/VBScript">VBscripcie</a> prosty skrypt, który kasuje pliki starsze, niż zadana ilość dni. Niby nic wielkiego &#8211; tych kilku linijek kodu używam z powodzeniem do dnia dzisiejszego i zawsze działa to tak samo dobrze. Niedawno jeden z moich współpracowników potrzebował zautomatyzować pewien proces i musiał zrobić dokładnie to samo, co mój skrypt. Poszedł jednak zupełnie inną drogą i mój misterny kod został bez litości &#8222;zredukowany&#8221; do jednej linijki. Jest to doskonały przykład na to, że nie zawsze to, czego używamy od wielu lat jest na pewno najlepsze i najbardziej optymalne.<br />
Na swoje usprawiedliwienie mogę napisać jedynie to, że mój skrypt powstał jako część większej całości i nie zastanawiałem się wtedy, czy istnieje jakieś specjalne polecenie, którym mógłbym wykonać zadaną czynność. Dopisałem po prostu kolejną część w języku, którego akurat używałem.</p>
<p>Mój skrypt, który wygląda tak:<code>Option Explicit<br />
'<br />
' Skrypt kasuje wszystkie pliki z katalogu "path", które są starsze, niż "max_age" dni<br />
'<br />
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")<br />
Dim path : path = "c:\what\ever"<br />
Dim folder : Set folder = FSO.GetFolder(path)<br />
Dim max_age : max_age = 3<br />
Dim file, age<br />
'<br />
For Each file In folder.Files<br />
age = CStr(DateDiff("s", file.DateLastModified, Now))<br />
age = age\(3600*24)<br />
If age &gt; max_age Then<br />
WScript.Echo Now &amp; " - kasuje plik: " &amp; path &amp; "\" &amp; file.Name<br />
FSO.DeleteFile(path &amp; "\" &amp; file.Name)<br />
End If<br />
Next<br />
'<br />
WScript.Quit<br />
</code></p>
<p>został zastąpiony taką oto linijką:<code>forfiles -p "C:\what\ever" -s -m *.* -d -3 -c "cmd /c del @path"</code></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>A co w przypadku Linuksa? Tutaj &#8211; szczęśliwie &#8211; zawsze używałem konstrukcji, którą chyba dość trudno będzie uprościć:</p>
<p><code>find /sciezka/do/plikow/* -mtime +10 |xargs rm -rf<br />
</code><br />
Wiem, że można użyć parametru &#8222;exec&#8221; finda i zapisać powyższe jakoś tak:<br />
<code>find /sciezka/do/plikow/* -mtime +10 -exec rm -rf {} \;<br />
</code>jednak połączenie z xargs wydawało mi się zawsze bardziej &#8222;poukładane&#8221; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2011/11/jak-usunac-pliki-starsze-niz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firewall w ESXi 5.0</title>
		<link>http://konrad.bechler.pl/2011/11/firewall-w-esxi-5-0/</link>
		<comments>http://konrad.bechler.pl/2011/11/firewall-w-esxi-5-0/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 13:43:55 +0000</pubDate>
		<dc:creator>konrad</dc:creator>
				<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://konrad.bechler.pl/?p=458</guid>
		<description><![CDATA[Mam pod opieką kilka maszynek wirtualizujących opartych o platformę VMware. Nie używam nawet vShpere &#8211; po prostu hypervisory zainstalowane na sprzęcie, podpięte do zewnętrznych zasobów dyskowych i już. Wszystkie takie serwery podłączone są do centralnego systemu &#8222;nadzorczego&#8221;, którego rolę pełni Nagios. Jeżeli chodzi o hypervisory, to tak właściwie ma on niewiele do zrobienia &#8211; bada [...]]]></description>
			<content:encoded><![CDATA[<p>Mam pod opieką kilka maszynek wirtualizujących opartych o platformę VMware. Nie używam nawet vShpere &#8211; po prostu hypervisory zainstalowane na sprzęcie, podpięte do zewnętrznych zasobów dyskowych i już. Wszystkie takie serwery podłączone są do centralnego systemu &#8222;nadzorczego&#8221;, którego rolę pełni Nagios. Jeżeli chodzi o hypervisory, to tak właściwie ma on niewiele do zrobienia &#8211; bada PINGiem, czy host żyje i odpytuje o czas systemowy (ntp) sprawdzając, czy przypadkiem maszyna nie znalazła się w przyszłości.<br />
Do tej pory wszystkie te systemy działały na wersji ESXi 3.5, jednak przyszło mi do głowy, że warto by było spróbować czegoś odrobinę nowszego. I tak pojawił się pierwszy egzemplarz wersji piątej. Po pierwszych testach okazało się, że system jest stabilny, wspiera wszystko, czego używamy i ogólnie wygląda całkiem fajnie. Tylko Nagios go wyraźnie nie polubił, bo ciągle raportował problemy z czasem. Po intensywnym klikaniu we wszystko, co się da (podejście rodem z SAPa :-)) wyszło mi, że za pomocą konsoli ESXi niewiele osiągnę.<br />
Okazało się, że VMware gruntownie przebudował firewalla swojego supervisora i &#8211; niestety &#8211; nie uwzględnił w standardzie możliwości odpytywania hosta o czas systemowy. Rozwiązanie problemu oczywiście istnieje i nie jest nawet bardzo skomplikowane:</p>
<p>1. Musimy włączyć możliwość logowania się na supervisora za pomocą SSH &#8211; robi się to z konsoli systemowej <a title="Odblokowanie SSH w ESXi 5.0" href="http://www.thomasmaurer.ch/2011/08/activate-ssh-on-vmware-esxi-5-0/">w taki sposób</a>.</p>
<p>2. Logujemy się jako root na naszego hosta (oczywiście za pomocą odblokowanego wcześniej SSH).<br />
<a href="http://konrad.bechler.pl/wp-content/uploads/2011/11/esxi_console_1.jpg" rel="lightbox[458]"><img src="http://konrad.bechler.pl/wp-content/uploads/2011/11/esxi_console_1-300x186.jpg" alt="" width="300" height="186" class="aligncenter size-medium wp-image-462" /></a></p>
<p>3. Tworzymy plik, który będzie opisywał &#8222;usługę&#8221; odpowiedzialną na serwer NTP na lokalnym hoście i otwierał dla nas port udp/123:<code>cat &lt; /etc/vmware/firewall/ntp.xml<br />
&lt;ConfigRoot&gt;<br />
  &lt;service&gt;<br />
    &lt;id&gt;NTP server&lt;/id&gt;<br />
    &lt;rule id='0000'&gt;<br />
    &lt;direction&gt;inbound&lt;/direction&gt;<br />
    &lt;protocol&gt;udp&lt;/protocol&gt;<br />
    &lt;porttype&gt;dst&lt;/porttype&gt;<br />
    &lt;port&gt;123&lt;/port&gt;<br />
    &lt;/rule&gt;<br />
  &lt;/service&gt;<br />
&lt;/ConfigRoot&gt;<br />
EOF<br />
</code></p>
<p>4. Musimy teraz przeładować konfigurację zapory:<code>esxcli network firewall refresh </code></p>
<p>5. W konsoli administracyjnej ESXa powinna nam się pojawić nowa usługa, którą możemy teraz włączyć:<br />
<a href="http://konrad.bechler.pl/wp-content/uploads/2011/11/esxi_ntp_server.jpg" rel="lightbox[458]"><img src="http://konrad.bechler.pl/wp-content/uploads/2011/11/esxi_ntp_server-300x278.jpg" alt="" width="300" height="278" class="aligncenter size-medium wp-image-461" /></a></p>
<p>6. Warto jeszcze &#8211; tak na wszelki wypadek &#8211; sprawdzić, czy serwer NTP jest faktycznie włączony i czy będzie sam startował przy uruchamianiu systemu:<code>~ # /etc/init.d/ntpd status<br />
ntpd is running<br />
~ # chkconfig --list ntpd<br />
ntpd           on<br />
~ #<br />
</code></p>
<p>I to wszystko. Jeżeli wszystko się uda, to możemy cieszyć się serwerem czasu na hoście ESXi :-)</p>
<p>Oczywiście sam tego wszystkiego nie wymyśliłem. Skarbnicą wiedzy o hypervisorach ESXi jest <a href="http://www.virtuallyghetto.com">ten blog</a>. Opisana tu procedura oparta została o <a href="http://www.virtuallyghetto.com/2011/07/how-to-create-custom-firewall-rules-in.html">ten</a> wpis.</p>
]]></content:encoded>
			<wfw:commentRss>http://konrad.bechler.pl/2011/11/firewall-w-esxi-5-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

