Protecting the BIG-IP LTM against DoS
Przydatny dokument opisujący mechanizm chroniące LTMa przed DoSami – Protecting the BIG-IP LTM against denial of service attacks (SOL7301).
Przydatny dokument opisujący mechanizm chroniące LTMa przed DoSami – Protecting the BIG-IP LTM against denial of service attacks (SOL7301).
LTM wspiera kilka algorytmów load balancingu, które możemy podzielić na dwie grupy:
- statyczne
- dynamiczne
Do tych pierwszych należą round-robin, oraz ratio (znane jako weighted round-robin w Ciscowym CSMie czy ACEie).
Do dynamicznych zaliczają się least connections, fastes response, observed (kombinacja dwóch poprzednich), predictive
oraz dynamic ratio. Niestety defaultowo nie ma do wyboru tzw. hash loadbalancingu, który jest niezbędny dla rozkładania
ruchu serwerów proxy. Hashing w LTMie można jednak zrobić, a wykorzystuje się do tego iRule. Artykuł będący dobrym
wstępem do napisania takiej iRule’i dostępny jest na DevCentral, polecam.
UPDATE: I jeszcze coś takiego.
Instalacja Hotfixów na BIG-IP jest bardzo prosta. Soft pobieramy z https://downloads.f5.com/esd/productlines.jsp. Przerzucamy Hotfixa na BIG-IP i uruchamiamy z CLI:
[root@f5-1:Active] ~ # im Hotfix-BIGIP-9.4.3-14.3-HF3.im Available KiB blocks in root partition: 2700684 Checking integrity of packages... /tmp/rpmdisk.XmfarE/RPMS/noarch/tzdata-2007f-9.4.3.14.0... Stopping processes, please wait... Jan 30 16:52:43 f5-1 LOGIN: Re-starting syscalld httpd (pid 4916 3301 3300 3288 1816 1814 1772) is running... Stopping httpd: [ OK ] /tmp/rpmdisk.XmfarE ~ Searching for relevant packages... Upgrading installed packages... >>>>>> Beginning single-package install pass 1... Preparing packages for installation... cssd-1.0-9.4.3.14.0 Preparing packages for installation... f5km-1-9.4.3.14.0 Preparing packages for installation... gtm-1.1-9.4.3.14.0 Preparing packages for installation... gtm-big3d-1.1-9.4.3.14.0 Checking active big3d version... Active big3d (9.4.3) is the same major version as available big3d (9.4.3) Installing new big3d (9.4.3). Preparing packages for installation... iControl-wsdl-1.0.F5-9.4.3.14.0 Preparing packages for installation... iControl-handlers-1.0.F5-9.4.3.14.0 Preparing packages for installation... initscripts-sccp-7.31.18.EL-9.4.3.14.0 Preparing packages for installation... initscripts-7.31.18.EL-9.4.3.14.0 Preparing packages for installation... isomd5sum-11.1.0.95-9.4.3.14.0 Preparing packages for installation... mcpd-1.0.F5-9.4.3.14.0 Preparing packages for installation... system_check-1.0.F5-9.4.3.14.0 Preparing packages for installation... tmm-1.0.F5-9.4.3.14.3 Preparing packages for installation... tmm-debug-1.0.F5-9.4.3.14.3 Preparing packages for installation... tmplugin-1.0.F5-9.4.3.14.0 Preparing packages for installation... TS-bd-5.0.0-9.4.3.14.0 Preparing packages for installation... TS-mng-scripts-5.0.0-9.4.3.14.0 Preparing packages for installation... TS-policy-builder-5.0.0-9.4.3.14.0 Preparing packages for installation... WA-1.0.F5-9.4.3.14.2 Loading Stored Procedures Preparing packages for installation... xconfig-1.0.F5-9.4.3.14.0 Preparing packages for installation... zrd-1.0.F5-9.4.3.14.0 Preparing packages for installation... f5base-1.0.0-9.4.3.14.0 Preparing packages for installation... f5config-sccp-1.0-9.4.3.14.0 Preparing packages for installation... f5config-1.0-9.4.3.14.0 Preparing packages for installation... pkg-tools-1.0-9.4.3.14.0 Preparing packages for installation... sccp-software-1.0-9.4.3.14.0 Preparing packages for installation... TS-mng-crawler-5.0.0-9.4.3.14.0 Preparing packages for installation... TS-tsui-5.0.0-9.4.3.14.3 Preparing packages for installation... tzdata-2007f-9.4.3.14.0 Unloading SubDomain profiles[OK] Loading SubDomain profiles[OK] >>>>>> Beginning single-package install pass 2... >>>>>> Upgrading all packages... Preparing packages for installation... iControl-modules-1.0.F5-9.4.3.14.0 iControl-1.0.F5-9.4.3.14.0 Checking for new EUD info: EUD-update: No package found in /tmp/rpmdisk.XmfarE/RPMS ************************************************************** Hotfix files have been applied. Please read the hotfix.readme file ************************************************************** !NOTICE! This hotfix may not be operational without a FULL system restart. To accomplish this, use the command: /usr/bin/full_box_reboot **************************************************************
Na koniec trzeba zrobić full_box_reboot, o którym mówi installer. I to wszystko:). Warto jeszcze pamiętać, że:
Note that each hotfix release is cumulative, and contains all previous hotfix releases.
Dokładny dokument opisujący instalacje Hotfixów na produktach F5 jest do przeczytania na: https://support.f5.com/kb/en-us/solutions/public/6000/800/sol6845.html

