F5 kasutamine
Sissejuhatus
http://en.wikipedia.org/wiki/F5_Networks ...
Seadmete nimekiri koos seadmete omadustega asub aadressil http://www.f5.com/pdf/products/big-ip-platforms-datasheet.pdf.
Tööpõhimõte
- seadmes kirjeldatakse tavaliselt partitsioonid, mis võimaldavad erinevat liiklust lokaliseerida
- partitsioonides kirjeldatakse tavaliselt ruuting domeenid, kusjuures üks on default routing domain, millega on seotud vaikelüüs ning mida kaudu käib välja monitoride liiklus
- ruuting domeenides kirjeldatakse vähemalt üks või enam vlan'i, iga sellise vlaniga on seotud self ip aadress
- self ip aadressilt paistab vaikimisi lähtuvat ruuting domeenist väljav liiklus
Mõisted
- TMOS - Traffic Management Operating System
- system objects - virtual servers, load balancing pools, health monitors, nodes, user accounts
- TMOS objects - Self IP addressid, VLANs and VLAN groups, route domain, routes, user accounts
- Local traffic - virtual servers, load balancing pools, pool members, nodes
- TMM - Traffic Management Microkernel
Võrguskeem
F5 saab ühendada teenuste pakkuvate serverite, nende tulemüüri ja interneti vahele mitmel erineval viisil
- niisama nö ruuterina
- eraldi subnetti
- nn one-arm lülituses
One-arm lülitus
TODO
Eraldi subneti kasutamine
... klient internetist, 195.80.11.11 | ____|____ 195.80.1.1 | | OpenBSD tulemüür |_________| | | | | | |---------- F5 haldusvork | | | |----------|-- F5 teenuse vork | | 10.10.16.443 | | |---------|---------------|--- oracle rakendusserverid jms backend tier | | _|_ _|_ | | | | |___| |___| SSO WSRP 10.10.13.80
Üks võimalus ssl termineerimisega
- 195.80.11.11:44444 -> 195.80.1.1 dst nat -> 10.10.16.443:443
- 10.10.16.443:5555 -> 10.10.13.80:80
Teine võimalus ssl termineerimisega eeldusel, et tulemüüris on mingi trikk (nt mitu ruutingutabelit), et sso arvuti poolt tagasi saadetud vastuspakett ei läheks mitte otse kliendile, vaid f5 peale ja sealtkaudu kliendile
- 195.80.11.11:44444 -> 195.80.1.1 dst nat -> 10.10.16.443:443
- f5 võltsib src'i, 195.80.11.11:44444 -> 10.10.13.80:80
Paigaldamine
Esimesel seadme käivitamisel võimalusel omandab F5 haldusliides DHCP kaudu omale halduse ip aadressi. Seejärel saab logida sisse haldusliidesesse ning
- sisestada litsents
- öelda mõni jaatus
Seejärel saab hakata kasutama, seadistada partitsioon, vlanid jne.
Seadme halduse ip aadress (ingl. k. management port ip address), vaikelüüs, nimi, paroolid jms toimub valides
System -> Platform
Haldus
- Veebiliidese kaudu
- ssh promptist, tmsh või bigpipe abil
Seadme mudeli küsimine
# tmsh show sys hardware ... Platform Name BIG-IP 1600 BIOS Revision F5 Platform: C102 OBJ-0442-01 BIOS (build: 130) Date: 12/28/09 Base MAC 0:1:d7:a5:1d:d0 System Information Type C102 Chassis Serial f5-ftte-erhb Level 200/400 Part 200-0444-09 REV B Switchboard Serial Switchboard Part Revision Host Board Serial Host Board Part Revision
Tarkvara versiooni küsimine
# tmsh (tmos)# show /sys version Sys::Version Main Package Product BIG-IP Version 11.4.1 Build 635.0 Edition Hotfix HF2 Date Tue Jan 7 10:31:55 PST 2014 Hotfix List ID433290 ID421721 ID406390 ID430638 ID430941 ID434283 ID439036 ID429171 ID406916 ID414931 ID427743 ID427527 ...
SSH prompt
- Nimeserveri seadistamine
# bigpipe dns nameservers 10.10.9.4 10.10.9.5 # b dns list dns { nameservers { 10.10.9.4 10.10.9.5 } }
- Muudatuste salvestamine
# b save
- NTP serveri seadistamine
# b ntp servers ntp.loomaaed.ee
NTP
NTP seadistamine toimub valides
System ›› Configuration : Device : NTP
kus on oluline sisestada NTP serverite sellised nimed, millele ei vasta mitut ip aadressi. Kontrollida saab öeldes
# ntpq -p remote refid st t when poll reach delay offset jitter ========================================================================================= ntp2.loomaaed.tartu.ee 10.80.105.226 2 u 33 64 77 1.157 28.016 8.883 *ntp1.loomaaed.tartu.ee .GPS. 1 u 32 64 77 1.212 41.178 11.981
Käsitsi aja seadmine toimub nö nagu ikka Linuxis ntpdate utiliidiga.
Failisüsteem
- /config - seadistusfailid
- /shared/images - tarkvara uuendustele vastavad tõmmisefailid
Süsteemi seiskamine
Kahe õlalise süsteemi seiskamiseks sobib selline tegevuste järjekord
- õlad on sünkroonis
- öelda standby õlal Force Offline
Vasakul üleval pressida ONLINE ja paremal all Force Offline
- logida standby õlga sisse ja öelda
# shutdown -hP now
- eemaldada toitekaablid
Partitsiooni juurutamine
Partitsioon on F5 kasutamise instrument, mille abil saab seadmest läbi käivat teatud liiklust lokaliseerida, st eraldada muust liiklusest, millega F5 seade tegeleb. Kõik järgnevad sammud ei ole tingimata vajalikud uue partitsiooni juurutamisel.
Partitsiooni kirjeldamine
Partitsiooni (ingl. k. Administrative Partition) kirjeldamiseks tuleb
System -> Users -> Partition List
kus
- Name - vm (näiteks, tähistab veebimajutust)
- Device Group - (linnuke) Inherit traffic group from root folder (device-group-AUUL (Sync-Failover))
- Traffic Group - (linnuke) Inherit traffic group from root folder (traffic-group-1 (floating))
Märkused
- objekte ei saa partitsioonide vahel liigutada, objekt tuleb ühes partitsioonis kustutada ning teises uuesti tekitada
VLAN kirjeldamine
Valida sobiv partitsioon ning
Network -> VLANs -> Create
kus
- Name - tt_vlan (tt on vastava partitsiooni nimi, näiteks)
- Tag - 1509
- Resources - Tagged -> 1.1
- Configuration - jääb vaikimisi väärtustega va source check enabled'iks määrata
Tulemusena tekib selline seade
[root@bigip1:Active] / # ifconfig tt_vlan tt_vlan Link encap:Ethernet HWaddr 00:01:D7:A5:1C:C8 inet6 addr: fe80::201:d7ff:fea5:1cc8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:840 (840.0 b) TX bytes:468 (468.0 b)
Seal on näha nt vlan509 arp paketid
# tcpdump -ni tt_vlan
Route domaini kirjeldamine
Route domaini kirjeldamiseks tuleb valida partitsioon ning
Network -> Route domains -> Create
ning näidata
- Name - 1509
- ID - 1509
- Description - tt_rd
- strict isolation - (linnuke) Enabled; selle valimisel ei püüa F5 sisemiselt erinevate ruuting domeenide vahel ise liiklust ruutida
- parent name - None
- vlans - lisada vajalikud (nt vm_vlan)
- parition default route domain -> This route domain is the partition default route domain
Märkused
- dünaamilist ruutingut st BGP, OSPF jt saab kasutada ainult routing domain 0 sees
- IPv6 saab kasutamda ainult routing domain 0 sees
- saab teate
01070979:3: The specified vlan (tt_vlan) for route domain 1509 is in use by a self IP.
Self IP näitamine
Kokku on kahe node'iliselt F5 klastril kolm Self IP aadressi
- kummalgi üks isiklik, nn non-floating
- üks ühine, nn floating
Non-floating Self IP seadistamine
Non-floating Self IP seadistamiseks (sellelt valjuvad kontrollid jms, ilma snatita liiklus) olla kõnealusel partitsioonil ning
Network -> Self IPs -> Create
kus
- Name - 10.10.9.140
- IP Address - 10.10.9.140
- Netmask - 255.255.255.0
- VLAN - tt_vlan (valida kõnealune vlan)
- Port Lockdown - Allow None (None - ei saa pöörduda haldusliidese poole)
- Traffic Group - traffic-group-local-only (non-floating) ja linnuke valimata
Tulemusena saab vlan509 mõnest muus arvutist seda seda self ip aadressi pingida.
Floating Self IP seadistamine
Floating Self IP seadistamiseks, kõik nagu non-floating puhul, viimases punktis valida, kusjuures floating aadress tuleb seadistada ainult ühes seadmes, teisse levib see automaatselt
- Traffic Group - traffic-group-1 (floating) ja linnuke valimata
Default gateway näitamine
Vaikelüüsi näitamiseks tuleb valida partitsioon ning
Network -> Routes -> New Route
ning kirjeldada
Name: any Destination: 0.0.0.0 Netmask: 0.0.0.0 Resource: Use Gateway Gateway address: 10.12.7.1
Klastri kasutamine
Kui kasutatakse seadmeid klastris, tuleb samad liigutused teha ka teisel seadmel, võttes arvesse floating self-ip kohta tehtud märkust. Tulemusena on seadmed süngist väljas, see käib asja juurde. Lõpuks tuleb aktiivsel seadmel valida Sync device to group koos overwrite configuration valikuga.
Partitsiooni kustutamine
Partitsiooni kustutamine toimub GUI pealt, tegevused on Partitsiooni moodustamisele vastupidises järjekorras
Esmalt kõik mitte-aktiivses õlas ja seejärel aktiivses:
- virt hostid, profiilid, poolid, monitorid jms
Esmalt kõik mitte-aktiivses õlas ja seejärel aktiivses:
- Default gateway näitamine
- Floating Self IP seadistamine
- Non-floating Self IP seadistamine
- Route domaini kirjeldamine (Network -> Route domains -> Create)
- VLAN kirjeldamine (Network -> VLANs -> Create)
- Partitsiooni kirjeldamine (System -> Users -> Partition List)
HTTP teenuse seadistamine
Tööpõhimõte
HTTP teenuse pakkumiseks seostatakse sellised objektid
Virtual Server ---> Destination Address (nt 10.0.7.77) ---> Service Port (nt 443) ---> Protocol (nt TCP) ---> HTTP profile ---> Load balancing pool ---> Pool Member 1 ---> Node 1 ---> Node 1 monitor ---> Pool Member 2 ---> Node 2 ---> Node 2 monitor ---> Pool monitor ---> SNAT Pool ---> Member List ---> SSL Profile (Client) ---> iRule
kus
- Node vastab kõige primitiivsemal kujul teenust pakkuvale backend serveri konkreetsele õlale; õlg on kirjeldatud tema ip aadressiga
- Node Monitor - Node sisaldab lisaks backend serverit monitoorivat monitori; kuna puudub info teenuse port koht, siis on see monitor tavaliselt 'icmp ping'
- Pool Member ütleb teenust pakkuva backend serveri õla + teenuse port aadressid
- Load balancing pool ütleb lisaks Pool memberitele kõrgema taseme monitori, mis tavaliselt monitoorib backend teenust http kihis
- Virtual server ütleb lisaks backend load balancing pool infole frontend ip aadressi ja pordi, tls krüpto jms
Pool monitori tekitamine
Monitor kontrollib real serveri töötamist, mitte-töötamisel lülitab ta vastava real serveri load balanceing poolist välja. Monitori kirjeldamiseks tuleb valida
Local Traffic -> Monitors -> Create
ning täita lahtrid nt selliselt
- Name - loomaaed_tartu_ee_pool_monitor
- Description - loomaaed_tartu_ee_pool_monitor
- Type - HTTP
- Send String (ühel real)
GET / HTTP/1.1\nHost:www.auul.pri.ee\nUser-Agent:AUUL-f5-monitor\nX-Forwarded-For:AUUL-f5-monitor\r\n\r\n
- Receive String
HTTP/1.1 200
Isetehtud monitori asemel võib sobida kasutada ka mõnda vaikimisi olemasolevat monitori, mis tingimata ei pea olema http monitor.
SNAT pooli tekitamine
SNAT pooli tekitamiseks tuleb valida
Local Traffic -> Address Translation -> SNAT Pool List -> Create
ning näidata
- Name - loomaaed_tartu_ee_snat
- Member List -> IP Address -> Add -> Finish
Peale SNAT pool member ip seadistamist saab teda võrgust pingida.
Load balancing pooli tekitamine
Pooli kirjeldamiseks tuleb valida
Local Traffic -> Pools -> Pool List -> Create
ning
- Name - loomaaed_tartu_ee_pool
- Health Monitors - loomaaed_tartu_ee_pool_monitor
ning
Resources New Members alt (.13.36 on real serveri aadress)
- Node Name - 10.10.13.36
- Address - 10.10.13.36
- Port - 80
ja valida
Add -> Finished
Pooli tekitamise ajal saab Pooli lisada memberid, saab ka hiljem.
Pooli memberi lisamine
Olemasolevasse pooli memberite lisamiseks tuleb
Local Traffic -> Pools -> valida pool -> Members -> Add
ning näidata
- Node Name - ip address
- Address - ip address
- Service Port - port
Ning
Configuration -> Advanced
juurest
- Health Monitors -> Inherit From Pool
- IP Encapsulation -> Inherit From Pool
Virtual Serveri kirjeldamine
Virtual Serveri kirjeldamiseks tuleb kokku ühendada kolm objekt
- snat pool
- load balancing pool realserveritega
- virt serveri ip aadress, millelt ta teenust pakub
Selleks tuleb valida
Local Traffic -> Virtual Servers -> Virtual Servers List -> Create
ning näidata
- Name - loomaaed_tartu_ee
- Destination address - 10.10.13.169
- Type - Standard
- Service Port - 80
- HTTP Profile - http
- VLAN and Tunnel Traffic - Enabled on ...
- VLANs and Tunnels - arendus_vlan
- Source Address Translation - SNAT
- SNAT Pool - loomaaed_tartu_ee_snat
seejärel valida Resources
Load Balancing
- Default Pool - arendus_pool
OneConnect profiili kasutamine
Selleks, et F5 ei koormaks Apache veebiserverit paljude TCP ühendustega tuleb kasutada KeelAlive'i
- Apache poolt
KeepAlive On MaxKeepAliveRequests 0 KeepAliveTimeout 15
- F5 peal Virtual Host juures lülitada sisse OneConnect profiil
OneConnect Profile -> oneconnect
HTTP Compression profiili kasutamine
- brauseri ja F5 vahel HTTP andmeid pakitakse
- F5 ja Apache backendi vahel HTTP andmeid ei pakita
Selleks tuleks
- F5 peal Virtual Host juures lülitada sisse
HTTP Compression Profile -> httpcompression
- Apache peal disableda deflate jms, nt mooduli disablemise teel
# a2dismod deflate
X-Forwarded-For päise lisamine
Iseenesest saab X-Forwarder-For päise lisada nt sellised ridu iRule sees kasutades
when CLIENT_ACCEPTED { .. set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { set LOGDST "imool_org" HTTP::header remove X-Forwarded-For HTTP::header replace X-Forwarded-For $CLIENTIP ... }
kus
- CLIENT_ACCEPTED sektsioonis väärtustatakse muutja CLIENTIP
- HTTP_REQUEST sektsoonis kasutatakse seda muuutujad HTTP::header direktiivi abil
Päringute logimine logiserverisse
TODO
Sticky sessioonid
Selleks, et sama brauseriga kasutaja sattuks oma pöördumistega järjest sama backend Apache poole sobib kasutada
Local Traffic ›› Virtual Servers : Virtual Server List ›› installer_id_ee_ssl
ning näidata nt
Default Persistence Profile -> cookie Fallback Persistence Profile -> source_addr
HTTP SSL offload seadistamine
Eesmärgiks on sellisel viisil https:// teenuse seadistamine selliselt, et F5 seadmes toimub krüpto ja sealt edasi tavaline http realserveriga
brauser - https:// ---> F5 (ssl offload) --- http:// ---> realserver
Teine variant https'iga tegeleda oleks lihtsalt https liiklusele vastavate ip pakettide ruutimine brauseri ja realserveri vahel.
Tundub, et F5 https vastab Apache sellisete šifrite komplektile
SSLCipherSuite RC4:HIGH:!CAMELLIA:!MD5:!EXPORT:!DES:!DHE:!EDH:!aNULL
Tulemus
$ sslscan 10.10.6.202:443 | grep Accepted Accepted SSLv3 256 bits AES256-SHA Accepted SSLv3 168 bits DES-CBC3-SHA Accepted SSLv3 128 bits AES128-SHA Accepted SSLv3 128 bits RC4-SHA Accepted TLSv1 256 bits AES256-SHA Accepted TLSv1 168 bits DES-CBC3-SHA Accepted TLSv1 128 bits AES128-SHA Accepted TLSv1 128 bits RC4-SHA
SSL sertifikaadi kasutamise ettevalmistamine
Kui sertifikaat ja ahel laadida Common partitsiooni, siis on nad kasutatavad kõigis partitsioonides. Üks võimalus on laadida ülesse eraldi failidena
- ahel, mille suhtes on tõenäoliselt palju sertifikaate välja antud, paigutada Common partitsiooni
- salajane võti, virtual serveri partitsiooni
- sertifikaat, mis vastab salajasele võtmele, virtual serveri partitsiooni
Local Traffic -> SSL Certificate List -> Import
(tegelikult)
System -> File Management -> SSL Certificate List
kus
- esmalt laadida võti nimega wildcard.loomaaed.tartu.ee
- valida nimekirjast tekkinud võti ja lisada sertifikaat
Tulemusena tekib 'Certificate & Key' tüüpi sissekanne.
Märkused
- Lisaks saab F5 enda vahenditega mugavalt self-signed sertifikaadi tekitada, seejuures tuleb arvestada, et Subject Alternative Name kasutamisel tuleb lahtrisse kirjutada sarnaselt
DNS: yks.imool.org, DNS: teine.imool.org
Sertifikaadi uuendamine
Seadme sertifikaati ja ahela sertifikaati (või ahela bundlet) võiks reeglina kasutada nii, et tema nimi on mingi üldisel kujul, st ei sisalda aasta-arvu, märget võtme pikkuse kohta vms. Kuna seda nime kasutatakse SSL Client profiilides, siis teatud mahtudest edasi on palju lihtsam teha sertifikaadi muudatus ühes kohas, selles nimetatud objektis ning muudatus mõjub edasi profiilide kaudu.
Kui sertifikaati uuendatakse võiks võimalusel jääda võti samaks, sel juhul F5 seadistustes ei tule muud teha, kui laadida uus sertifikaat vastava C & K sissekande juures (Import asendab olemasoleva sertifikaadi, st ei teki kahte sertifikaati sisaldav objekt)
System ›› File Management : SSL Certificate List ›› www.loomaaed.tartu.ee - > Certificate sakk -> Import
Kui uuendatakse korraga ahela sertifikaati ja seadmesertifikaati, siis sobib nt selline protseduur
- uuendada esmalt ahela nime taga olev sertifikaat (objekti nime säilitades) - F5 lubab sedasi ahela sertifikaadi sisse laadida vaatamata sellele, et ahel läheb sisuliselt kakti; https kliendi jaoks paistab kohe ahel praktiliselt ühe seadme sertifikaadi pikkusega
- seejärel uuendada seadmesertifikaadi nime taga olev sertifikaat - tulemusena ahel muutub taas töötavaks ja protseduur on sellega lõppenud
SSL kliendi profiil
https:// teenuse seadistamiseks on vajalik koostada SSL kliendi profiil, klient tähistab antud juhul asjaolu, et kõnealune profiil tegeleb brauseriga. Profiili tekitamiseks tuleb valida
Local Traffic -> Profiles -> SSL -> Client -> Create
ning näidata (seejuures tuleb valida Custom linnuke vastaval real)
- General Properties -> Name - loomaaed_tartu_ee_ssl_profile
- Parent Profile - clientssl
- Configuration -> Advanced -> Certificate
- Configuration -> Advanced -> Key
- Configuration -> Advanced -> Chain
Virtual Serveri seadistamine
Virtual Serveri seadistamine toimub muus osas tavalisel viisil, aga asemel/lisaks tuleb näidata
- port 443
- SSL Profile (Client) -> loomaaed_tartu_ee_ssl_profile
Kliendi sertifikaadiga autentimine
Selleks, et toimuks kliendi autentimine tema kliendi sertifikaadi alusel tuleb SSL kliendi profiilis lisaks näidata
- Configuration -> Advanced -> Trusted Certificate Authorities - valida sobiv bundle
- Client Authentication -> Client Certificate - request
- Certifica
- TODO
HTTPS tcp ühenduste proksimine
Nagu eelnev punkt üldises osas, aga ssl profiile pole vaja kasutada
- http profile - none
- ssl profile client ja server - tühjad
- irule'id puuduvad
HTTP teenuse seadistamine, millel puudub backend
Reeglina seadistatakse F5 virtuaalne server nö interneti ja mingi rakendusserveri vahele. Teatud juhtudel, nt http redirect tegemiseks, pole backend rakendusserver vajalik kuna http redirect Location headeri saab F5 ise saata vastuseks päringule. Sellise virtual serveri tekitamiseks on vajalik tekitada virtual server näidates ainult
- Name
- Destination address
- Service port
- HTTP Profile - http
Muu hulgas puudub monitor ja default pool. Resouces juures sobib kasutada nt sellist irule'i
when CLIENT_ACCEPTED { set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { set LOGDST "hasart_rdr" HTTP::redirect "http://www.imool.org/ }
või nt
when HTTP_REQUEST { switch -glob [string tolower [HTTP::host]] { "*miki.ee" { HTTP::redirect "https://mikihiir.ee/" } "*moraal.ee" { HTTP::redirect "https://www.auul.pri.ee/moraal/" } "*imool.net" { HTTP::redirect "https://www.auul.pri.ee/imool-net/" } default { HTTP::redirect "https://www.auul.pri.ee/" } } }
F5 seadme kasutamine Oracle iAS v. 10.1.2.3.0 lahendusega
Kasulikud lisamaterjalid
F5 seadme ettevalmistamine tema taga töötava iAS keskkonnaga koos töötamiseks toimub template kasutamise abil. Template kasutamise tulemusena tekib muusaes http profiil ja vastav pool. Template kasutamisel tuleb teha sellised valikud
- Virtual server: 10.12.7.31 - ssl offloader 80 ja 443
- template q. what uniq -- loomaaed
- oracle as 10g portal server -> virt. serer ip -> .7.32, port -> 443
- which servers do you want to reference -> .7.11:7778 -> Add
- oracle as 10g portal sso -> virt addres -> .7.15 (uus aadress):443
- which servers do you want to reference -> 10.12.7.11:4443 (see ias osa tuleb muuta pärast)
iRule kasutamine
iRule tehnika abil saab kirjeldada sündmustele vastavaid tegevusi. Nt mis hakkab juhtuma kui teatud ip aadressilt pöördutakse ja küsitakse teatud uri. iRule koosneb kolmest erinevast elemendist
event operator command
iRule kasutamiseks tuleb sooritada kaks tegevust
- valida partitsioon ning kirjeldada iRule
- valida Virtual Server -> Resources ning ühendada talle iRule külge
iRule kirjeldamine
iRule kirjeldamiseks tuleb valida
Local Traffic -> iRules -> iRules List -> Create
kus
- Name - nt 'http_rdr_ftp_aso_ee_debian'
- Definition -
when HTTP_REQUEST { if { [HTTP::uri] contains "debian"} { HTTP::redirect "http://ftp.aso.ee/debian/" } }
kus
- when järel on kirjas, millise sündmuse (ingl. k. event) puhul reeglit kasutatakse, antud juhul http päringu puhul
- contains on operaator, mis kontrollib, kas muutuaja HTTP::uri sisus esineb sõne 'debian'
- HTTP::redirect on command mis suunab kliendi edasi näidatud aadressile
iRule kasutamine
iRule kasutamiseks tuleb kõnealune iRule seostada mõne virtual hosti ressurssiga valides
Local Traffic -> Virtual Servers -> Virtual Server List -> virtual serveri nimi -> Resources -> iRules -> Manage
ning valida nimekirjast varem kirjeldatud iRule.
Tulemusena, kui klient esitab päringu http://10.10.9.110/debian/, siis suunatakse ta edasi aadressile http://ftp.aso.ee/debian/
$ wget --server-response http://10.10.9.110/debian --2012-10-01 23:20:23-- http://10.10.9.110/debian Connecting to 10.10.9.110:80... connected. HTTP request sent, awaiting response... HTTP/1.0 302 Found Location: http://ftp.aso.ee/debian/ Server: BigIP Connection: Keep-Alive Content-Length: 0 Location: http://ftp.aso.ee/debian/ [following]
Kasulikud lisamaterjalid
Template and Wizards kasutamine
TODO
OCSP kontrolli tegemine
TODO
Klaster
TODO
Sünkimine
Kui klastri õlad ei ole süngis, öeldakse avalehel nt
Changes Pending
Kui klastri õlad on süngis, öeldakse avalehel
In Sync
Sünkimisega ei saa sünkida igasugusid muudatusi, nt võrguseadmete seadistamisi (sh Self-IP väärtused) jms mitte; saab sünkida iRulesid, virtual servereid jms.
Kui soovitakse aktiivset õlga sünkida passiivsele, tuleb olles aktiivsel õlal, mille tunnuseks on avalehel
ONLINE (ACTIVE)
ja Common partitsioonis valida
Devices -> seadmenimi (Self)
ja seejärel, ning jätta Overwrite Configuration juures linnuke märkimata
Sync -> Sync device to group -> Sync
Edu korral öeldakse nt
Operation Status Configsync Mode: Push Transferring UCS to peer... Installing UCS on peer... Obtaining results of remote configuration installation... Saving active configuration... Current configuration backed up to /var/local/ucs/cs_backup.ucs. Product : BIG-IP Version : 10.2.2 Hostname: UCS : bigip1.sise.it System: bigip2.sise.it Installing --shared-- configuration on host bigip2.sise.it Installing configuration... Post-processing... Reading configuration from /config/low_profile_base.conf. Reading configuration from /defaults/config_base.conf. Reading configuration from /config/bigip_sys.conf. Reading configuration from /config/bigip_base.conf. Reading configuration from /usr/share/monitors/base_monitors.conf. Reading configuration from /config/profile_base.conf. Reading configuration from /config/daemon.conf. Reading configuration from /config/bigip.conf. Reading configuration from /config/bigip_local.conf. Loading the configuration ... Checking configuration on local system and peer system... Peer's IP address: 10.0.21.56 Synchronizing Master Keys... Saving active configuration...
Seadistamine
Selle otsustamiseks, kumb F5 klastri komponent on passiivne või aktiivne saab kasutada selliseid andmeid
- F5 seadmete vahel nö spetsiaalse protokolli alusel toimuv andmevahetus
- F5 seadmed pingivad oma võrkude vaikelüüse
- F5 seadmed jälgivad oma vlanides toimuvat liiklust
- F5 seadmed jälgivad oma interface'ide olekut (link up/down)
Käsitsi ümberlülitamine
Aktiivses õlas öelda Force to Standby
Avalehel ACTIVE -> Force to Standby
Märkused
Kui klastri teine õlg tegevuse üle võtab, kirjutatakse tema, st uue aktiivses rollis oleva seadme logisse midagi sellist
Dec 16 09:13:59 10.10.9.56 notice sod[4986]: 010c0053:5: Active for traffic group /Common/traffic-group-1. Dec 16 09:13:59 10.10.9.56 notice sod[4986]: 010c0019:5: Active
Varundamine
Põhimõtteliselt piisab varundamiseks kui salvestada /config kataloogi sisu väljapoole seadet, nt
# tar cf /tmp/f5-20120928-backup.tar /config
ja siis see ära kopeerida ning /tmp kataloogist tar kustutada.
# tmsh # save /sys ucs /var/tmp/failinimi.ucs
Automaatse varunduse korraldamiseks sobib kasutada nt rsnapshot tarkvara, Rsnapshot.
backup_script /usr/bin/ssh root@bigip1.moraal /shared/rsnapshot-ucs-backup/bigip-backup.sh placeholder_dir_name_1 backup root@bigip1.sise.kit:/shared/rsnapshot-ucs-backup/ bigip1.moraal/
kus
- vahetult failisüsteemi kopeerimise eel käivitatakse F5 seadmes skript bigip-backup.sh (touch faili tulemusena on rsync logist hea jälgida millise arvutiga on parasjagu tegemist)
# cat /shared/rsnapshot-ucs-backup/bigip-backup.sh #!/bin/bash touch /shared/rsnapshot-ucs-backup/000-rsnapshot-backed-up-hostname-bigip1.sise.kit tmsh save /sys ucs /shared/rsnapshot-ucs-backup/bigip1-5-55.ucs
- seejärel varundatakse nö tavalisel viisil kataloog /shared/rsnapshot-ucs-backup
Partitsiooni, routing domaini, vlan, virtual server ja pooli kasutamise näide
Esmalt kirjeldada keskkond, kus virtual server ja pool tööle hakkab
- Tekitada partitsioon tt_vlan
- Valida partitsioon tt_vlan ning tekitada sinna vlan 509
- Valida partitsioon ja kirjeldada routing domain
- Valida partitsioon ja seadistada VLANile self ip 10.10.9.78
Kirjeldada virtual server ja pool
- Tekitada SNAT pool
- Tekitada Load balancing pool
Versiooni uuendamine
Uuenduste kohta jagatakse infot F5 hotfix matrix aadressil http://support.f5.com/kb/en-us/solutions/public/9000/500/sol9502.html.
Uuendused esinevad reegline iso tõmmise kujul, logides kasutajan sisse aadressil https://support.f5.com/, nt
- BIGIP-11.4.1.608.0.iso - versiooni uuendamiseks uus versioon (nt 11.4.0 -> 11.4.1 või 11.4.x -> 12.y.z)
- Hotfix-BIGIP-11.4.1-635.0-HF2.iso - järgmise hotfix (HF) rakendamiseks, versioon ei muutu (nt HF1 -> HF2)
Kasutamiseks tuleb nad esmalt kopeerida F5 seadmesse valides vastavalt
System -> Disk Management -> Image List | Hotfix List -> Import
Parasjagu kasutuses olevate volume set'ide, versioonide ja hotfixide (buildide) numbreid (build numbrile vastab HF number) saab küsida nt nii
[root@bigip1:Active:In Sync] config # tmsh root@(bigip1)(cfg-sync In Sync)(Active)(/Common)(tmos)# show sys software status ------------------------------------------------- Sys::Software Status Volume Product Version Build Active Status ------------------------------------------------- HD1.1 BIG-IP 11.4.1 651.0 yes complete HD1.2 BIG-IP 11.4.1 637.0 no complete HD1.3 none none none no complete
kus
- partitsioonile ehk volume set'ile HD1.1 on paigaldatud HF5 (mida tähistab build 651) ja partitsioonile HD1.2 on paigaldatud HF3 (mida tähistab build 637)
- parasjagu on seade käivitatud HD1.1 partitsioonilt
kustutamiseks
# tmsh (tmos) # delete sys software volume HD1.2
Klastri uuendamine
F5 seadmete klastri uuendamisel on lähtepuntiks sünkroniseeritud seadistustega seadmed, tegevused tuleb teha sellises järjekorras, esmalt B (tavaolekus standby rollis töötav) seadmel
- lülitatakse B seade Force Offline režiimi (vasakul üleval ONLINE -> ekraani alt 'Force Offline')
- uuendatakse B seade (seejuures seade rebooditakse; tulemusena lähevad seadmed süngist välja, haldusliideses on tekst Changes Pending)
- lülitatakse B seade Release Offline abil tavalisse ONLINE režiimi tagasi
- lülitatakse changes pending olekus B seade aktiivseks (millega kaasneb automaatselt senise aktiivse muutumine standby'ks) valides aktiivsel seadmel vasakul üleval (ACTIVE) -> Force to Standby
ja seejärel A (tavaolekus active rollis töötav, praegu standby olekus) seadmel
- lülitatakse A seade Force Offline režiimi
- uuendatakse A seade (mis enne muudatuste algust aktiivses rollis töötas; seejuures rebooditakse, seadmed lähevad veel rohkem süngist välja)
- lülitatakse A seade Release Offline abil tavalisse ONLINE režiimi tagasi
- sünkroniseeritakse seadistused B -> A (st parasjagu aktiivselt -> standby seadmele); kasutades Overwrite configuration linnukest
- lülitatakse A tagasi aktiivselt (st esialgne aktiivne tagasi aktiivseks) valides B seadmel vasakul üleval (ACTIVE) -> Force to Standby
Uuendamise lõppemise tunnuseks on
- brauseris on vastav teade ja saab sisse logida
- /var/log/ltm lõpus on midagi sellist
Jan 19 19:31:21 bigip2 notice mcpd[6795]: 01070404:5: Add a new Publication for publisherID bd and filterType 0x200 Jan 19 19:31:22 bigip2 notice sod[5786]: 01140030:5: HA proc_running bd is now responding. Jan 19 19:31:22 bigip2 notice sod[5786]: 010c0049:5: Tmm ready - links up. Jan 19 19:31:22 bigip2 info lacpd[7490]: 01160016:6: Connected to failover service. Jan 19 19:31:29 bigip2 notice tmm1[19748]: 01010029:5: Re-enabling general logging; held 4 messages. Jan 19 19:31:29 bigip2 notice tmm[19748]: 01010029:5: Re-enabling general logging; held 8 messages. Jan 19 19:31:29 bigip2 notice tmm1[19748]: 01010029:5: Clock advanced by 830 ticks Jan 19 19:31:29 bigip2 notice tmm[19748]: 01010029:5: Clock advanced by 830 ticks
Hotfix rakendamine
- Laadida HF tõmmis seadmesse, tulemusena ilmub Available Images nimekirja uus sissekanne (failisüsteemis asuvad tõmmised kataloogis /share/images)
System -> Software Management -> Hotfix List -> Import
- Paigaldada standby seadmele linnukesega tähistatud hotfix öeldes Install ja näidates, millisele kõvakettale (HD1) selle mitte-aktiivsele volume set'ile (nt 1; kui näidata järgmine number mida pole, siis tekitatakse uus volume set) ta läheb
Automaatselt paigaldatakse esmalt sinna alus-tõmmise versioon + hotfix otsa (tundub, et sel põhjusel ei maksa nö baasversiooni-tõmmist seadmest kustutada) tegevuste käiku saab jälgida ssh sisselogides aegajalt ning df öeldes, nt
[root@bigip:Active:Standalone] config # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg--db--sda-set.1.root 403M 203M 180M 53% / /dev/mapper/vg--db--sda-set.1._config 3.0G 73M 2.8G 3% /config /dev/mapper/vg--db--sda-set.1._usr 2.2G 1.7G 443M 80% /usr /dev/mapper/vg--db--sda-set.1._var 3.0G 338M 2.5G 12% /var /dev/mapper/vg--db--sda-dat.share.1 30G 4.8G 24G 18% /shared /dev/mapper/vg--db--sda-dat.log.1 6.9G 91M 6.5G 2% /var/log none 2.0G 916K 2.0G 1% /dev/shm none 2.0G 25M 2.0G 2% /shared/rrd.1.2 none 2.0G 9.4M 2.0G 1% /var/tmstat none 2.0G 1.4M 2.0G 1% /var/run prompt 4.0M 28K 4.0M 1% /var/prompt none 2.0G 0 2.0G 0% /var/loipc /shared/images/BIGIP-11.4.1.608.0.iso 1.5G 1.5G 0 100% /mnt/tm_install/10742.i9FVbD /dev/mapper/vg--db--sda-set.1.root 403M 203M 180M 53% /mnt/tm_install/10742.h9p45d /dev/mapper/vg--db--sda-set.1._config 3.0G 73M 2.8G 3% /mnt/tm_install/10742.h9p45d/config /dev/mapper/vg--db--sda-set.1._usr 2.2G 1.7G 443M 80% /mnt/tm_install/10742.h9p45d/usr /dev/mapper/vg--db--sda-set.1._var 3.0G 338M 2.5G 12% /mnt/tm_install/10742.h9p45d/var
Käsurealt on samaväärne öelda midagi sellist
# tmsh install sys software hotfix Hotfix-BIGIP-11.4.1-651.0-HF5.iso volume HD1.1
Paigaldamise ajal paistab progress selline
Seejärel tuleb näidata milline on uus Boot Location ning, kas sinna kopeeritakse ka kasutusel olevad seadistused üle (virtual serverid, irule'd, poolid jms) valides
System -> Software Management -> Boot Locations
kus
- Valida 'Install Configuration' ja sobiva konfiguratsiooniga 'Source Volume'
- Activate
Seejärel teeb seada endale reboodi ja käivitatakse uuelt aktiivselt volume set'ilt uus versioon.
Nüüd tõnäoliselt ütlevad seadmete haldusliidesed, et seadmetel on Changes Pending, aga siiski lülitada kasutajad ümber uuendatud seadmele valides aktiivse seadme haldusliideses
ACTIVE -> Force standby
Seejärel kontrollida, kas teenused töötavad.
Järgnevalt tuleb uuendada saranselt enne uuenduste algust aktiivses rollis olnud seade, mis on parasjagu standby olekus. Tulemusena on mõlemad seadmed uuendatud, kui seadistused on veel rohkem süngist väljas. Seejärel tuleb seadmete seadistused sünkida parasjagu aktiivselt -> standby seadmele kuigi tõenäoliselt haldusliideses öeldakse vastupidi
Sync Summary Status Changes Pending Summary There is a possible change conflict between seade_yks and seade_kaks. Details Recommended action: Synchronize seade_kaks to group device-group-IMOOL
ja Sync Status on
Awaiting initial Sync with Changes Pending
Kogu uuendamise protseduuri vältel on see ainuke sünkimine, kusjuures seadistusi süngitakse uute partitsioonide vahel selleks, et viimati töötanud vana komplekt oleks esialgses seisus ja vajadusel kasutatav. Ja lõpuks lülitada enne muudatuste algust aktiivses rollis olnud seade aktiivsesse rolli.
Märkused
- Tegevuste ajal on ja proovides püüda vahetult peale rebooti sisselogida on mõistlik jälgida mõlemas seadmes /var/log/ltm logi
# tail -f /var/log/ltm
- Abiks võib osutada seadmetele serial konsooli külgeühendamine
- Ebaõnnestunud muudatuse puhul saab tagasi pöörduda valides Boot Location alt viimati kasutusel olnud boot locationi ning näidata
Install Configuration -> No
- Mõnel juhul on vaja suurendada failisüsteeme, neid tuleks uuendada vaid mitteaktiivses osas, klastri puhul mõlemas seadmes
- Tundub, et peale rebooti on seade mõni minu 'Changes pending' asemel 'Disconnected' olekus ja see käib asja juurde.
Võrguhooldustööd
Kui F5 klastrit puudutavates võrkudes toimuvad hooldustööd ja on eesmärk pakkuda teenust ühe õla abil ning et teine õlg ei hakkaks kuidagi loksuma ja segama (nt split brain), siis võib olla asjakohane teises õlas öelda
avalehel ONLINE -> Force Offline
ning peale hoolduse lõppu
avalehel ONLINE -> Release Offline
Serial konsool
F5 seadmele nö tavalist KVM (keyboard-video-monitor) seadet külge ühendada ei saa, ainult viis niisama etherneti peal töötaval ühendusel ssh kasutamise asemel on kasutada serial konsooli. Alustuseks tasub küsida F5 seadmelt seriali kiirust
[root@bigip1:Active] config # tmsh show sys console Sys::Console ---------------- Baud Rate 19200
ja seejärel ühenduda, nt
$ cu -l /dev/ttyS0 -s 19200 Connected. BIG-IP 10.2.2 Build 852.0 Kernel 2.6.18-164.11.1.el5.1.0.f5app on an x86_64 bigip1.loomaaed login: root Password: Last login: Thu Oct 4 17:24:05 [root@bigip1:Active] config #
Oracle WebLogic kasutamine
TODO
App Security
TODO
Logimine f5 failisüsteemi lokaalselt
Krüpto cipher logimiseks sobib kasutada ajutiselt nt
when CLIENT_ACCEPTED { set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { .. log "moraal.ee cipher: $CLIENTIP [SSL::cipher version]" ... }
Logimine võrgus töötavasse logiserverisse
Logimine tuleb seadistada kahe erineva osa jaoks
- F5 seadme süsteemsete komponentide logi
- HTTP virtual serverite logimine toimub iRule abil
HTTP päringute logimise ettevalmistamine
Esmalt tuleb tekitada välisele logiserverile viitav pool. TODO
Logimine võrgu töötavasse logiserverisse HSL abil
HSL (High Speed Logging) https://support.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/bigip-external-monitoring-implementations-11-3-0/2.html võimaldab logida efektiivselt mitmesse logiserverisse.
Tööpõhimõte
TODO
Seadistamine
Tekitada logiserveri monitor
Tekitada tavalisel viisil monitor, nt ping abil.
Tekitada logiserverite pool Common partitsiooni
Logiserverite pooli Common partitsiooni tekitamiseks tuleb töötada Common partitsioonis ja valida
Local Traffic -> Pools -> Pool List -> Create
ning nö tavalisel viisil tekitada pool näidates ühe või enam memberit, milleks on syslog logiserverid.
- Name - syslog_logiserver_1_pool
Tekitada Remote High Speed Log Destination
Remote High Speed Log Destination tekitamisel tuleb valida (neid võib olla üks või mitu)
System -> Logs -> Configuration -> Destination -> Create
kus
- Name - syslog_logiserver_1_rhsl
- Type - Remote High-Speed Log
- Pool Name - syslog log serveri pool nimi
- Protocol - TCP või UDP
Tekitada Formatted Remote High Speed Log Destination
Formatted Remote High Speed Log Destination tekitamisel tuleb valida (neid võib olla üks või mitu)
System -> Logs -> Configuration -> Destination -> Create
kus
- Name - syslog_logiserver_1_frhsl
- Type - Remote Syslog
- Syslog Format - Syslog
- High-Speed Log Destination - syslog_logiserver_1_rhsl
Tekitada Publisher
Publisher tekitamiseks tuleb valida
System -> Logs -> Configuration -> Publisher -> Create
kus
- Name - syslog_logiserver_1_ja_logiserver_2_plr
- Destinations -> syslog_logiserver_1_rhsl ja syslog_logiserver_2_rhsl
Statistika kogumine
TODO
SNMP kasutamine
SNMP seadistamine toimub haldusliideses valides
System -> SNMP
kus
- näidata lubatud ip aadressid
- kirjeldada community stringid
Vajalikud MIB arhiivid saab kopeerida sama F5 haldusliidese avalehelt, kaks .tar.gz faili. Tulemusena peaks töötama nt käsk
$ snmpwalk -v 2c -c communitinimi 10.100.9.54 SNMPv2-MIB::sysName.0 SNMPv2-MIB::sysName.0 = STRING: bigip1.auul
Sorriserver kasutamine
Tööpõhimõte
TODO
Veebiserveri seadistamine
TODO
F5 seadistamine
TODO
Autentimine vastu LDAP kataloogi
F5 kasutajate autentimiseks vastu Active Directory LDAP kataloogi sobib valida (antud juhul autentimiseks kontrollitakse, kas kasutaja poolt sisestatud kasutajanimi ja parool sobivad ldap vastu autentimiseks)
System ›› Users : Authentication
ja täita lahtrid sarnaselt
kus
- User Template lahtrid on täidetud
- Bind lahtrid on tühjad
Kasutaja autentimise testimiseks käsurealt sobib öelda nt
$ ldapsearch -x -H ldap://10.10.9.4 -D "git-f5@imool.ee" -w parool -b "OU=Teenuskontod,DC=imool,DC=ee"
Kasulikud lisamaterjalid
Märkused
- kui peale F5 haldusliidesesse sisselogimist öeldakse, siis ei maksa sellest ehmuda, nii võib olla kuna brauser satub cookide tõttu sellisesse partitsiooni, kus vastav irule puudub
Instance not found:/toodang-auul/sisene_auul_ee.irule
- restart, peale ssh'ga sisselogimist
# bigstart restart
- routing domainides võrgu kasumine
# rdexec 111 ping 10.0.111.55
# rdexec 507 telnet 10.10.6.98 80 Trying 10.10.6.98... Connected to 10.10.6.98. Escape character is '^]'. ^] telnet> Connection closed.
Debugimine
tcpdump kasutamine
Partitsiooni liikluse salvestamine (nö niisama shellist, mitte tmsh)
# tcpdump -vvv -s0 -nni /vm/vm_vlan:nnnp -w /shared/failinimi.pcap host 10.10.26.126 and port 443 # tcpdump -vvv -s0 -nni 0.0:nnnp -w /shared/20141211/0.0.pcap
kus
- /vm/vm_vlan juures tähistab esimene vm partitsiooni ning vm_vlan partitsioonis olevat vlan'i
- nnn - tähistab nö verbaalsust, p on seotud promicious mode'iga või selle puudumisega, tundub, et parem on seda mitte kasutada
- -s0 - salvestada kogu pakett
- -w - salvestab faili
- host 10.10.26.126 and port 443 - filter
QKview
Aadressile https://ihealth.f5.com/ saab üles laadida nn QKviews faile, selle moodustamiseks tuleb haldusliideses valida
System -> Support -> Support Snapshot -> QKView
ja öelda Start.
ssldump
Salvestatud võrguliiklust saab teatud tingimustel dekrüptida, selleks on vaja
- Salvestatud võrguliikluse .pcap nn dump faili
- vastava teenuse salajast võtit, nt https:// private key - sedasi saab kasutaja avada ka igasuguseid .pcap faile, st pole turvaline viis suhelda nt support partneriga
- salajase võtmele ja konkreetsele võrguliikluse dumpile vastvat PMS (Pre Master Secret) faili - saab avada vaid vastavat .pcap faili
.pms faili moodustamiseks sobib öelda
# ssldump -r dump.pcap -k imool.ee.key -M dump.pcap.pms
Kasulikud lisamaterjalid
ID kaardiga autentimine
ID kaardiga autentimisel on mõnes mõttes vaja valida kahe olulise viisi vahel
- kogu veebikoht nõuab id kaardiga autentimist
- veebikoha mingi /uri nõuab id kaardiga autentimist
Kogu veebikoht nõuab id kaardiga autentimist
ID kaardiga autentimise ja tuleb 'SSL kliendi profiil' profiili juures teha mõned muudatused
TODO
Seejärel iseenesest hakatakse kliendilt küsima sertifikaati (mille esitamisega seoses peab ta sisestama PIN1 koodi). Praktiliselt on vaja veel F5 irule juures kirjeldada sertifikaadiga tegelemist suuremal või vähemal määral
- kogu sertifikaadi saatmine backend rakendusele
- sertifikaadi mingi elemendi, nt subject saatmine rakendusele
- sertifikaadi CRL või OCSP kontroll
Nt selline irule
when HTTP_REQUEST { log "SISENE_IMOOL: [HTTP::uri]" } when HTTP_REQUEST_SEND { clientside { set ssl_cert [SSL::cert 0] HTTP::header replace "WL-Proxy-Client-Keysize" [SSL::cipher bits] HTTP::header replace "WL-Proxy-Client-Cert" [b64encode $ssl_cert] HTTP::header replace "Ssl-Client-S-Dn" [X509::subject $ssl_cert] log "SISENE_IMOOL x509 issuer: [X509::issuer $ssl_cert]" log "SISENE_IMOOL x509 subject: [X509::subject $ssl_cert]" } } }
kus
- TODO
- mõnusamaks tegelemiseks saab kasutada F5 logimise võimalusi
# tail -f /var/log/ltm .. Mar 29 18:30:49 bigip1 info tmm3[18527]: 01220002:6: Rule /test/sisene_imool_ee_ssl.irule <HTTP_REQUEST_SEND>:\ SISENE_IMOOL x509-subject: serialNumber=37003212713,GN=IMRE,SN=OOLBERG,CN=OOLBERG\,IMRE\,37003212713,OU=authentication,O=ESTEID (DIGI-ID),C=EE
Veebikoht konkreetne /uri nõuab id kaardiga autentimist
Olgu eesmärk käivitada aadressil https://dh.moraal.ee/ selline teenus
- https://dh.moraal.ee/ avaleht on tavalisel viisil kättesaadav, ei nõuta autentimist; sellele vastab Apache backend ja pool dh_moraal_ee
- https://dh.moraal.ee/ref1 nõuab id kaardiga autentimist; sellele vastab üks pool
- https://dh.moraal.ee/ref2 nõuab id kaardiga autentimist; sellele vastab teine pool
- toimub ainult kliendilt sertifikaadi nõudmine (sertifikaadi andmeid backendile ei saadeta; saaks kasutada logimisel vms)
SSL profiil nö tavalisel https:// viisil, kuid pöörata tähelepanu sellistele parameetritele (reegline irule sees saab neid valikud override'ida)
- Options - All Options Disabled
- Renegotiation - Enabled
- Unclean Shutdown - Enabled
- Client Certificate - ignore
- Frequency - once
- Retain Certificate - Enabled
- Certifiate Chain Travel Depth - 3
- Trusted Certificate Authorities - ID
- Advertised Certificate Authorities - ID
irule
when CLIENT_ACCEPTED { set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { set LOGDST "dh_moraal_ee" switch -glob [HTTP::uri] { "/ref1*" { if { [SSL::cert count] <= 0 } { HTTP::collect SSL::session invalidate SSL::authenticate once SSL::authenticate depth 3 SSL::cert mode require SSL::renegotiate } pool dh_mk1_moraal_ee_pool } "/ref*" { if { [SSL::cert count] <= 0 } { HTTP::collect SSL::session invalidate SSL::authenticate once SSL::authenticate depth 3 SSL::cert mode require SSL::renegotiate } pool dh_mk2_moraal_ee_pool } default { pool dh_moraal_ee_pool } } } when CLIENTSSL_CLIENTCERT { HTTP::release }
kus
- teenusega seoses on kirjeldatud kolm pool'i
- if lausete väljajätmisel nõutakse kliendisertifikaati rangemalt (säilitades if { ... } vahel oleva sisu
- kui default { } puudub, siis idee poolest peaks töötama, aga reaalselt jääb avaleht vahel laadimina ja ootama
Riigiga seotud internetiühenduse teenusepakkujate nimekirja esitamine
Vahel on ikkagi abiks ISP täpsusega kontrollida teenustele ligipääsemist või teha niisama järeldusi. Riigiga seotud internetiühenduse teenusepakkujate nimekirja esitamine kasutades alusena AS numbreid võiks töötada nt sellise skriptiga
$ cat s-dotted.sh #!/bin/bash IFS=$'\n' # for a in `wget -q ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest -O - | grep '|EE|' | grep ipv4 | sed -r 's/\|/\ /g' | awk {'print $4 " " $5'}`; do for a in `cat delegated-ripencc-latest.tmp | grep '|EE|' | grep ipv4 | sed -r 's/\|/\ /g' | awk {'print $4 " " $5'}`; do net=`echo $a | awk {'print $1'}`; mask=`echo $a | awk {'print $2'}`; cidr=$((32-`echo "l($mask)/l(2)" | bc -l | cut -f 1 -d "."`)) if [ $cidr -lt 21 ]; then who=`whois $net/$cidr | grep ^org-name | head -n 1 | sed -r 's/org-name:\ +//'` # echo "$who $net/$cidr" mask_dotted=`ipcalc $net/$cidr | grep Netmask | awk {'print $2'}` echo "$who $net/$mask_dotted" fi done
kus
- vajalik et on paigaldatud ipcalc ja whois paketid
- IFS=$'\n' - nii for käib mööda reavahetusi
- bc -l - selle võtmega bc oskab arvutada logaritmi
- $cidr -lt 21 - esitatakse vaid suuremad võrgud
Käivitamine paistab sedasi, NB! bash shell on vajalik, mitte sh shell vms
$ ./s-dotted.sh | sort Aktsiaselts MaveCom 10.22.208.0/255.255.240.0 Aktsiaselts MaveCom 10.79.112.0/255.255.240.0 AS Eesti Nelekom 10.46.0.0/255.255.128.0 AS Eesti Nelekom 10.106.96.0/255.255.224.0 AS Eesti Nelekom 10.126.96.0/255.255.224.0 AS Eesti Nelekom 10.250.160.0/255.255.224.0 ...
Misc irules
- URI elementide ümberkirjutamine
if {[HTTP::uri] starts_with "/ref1/"} { HTTP::uri [string map {/ref1/ /dh/} [HTTP::uri]] pool dh_mk1_moraal_ee_pool } elseif {[HTTP::uri] starts_with "/ref2/"} { HTTP::uri [string map {/ref2/ /dh/} [HTTP::uri]] pool dh_mk2_moraal_ee_pool } else { pool dh_mk2_moraal_ee_pool HTTP::respond 200 content "<html><body>dh<br><a href=\"/ref1/\">/ref1/</a><br><a href=\"/ref2/\">/ref2/</a></body></html>" }
kus
- uri komponentide käsitlemine, probleemiks on ocsp get päringu esitamisel '/' märkigest nö jagu saamine
switch [HTTP::method] { "GET" { switch -glob [HTTP::path] { "/ssl*" { HTTP::uri "/ejbca/publicweb/status/ocsp[URI::path [HTTP::uri] 2][URI::basename [HTTP::uri]]" pool ocsp_moraal_ee_pool } ....
kus
- https://devcentral.f5.com/Portals/0/Cache/Pdfs/2807/how-to-parse-a-uri.pdf
- https://devcentral.f5.com/Wiki/Default.aspx?Page=URI__path&NS=iRules
admin ja root parooli muutmine
- admin on GUI kasutajanimi (+ tmsh kasutajanimi kui üle ssh sisse logida)
- root on shell kasutajanimi
- nad on kaks sõltumatut kasutajat, st neil võib olla erinev parool
admin kasutaja parooli saab vist GUI peal edukalt vahetada. Shellist vahetamiseks
- enne muudatust võiks igaks juhuks korraldada root kasutaja jaoks ssh võtmega sisselogimise (/root/.ssh/authorized_keys tavalisel viisil)
- lähtepunktina on seadmed sünkis
- mitteaktiivsel seadmel
tmsh modify auth password root tmsh modify auth user admin prompt-for-password tmsh save /sys config
tulemusena on seadmed kollaselt süngist väljas
- aktiivsel seadmel
tmsh modify auth password root tmsh modify auth user admin prompt-for-password tmsh save /sys config
tulemusena on seadmed punaselt süngist väljas
- aktiivsel öelda sync koos konfi üle kirjutamisega
Muudatuse kehtestamise kontrollimiseks
- veenduda, et saab ssh ja GUI kaudu sisse logida
- veenduda, et peale rebooti saab ssh ja GUI kaudu sisse logida
Kasulikud lisamaterjalid
rdr virtual server
rdr virtual server tegeleb ainult irule abil päringute töötlemisega, nt http redirectimise eesmärgil.
csr moodustamine
Uue sertifikaadi ostmisel kasutatava csr moodustamiseks sobib avada
System ›› File Management : SSL Certificate List -> Create
ning täita lahtrid nt selliselt
- Name - wildcard.moraal.ee
- Issuer - Certificate Authority
- Division - *.moraal.ee
- Organization - Moraal OÜ
- Locality - Tartu
- State or Provice - Tartumaa
- Country - Estonia EE (eraldi latris)
- E-mail Address - täitmata
- Subject Alternative Name - DNS:*.moraal.ee,DNS:moraal.ee
- Key Type - RSA
- Size - 2048 bits
- Challenge Password, Confirm Password - täitmata
kus
- kuna iseenesest domeeni wildcard aadress ei sisalda domeeni ennast, siis vajadusel SAN juures näidata kõik nimevariandid (sh mida kasutati juba Common Name lahtris)
Seejärel tuleb moodustatud csr alla laadida ja üles laadida CA keskkonda. Seejuures saab arvestada, et CA keskkonnas saab põhimõtteliselt kõiki csr koostamisel näidatud väärtusi muuta v.a. key type ja size
Spanning Tree Protocol
STP (Spanning Tree Protocol) protokolli abil arvutatake võrgus L2 kihis convergence, lühidalt öeldes, tehakse nii, et võrgus pakettide switchimine töötab ja pole loop'isid. Eriti asjakohane on see võrguseadmetel, mis on omavahel ühendatud mitme füüsilise kaabliga. Sellisel juhul STP ühe füüsilise ühenduse riknemisel võtab automaatselt kasutusse teise. Kuna F5 seadmed on tavaliselt ühendatud L2 mõttes mitte-dubleeritud viisil, siis soovitatakse F5 ltm seadmel STP välja lülitada
Network -> Spanning Tree -> Options -> Mode -> Disabled
Lisaks on iga interface juures näha stp olek, nt
Network -> Interfaces -> 1.1 -> STP Configuration -> Advanced
kus peale eelmise sammu täitmist on paista
STP Mode -> Disable
Muud parameetrid on nö sisselülitatud olekus paista, aga reaalselt ei ole nad kehtestatud kuna üldiselt on F5 seadmel STP välja lülitatud. STP võib välja lülitada teenuse pakkumise ajal, ühel seadmel enne, teisel pärast kusjuures seejuures seadmed ei lähe süngist välja.
Šifrite kasutamine
# tmm --clientciphers 'ECDHE:DEFAULT:!SSLv3:!DHE:RSA+HIGH' ID SUITE BITS PROT METHOD CIPHER MAC KEYX 0: 49200 ECDHE-RSA-AES256-GCM-SHA384 256 TLS1.2 Native AES-GCM SHA384 ECDHE_RSA 1: 49192 ECDHE-RSA-AES256-SHA384 256 TLS1.2 Native AES SHA384 ECDHE_RSA 2: 49172 ECDHE-RSA-AES256-CBC-SHA 256 TLS1 Native AES SHA ECDHE_RSA 3: 49172 ECDHE-RSA-AES256-CBC-SHA 256 TLS1.1 Native AES SHA ECDHE_RSA 4: 49172 ECDHE-RSA-AES256-CBC-SHA 256 TLS1.2 Native AES SHA ECDHE_RSA 5: 49170 ECDHE-RSA-DES-CBC3-SHA 168 TLS1 Native DES SHA ECDHE_RSA 6: 49170 ECDHE-RSA-DES-CBC3-SHA 168 TLS1.1 Native DES SHA ECDHE_RSA 7: 49170 ECDHE-RSA-DES-CBC3-SHA 168 TLS1.2 Native DES SHA ECDHE_RSA ...
Vastuste puhverdamine
Üldiselt toimub http puhverdamine selliselt, et
- moodustatakse globaalne puhverdamise profiil (nt prod_webacc)
- f5 virtual host juures seostatakse puhverdamise profiil selle virtual hostiga
Puhverdamise profiilil on sellised omadused
- kasutada olev mälu
- sissekannete arv
- maksimaalne kehtivusaeg
- milliste tunnuste alusel leitakse puhverdatavad objektid (nt nn faililaiend, suurus)
Lisaks saab puhverdada irule abil spetsiifiliselt määratud uri poole pöördumisel saadavaid vastuseid, nt
if { [HTTP::uri] ends_with ".msi" || [HTTP::uri] ends_with ".exe" || [HTTP::uri] ends_with ".dmg" } { CACHE::enable }
F5 haldab automaatselt puhvri sisu, st vahe kasutust leidvad vastused eemaldatakse jne, puhrvi sisu saab käsitsi kontrollida selliselt
# tmsh show /ltm profile ramcache prod_webacc # tmsh delete /ltm profile ramcache prod_webacc
Kuna iga puhverdamise profiili jaoks reserveeritakse hulk mälu ja seda F5 ei saa kasutada muuks, siis soovitatakse kasutada mõnda globaalset profiili ja mitte hakata nt iga virtual host jaoks tekitama oma puhverdamise profiili.
F5 samaaegsete ühenduste piiramine
Väited
- piiratakse samaaegsete ühenduste koguarvu
- piiratakse samaaegsete ühtenduste arvu kliendi ip aadressi kohta
- vaikimisi ei rakendata piirangut, aga logitakse ühenduste koguarvu ja arvu kliendi ip aadressi kohta
- piirangu ületajale esitatakse http 503 koodiga vastus
- globaalse ja kliendi ip aadressi kohta ühenduste arvu piirangu ületajatele rakendatakse piirangut nii, et nö tagasipöördujaid teenindatakse
- tagasipöördujad on sellistelt ip aadressidelt tulevad tcp ühendused, mida on viimase 10 minuti jooksul f5 kaudu backendi ühendatud
- sageduspiirangut ei rakendata (st uute tcp ühenduste tekitamisi ajaühiku kohta ei piirata)
irule sisaldab selleks nt
when CLIENT_ACCEPTED { ... table set -subtable moraal-connlimit "[IP::client_addr][TCP::client_port]" "" 120 table set -subtable moraal-connlimit:[IP::client_addr] [TCP::client_port] "" 120 } when HTTP_REQUEST { ... "POST" { log local0. "moraal-connlimit-global: [table keys -subtable moraal-connlimit -count]" log local0. "moraal-connlimit-per-ip [IP::client_addr]: [table keys -subtable moraal-connlimit:[IP::client_addr] -count]" log local0. "moraal-tagasipoorduja [IP::client_addr]: [table lookup -subtable moraal-tagasipoorduja [IP::client_addr]]" if {[table keys -subtable moraal-connlimit:[IP::client_addr] -count] >= 10 || ([table keys -subtable moraal-connlimit -count] >= 500 && [table lookup -subtable moraal-tagasipoorduja [IP::client_addr]] !=1)} { log local0. "moraal-blokeerib [IP::client_addr]" HTTP::respond 503 content "toimub hooldus" return } ... switch -glob [string tolower [HTTP::path]] { "/update/" { HTTP::uri "/" if {[active_members moraal_pool] > 0} { table set -subtable moraal-tagasipoorduja "[IP::client_addr]" "1" 600 pool moraal_pool } else { ... } .. when CLIENT_CLOSED { table delete -subtable moraal-connlimit "[IP::client_addr][TCP::client_port]" table delete -subtable moraal-connlimit:[IP::client_addr] [TCP::client_port] }
kus
- samaaegsete ühtenduse alusel ligipääsu piiramiseks kasutatakse F5 mällu moodustatud tabel tüüpi objekte, tabel sisaldab key-value andmeid
- F5 mällu moodustatakse 'id-gw-connlimit' nimeline tabel ja kliendi pöördumisel lisatakse sinna key nimega 'kliendi-ip-kliendi-port' ja tühja value väärtusega; tabeli elemendi aegumise aeg on 2 minutit
- F5 mällu moodustatakse 'id-gw-connlimit-kliendi-ip' nimeline tabel ja kliendi pöördumisel lisatakse sinna key nimega 'kliendi-ip' ja value väärtuseks kliendi src port; tabeli elemendi aegumise aeg on 2 minutit (selliseid tabeleid on nii palju kui erinevaid ip aadresse kust pöördutakse)
- F5 mällu moodustatakse 'id-gw-tagasipoorduja' nimeline tabel ja kliendi http port /update/ päringu teenindamisel lisatakse sinna key nimega 'kliendi-ip' ja value väärtusega "1"; tabeli elemendi aegumise aeg on 10 minutit
- enne http post päringu teenindamist kontrollitakse, kas pöördumine toimub suure kasutamise tingimustes (globaalne samaaegsete pöördumiste limiit on ületatud) ja kui on, siis esitatakse pöördujale http 503 teade; erandiks on nö tagasipöördujad, keda teenindatakse tavalisel viisil
- 'id-gw-connlimit' ja 'id-gw-connlimit-kliendi-ip' tabelitest kustutab sama irule sissekandeid, kui mingil põhjusel sissekannet ei kustutata, siis ta aegub 2 minuti jooksul
- 'id-gw-tagasipoorduja' tabelist sissekandeid ei kustutata, nad kustuvad aegumise teel
- selline käsitlus tagab, et kui kasutaja on alustanud uuendamise protsessi, ta saab selle lõpule viia (eeldusel, et tema pöördumise ip aadress kogu protsessi ajal säilib)
Tekib sarnane logi
Oct 25 23:04:10 bigip1 info tmm1[19871]: Rule /toodang-moraal/moraal_ssl.irule <HTTP_REQUEST>: moraal-connlimit-global: 21 Oct 25 23:04:10 bigip1 info tmm1[19871]: Rule /toodang-moraal/moraal_ssl.irule <HTTP_REQUEST>: moraal-connlimit-per-ip 10.204.62.115%526: 3 Oct 25 23:04:22 bigip1 info tmm1[19871]: Rule /toodang-moraal/moraal_ssl.irule <HTTP_REQUEST>: moraal-connlimit-global: 19 Oct 25 23:04:22 bigip1 info tmm1[19871]: Rule /toodang-moraal/moraal_ssl.irule <HTTP_REQUEST>: moraal-connlimit-per-ip 10.204.62.115%526: 2
Summarse HTTP päringute arvu piiramine ajaühikus
when CLIENT_ACCEPTED { set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { set LOGDST "veebiserver_moraal_ee" # set connarv 15 HTTP::header replace Proxy-Client-IP $CLIENTIP HTTP::header remove X-Forwarded-For HTTP::header replace X-Forwarded-For $CLIENTIP switch [HTTP::method] { "GET" { switch -glob [HTTP::uri] { "/conns-for-ip-per-day" { if { [matchclass [IP::remote_addr] equals private_net] } { set response "<html><head>Client Connections - conns-for-ip-per-day</head><p><body>" append response "Count:[table keys -subtable "conns-for-ip-per-day" -count]<br>" foreach ip [table keys -subtable conns-for-ip-per-day] { append response "$ip = [table lookup -subtable conns-for-ip-per-day $ip]<br>" } append response "klient [IP::remote_addr]" append response "</body></html>" HTTP::respond 200 content $response Content-Type "text/html" return } } "/conns-for-ip-per-month" { if { [matchclass [IP::remote_addr] equals private_net] } { set response "<html><head>Client Connections - conns-for-ip-per-month</head><p><body>" append response "Count:[table keys -subtable "conns-for-ip-per-month" -count]<br>" foreach ip [table keys -subtable conns-for-ip-per-month] { append response "$ip = [table lookup -subtable conns-for-ip-per-month $ip]<br>" } append response "klient [IP::remote_addr]" append response "</body></html>" HTTP::respond 200 content $response Content-Type "text/html" return } } "/conns-for-ip-per-day-tyhjendamine" { if { [matchclass [IP::remote_addr] equals private_net] } { table delete -subtable conns-for-ip-per-day -all HTTP::respond 200 content "conns-for-ip-per-day-tyhjendamine tabel tyhendati" return } } "/conns-for-ip-per-month-tyhjendamine" { if { [matchclass [IP::remote_addr] equals private_net] } { table delete -subtable conns-for-ip-per-month -all HTTP::respond 200 content "conns-for-ip-per-month-tyhjendamine tabel tyhendati" return } } "/imretestib.html" { if { [matchclass [IP::remote_addr] equals veebiserver_moraal_ee_wl] } { pool veebiserver_moraal_ee_pool } else { if {[table lookup -subtable "conns-for-ip-per-day" "[IP::client_addr]"] == ""} { set conns_per_day_old 0 } else { set conns_per_day_old [table lookup -subtable "conns-for-ip-per-day" "[IP::client_addr]"] } if {[table lookup -subtable "conns-for-ip-per-month" "[IP::client_addr]"] == ""} { set conns_per_month_old 0 } else { set conns_per_month_old [table lookup -subtable "conns-for-ip-per-month" "[IP::client_addr]"] } if {$conns_per_day_old < 5 && $conns_per_month_old < 8 } { pool veebiserver_moraal_ee_pool } else { HTTP::respond 403 content "conns_per_day_old on $conns_per_day_old ja conns_per_month_old on $conns_per_month_old - ei teeninda" return } } } default { HTTP::respond 200 content "tundmatu /uri" return } } } "POST" { switch -glob [HTTP::uri] { "/tsa" { if { [matchclass [IP::remote_addr] equals veebiserver_moraal_ee_wl] } { pool veebiserver_moraal_ee_pool } else { if {[table lookup -subtable "conns-for-ip-per-day" "[IP::client_addr]"] == ""} { set conns_per_day_old 0 } else { set conns_per_day_old [table lookup -subtable "conns-for-ip-per-day" "[IP::client_addr]"] } if {[table lookup -subtable "conns-for-ip-per-month" "[IP::client_addr]"] == ""} { set conns_per_month_old 0 } else { set conns_per_month_old [table lookup -subtable "conns-for-ip-per-month" "[IP::client_addr]"] } if {$conns_per_day_old < 5 && $conns_per_month_old < 8 } { pool veebiserver_moraal_ee_pool } else { HTTP::respond 403 content "conns_per_day_old on $conns_per_day_old ja conns_per_month_old on $conns_per_month_old - ei teeninda" return } } } default { HTTP::respond 200 content "tundmatu /uri" return } } } } } when HTTP_RESPONSE { if {[HTTP::status] equals "200"} { set conns_per_day_new [expr $conns_per_day_old + 1] set conns_per_month_new [expr $conns_per_month_old + 1] table set -subtable conns-for-ip-per-day "[IP::client_addr]" $conns_per_day_new 86400 86400 table set -subtable conns-for-ip-per-month "[IP::client_addr]" $conns_per_month_new 2678400 2678400 } HTTP::header remove "X-Powered-By" HTTP::header remove "X-Varnish" HTTP::header remove "Via" HTTP::header remove "Server" }
kus
- kasutatakse kahte key-value tabelit conns-for-ip-per-day ja conns-for-ip-per-month
- iga õnnestunud pöördumise puhul suurendatakse tabelist vastava ip aadressi (key) väärtust (value) ühe võrra
- tabelite tühjendamiseks tuleb pöörduda aadressidele http://veebikoht.moraal.ee/conns-for-ip-per-day-tyhjendamine ja http://veebikoht.moraal.ee/conns-for-ip-per-month-tyhjendamine
- mingi halduse arvuti cron töö käivitab sobivalt tabelite tühjendamise
- tabelite sisu vaatamiseks sobib pöörduda aadressidele http://veebikoht.moraal.ee/conns-for-ip-per-day ja http://veebikoht.moraal.ee/conns-for-ip-per-month
.php päringute teenindamise piiramine
when HTTP_REQUEST { set LOGDST "www_moraal_ee" set request [HTTP::request] set www_moraal_ee_conns_for_ip_per_interval_limit 10 HTTP::header replace HTTPS on HTTP::header replace Proxy-Client-IP $CLIENTIP HTTP::header remove X-Forwarded-For HTTP::header replace X-Forwarded-For $CLIENTIP # [matchclass [IP::remote_addr] equals private_net] if { [HTTP::path] equals "/www_moraal_ee_conns_for_ip_per_interval_blocked" && ([matchclass [IP::remote_addr] equals cert_net] || [matchclass [IP::remote_addr] equals private_net]) } { set response "<html><head>Client Connections - www_moraal_ee_conns_for_ip_per_interval_blocked_table - rakendumise limiit $www_moraal_ee_conns_for_ip_per_interval_limit</head><p><body>" append response "Count:[table keys -subtable "www_moraal_ee_conns_for_ip_per_interval_blocked_table" -count]<br>" foreach ip [table keys -subtable www_moraal_ee_conns_for_ip_per_interval_blocked_table] { append response "$ip = [table lookup -subtable www_moraal_ee_conns_for_ip_per_interval_blocked_table $ip]<br>" } append response "klient [IP::remote_addr]" append response "</body></html>" HTTP::respond 200 content $response Content-Type "text/html" return } if { [HTTP::path] equals "/www_moraal_ee_conns_for_ip_per_interval" && ([matchclass [IP::remote_addr] equals cert_net] || [matchclass [IP::remote_addr] equals private_net]) } { set response "<html><head>Client Connections - www_moraal_ee_conns_for_ip_per_interval_table - rakendumise limiit $www_moraal_ee_conns_for_ip_per_interval_limit</head><p><body>" append response "Count:[table keys -subtable "www_moraal_ee_conns_for_ip_per_interval_table" -count]<br>" foreach ip [table keys -subtable www_moraal_ee_conns_for_moraal_per_interval_table] { append response "$ip = [table lookup -subtable www_moraal_ee_conns_for_ip_per_interval_table $ip]<br>" } append response "klient [IP::remote_addr]" append response "</body></html>" HTTP::respond 200 content $response Content-Type "text/html" return } if {[active_members www_moraal_ee_sorry_pool] > 0 && not([matchclass [IP::remote_addr] equals private_net])} { pool www_moraal_ee_sorry_pool } else { if { [HTTP::path] ends_with "/index.php"} { set www_moraal_ee_conns_for_ip_per_interval [table lookup -subtable "www_moraal_ee_conns_for_ip_per_interval_table" "[IP::client_addr]"] if {"$www_moraal_ee_conns_for_ip_per_interval" == ""}{set www_moraal_ee_conns_for_ip_per_interval 0} if { $www_moraal_ee_conns_for_ip_per_interval < $www_moraal_ee_conns_for_ip_per_interval_limit } { incr www_moraal_ee_conns_for_ip_per_interval 1 table set -subtable www_moraal_ee_conns_for_ip_per_interval_table "[IP::client_addr]" $www_moraal_ee_conns_for_ip_per_interval 60 60 # log local0. "imre20200708 pass www_moraal_ee - [HTTP::path]" } else { table set -subtable www_moraal_ee_conns_for_ip_per_interval_blocked_table "[IP::client_addr]" 1 86400 86400 HTTP::respond 403 content "<html><title>Paringute piirang on yletatud</title><body>Paringute piirang on yletatud - ei teenindata</body></html>" log local0. "imre20200708 block $CLIENTIP www_moraal_ee - [HTTP::uri]" return } } pool www_moraal_ee_pool } }
Post päringu sisu käigult muutmine
when CLIENT_ACCEPTED { set CLIENTIP [regsub {%[0-9]+} [IP::remote_addr] ""] } when HTTP_REQUEST { set LOGDST "www_moraal_ee" HTTP::host "www.auul.pri.ee" if { [HTTP::method] eq "POST" } { set collect_length 2048 if {[HTTP::header Content-Length] eq ""}{ set collect_length $collect_length } elseif {[HTTP::header Content-Length] == 0}{ unset collect_length } elseif {[HTTP::header Content-Length] > $collect_length}{ set collect_length $collect_length } else { set collect_length [HTTP::header Content-Length] } if {[info exists collect_length]} { HTTP::collect $collect_length } } pool www_auul_pri_ee_pool } when HTTP_REQUEST_DATA { regsub -all "asendatav_tekst" [HTTP::payload] "asendav_tekst" newdata HTTP::payload replace 0 [HTTP::payload length] $newdata }
HTTP vastuse käigult muutmine
TODO
- Stream moodul
ecc kasutamine
Tundub, et 2020 aastal on sobiv ja F5 v. xx.y peal ainuvõimalik kasutada virtual serveri juures paralleelselt rsa ja ecc krüptot. Selleks tuleb talitada nii nagu nö tavaliselt kuid lisaks kirjeldada ssl profiili juures lisaks rsale ecc krüpto materjali kasutamine
TODO
ning kasutada ssl client profiilis nt ciphers väärtust
ECDHE_ECDSA:DEFAULT:!SSLv3:!TLSv1:!TLSv1_1:!DHE:RSA+HIGH:!3DES
Active-passive liikmetega pool
Valida
Local Traffic ›› Pools : Pool List ›› pooli_nimi_pool
ning näidata
- Load Balancing method - Round Robin
- Priority Group Activation - Less than ...
- Available members - 1
ning Current members juures
- a õlg - Priority Group 1
- b õlg - Priority Group 0
Kasulikud lisamaterjalid
Supported Products -> BIG-IP LTM / VE -> TMOS Management Guide for BIG-IP Systems Supported Products -> BIG-IP LTM / VE -> Configuration Guide for BIG-IP Local Traffic Manager
2023 aasta alguse tähelepanekud
vlan moodustamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# create /net vlan vlan_1205 interfaces add { 1.2 { tagged } } tag 1205
self ip aadressi omistamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# create /net self si-vlan_1203 address 10.0.3.1%1201/24 vlan vlan_1204
self ip eemaldamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# delete /net self si-vlan_1203
ruuting domeeni tekitamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# create /net route-domain 1201 description RD1201 vlans add { vlan_1201 }
Olemasolevasse ruuting domeeni vlan lisamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# modify /net route-domain 1203 description RD1203 vlans add { vlan_1205 }
staatilise ruutingu tekitamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# create /net route 192.168.19.0/24 gw 10.13.13.4
ruutingute esitamine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# list /net route net route 192.168.17.0/24 { gw 10.13.13.4 network 192.168.17.0/24 partition prt-moraal-dev }
ruuting domeenide nimekirja küsimine
root@(moraal-f5)(cfg-sync Standalone)(Active)(/prt-moraal-dev)(tmos)# list /net route-domain net route-domain 101 { description RD101 id 101 partition prt-moraal-dev } net route-domain 102 { description RD102 id 102 partition prt-moraal-dev } net route-domain 1201 { description RD1201 id 1201 partition prt-moraal-dev vlans { vlan_1201 } } net route-domain 1203 { description RD1203 id 1203 partition prt-moraal-dev vlans { vlan_1204 vlan_1203 vlan_1205 } }