Յուրաքանչյուր ոք, ով զբաղվում է պրոֆեսիոնալ հետ web hosting գիտի, թե ինչ վտանգ է ներկայացնում վարակված օգտվողները հետ չարամիտ, web shells etc. "Обшият այստեղ օգտագործվում է maldet մեկը ոչ մի վատ սցենար. Նա տարբերվում է 3 բաներ

  1. Ահավոր դանդաղ
  2. Ահավոր դանդաղ են ընթանում, եւ եթե նրան ազատ արձակել ռեժիմով մոնիտորինգի չի изгаври սերվերի վրա դուք
  3. Աջակցում է սեփական բազայի հետ, md5/hex дефиници վատ կոդ.

Հենց վերջին առանձնահատկությունն է, այն օգտակար, քանի որ, ամեն ինչից զատ, կարող է събмитваш ֆայլերը, որոնք հայտնաբերվել էին մինչ այժմ եւ ավելի ուշ փուլում պետք է հասնել բազայի. Ինչպես կիսվել կետ 1 ու 2 նրա արագությունը սարսափելի ցածր է – ցածր ծանրաբեռնվածության մեքենայի վրա 70к ֆայլի отсканировали մեկ-մեկուկես ժամ. Այդ պատճառով ես սկսեցի օգնել իմ լավ ընկեր, ShadowX հետ malmon – այլընտրանք maldet գրված է python մի քիչ ճկունություն. Ցավոք, ժամանակի սղության պատճառով (հիմնականում, բայց ոչ միայն) մենք չենք довършили նախագծի, որը տվյալ պահին շատ օգտակար է – բավականին սխալներ կան որոնք պետք է մաքրել. Անցած օրերին ինձ հաճախորդների հետ, վարակված CryptoPHP որոնք ունեին հսկայական public_html ֆայլերը ~60к+ inod-օգտագործողի. Քանի որ միասին պետք է ստուգվել 200к ֆայլ որ խոշոր հաշիվների այն տեւում 5+ ժամ ես որոշեցի тунинговам կազմաձեւման maldet, նվազեցնել ֆայլերը, որոնք պետք է ստուգվի ինչ-որ բան ավելի խելամիտ տեղը եւ ժամանակը. Մինչեւ ընտրության конфа նկատել է հետեւյալ տողերը

# Attempt to detect the presence of ClamAV clamscan binary
# and use as default scanner engine; up to four times faster
# scan performance and superior hex analysis. This option
# only uses ClamAV as the scanner engine, LMD signatures
# are still the basis for detecting threats.
# [ 0 = disabled, 1 = enabled; enabled by default ]
clamav_scan=1

Հետաքրքիր է… Ակնհայտ է, որ կա հնարավորություն օգտագործել ClamAV – ով նույնպես աչքի չի ընկնում մեծ արագությամբ, բայց, ինչու չէ, փորձեք այն. Արագ ես տեղադրել

/scripts/update_local_rpm_versions --edit target_settings.clamav installed

/scripts/check_cpanel_rpms --fix --targets=clamav

Թողարկել maldet-իսկ փոքրիկ թղթապանակ – չեմ տեսնում տարբերություն արագությամբ եւ վարքի – օգտագործել է իր perl-ски սկաների փոխարենը clamav. Հետո կարճատեւ փորում, ըստ կոդ maldet ես գտել հետեւյալ տողերը

 clamscan=`which clamscan 2> /dev/null`
 if [ -f "$clamscan" ] && [ "$clamav_scan" == "1" ]; then
        eout "{scan} found ClamAV clamscan binary, using as scanner engine..." 1
    for hit in `$clamscan -d $inspath/sigs/rfxn.ndb -d $inspath/sigs/rfxn.hdb $clamav_db -r --infected --no-summary -f $find_results 2> /dev/null | tr -d ':' | sed 's/.UNOFFICIAL//' | awk '{print$2":"$1}'`; do

Мдааа, ես մի ստուգելու clamscan и за моя голяма изненада открих че clamav изобщо не е в PATH-a ами тъпият Cpanel го е оставил само в /usr/local/cpanel/3rdparty/bin/ от където той си използва бинарките. Един бърз ln реши проблема:

ln -s /usr/local/cpanel/3rdparty/bin/clamscan /usr/bin/clamscan

При повторно сканиране maldet вече горно съобщава

{scan} found ClamAV clamscan binary, using as scanner engine...

След като вече използва ClamAV maldet приключва сканирането си 3-4-5 пъти по бързо в сравнение с преди. Теста показа – 70к inod-а ги изтъркла за около 25 мин което си е около 3 пъти и половина по бързо в сравнение с преди.

