در زیرساختهای مبتنی بر F5، نگهداری منظم از نسخههای پشتیبان (Backup) شامل کانفیگهای سیستم، Virtual Serverها و بهخصوص پالیسیهای ASM یکی از مهمترین بخشهای مدیریت و امنیت سرویس است. با اینحال، انجام این فرآیند بهصورت دستی نهتنها زمانبر است، بلکه احتمال خطای انسانی و از دست رفتن نسخههای حیاتی در شرایط بحران را افزایش میدهد. همچنین، ذخیرهسازی امن و منظم این فایلها در یک مخزن خارجی مانند FTP، برای رعایت اصول Disaster Recovery ضروری است.
بهمنظور رفع این چالشها، در این مقاله اسکریپتی توسعه دادهایم که فرآیند تهیه خودکار بکاپ از F5 و پالیسیهای ASM، انتقال آنها به سرور FTP و حذف نسخههای قدیمی را بهصورت کامل اتوماسیون میکند. این اسکریپت با زمانبندی قابل تنظیم، بدون نیاز به دخالت انسانی و مطابق با بهترین شیوههای نگهداری، یک چرخه پایدار و مطمئن برای مدیریت بکاپها فراهم میکند. این راهکار علاوه بر کاهش ریسک، باعث افزایش سرعت بازیابی، استانداردسازی فرآیندها و سادهسازی مدیریت شبکه میشود.
کد های ذیل را در یک bash file (مثلا F5-BACKUP.sh ) دخیره کنید و با دستور bash F5-BACKUP.sh آنرا اجرا کنید. ضمنا می توانید با قرار دادن مسیر فایل و تعیین زمانبدی از طریق crontab اجرای اسکریپت را به صورت زمان بندی شده -مثلا روزانه-هفتگی یا ماهیانه- تنظیم کنید.
#!/bin/bash
#F5 Backup to FTP Script By "Mehran Safari"
##TO AVOID USING CLEAR TEXT PASSWORD OF FTP SERVER WE USE HASHED PASSWORD TO MAKE IT SAFER##
FTP_ENC_PASS="ENCRYPTED_PASS"
FTP_PASS=$(echo "$FTP_ENC_PASS" | openssl aes-128-cbc -d -a -salt -pass pass:"" 2>/dev/null)
FTP_USER="USER"
##TAKE UCS BACKUP AND ADD DATE ON END OF FILE NAME##
tmsh save /sys ucs "F5-$(date +%Y%m%d)"
*
##SEND UCS FILE TO FTP SERVER WITH IP 10.10.10.10 AND FOLDER f5##
curl -T "/var/local/ucs/F5-$(date +%Y%m%d).ucs" --ftp-create-dirs -u $FTP_USER:$FTP_PASS "ftp://10.10.10.10/f5/"
## FIND OLDER BACKUPS AND DELETE THEM (JUST KEEPS UCS FILES CREATED TODAY.)##
find "/var/local/ucs/" -type f -name "F5-*.ucs" -mtime +1 -delete
##GOES INTO PARTITION1 (IF YOUR WAF IS PARTITIONED) AND SAVE ALL OF ASM POLICIES IN XML FORMAT TO RECOVER THEM SEPARATELY IF NEEDED)##
for policy in $(tmsh -c "cd /PARTITION1; list asm policy one-line" | awk '{print $3}'); do (tmsh -c "cd /PARTITION1; save asm policy ${policy} xml-file ${policy}.xml") done
##COMPRESS ALL ASM POLICIES AND ADD DATE ON END OF FILE NAME##
find /var/tmp/ -name "*.xml" -print0 | tar -czvf "F5-Policies-$(date +%Y%m%d).tgz" --null -T -
##SENDS COMPRESSED POLICY FILES TO FTP SERVER 10.10.10.10 AND FOLDER config##
curl -T "/config/F5-Policies-$(date +%Y%m%d).tgz" --ftp-create-dirs -u $FTP_USER:$FTP_PASS "ftp://10.10.10.10/f5/"
##REMOVE COMPRESSED AND XML POLICIES CREATED BEFORE##
rm "/config/F5-Policies-$(date +%Y%m%d).tgz"
rm /var/tmp/*.xml
exit
نکات مهم:
* برای جلوگیری از قرار دادن رمز کاربر ftp در اسکریپت از hash پسورد استفاده شده است که می توانید با دستور زیر آنرا به دست اورده و در FTP_ENC_PASS قرار دهید. اگر این موضوع برای شما مهم نیست میتوانید رمز کاربر را مستقیما در FTP_PASS بگذارید.
echo -n "PASSWORD" | openssl aes-128-cbc -a -salt -pass pass:""
* نام کاربری که دسترسی Write در ftp سرور دارد در بخش FTP_USER وارد کنید.
* بکاپ ucs در پوشه f5 و فایل فشرده شده تمامی asm ها در پوشه config در ftp سرور قرار خواهند گرفت این دو پوشه را در سرور ایجاد کنید یا نام پوشه را متناسب با شرایط و تنظیمات ftp سرور خود تغییر دهید. ضمنا ip سرور Ftp 10.10.10.10 فرض شده است که می توانید اصلاح کنید.


