Revizuirea regulilor

Se dezactivează pf din consola
pfctl -d

Se activează pf din consola
pfctl -e

Aplicarea regulilor pf dintr-un fișier
pfctl -f /etc/pf.conf

Activarea pf
/etc/rc.conf.local
pf = YES # permite PF







Activează rutarea de pachete din consola, atunci când repornirile sunt anulate
sysctl net.inet.ip.forwarding = 1
sysctl net.inet6.ip6.forwarding = 1

Activați rutarea pachetelor în mod continuu
/etc/sysctl.conf
net.inet.ip.forwarding = 1
net.inet6.ip6.forwarding = 1

Începând cu OpenBSD cu 4.1 la reguli, opțiunea implicită este status-keep
Pentru a refuza crearea unui răspuns, reguli dinamice, adăugați regula fără stat

Sintaxa regulilor generale
direcția de acțiune rapid pe interfață protocol inet proto din src_addr la dst_port

1. acțiune: permiteți (treci) sau blocați (blocați) transferul pachetului

2. direcția: direcția trecerii pachetului de intrare (in) \ outgoing (out)

3. rapid: cuvântul cheie, pachetul care se potrivește cu regula este aplicat imediat, regula este considerată ultima din lanț

4. pe interfață: specificați interfața de rețea

5. inet: inet - protocol IPv4 \ inet6 - protocol IPv6

6. proto: indicarea protocoalelor tcp, udp, icmp, icmp6

8. la dst_port: portul de destinație al pachetului

Să trecem pe ssh
trece rapid pe de0 proto tcp la portul 22
sau așa
trece rapid pe de0 proto tcp la portul ssh

Permitem solicitările de ecou ICMP (păstrați statul)
pass inet proto icmp toate icmp-tip 8 cod 0 păstrați starea
sau așa
treceți în rapid inet proto icmp toate echmp de tip icmp

Permiteți traficul de ieșire
ieși afară

Blocați toate
blocați toate
sau separat
bloca totul
bloc în toate

Port Forwarding
rdr pe de0 inet proto tcp la de0 port 3389 -> 192.168.0.69 port 3389

Peremnnye
ext_if = "de0"
int_if = "de1"

setați săriți peste testul lo0 # skip bucl

scrub în toate # colecta \ normaliza toate părțile din pachet înainte de a trimite

nat pe $ ext_if din $ int_if: rețea la orice -> $ ext_if # Rule NAT

blocați toate # interzice totul de oriunde

trece pe lo0 # permite traficul pe buclă (înlocuit de prima regulă - săriți peste lo0)

transferați $ int_if de la orice la orice # rezolvați totul din rețeaua locală
sau de exemplu așa (selectiv prin porturi)
treceți pe $ int_if proto tcp din $ int_if: rețea către orice port
treci pe $ ext_if proto tcp de la $ ext_if la orice port

trece pe $ ext_if de la $ ext_if la orice # permite accesul opnbsd din exterior

treceți pe $ ext_if proto tcp de la orice la $ ext_if port ssh # activați ssh

trece în inet proto icmp toate icmp-type echoreq # permite ICMP
sau așa, de exemplu
trece pe $ ext_if proto icmp de la orice la oricare
trece pe $ int_if proto icmp de la orice la oricare

Adăugați câte un ip pe linie
192.168.0.2
192.168.0.3
192.168.0.4

nat pe $ ext_if de la la orice -> ($ ext_if)

Exemplu de protecție împotriva atacurilor DDOS

Mai întâi, adăugați un tabel pentru criminali
tabel persista

Regula de blocare
blocați din jurnal rapid de la


treci de pe $ ext_if proto la $ tcp ext_if portul 80 steaguri S / SA menține starea (max-src-Conn 30, max-src-Conn-rata 10/5, suprasarcină





flush global)

Vizualizați lista neagră:
pfctl -t brute -T arată

Eliminați din lista neagră:
pfctl -t brute -T flush

Un exemplu de curățare prin cron la fiecare 30 de minute
* / 30 * * * * rădăcină pfctl -t brute -T flush

Exemplu de curățare după numărul de secunde N (în exemplul nostru de 12 ore):
pfctl -t brute -T expiră 43200


ALTQ este o platformă de așteptare alternativă pentru BSD.

Există trei planificatoare care în prezent sunt suportate de FreeBSD în implementarea ALTQ:

CBQ Class Based Queuing. Cozi atașate la interfață creează un copac.
Astfel, fiecare coadă poate avea mai multe cozile pentru copii.
Fiecare coadă poate avea prioritate și o lățime de bandă atribuită.
Prioritatea, în principal, controlează timpul pentru care pachetele vor fi trimise, în timp ce altele vor aștepta rândul lor
Din acest motiv, cantitatea de producție este reglementată.

PRIQ Priority Queuing. Aceste cozi nu pot avea cozile pentru copii.
Fiecare coadă are o prioritate unică, variind de la 0 la 15
Pachetele cu cel mai mare număr au cea mai mare prioritate.

HFSC Curba ierarhică de serviciu echitabilă.
Coada mamă determină transferul total pentru toate cozi de interfață.
Specifică lățimea totală de bandă furnizată de furnizor și este independentă de viteza interfeței de rețea.
În coada pentru copii, această directivă determină rata maximă de biți care va fi procesată de coadă în orice moment

lista parametrilor de funcționare a coada de așteptare:
implicit - pachetul primit în această coadă nu este verificat în continuare și procesat imediat
roșu - Detectarea timpurie aleatorie scade pachetele care ar putea supraîncărca coada de așteptare
ecn - Notificare clară explicită - similară cu roșu, dar roșu utilizează un algoritm mai optimizat și procesarea coadă în roșu are loc mult mai repede

parametrul de împrumut - coada de copii poate lua, dacă este necesar, lățimea de bandă liberă a coadă părinte
prioritatea este prioritatea coadă. Pentru CBQ și HFSC, valorile pot fi de la 0 la 7, pentru PRIQ, de la 0 la 15. Valoarea implicită pentru toate cozile este 1

# Activează coada de pe interfața de rețea de 10 megabiți pentru lista de coadă:
altq pe coadă de0 cbq lățime de bandă 10Mb

# coada generală ia 10% din canalul nostru de 10 megabiți
cozi lățime de bandă generală 10% cbq (implicit)

# webul are 30%, are doi copii: webchildone, webchildtwo
# mecanismul lor de determinare a sarcinii premature - roșu
# poate lua lățimea de bandă a coadă părinte - web utilizând opțiunea împrumută
# coada de web are prioritate de 4, în configurația noastră este cea mai mare prioritate
# deoarece valorile mai mari de 4 nu sunt definite, respectiv coada de web va procesa pachetele primei
coadă lățime de bandă web 30% prioritate 4 cbq (împrumut roșu)

# coada descendentă are o rată procentuală de 50% și 30%
#% se calculează din lățimea totală de bandă a canalului care este atribuită coadă-părinte web
coadă de lățime de bandă pentru webchildone 30%
coadă webchildtwo lățime de bandă 50% cbq (imprumuta)

# post de coadă durează 5% din lățimea totală a banda, are cea mai mică prioritate - 0
# mecanismul său pentru determinarea încărcării premature - ecn
coadă lățime de bandă postală 5% prioritate 0 cbq (împrumut ecn)

# Coada ssh are doi copii: ssh_connect, ssh_data cu priorități 7 și 0
# Când un pachet ajunge la portul de destinație 22, regula se va pune pe coada de ssh_connect
# după stabilirea conexiunii, pachetul va merge în coada de ssh_data și va avea prioritatea cea mai mare pentru coada părinte - ssh
coadă lățime de bandă ssh 20% cbq (împrumută)
coada priorității ssh_data 7
coada priorității ssh_connect 0

Reguli pentru cozi

Sintaxa completă a regulii:
Direcția de acțiune [log] [rapid] pe interfața [af] [protocol proto] din src_addr [portul src_port] la dst_addr [portul dst_port] [tcp_flags] [stat]

Pentru acțiune
Acțiunea care va fi aplicată pachetului este o trecere sau o blocare. treci pachetul înapoi la kernel pentru
prelucrarea ulterioară. în timp ce blocul va răspunde în conformitate cu politica blocului.
Răspunsul implicit poate fi anulat specificând fie cădere bloc sau returnare bloc.

blocul retur pe de0 inet toate coada generală

trece pe de0 inet proto tcp de la 192.168.1.0/24 la orice port 80 păstrează coadă de așteptare de stat webchildone
trece pe de0 inet proto tcp de la 192.168.0.0/24 la orice port 80 păstrează coada de stat webchildtwo

trece pe de0 inet proto tcp de la orice la orice port 22 păstrează coada de stare (ssh_connect, ssh_data)

trece pe de0 inet proto tcp de la orice la orice port 25 păstrează postul de coadă de stat







Trimiteți-le prietenilor: