kwi 02

Najlżejszym i najbardziej wydajnym serwerem HTTP jest nginx. Nie ma on tak szerokiego zastosowania jak Apache ze względu funkcjonalności, ale o tym kiedy indziej. Zakładam, że jesteś zdecydowany na instalację nginx i chcesz wiedzieć jak to zrobić.

Nginx sam z siebie nie obsługuje PHP. Został stworzony do serwowania statycznych stron, rozkładu zapytań na inne serwery (load balancer) i jako reverse proxy. Z tego powodu, aby uruchomić PHP, musimy przekazywać te zapytania do lokalnego serwera PHP – FastCGI.

Oto krótki tutorial jak krok po kroku uruchomić nginx z php5:
Continue reading »

VN:F [1.9.3_1094]
Rating: 6.0/10 (2 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , , ,

mar 29

Free Technology Academy (FTA) wydała ciekawą książkę pod tytułem GNU/Linux Advanced Administration.  Jest to część ich drugiego modułu zwanego The GNU/Linux Operating System. Sama książka dostarcza wielu ważnych informacji dotyczących administracji systemami Linux. Można nauczyć się konfiguracji samego systemu, kluczowych usług, kernela itp. Nie są to bardzo zaawansowane zagadnienia, dlatego książka jest idealna dla początkujących. Zachęcam do przeczytania.
Continue reading »

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , , , ,

gru 24

Wyszło niedawno nowe GG w wersji 10. Teoretyczne możliwości rozszerzyły się o naszą klase, wp.pl i wiele innych, czyli po prostu powstał wielki kombajn (brakuje tylko funkcji WC :P ).

Jak zapowiadali twórcy, GG 10 miało pojawić się po raz pierwszy również na Maca i Linuxa, jednak oczywiście się tak nie stało.  I tak by nikt z tego nie korzystał… Pod Linuxa, Maca, a nawet BSD jest Kadu, bez reklam, Open Source, i zdecydowanie szybciej działa.

Co jednak zrobić jak używamy Windowsa ? Ano w Internecie krążą jeszcze instalki Gadu-Gadu 7.7. Jest to ostatnia wersja przed „przełomowym” GG 8. Do tego można dorzucić GG Banner Killer, który usunie reklami i voila, mamy skromną w pełni działającą, wersję komunikatora – bez reklam.

Download GG 7.7 – - – Pobierz
GG Banner Killer – - – Pobierz

Banner Killer należy umieścić w folderze z GG, wyłączyć GG, włączyć Banner Killer, usunąć reklamy, wyłączyć Banner Killer, włączyć GG.

Miłego old-schoolowego GGadania !

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , , ,

paź 03

Dobre pytanie, jak na przykład napisać kalkulator w C++ ? Zacznijmy od początku :)

Co to C++ ?

C++, inaczej cpp to język programowania wywodzący się z bardzo starego C. Jest to prawie najwydajniejszy język programowania, posiadający zarazem największe możliwości. Oczywiście na przykład pisząc w asemblerze, otrzymamy trochę wydajniejszy program (wykonujący szybciej operacje), jednak napisanie go zajmie dużo więcej czasu. Z drugiej skrajności, pisząc na przykład w Visual Basicu otrzymamy mniej wydajny program, jednak mniej zajmie napisanie go. Obecnie często spotykane jest korzystanie z bibliotek napisanych w języku asemblera w programach napisanych w C++ (dzięki temu wrażliwe instrukcje wykonywane są szybciej). Więcej o asemblerze tutaj. My zajmiemy się C++.

Co potrzeba do pisania programu w C++ ?

Napisany program w C++ (kod źródłowy) należy skompilować specjalnym programem zwanym kompilatorem aby otrzymać plik wynikowy ( program wykonywalny). Po skompilowaniu programu nie można uzyskać jego źródła (kompilacja jest nieodwracalna), dlatego należy pamiętać, by nie zgubić kodu źródłowego, w przeciwnym razie modyfikacja programu będzie niemożliwa i będzie trzeba zaczynać od początku. Kod w C++ jest jednakowy dla wszystkich systemów operacyjnych.

Kompilator

Dobrym kompilatorem, godnym polecenia jest obecnie Code::Blocks. Jest to IDE (Integrated Development Environment -> zintegrowane środowisko programistyczne). Zawiera podstawowe biblioteki, przyjazny, kolorujacy edytor tekstu i kompilatory. Jest bardzo prosty w użyciu. Jego strona domowa to http://codeblocks.org, jest dostępny pod Windowsem, Linuxem i MacOS’em.

Piszemy Kalkulator

