
<?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; shell</title>
	<atom:link href="http://www.gumularz.net/linux-tips/tag/shell/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>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>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>
	</channel>
</rss>