F5 właśnie wypuściło na rynek nowy produkt pod nazwą VIPRION. Jeszcze nie miałem okazji dotknąć tego wynalazku, ale już na tą chwilę producent podaje, że urządzenie może zapewnić wydajność czterech BIG-IP 8800. Chassis od VIPRIONa ma 7U i jest w stanie pomieścić do czterech blade’ów, tak zgadza się blade’ów. Całe chassis jest modularne i można do niego wkładać karty rozszerzeń w postaci blade. Producent podaje, że każdy blade potrafi obsłużyć 50,000 TPS (transactions per second) SSL i 800,000 RPS (requests per second) w Layer 7. Co po obsadzeniu całego urządzenia daje 1 milion połączeń na sekundę w L4, przepustowość 36Gbps w L4 lub L7, 3.2 miliona requestów w L7 i 200k SSL TPS. Każdy blade ma dwa procesory dual core, 8GB pamięci, 2 porty XFP (10Gb), 12 SFP (1Gb) i 8 portów miedzianych 10/100/1000. Całość wygląda imponująco, czyżby konkurecja typu Cisco ACE miała zostać zmiażdzona?:) Pomijam w tym momencie milczeniem stabilność i funkcjonalność ACE w porównaniu do BIG-IP. To samo dotyczy poprzednika ACEa, Cisco CSM, który był mocno średnim produktem.
Dla zainteresowanych na Devcentral jest krótki filmik prezentujący VIPRIONa.

Kiedyś trafiłem na taką iRule’a na DevCentral. W zależności od RTT klienta F5tka ustawia odpowiedni poziom kompresji dla serwowanej strony. Cwane:)
# rule HTTP_compression_slow_connections { # If client round trip time (latency) exceeds: # 50ms set HTTP compression to level 1 # 100ms set HTTP compression to level 5 # RTT returns latency as 1/32 of a millisecond, # so 1600=50ms, 3200=100ms, etc # In the HTTP profile, set compression to "selective" when HTTP_REQUEST { set rtt [TCP::rtt] } when HTTP_RESPONSE { if {$rtt > 1600 } { COMPRESS::enable COMPRESS::gzip level 1 } elseif {$rtt > 3200 } { COMPRESS::enable COMPRESS::gzip level 5 } } }
, Previous