8 основни съвета за защита на сървъра за уеб приложения

В повечето случаи сървърите за уеб приложения трябва да бъдат публично достъпни, което означава, че са изложени на всякакви заплахи.

Много от тези заплахи са предвидими и лесно избегнати, докато други са неизвестни и могат да ви хванат неподготвени. За да сведем до минимум възможността за този последен случай, ние предлагаме списък с основни съвети, за да поддържаме сървърите на уеб приложения възможно най-сигурни.

Преди да започнете със списъка със съвети, трябва да разберете, че сървърът за уеб приложения не е остров. Сървърът е централният компонент във фермата за уеб приложения, който прави възможно хостването и работата на уеб приложение. Следователно, за да защитите, трябва да вземете предвид всички компоненти, които го заобикалят, и да защитите цялата среда на уеб приложението.

Основната среда за хостване и изпълнение на уеб приложения включва операционната система (Linux, Windows), софтуера на уеб сървъра (Apache, Nginx), сървър на база данни. Ако някой от тези компоненти бъде разбит, нападателите могат да получат достъп и да извършат всички злонамерени действия, които искат.

Първият и основен съвет за осигуряване на среда като описаната по-горе е да прочетете насоките за сигурност и списъка с най-добри практики за всеки един от компонентите. Като се има предвид това, нека прегледаме редица здравомислещи насоки за сигурност, които се прилагат за почти всяка среда на уеб приложения.

Защитната стена демистифицирана

Може да се изкушите бързо да проверите този елемент, като си помислите: „Късметлия съм, вече имам защитна стена, която защитава мрежата ми“. Но по-добре дръжте конете си.

Вашата защитна стена може да се грижи за границите на вашата мрежа, като държи лошите навън и добрите вътре, но със сигурност оставя широко отворена врата за нападателите да проникнат във вашия сървър за уеб приложения.

как?

Просто: вашата мрежова защитна стена трябва поне да позволява входящ трафик на портове 80 и 443 (това е HTTP и HTTPS) и не знае кой или какво минава през тези портове.

Това, от което се нуждаете, за да защитите приложението си, е защитна стена на уеб приложение (WAF), която конкретно анализира уеб трафика и блокира всеки опит за използване на уязвимости, като скриптове между сайтове или инжектиране на код. WAF работи като типичен антивирусен и антизловреден софтуер: търси известни модели в потока от данни и го блокира, когато открие злонамерена заявка.

  4 инструмента за провеждане на SEO A/B тестови експерименти

За да бъде ефективен, WAF трябва постоянно да актуализира своята база данни с нови модели на заплахи, за да може да ги блокира. Проблемът с предотвратяването на атаки, базирани на шаблони, е, че вашето уеб приложение може да бъде една от първите цели на нова заплаха, за която вашият WAF все още не е запознат.

Поради тези причини вашето уеб приложение се нуждае от допълнителни защитни слоеве освен мрежовата защитна стена.

Сканирайте за специфични за уеб уязвимости

Отново, не мислете, че вашият сървър за уеб приложения е без уязвимости само защото вашият скенер за мрежова сигурност казва така.

Мрежовите скенери не могат да открият специфични за приложението уязвимости. За да откриете и премахнете тези уязвимости, трябва да подложите приложенията на поредица от тестове и одити, като тестове за проникване, сканиране на черна кутия и одит на изходния код. Нито един от тези методи обаче не е брониран. В идеалния случай трябва да изпълните възможно най-много от тях, за да елиминирате всички уязвимости.

Например скенери за сигурност, като Invicti, гарантирайте, че никакъв използваем код не достига до производствената среда. Но може да има логически уязвимости, които могат да бъдат открити само чрез ръчен одит на кода. Ръчният одит, освен че струва много, е човешки и следователно податлив на грешки метод. Добра идея да направите този вид одит, без да губите много пари, е да го вградите в процеса на разработка, най-вече чрез обучение на вашите разработчици.

Обучете разработчиците си

Разработчиците са склонни да мислят, че техните приложения работят в идеални светове, където ресурсите са неограничени, потребителите не правят грешки и няма хора с безмилостни намерения. За съжаление, в един момент те трябва да се изправят пред проблеми от реалния свят, особено тези, свързани с информационната сигурност.

Когато разработват уеб приложения, програмистите трябва да познават и прилагат механизми за сигурност, за да гарантират, че няма уязвимости. Тези механизми за сигурност трябва да бъдат част от ръководството за най-добри практики, с което екипът за разработка трябва да се съобразява.

Одитът на качеството на софтуера се използва, за да се гарантира съответствие с най-добрите практики. Най-добрите практики и одитът са единствените начини за откриване на логически уязвимости, като например (например) предаване на некриптирани и видими параметри вътре в URL адрес, който атакуващият може лесно да промени, за да прави това, което той или тя иска.

  Как да намерите ретуитове на цитат на туит

Изключете ненужните функции

Ако приемем, че уеб приложенията са възможно най-без грешки и уеб фермата е защитена, нека видим какво може да се направи на самия сървър, за да се защити от атаки.