Zaprezentuję tutaj gotowy kalkulator, ponieważ najlepiej uczyć się na przykładach. Kod jest „self-explained”, komentarze umieściłem w kodzie, wystarczy przeczytać.

  1. /*————————+
  2. |      Calculatorix       |
  3. |         v 1.0           |
  4. |   by DonDaniello.com    |
  5. +————————*/
  6. // Wszystko co jest umieszczone pomiędzy /* i */ nie jest brane pod uwagę przez kompilator, jest to tzw. komentarz wieloliniowy. Każda linia zaczynająca się od "//" jest komentarzem jednoliniowym (tak jak ta). Jest możliwość wpisania komentarza po kodzie tak jak poniżej. W takim wypadku kod jest brany pod uwagę tylko do "//".
  7.  
  8. #include <iostream> // ładujemy bibliotekę wejścia/wyjścia (input/output)
  9. #include <cmath> // ładujemy bibliotekę matematyczną
  10.  
  11. using namespace std; // używamy standardowych bibliotek do naszych odwołań
  12.  
  13. int main() // podstawowa funkcja programu, obowiązkowa
  14. {
  15. int dzialanie; // deklaracja zmiennej liczby całkowitej o nazwie dzialanie.
  16. double x, y, z; // deklaracja zmiennych liczb długich, niecałkowitych o nazwach x, y i z.
  17. // Zauważ, że prawie każde polecenie kończy się cudzysłowem.
  18.  
  19. cout << "Witaj w Calculatorix v 1.0 !"<<endl<<endl;
  20. // endl to funkcja zwracająca znak końca linii. "cout <<" oznacza przesłanie czegoś do standardowego wyjścia"
  21. while (true) { // pętla zawsze spełniona
  22. // wysyłamy tekst
  23. cout << "Dostepne dzialania:"<<endl;
  24. cout << "1 – Dodawanie"<<endl;
  25. cout << "2 – Odejmowanie"<<endl;
  26. cout << "3 – Mnozenie"<<endl;
  27. cout << "4 – Dzielenie"<<endl;
  28. cout << "5 – Potegowanie"<<endl;
  29. cout << "6 – Pierwiastkowanie"<<endl;
  30. cout << "7 – Wartosc absolutna"<<endl<<endl;
  31. cout << "Wybierz dzialanie do wykonania:";
  32. cin >> dzialanie; // przyjmujemy wybór działania
  33. cout << endl;
  34. switch (dzialanie) { // wybór działania
  35.  
  36. case 1: // jeśli podano jeden to:
  37. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  38. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  39. z = x + y; // liczymy
  40. cout << x << " plus " << y << " rowna sie" << z << "." << endl << endl;
  41. break; // koniec przypadku
  42.  
  43. case 2:
  44. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  45. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  46. z = x – y;
  47. cout << x << " minus " << y << " rowna sie " << z << "." << endl << endl;
  48. break;
  49.  
  50. case 3:
  51. cout << "Podaj pierwszy czynnik: "; cin >> x;// cout << endl;
  52. cout << "Podaj drugi czynnik: "; cin >> y;// cout << endl;
  53. z = x * y;
  54. cout << x << " razy " << y << " rowna sie " << z << "." << endl << endl;
  55. break;
  56.  
  57. case 4:
  58. cout << "Podaj dzielna liczbe: "; cin >> x;// cout << endl;
  59. cout << "Podaj dzielnik liczbe: "; cin >> y;// cout << endl;
  60. z = x / y;
  61. cout << x << " podzielone przez " << y << " rowna sie " << z << "." << endl << endl;
  62. break;
  63.  
  64. case 5:
  65. cout << "Podaj podstawe potegi: "; cin >> x;// cout << endl;
  66. cout << "Podaj wykladnik potegi: "; cin >> y;// cout << endl;
  67. z = pow (x, y);
  68. cout << x << " do potegi " << y << " rowna sie " << z << "." << endl << endl;
  69. break;
  70.  
  71. case 6:
  72. cout << "Podaj podstawe pierwiastka: "; cin >> x;// cout << endl;
  73. z = sqrt (x);
  74. cout << "Pierwiastek z " << y << " wynosi " << z << "." << endl << endl;
  75. break;
  76.  
  77. case 7:
  78. cout << "Podaj podstawe wartosci absolutnej: "; cin >> x;// cout << endl;
  79. z = abs (x);
  80. cout << "Wartosc absolutna liczby " << y << " wynosi " << z << "." << endl << endl;
  81. break;
  82.  
  83. default: cout<<endl<<"Bye Bye !"; return 0; break; // jeśli podano coś innego, wysyłamy tekst i wyłączamy program
  84. }
  85. }
  86. }

Kod bez komentarzy do pobrania tutaj: Calculatorix

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , ,

sie 29

Na wstępie…

Ochrona przed DDoS to ważna rzecz dla serwerów, jeśli nie chcemy mieć problemów z dostępnością usług. Prędzej czy później znajdzie się ktoś komu przeszkadza nasz serwer, chce się pobawić, wredna konkurencja, nudzi mu się itd. i akurat nasz serwer przypadł mu do ataku. Na takich agentów jest wiele sposobów. Oczywiście opisuję tutaj metody na Linuxa, bo Windows załapuje DDoS przed podłączeniem do sieci (a dobry firewall kosztuje fortunę).
Do poniższych czynności potrzebne są uprawnienia roota (su).

Po pierwsze: APF (Advanced Policy-based Firewall)

Jest to rozbudowany firewall, troszkę inny niż iptables. Nic nie przeszkadza, aby mieć je oba, a wiadomo firewall bez wrednych reguł, nie zawadza.

Instalacja:

# cd /usr/src
# mkdir utils
# cd utils
# wget http://rfxnetworks.com/downloads/apf-current.tar.gz
# tar xfz apf-current.tar.gz
# cd apf-*
# ./install.sh

I już zainstalowane… ale nie gotowe. W plikach README.apf i README.antidos znajdziesz opisy konfiguracji, które warto przeczytać. Teraz wypada zmienić trochę konfigurację. Edytuj plik /etc/apf/conf.apf i zmień następujące linie:

DEVEL_MODE=”0″
IG_TCP_CPORTS=”21,22,25,53,80,110,143,443,3306″
IG_UDP_CPORTS=”53,111″
USE_AD=”1″

Teraz krótkie wyjaśnienie: Pierwsza linijka – wyłączamy development mode. Druga linijka: Określamy dozwolone porty WEJŚCIOWE TCP. Bardzo ważne by nie zapomnieć np o porcie 22 dla SSH i wszystkich innych nam potrzebnych. Trzecie linijka, to samo tylko, że porty UDP. Tutaj głównie DNS (port 53), Portmapper (port 111). Na końcu uruchamiamy AntiDDoS (czwarta linijka).

Dobra, namęczyliśmy się, pora to wykorzystać. Odpalamy APF komendą:

# apf –start

Jeśli wyświetli Ci się błąd (Unable to load iptables module (ip_tables), aborting), dodaj w configu APF (tym co wyżej), linię „SET_MONOKERN 1″.

Po drugie: DDoS Deflate

Do działania DDoS Deflate wymagany jest APF :) Instalacja:

# cd /usr/src/utils
# mkdir ddos
# cd ddos
# wget http://www.inetbase.com/scripts/ddos/install.sh
# sh install.sh

Teraz konfiguracja:
W pliku/usr/local/ddos/ddos.conf możesz zwiększyć czasy blokad (banów na IP).

Odpalamy:

# /usr/local/ddos/ddos.sh -c

Gotowe. DDoS Deflate został dodany do crona. co 5 minut uruchamia się i blokuje adresy IP w APF, które mają więcej niż ilość połączeń ustawiona w configu na czas określony w configu. Polecam czas blokady zwiększyć.

Po trzecie: Reguły do IPTables

Blokada przed atakiem DOS – Ping of Death
iptables -A INPUT -p ICMP –icmp-type echo-request -m length –length 60:65535 -j ACCEPT

Blokada przed atakiem DOS – Teardrop
iptables -A INPUT -p UDP -f -j DROP

Blokada przed atakiem DOS – SYN-flood
iptables -A INPUT -p TCP –syn -m iplimit –iplimit-above 9 -j DROP

Blokada przed atakiem DOS – Smurf
iptables -A INPUT -m pkttype –pkt-type broadcast -j DROP
iptables -A INPUT -p ICMP –icmp-type echo-request -m pkttype –pkttype broadcast -j DROP
iptables -A INPUT -p ICMP –icmp-type echo-request -m limit –limit 3/s -j ACCEPT

Blokada przed atakiem DOS – UDP-flood (Pepsi)
iptables -A INPUT -p UDP –dport 7 -j DROP
iptables -A INPUT -p UDP –dport 19 -j DROP

Blokada przed atakiem DOS – SMBnuke
iptables -A INPUT -p UDP –dport 135:139 -j DROP
iptables -A INPUT -p TCP –dport 135:139 -j DROP

Blokada przed atakiem DOS – Connection-flood
iptables -A INPUT -p TCP –syn -m iplimit –iplimit-above 3 -j DROP

Blokada przed atakiem DOS – Fraggle
iptables -A INPUT -p UDP -m pkttype –pkt-type broadcast -j DROP
iptables -A INPUT -p UDP -m limit –limit 3/s -j ACCEPT

Blokada przed atakiem DOS – Jolt
iptables -A INPUT -p ICMP -f -j DROP

Istnieje możliwość, że system zastrajkuje z powodu braku w kernelu jakiegoś modułu, wtedy należy sobie przekompilować jajko lub… dać sobie spokój jeśli to za trudne, piszę o tym tylko dlatego, zebyście wiedzieli, że tak może być.

Na zakończenie…

Teraz jesteśmy (prawie) bezpieczni.
Należy pamiętać aby dodać APF do autostartu, jeśli instalujemy z paczki jest to automatycznie, jeśli z opisanego wyżej sposobu, trzeba to zrobić samemu.
Zauważ, że wszystkie pliki instalacyjne zostawiamy w katalogu /usr/src/utils. Dlaczego ? Bo jak sama nazwa wskazuje, tam powinny się znaleźć ! (A nie śmiecić w /root)

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , ,