Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[BSD] Kompilacja i konfiguracja PF aka Packet Filter


Badar

Rekomendowane odpowiedzi

Opublikowano

Witajcie .

 

 

Dziś poruszymy kwestię kompilacji jednego z trzech firewalli BSD'ka -- tego najciekawszego, czyli PF'a (Packet Filter) .

Dlaczego najciekawszego ?

PF jest najciekawszym firewallem, ponieważ spełnia wszystkie zadania - to 3 w 1 ! .

Osobiście się do niego bardzo przekonałem i kompiluję tylko PF

:).

Ale dość tego wstępu, pora na konkrety .

 

Kompilacja .

 

 

 

Kompilację podzielimy na :

  • pobranie source jądra
  • edycję loader'a
  • edycję pliku konfiguracyjnego nowego jądra
  • kompilcję nowego jadra

Zaczynamy !

 

Pobranie source jądra .

 

Pora na fazę pierwszą, czyli pobranie source - pokażę to Wam tekstowo i w formie SS'ów .

Łączymy się po przez SSH do naszego serwerka i następnie wpisujemy ten ciąg komend :

 sysinstall [enter] --> [wybieramy] configure [enter] --> [wybieramy] distributions [enter] --> [wybieramy] src [enter] --> [zaznaczamy] base i sys [lewy potem prawy kursor] [enter] --> [wybieramy] FTP [enter] --> [wybieramy] main site [enter] --> czekamy --> wychodzimy z sysinstall --> faza I zakończona 

 

SS'y :

 

 

W ten sposób pobraliśmy source jądra, teraz możemy działać i je przerobić pod nasze potrzeby

:).

Pora na fazę II

 

Edycja loader'a .

 

Pora na edycję loader'a, by umożliwić uruchamianie się PF'a (packet filtera)

:).

Wykonujemy to za pomocą następującej komendy :

cd /boot/defaults && ee loader.conf --> zmieniamy PF_LOAD="NO" na "YES"

Po tej operacji wychodzimy i zapisujemy plik .

Tu już wszystko wykonaliśmy .

 

SS'y :

 

 

Koniec fazy II pora na fazę III

 

Edycja pliku konfiguracyjnego nowego jądra.

 

Przyszła pora na edycje naszego CONFIG jądra, by móc dodać opcje PF'a ..

W przypadku 32 i 64 bitowego systemu są to różne ścieżki .

 

32 bitowy OS :

cd /usr/src/sys/i386/conf

 

64 bitowy OS :

cd /usr/src/sys/amd64/conf

 

Po wpisaniu któreś z tej komend, kopiujemy plik konfiguracyjny GENERIC na nasz, po przez następującą komendę :

 

cp GENERIC nasze-jadro

np:

cp GENERIC Badar

 

Teraz pora na edycję CONFIG'a po przez komendę :

 

ee nasze-jądro

np:

ee Badar

 

W miejscu "options" dopisujemy następujące opcje :


device[TAB][TAB]pf
device[TAB][TAB]pflog
device[TAB][TAB]pfsync
options[TAB][TAB]ALTQ
options[TAB][TAB]ALTQ_CBQ
options[TAB][TAB]ALTQ_RED
options[TAB][TAB]ALTQ_RIO
options[TAB][TAB]ALTQ_HFSC
options[TAB][TAB]ALTQ_PRIQ
options[TAB][TAB]ALTQ_NOPCC

 

Po ich dopisaniu przyszła pora na fazę IV, czyli kompilację naszego jądra .

 

kompilacja jądra

 

 

 

Przyszła pora na ostatnią fazę tej operacji - kompilację jądra .

Jest to jedna z najprostszych czynności, lecz może zająć wiele czasu .

Dobra, do rzeczy..

 

Wpisujemy następującą komendę :

 

cd /usr/src && make buildkernel KERNCONF=nazwa-jądra &&  make installkernel KERNCONF=nazwa-jądra

 

Następnie czekamy, aż kompilacja się zakończy, gdy to się wydarzy przechodzimy do następnej operacji .

 

 

 

Autostart i komendy

 

 

 

Przyszła pora na edycję pliku autostartu i podanie Wam podstawowych komend do PF'a .

 

Edytujemy plik autostartu (rc.conf) po przez następującą komendę :

 

ee /etc/rc.conf

 

Następnie wklejamy tam zawartość code :

 


pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags="”

 

To tyle, jeśli chodzi o autostart, teraz pora na wymienienie komend :

 

komendy do PF :

 

/etc/rc.d/pf restart | start | stop -- wiadomo, restartuje, wyłącza, lub włącza PF'a
pfctl -F all -f /etc/pf.conf -- restartuje i przeładowuje reguły PF

 

Przechodzimy do kolejnej, ostatniej operacji .

 

 

 

Reguły PF

 

 

 

Pora na reguły naszego PF'a, które znajdą się w pliku pf.conf .

Jest to również ważna część, gdyż bez nich nie damy rady dostać się do maszyny .

Dam Wam gotowe reguły jak i nauczę robić je od zera .

 

Utworzenie pliku zasad PF

 

ee /etc/pf.conf

 

Budowa reguł PF'a

 

 

 

PF wspiera powłokę unixową - pozwala na użycie zmiennych, zakresów etc.

Na początek musimy ustalić sobie nasz zakres zmiennych, by móc wygodnie pisać nasze reguły - potocznie nazywamy to makrą .

 

Cały, pełnowartościowy PF składa się z :

 

1. Makry

2. Opcji zarządzania czasem połączenia

3. Składania pofragmentowanych lub rozbitych pakietów

4. Normalizacji pakietów

5. Zarządzania pasmem np. kontrola intensywności ruchu

6. Translacji pakietów

7. Przekierowań - reguły filtrowania

8. Filtrowania pakietów

 

Funkcje PF'a w regułach

 

 

 

PF składa się z wielu dodatkowych funkcji, które ułatwiają zabezpieczanie naszego serwera .

Oto te reguły :

 

set block-policy return # ustawia wysyłanie domyślnej odpowiedzi na pakiety idące na zablokowane porty i protokoły
set loginterface zmienna z kartą # ustawia funkcję powyżej na konkretną kartę (najlepiej podać w zmiennej np $ext_if)
scrub in all # ustawia nam normalizację pakietów wchodzących (definiuje to "in", można dać również "out"), jest to bardzo przydatna opcja
antispoof log quick for zmienna z kartą # blokuje wszystkie sfałszowane pakiety (bardzo przydatna opcja przy ochronie sieci, najlepiej podać kartę w formie zmiennej)

 

 

 

Warunki, protokoły, flagowanie PF'a w regułach

 

 

 

Reguły PF'a jak każde mają swoje warunki, flagi, protokoły..

Flagowanie pozwala również na blokadę skanu portów, nasłuchu często stosowaną również na protokole TCP (zwykle na icmp).

Warto je poznać i wymienić, by móc szczelnie budować swoje zestawy reguł .

 

Warunki :

pass -- odblokowanie, pozwolenie na przepuszczenie pakietu / odblokowanie portu / etc.
block -- przeciwieństwo pass, blokuje przepuszczanie pakietu / port etc .
quick -- anuluje przeglądanie reguł i nakazuje PF'owi zatrzymanie się na konkretnej regule i zastosowanie się do niej (bardzo przydatne przy ochronie sieci)
proto -- definiuje rodzaj protokołu np proto tcp

 

Argumenty :

any -- z każdego źródła
from -- skądś dokądś np from any to any
all -- wszystko, np przepuszczenie / blokowanie wszystkiego
on -- na czym, np na jakiej karcie
in / out -- pakiety / reguły wchodzące lub wychodzące
max numer -- np max 200 , ustawia maksymalną liczbę bajtów w danym pakiecie podczas połączenia (jeśli przekroczy to blokuje)

 

Protokoły :

TCP -- standardowy protokół dla IP, korzystają z niego praktycznie wszystkie porty w unixie jest narażony na skan portów etc, najczęściej stosowany (posiada najwięcej flag).
UDP -- Standardowy protokół dla przesyłu, łączenia się etc. Bardzo częsty cel hackerskich ataków typu DoS (posiada najmniej flag).
ICMP -- Protokół stosowany zwykle do sprawdzania "żywotności" systemu, odblokowanych portów, nasłuchu etc .
ICMP6 -- J/W .

 

State'y w PF

modulate state -- modyfikuje state, dostosowuje je do obecnych potrzeb (lepsze od keep state)
keep state -- przerywa komunikację wrazie np przeciążenia

State'y w PF są bardzo ważnym dodatkiem, dzięki nim również chronimy swą sieć przed atakami .

 

Flagowanie dla protokołu TCP

		  
F -- FIN, dla zamykania połączeń			
S -- SYN, dla otwierania połączeń			
R -- RST, dla resetowania połączeń		  
P -- PSH, dla upewniania się że wszystkie dane dotarły		
A -- ACK, dla potwierdzania pakietów			
U -- URG, by zaznaczyć że pakiet jest pilny

 

Flagowanie tyczy się tylko i wyłącznie protokołu TCP

 

 

 

To w sumie na tyle, pora na gotowe przykłady :)

[/code]

 

 

 

Gotowe podstawowe zasady PF'a (przepuszczają każde połączenie)


#makra
int_if = "em1"
ext_if = "em0"

#regułki filtra pakietów
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
pass in on $ext_if proto tcp all modulate state flags S/SA
pass in on $ext_if proto { udp, icmp } all keep state
pass quick on lo0 all

 

Gotowe średniej klasy zasady PF'a (są już bardziej "złożone")


ext_if="em0"
int_if="em1"
lan_net="10.0.0.0/24"
tcp_services="{ 3306, 22 }"
udp_services="{ 3306, 22 }"
icmp_types="echoreq"
set skip on lo0
set block-policy return
set loginterface $ext_if
scrub in all
block in on $ext_if
pass in on $int_if from $lan_net to any
pass out on $int_if from any to $lan_net
antispoof log quick for $int_if
pass in on $ext_if proto tcp from any to any port $tcp_services modulate state flags S/SA
pass in on $ext_if proto udp from any to any port $udp_services keep state
pass out on $ext_if proto tcp from any to any port $tcp_services modulate state flags S/SA
pass out on $ext_if proto udp from any to any port $udp_services keep state
pass in on $ext_if proto { tcp, udp } from any to $ext_if port 53
pass in inet proto icmp all icmp-type $icmp_types keep state
pass out on $ext_if proto { tcp, udp, icmp } all # enter na końcu(po regułach, ma być dosłownie pusta linijka)

 

 

 

Tutorial zostanie dopracowany pod względem estetyki etc do dnia : 6 marca godziny 22:00

 

 

Nie odpowiadam za wszelkie szkody wynikające z błędów podczas kompilacji !

Pozdrawiam !

Opublikowano

No Badarku, jak zawsze się postarałeś dzięki wielkie, na pewno wielu osobom przyda się ten tut ;)

Poszukuje pluginu Gr2 do 3Ds max 2012.

haac.jpg

 

Jestem jaki jestem i tego NIE zmienię!

 

 

 

Moje Tut'y

 

Video tut jak dodać mapę na swój serwer:

http://www.mpcforum.pl/topic/416201-videotut-jak-dodac-mape-na-wlasny-serwer/page__gopid__2960589#entry2960589

Texture Mod:

http://www.mpcforum.pl/topic/406659-download-texture-mod/page__p__2892270__fromsearch__1#entry2892270

Znaczek GM:

http://www.mpcforum.pl/topic/367597-dl-znaczek-gm/page__p__2603024__fromsearch__1#entry2603024

Nowe Zbroje By Baso:

http://www.mpcforum.pl/topic/478940-dltutzbroje-by-baso/

 

Opublikowano

Tut bardzo sie przyda, ładnie i estetycznie opisane. Może dodałbyś jakieś podpowiedzi jak najlepiej ustawić reguły żeby w jakimś stopniu zabezpieczyć się przed DDOSami?

Opublikowano

Tut bardzo sie przyda, ładnie i estetycznie opisane. Może dodałbyś jakieś podpowiedzi jak najlepiej ustawić reguły żeby w jakimś stopniu zabezpieczyć się przed DDOSami?

 

A no to podczas poprawek dodam, ale można się domyśleć jak to kilka razy przeczytasz ;>

 

@Queti - oj ja w to wątpie ...^^ .

 

Btw dawaj na gg

 

 

@Michaś - nie chce mi się new posta robić to tu pisze ^^. Jak to mój 12 tut około Oo

Opublikowano

a gdzie znajde tą sciezke PF=Load ?? Bo szukam szukam i nic;/

................

Opublikowano

a gdzie znajde tą sciezke PF=Load ?? Bo szukam szukam i nic;/

 

Jaką ścieżkę Pf-load ? Oo

 

Rozwiń wypowiedź, bo nie zrozumiałem - jak nie dajesz rady to Ci pomogę

 

@Down - przerwała Ci się kompilacja tak więc PF nie wie co robić i zwaliło Ci się jądro .

 

Polecam tryb rescue / reinstall .

Opublikowano

dobra znalazlem tylko maqm problem wczoraj prz instalacji laptop mi sie wylaczyl i jak probuje sie zalogowac do putty to nie moge ;///

................

Opublikowano

yy nie rozumiem tego

W miejscu "options" dopisujemy następujące opcje :

device[TAB][TAB]pf

device[TAB][TAB]pflog

device[TAB][TAB]pfsync

options[TAB][TAB]ALTQ

options[TAB][TAB]ALTQ_CBQ

options[TAB][TAB]ALTQ_RED

options[TAB][TAB]ALTQ_RIO

options[TAB][TAB]ALTQ_HFSC

options[TAB][TAB]ALTQ_PRIQ

options[TAB][TAB]ALTQ_NOPCC

 

 

Gdzie to mam dopisać dokładnie mógł by ktoś powiedziec??

................

Opublikowano

yy nie rozumiem tego

W miejscu "options" dopisujemy następujące opcje :

device[TAB][TAB]pf

device[TAB][TAB]pflog

device[TAB][TAB]pfsync

options[TAB][TAB]ALTQ

options[TAB][TAB]ALTQ_CBQ

options[TAB][TAB]ALTQ_RED

options[TAB][TAB]ALTQ_RIO

options[TAB][TAB]ALTQ_HFSC

options[TAB][TAB]ALTQ_PRIQ

options[TAB][TAB]ALTQ_NOPCC

 

 

Gdzie to mam dopisać dokładnie mógł by ktoś powiedziec??

 

Przeczytaj dokładnie tutka [........]

 

Wklejasz to ofc z tabami do pliku konfiguracyjnego jądra i kompilujesz. Tak ciężko to doczytać i zrozumieć ?

Opublikowano

Tak na marginesie to nie trzeba kompilować PF do jądra można pominąć ten etap instrukcji gdyż po dodaniu wpisu pf_enable="YES" do /etc/rc.conf skrypt uruchamiający pf będzie ładował moduł pf, który jest dostępny w systemie. Wydaje mi się że nie ma sensu obciążać jądro dodatkowymi kb gdy można używać modułu. Poprawność załadowania modułu można sprawdzić komendą kldstat

 

P.S. przy zabawie z regułkami na dedyku dobrze jest sobie zrobić skrypt, który zrobi flush regułek i wrzucić go do crontaba w celu uniknięcia muki kiedy sami siebie przez przypadek zablokujemy :)

 

A do załadowania regułek bez rozłączenia połączeń gdy stosujemy zasadne domyślnego blokowania można zastosować polecenie pfctl -R -f /etc/pf.conf

 

Pozdrawiam

 

AdminFreeBSD

- zabezpieczenia: logowania do serwera na klucz RSA, baz danych - TUNEL SSH, FIREWALL, ANTY-DOS, aktualizacja systemu

- jaile: (podział serwera dedykowanego na kilka pod serwerów z oddzielnymi adresami IP, usługami, kontami użytkowników, konfiguracją itd.), aktualizacja jaili, autorestart jaila z wewnątrz jaila

- optymalizacja logów, bazy mysql, naprawianie bazy mysql, automatyczny backup na zewnętrzny serwer FTP, poprawny licznik graczy online, itd.

- programowanie: edycja/pisanie skryptów php, zapytań (query) SQL.

Opublikowano

Tak na marginesie to nie trzeba kompilować PF do jądra można pominąć ten etap instrukcji gdyż po dodaniu wpisu pf_enable="YES" do /etc/rc.conf skrypt uruchamiający pf będzie ładował moduł pf, który jest dostępny w systemie. Wydaje mi się że nie ma sensu obciążać jądro dodatkowymi kb gdy można używać modułu. Poprawność załadowania modułu można sprawdzić komendą kldstat

 

P.S. przy zabawie z regułkami na dedyku dobrze jest sobie zrobić skrypt, który zrobi flush regułek i wrzucić go do crontaba w celu uniknięcia muki kiedy sami siebie przez przypadek zablokujemy :)

 

A do załadowania regułek bez rozłączenia połączeń gdy stosujemy zasadne domyślnego blokowania można zastosować polecenie pfctl -R -f /etc/pf.conf

 

Pozdrawiam

 

AdminFreeBSD

 

Pozwolisz, że dodam to do tutoriala ? :) (wolę spytać) .

 

Ten moduł wg Ciebie zadziała tak samo poprawnie? :P

 

@down - jasne, dziękuję Ci - zaznaczę, czyja to wypowiedź :)

Opublikowano

Tak możesz dodać oczywiście z odpowiednim podpisem :) Ja stosuję moduł i nie mam z tym żadnych problemów w moich konfiguracjach więc moim zdaniem nie ma żadnej różnicy a wręcz jest zaleta że jądro ma parę kb mniej.

- zabezpieczenia: logowania do serwera na klucz RSA, baz danych - TUNEL SSH, FIREWALL, ANTY-DOS, aktualizacja systemu

- jaile: (podział serwera dedykowanego na kilka pod serwerów z oddzielnymi adresami IP, usługami, kontami użytkowników, konfiguracją itd.), aktualizacja jaili, autorestart jaila z wewnątrz jaila

- optymalizacja logów, bazy mysql, naprawianie bazy mysql, automatyczny backup na zewnętrzny serwer FTP, poprawny licznik graczy online, itd.

- programowanie: edycja/pisanie skryptów php, zapytań (query) SQL.

Opublikowano

A powie mi ktoś jak odinstalować firewalla??? Bo jak to zrobiłem to teraz nie mogę się w ogóle zalogować na VPS to wole odinstalowac;/;

Opublikowano

A powie mi ktoś jak odinstalować firewalla??? Bo jak to zrobiłem to teraz nie mogę się w ogóle zalogować na VPS to wole odinstalowac;/;

Odinstalować ? Ciekawe.

Może lepiej wyłączyć ?

Jak masz możliwość to wejdź w tryb rescue, zamontuj partycję i w rc.conf wyłącz firewall'a.

Jeżeli takiej nie masz, to poproś administratora o podobne działanie.

Opublikowano

Mam dostęp do awaryjej konsoli zmieniłem pf_enable="YES" na NO ;)

 

i zobaczymy czy będę mógł wejść do vps..

 

 

@edit dalej coś blokuje logowanie się pomoże ktoś ??

Opublikowano

Napisz jaki masz komunikat błędu. Napisz jak się logujesz jaki port używasz w putty, podaj konfiguracje z pliku sshd_config. Ogólnie opisz sytuacje to ci kto pewnie pomoże. Bo z zdania nie moge się zalogować to dużo wywnioskować nie można.

- zabezpieczenia: logowania do serwera na klucz RSA, baz danych - TUNEL SSH, FIREWALL, ANTY-DOS, aktualizacja systemu

- jaile: (podział serwera dedykowanego na kilka pod serwerów z oddzielnymi adresami IP, usługami, kontami użytkowników, konfiguracją itd.), aktualizacja jaili, autorestart jaila z wewnątrz jaila

- optymalizacja logów, bazy mysql, naprawianie bazy mysql, automatyczny backup na zewnętrzny serwer FTP, poprawny licznik graczy online, itd.

- programowanie: edycja/pisanie skryptów php, zapytań (query) SQL.

Opublikowano

błąd mam taki : lolrpf.png zmieniłem kiedyś port 22 na port 5000 ;)

 

Podajesz złe hasło milordzie

Opublikowano

ale kur.. dobre wpisuje.. Na maila nic mi nie przyszło ze zmienili;/

 

ale jak wpisuje takie dane w awaryjnej konsoli to pokazuje ze dobrze to kur.. czemu w putty tak pokazuje?

Opublikowano

ale kur.. dobre wpisuje.. Na maila nic mi nie przyszło ze zmienili;/

 

ale jak wpisuje takie dane w awaryjnej konsoli to pokazuje ze dobrze to kur.. czemu w putty tak pokazuje?

 

Hasło do vsphere jest inne niż do SSH, i możesz nie mieć odblokowanego permit logina milordzie

Opublikowano

Plik /etc/ssh/sshd_config się kłania jak nie wiesz co z tym zrobić, zmienić zapytaj wujka google.pl. Są dwie opcje twojego problemu. 1. Podajesz złe hasło. Zmień je i się zaloguj. 2. Masz właśnie jak Badar napisał zablokowane logowanie konta root. Ewentualnie coś zdupczyłeś bawiąc się plikami systemowymi :)

- zabezpieczenia: logowania do serwera na klucz RSA, baz danych - TUNEL SSH, FIREWALL, ANTY-DOS, aktualizacja systemu

- jaile: (podział serwera dedykowanego na kilka pod serwerów z oddzielnymi adresami IP, usługami, kontami użytkowników, konfiguracją itd.), aktualizacja jaili, autorestart jaila z wewnątrz jaila

- optymalizacja logów, bazy mysql, naprawianie bazy mysql, automatyczny backup na zewnętrzny serwer FTP, poprawny licznik graczy online, itd.

- programowanie: edycja/pisanie skryptów php, zapytań (query) SQL.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...