
<?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; wgumularz</title>
	<atom:link href="http://www.gumularz.net/linux-tips/author/wgumularz/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>iSCSI czyli Fibre Channel dla ubogich</title>
		<link>http://www.gumularz.net/linux-tips/2009/10/iscsi-czyli-fibre-channel-dla-ubogich/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/10/iscsi-czyli-fibre-channel-dla-ubogich/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:13:53 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[iscsi]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/linux-tips/?p=86</guid>
		<description><![CDATA[iSCSI to ciekawa alternatywa dla wszystkich, którzy potrzebują współdzielonego urządzenia blokowego a nie dysponują środkami na zakup urządzeń FC. W tym krótkim przewodniku przedstawię krok po kroku konfigurację serwera i klienta iSCSI...]]></description>
			<content:encoded><![CDATA[<p><strong>Babciu, po co to wszystko? Przecież jest FC&#8230;.</strong></p>
<p>W dobie wszechobecnej wirtualizacji i coraz większej popularyzacji wszelkiej maści rozwiązań HA współdzielenie urządzeń blokowych staje się konkretnym problemem wielu administratorów. Jeśli pracujesz w firmie, którą stać na FC &#8211; możesz sobie odpuścić ten artykuł. Nawet Novell promując technologię iSCSI mówi wprost: jeśli możesz wybierać &#8211; wybierz FC. Ale jeśli nie&#8230; to postaram się przedstawić jak w kilku krokach zbudować własną &#8222;macierz&#8221;  iSCSI. Całą operację przeprowadzę na systemie SLES10SP2, ale będę unikał narzędzi dedykowanych dla tej dystrybucji (kto lubi &#8211; może to wyklikać w programie YaST) tak, aby opis był w miarę uniwersalny. A więc zaczynamy&#8230;<br />
<span id="more-86"></span><br />
<strong>Jak to działa </strong></p>
<p>iSCSI to protokół opierający się o enkapsulacje poleceń SCSI wewnątrz protokołu TCP/IP. Jest to więc swego rodzaju wirtualizacja dostępu do urządzenia blokowego. Z podobnych technologii można wspomnieć HyperSCSIczy ATAoE &#8211; protokoły przekazujące odpowiednio polecenia SCSI i ATA bezpośrednio w ramkach Ethernet. W odróżnieniu od nich iSCSI może być rutowane (ale ma w związku z tym większy narzut w postaci dodatkowych nagłówków TCP/IP). Ponadto iSCSI pozwala na obustronne uwierzytelnienie za pomocą protokołu CHAP.</p>
<p>Zasada działanie jest bardzo prosta. Po stronie serwera (w terminologii iSCIS &#8211; target) działa demon <em>ietd</em> (iSCSI Enterprise Target), który eksportuje wskazane urządzenia blokowe. Po stronie klienta działa demon <em>open-iscsi</em> (inicjator), którego zadaniem jest nawiązanie połączenia i komunikacja z targetem oraz utworzenie urządzeń blokowych (np. sdb, sdc, itd.) w katalogu <em>/dev</em>. Utworzone przez inicjator urządzenia widoczne są w systemie klienckim jak zwyczajne dyski SCSI czy SATA.</p>
<p><strong>Konfiguracja targetu</strong></p>
<p>Po stronie naszej macierzy należy doinstalować demona ietd oraz moduł do jądra z obsługą protokołu iSCSI. W systemie SLES jądro zawiera wszystkie potrzebne moduły, a demon <em>ietd</em> znajduje się w pakiecie <em>iscsitarget</em>. Osobom pracującym na systemie  SLES polecam jeszcze pakiet <em>yast2-iscsi-server</em> zawierający moduł YaSTa do konfiguracji targetu.</p>
<p>Przed przystąpieniem do konfiguracji serwera iSCSI należy przygotować urządzenia blokowe, które będą eksportowane. Można do tego celu wykorzystać całe dyski, poszczególne partycje, albo wolumeny LVM. Ta ostatnia metoda jest wygodna ze względu na elastyczność zarządzania warstwą urządzeń blokowych oraz możliwość wykonywania snapshot&#8217;ów.</p>
<p>W tym artykule posłużę się przykładem konfiguracji pod klaster HA. Załóżmy więc że potrzebujemy jeden wolumen na dane konfiguracyjne (powiedzmy pod klastrowy system plików), trzy wolumeny jako dyski dla maszyn wirtualnych oraz dysk pod serwer plików. Wtakim układzie najlepej będzie skonfigurować dwa targety:</p>
<ul>
<li>pierwszy z wolumenem współdzielonym pod klastrowy system plików i trzema wolumenami dla maszyn wirtualnych</li>
<li>drugi z jednym wolumenem pod serwer plików</li>
</ul>
<p>Konfiguracja wolumenów LVM:</p>
<pre>host03:~ # dd if=/dev/zero of=/dev/sdb  bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1,0 MB) copied, 0,006733 seconds, 156 MB/s
host03:~ # pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
host03:~ # pvscan
  PV /dev/sdb1               lvm2 [93,13 GB]
  Total: 1 [93,13 GB] / in use: 0 [ 0 MB ] / in no VG: 1 [93,13 GB]

host03:~ # vgcreate iSCSI /dev/sdb
  Volume group "iSCSI" successfully created

host03:~ # vgdisplay
  --- Volume group ---
  VG Name               iSCSI
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               100,00 GB
  PE Size               4,00 MB
  Total PE              25600
  Alloc PE / Size       12850 / 50,20 GB
  Free  PE / Size       12750 / 49,80 GB
  VG UUID               Wlx3d1-DHqd-6P7U-ASIP-4HVD-jDQc-pSErYA

host03:~ # lvcreate -n samba iSCSI -L 20G
  Logical volume "samba" created
host03:~ # lvcreate -n config iSCSI -L 200M
  Logical volume "config" created
host03:~ # lvcreate -n xen1 iSCSI -L 10G
  Logical volume "xen1" created
host03:~ # lvcreate -n xen2 iSCSI -L 10G
  Logical volume "xen2" created
host03:~ # lvcreate -n xen3 iSCSI -L 10G
  Logical volume "xen3" created
host03:~ #
host03:~ # ls -l /dev/iSCSI/
razem 0
lrwxrwxrwx 1 root root 24 2009-10-27 15:12 config -&gt; /dev/mapper/iSCSI-config
lrwxrwxrwx 1 root root 23 2009-10-27 15:11 samba -&gt; /dev/mapper/iSCSI-samba
lrwxrwxrwx 1 root root 22 2009-10-27 15:12 xen1 -&gt; /dev/mapper/iSCSI-xen1
lrwxrwxrwx 1 root root 22 2009-10-27 15:12 xen2 -&gt; /dev/mapper/iSCSI-xen2
lrwxrwxrwx 1 root root 22 2009-10-27 15:12 xen3 -&gt; /dev/mapper/iSCSI-xen3
host03:~ #</pre>
<p>Po przygotowaniu wolumenów można przystąpić do konfiguracji demona <em>ietd</em>. W tym celu w pliku <em>/etc/ietd.conf</em> należy dodać następujące wpisy:</p>
<pre>Target iqn.2009-10.com.vnet:host03-samba
         Lun 0 Path=/dev/mapper/iSCSI-samba,Type=fileio
Target iqn.2009-10.com.vnet:host03-xen
         Lun 0 Path=/dev/mapper/iSCSI-config,Type=fileio
         Lun 1 Path=/dev/mapper/iSCSI-xen1,Type=fileio
         Lun 2 Path=/dev/mapper/iSCSI-xen2,Type=fileio
         Lun 2 Path=/dev/mapper/iSCSI-xen3,Type=fileio</pre>
<p>Po zapisaniu konfiguracji można uruchomić serwer iscsi i sprawdzić czy wszystkie targety/LUNy są widoczne:</p>
<pre>host03:~ # rciscsitarget start
Starting iSCSI target service:                                        done
host03:~ # cat /proc/net/iet/volume
tid:2 name:iqn.2009-10.com.vnet:host03-xen
	lun:0 state:0 iotype:fileio iomode:wt path:/dev/mapper/iSCSI-config
	lun:1 state:0 iotype:fileio iomode:wt path:/dev/mapper/iSCSI-xen1
	lun:2 state:0 iotype:fileio iomode:wt path:/dev/mapper/iSCSI-xen2
tid:1 name:iqn.2009-10.com.vnet:host03-samba
	lun:0 state:0 iotype:fileio iomode:wt path:/dev/mapper/iSCSI-samba
host03:~ #</pre>
<p>Voila! Serwer działa i eksportuje to co chcemy, więc pozostaje nam tylko skonfigurować klienta&#8230;</p>
<p><strong>Konfiguracja klienta</strong></p>
<p>Po stronie klienta również wymagany jest odpowiedni moduł jądra oraz pakiet z demonem &#8211; w systemie SLES nosi on nazwę<em> open-iscsi</em>.  Podobnie jak w przypadku serwera iSCSI, w SLESie można wyklikać wszystko w odpowiednim module programu YaST (wymaga to doinstalowania pakietu <em>yast2-iscsi-client</em>) . Jak zaznaczyłem na początku będę unikał YaSTa więc przedstawię narzędzia uniwersalne.</p>
<p>Do zarządzania dyskami podpiętymi poprzez iSCSI służy polecenie <em>ietadm</em>. Oto przykład wykrywania i podpinania dysków przez protokół iSCSI:</p>
<pre>rico:~ # /etc/init.d/open-iscsi start
Starting iSCSI initiator service:                                     done
Setting up iSCSI targets:                                             unused
rico:~ # iscsiadm -m discovery -t st --portal 10.0.0.103
10.0.0.103:3260,1 iqn.2009-10.com.vnet:host03-xen
10.0.0.103:3260,1 iqn.2009-10.com.vnet:host03-samba
rico:~ #
rico:~ # iscsiadm -m node -T iqn.2009-10.com.vnet:host03-xen --login
Logging in to [iface: default, target: iqn.2009-10.com.vnet:host03-xen, portal: 10.0.0.103,3260]
Login to [iface: default, target: iqn.2009-10.com.vnet:host03-xen, portal: 10.0.0.103,3260]: successful
rico:~ #
rico:~ # ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx [...] ip-10.0.0.103:3260-iscsi-iqn.2009-10.com.vnet:host03-xen-lun-0 -&gt; ../../sda
lrwxrwxrwx [...] ip-10.0.0.103:3260-iscsi-iqn.2009-10.com.vnet:host03-xen-lun-1 -&gt; ../../sdb
lrwxrwxrwx [...] ip-10.0.0.103:3260-iscsi-iqn.2009-10.com.vnet:host03-xen-lun-2 -&gt; ../../sdc
[...]
rico:~ #</pre>
<p>Następnym krokiem (w zależności od potrzeb) może być konfigurowania automatycznego logowania się do wybranych targetów zaraz po uruchomieniu demona <em>open-iscsi</em>:</p>
<pre>rico:~ # iscsiadm -m node -T iqn.2009-10.com.vnet:host03-xen  -o update -n node.conn[0].startup -v automatic</pre>
<p>Od tej chwili demon <em>open-iscsi</em> będzie automatycznie logował się do wskazanego targetu zaraz po uruchomieniu:</p>
<pre>rico:~ # /etc/init.d/open-iscsi start
Starting iSCSI initiator service:                                     done
Attempting discovery on target at 10.0.0.103:                         done
Setting up iSCSI targets: Logging in to [iface: default, target: iqn.2009-10.com.vnet:host03-xen, portal: 10.0.0.103,3260]
Login to [iface: default, target: iqn.2009-10.com.vnet:host03-xen, portal: 10.0.0.103,3260]: successful
                                                                      done
rico:~ #</pre>
<p><strong>Dodatkowe możlilwości</strong></p>
<p>W zależności od potrzeb, serwer iSCSI pozwala nam na skonfigurowanie uwierzytelniania (w dwie strony) oraz ograniczenie ilości równocześnie podpiętych do targetu inicjatorów. W naszym przykładzie wolumen przeznaczony na serwer plików można by zabezpieczyć przed przypadkowym podmontowaniem na kilku maszynach ustawiając maksymalną ilość połączeń na 1. Takie zabezpieczenie jest bardzo wskazane jeśli nie stosujemy klastrowego systemu plików.</p>
<p><strong>Podsumowanie</strong></p>
<p>Technologia  iSCSI jest ciekawą alternatywą dla tych, których nie stać na Fibre Channel. Za jej pomocą możemy zbudować funkcjonalną i niedrogą &#8222;macierz&#8221; , a korzystając z pakietów DRBD oraz Heartbeat &#8211; można zbudować <a href="http://wiki.novell.com/images/c/c8/Tut323_bs2007.pdf">wysokowydajną macierz replikowaną w czasie rzeczywistym</a>. Należy jednak pamiętać, że serwer iSCSI nie kontroluje równoczesnego dostępu do urządzeń więc równoczesne wykorzystanie wolumenów na kilku maszynach wymaga zastosowania dodatkowych mechanizmów zabezpieczających jak np. klastrowy system plików.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/10/iscsi-czyli-fibre-channel-dla-ubogich/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>Wireshark + netcat + tcpdump</title>
		<link>http://www.gumularz.net/linux-tips/2009/06/wireshark-netcat-tcpdump/</link>
		<comments>http://www.gumularz.net/linux-tips/2009/06/wireshark-netcat-tcpdump/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 08:41:36 +0000</pubDate>
		<dc:creator>wgumularz</dc:creator>
				<category><![CDATA[Tips n' tricks]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tcpdump]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://www.gumularz.net/blog/?p=73</guid>
		<description><![CDATA[Wireshark to wspaniałe narzędzie. Niestety nie wszędzie można je zainstalować... Można jednak wykorzystać prosty trick aby pooglądać na swojej stacji ruch przechodzący przez inny host w czasie rzeczywistym....]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wireshark.org/">Wireshark</a> to świetne narzędzie zarówno do nauki jak i troubleshootingu protokołów sieciowych. Posiada bogate możliwości analizy pakietów, ustawiania filtrów, no i &#8230; jest ładny <img src='http://www.gumularz.net/linux-tips/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Problem w tym że czasem nie ma możliwości zainstalowania go na każdej maszynie na której byśmy chcieli. Rozwiązaniem jest przesłanie danych ze snifera <em>tcpdump</em> (który dla odmiany jest instalowany domyślnie w większości wypadków) do analizatora <em>Wireshark</em> zainstalowanego na innej maszynie przez sieć. Wiem, wiem, można &#8216;nałapać pakietów&#8217; do pliku i go potem otworzyć &#8211; ale to nie zawsze jest wygodne.<br />
<span id="more-73"></span><br />
Procedura jest następująca. Na stacji roboczej z wiresharkiem odpalamy polecenie:</p>
<pre>wg@hydra:~/tmp&gt; netcat -l -p 8000 | wireshark -HklS -i -</pre>
<p>Uruchomi ono Wiresharka w taki sposób, że wszystko co wpadnie na port 8000 będzie potraktowane jako dane z tcpdumpa. Teraz pozostaje tylko zalogować się na zdalną maszynę, na której będziemy snifować i uruchomić coś takiego:</p>
<pre>root@nono:/# tcpdump -lnw - -i ethX port not 8000 | netcat TU.JE.ST.IP 8000</pre>
<p>Dodanie filtru &#8216;port not 8000&#8242; zapobiegnie łapaniu pakietów wysyłanych przez polecenie netcat &#8211; nie jest konieczne jeśli snifujemy na innym interfejsie niż ten wykorzystany do przesyłania danych do Wiresharka</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gumularz.net/linux-tips/2009/06/wireshark-netcat-tcpdump/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>