Մինչ այդ, սկսել են հերթական random % % 50 ’тинки OS ես նկատի ունեմ, որ ամեն օր ես պետք է նրա վարչարարությունը եւ գիտեմ նրա առաջին դեմքի եզակի թվի բավականին լավ. Այսօր ես էլ ժամանակին, որպեսզի изтествам նոր մոգություն нечувана և երբեք չի տեսել գործառույթները համար թարմացումները диструбитивен (կեղծ) 😀 . Առաջին բանը, որ ինձ գրավեց: սա, որ RedHat իր անսահման իմաստության որոշել է դադարեցնել սպասարկումը х86 ճարտարապետության 🙄 . Напълно съм наясно че сме 2014-та година и сървърни процесори с 32 քիչ հրահանգներ բացակայում է վաղուց. Мда ама какво правят потребителите на малки VPS-и – 64-bit ինտերնետ ոտքերը ավելի շատ շրջանակներ, ինչպես եք նայում դրան, եթե դուք ունեք բարակ վիրտուալ հարմարվողական հետ 512MB-1GB ram պայքարելու է յուրաքանչյուր мегабай նրանից չի прахосаш 20-30% այն պարզապես օգտագործել մեծ սեթ են հրահանգներ. Препсувах քանի որ ես инсталил х86 CentOS եւ բարձրացնել մեկ 64-bit ինտերնետ. Միանգամից տեսա տարբերությունը ISO-ին – ~100МБ նվազագույն 6.5. Препсувах եւս մեկ անգամ. Ես տեղադրել այն կրկին виртуалката, ինչպես ես որոշեցի տեսնել, RedHat, թե որքան լավ է կատարել իր աշխատանքը – ես անում /var /usr առանձին LVM բաժինները 😈 . Հետո տեղադրման ես թարմացրել բոլոր փաթեթները ես տեղադրել և apache, php, mysql և bind – հետաքրքիր էր, թե արդյոք բռնկվել сървисите. Ես բացեցի այն, թե ինչպես է լավ աշակերտուհին ուղեցույց CentOS-ի համար թարմացվել է և սկսել է խելոք-խելոք իր համար պետք է քայլ առ քայլ. Երբ ես հասա այն պահը, սկսել իրական թարմացնել այս пумия ինձ изряза, че имам критичен проблем 🙄 . "Եզը պատասխանել է ելքը – мдаааа /usr չի կարող առանձին բաժին 😆 ես գիտեի, որ պետք է հիասթափված Jim Whitehurst եւ ընկերության. Բացի “մեկը:” խնդիր է, բավականին շատ հաղորդագրությունների մասին չստորագրված փաթեթներ, ֆայլերի համար конфизи որոնք չեն համապատասխանում և այլն. WTF նույնիսկ եղել են հօգուտ 3-րդ պահոցները բոլոր նրանց հայելիներ смъкнах չի արել որեւէ պարամետրերը պարզապես տարրական yum install. Արդեն ամեն ինչ պարզ էր, ուստի առանց այլևայլի форсирах upgrade. Reboot կրկին հնազանդ ինչպես ինձ հուշում է, ի վերջո, սցենարը, եւ ամեն ինչ ավարտվում են /usr բաժնում. Ես շատ ծույլ, որ փորձեք, որպեսզի նրա фиксна, ինչևէ, ամեն ինչ եղել է միայն գիտական նպատակն է, ոչ թե ապրանք-սերվերի, որ надграждам այս պահին. Ես բռնել преинсталирах նրա виртуалката, քանի որ այս անգամ ամեն ինչ իր набутах է 1 բաժին. Նաեւ վերցրել դաս, որեւէ վերազինման որեւէ լրացուցիչ сървъси, տեղադրելուց հետո ուղղակի թարմացումները. Վերջնական քայլ-կրկին pop up досаният երկխոսությունը, որն ինձ ասաց., որ ես ունեմ բավականին Բարձր խնդիրներ – անվավեր փաթեթներ, конфизи եւ այլն, բայց կարող է տեւել. Ես գիտեի, որ տանը անում են նրանց, թե ինչպես բաներ պետք է. Reboot կրկին ու зачаках – о какво чудо ъпгрейда приключи успешно. И всичко работеше или поне зареждането на системата така и не пробвах да инсталирам допълнителни пакети, но halt командата си зависвашехух все пак трябваше да има бъг 💡 . След тая цялата тарапана реших да инсталирам на чисто Centos 7 да видим дали ще ръмжи за /boot дял в LVM – 6.5 не позволява такава дързост. Стартирах си ISO-то и бях меко казано шокиран от инсталаторавсичко беше крайно не удобноподредено”, напълно алогично с цел да е красиво. Հետո ինչ-որ պայքարի հաջողվել է իր նպատակին, եւ աղա, տեղադրել եւ грянет, որ անհրաժեշտ է, որպեսզի նրա մարել /boot-իսկ դուրս LVM-a 👿 Դա չափազանց լուրջ է եւ նյարդայնացնում է, եթե ինչ-ինչ պատճառներով մոռացել է, որ չափը загрузочного բաժին է 200МБ եւ понатрупаш հին միջուկներ, թե ինչ է տեղի ունենում.

Ընդհանուր առմամբ, ոչինչ չի սպասում, եւ չնայած ես հիասթափված CentOS.

Ինչպես псувам RHEL ու CentOS shit-իսկ կա ինչ-որ բաներ, որոնք նրանց հորինել բավական գրագետ. Օրինակ, ավելացնելով մեծ քանակությամբ լրացուցիչ IP-հասցեների շատ լավ առաջադրանք. По принцип ако трябва да добавя голям брой адреси бих си разписал едно bash скриптче в което в цикъл да извършва въпросната операция че на ръка не си е работа. "Centos/RHEL մարդիկ այն հնարել են բավականին հաճելի է range ֆայլը. Ընդհանուր առմամբ ստեղծել ֆայլը /etc/sysconfig/network-scripts/ifcfg-eth0-range0. Тук заменяме eth0 със името мрежовият адаптер ако не е eth0. След което добавяме следното съдържание

IPADDR_START=192.168.0.129
IPADDR_END=192.168.0.254
NETMASK=255.255.255.128
CLONENUM_START=0

като аргументите са

  • IPADDR_STARTначален IP адрес
  • IPADDR_ENDкраен адрес
  • NETMASKмрежова маска
  • CLONENUM_STARTномерация от която да започнат мрежовите адаптер eth0:0 в нашият случай

 

"Centos-իսկ դա քիչ հետաքրքիր է сетъпа bridge adapters. Համաձայնե ՛ ք, որ արդեն տեղադրվել է bridge-utils փաթեթը եւ eth0 (դա իմ օրինակով) տրամադրված, այսպիսով, եկեք դիտարկենք այն հիմնական քայլերը

  1. Մենք копируем կառավարում eth0-ին br0 (այստեղ արդեն, եթե դուք պետք է այլ անվանակոչության ադապտեր այն շտկել)
  2. Занествате ձայնագրման eth0 կազմաձեւման ֆայլը վրա br0
  3. замествате ադապտեր տեսակը Ethernet Bridge
  4. Նկարահանելով MAC հասցե են br0 կոնֆիգուրացիա
  5. Խնդրեք կազմաձեւման eth0 որ դուք ունենք մոստովոյը ադապտեր br0

За да спестя време си го разписах като елементарно bash скриптче

cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
sed -i 's/eth0/br0/' ifcfg-br0
sed -i 's/Ethernet/Bridge/' ifcfg-br0
sed -i '/HWADDR/d' ifcfg-br0
echo 'BRIDGE="br0"' >> ifcfg-eth0

Այսօր сутинрта ես ստանդարտ dist upgrade մեկ սերվերի Debian և Dovecot մահացել հաջորդ սխալ 🙂

[….] Starting IMAP/POP3 mail server: dovecotError: բույն() չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: service(pop3-login): listen(::, 110) չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: բույն() չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: service(pop3-login): listen(::, 995) չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: բույն() չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: service(imap-login): listen(::, 143) չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: բույն() չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Error: service(imap-login): listen(::, 993) չի հաջողվել: Հասցե ընտանիքները չեն ապահովվում է արձանագրության
Fatal: Failed to start listeners
չի հաջողվել!

 

Ако се загледате внимателно в нея грешката вади очите на човек listen(::, 993) չի հաջողվել ակնհայտ է, փորձում է լսել ipv6 հասցե, որը ես հաշմանդամ 😈 . Որոշումը նույն очевдино ինչպես ինքն է սխալ – трябва да накараме dovecot да работи само на ipv4, което се постига с следният ред в /etc/dovecot/dovecot.conf
listen=0.0.0.0
След което удряме един бърз рестарт на Dovecot и всичко е по реда си и можем да продължим с дистрибутивният ъпгрейд