Основен, здрав разумен съвет е да се намали броят на потенциално уязвимите входни точки. Ако нападателите могат да експлоатират някой от компонентите на уеб сървъра, целият уеб сървър може да бъде в опасност.

Направете списък на всички отворени портове и работещи услуги или демони на вашия сървър и затворете, деактивирайте или изключете ненужните. Сървърът не трябва да се използва за други цели, освен за изпълнение на вашите уеб приложения, така че помислете за преместване на цялата допълнителна функционалност към други сървъри във вашата мрежа.

Използвайте отделни среди за разработка, тестване и производство

Разработчиците и тестерите се нуждаят от привилегии върху средите, в които работят, които не трябва да имат на живия сървър на приложения. Дори ако им се доверите сляпо, техните пароли могат лесно да изтекат и да попаднат в нежелани ръце.

Освен пароли и привилегии, в средите за разработка и тестване обикновено има задни вратички, регистрационни файлове, изходен код или друга информация за отстраняване на грешки, която може да разкрие чувствителни данни, като потребителски имена и пароли на бази данни. Процесът на внедряване на уеб приложението трябва да се извърши от администратор, който трябва да се увери, че няма разкрита чувствителна информация след инсталиране на приложението на живия сървър.

Същата концепция за разделяне трябва да се приложи към данните на приложението. Тестерите и разработчиците винаги предпочитат да работят с реални данни, но не е добра идея да им се предоставя достъп до производствената база данни или дори до нейно копие. Освен очевидните опасения за поверителността, базата данни може да съдържа конфигурационни параметри, които разкриват вътрешни настройки на сървъра – като адреси на крайни точки или имена на пътища, за да назовем няколко.

Поддържайте актуализиран сървърния си софтуер

Колкото и очевидно да изглежда, това е една от най-пренебрегваните задачи. SUCURI установи, че 59% от CMS приложенията са остарели, което крие риск.

Нови заплахи се появяват всеки ден и единственият начин да им попречите да застрашат вашия сървър е винаги да инсталирате най-новите корекции за сигурност.

Споменахме преди, че мрежовите защитни стени и скенерите за мрежова сигурност не са достатъчни за предотвратяване на атаки срещу уеб приложения. Но те са необходими, за да защитите вашия сървър от често срещани заплахи за киберсигурността, като DDoS атаки. Затова се уверете, че такива приложения винаги се актуализират и че те ефективно защитават вашето бизнес приложение.

  Какво е Inbox Zero и как можете да го постигнете?

Ограничете достъпа и привилегиите

Основна мярка за сигурност е трафикът за отдалечен достъп – като RDP и SSH – да бъде криптиран и тунелиран. Също така е добра идея да поддържате намален списък с IP адреси, от които е разрешен отдалечен достъп, като се уверите, че всеки опит за дистанционно влизане от всеки друг IP е блокиран.

Администраторите понякога дават на сервизните акаунти всички възможни привилегии, защото знаят, че по този начин „всичко ще работи“. Но това не е добра практика, тъй като нападателите могат да използват уязвимости в услугите, за да проникнат в сървъра. Ако тези услуги работят с администраторски права, те могат да завземат целия сървър.

Добрият баланс между сигурност и практичност изисква всеки акаунт – както акаунти за влизане, така и акаунти за услуги – да има привилегиите, от които се нуждае, за да изпълнява своята работа, и нищо друго.

Например, можете да дефинирате различни акаунти за администратор, за да изпълнява различни задачи: един за създаване на резервни копия, друг за почистване на регистрационни файлове, трети за промяна на конфигурацията на услугите и т.н. Същото важи и за акаунтите в бази данни: приложението обикновено се нуждае само от разрешенията за четене и запис на данни, а не за създаване или премахване на таблици. Следователно трябва да работи с акаунт с ограничени привилегии за изпълнение на задачите, които трябва да изпълнява.

Следете регистрационните файлове на сървъра

Регистрационните файлове са там с причина.

Администраторите трябва да ги наблюдават редовно, за да открият всяко подозрително поведение, преди то да причини щети. Като анализирате регистрационните файлове, можете да разкриете много информация, която да ви помогне да защитите по-добре приложението. Ако се случи атака, регистрационните файлове могат да ви покажат кога и как е започнала, помагайки за по-добър контрол на щетите.

Трябва също така да имате автоматизирана процедура за изтриване на стари регистрационни файлове или за изрязване на остаряла информация, за да им попречите да заемат цялото налично място за съхранение в сървъра.

Бонус съвет: бъдете информирани

В интернет има много безплатна и полезна информация, която можете да използвате в полза на вашето уеб приложение. Не пропускайте нито една нова публикация в уважавани блогове за сигурност (като този) и бъдете информирани какво се случва в индустрията за сигурност и уеб.

Уроци, курсове, видеоклипове и книги също са източници на полезни знания. Практикувайте да отделяте един или два часа седмично само за да бъдете информирани за новините от индустрията — това ще ви даде спокойствието да знаете, че правите правилното нещо, за да защитите приложенията си.