Как да използвате програмата snort за windows. Система за откриване на проникване за манекени. Инсталиране и конфигуриране на SNORT. Получаване на помощ за синтаксиса на командния ред на snort

Милиарди пакети данни се предават през корпоративните мрежи всеки ден. Някои от тях са опасни; Авторите на такива пакети предприеха специални мерки за заобикаляне на защитните стени и пробиване на защитните линии по периметъра на мрежите, нарушавайки работата на всички системи, срещани по пътя. Разрушителните ефекти на пакетирани атаки като Code Red, Nimda, SQL Slammer и MSBlaster са добре известни. Всички тези зловреден софтуер използват надеждни протоколи (като HTTP) или мрежов трафик от системи на Microsoft. Такива протоколи не могат просто да бъдат взети и блокирани, така че администраторите обикновено се опитват да уловят опасния трафик възможно най-бързо, като използват системи за откриване на неоторизиран достъп, система за откриване на проникване в мрежа (NIDS), за да реагират навреме на заплахата.

В търговската мрежа се предлагат няколко NIDS, които се различават по възможности и цена. Като цяло всички работят успешно. Всички търговски пакети, които срещнах, бяха отлични. Но какво трябва да направят организациите със скромни бюджети, ако откриването на проникване не е приоритет? За такива случаи има Snort - мощен безплатен NIDS пакет. За разлика от много пакети с отворен код, той е съвместим с Windows.

Запознаване със Snort

Първоначалният разработчик на Snort, Мартин Реш, направи програмата достъпна за отворената общност съгласно условията на GNU General Public License (GPL). Историята на този пакет започва през 1998 г. и оттогава той е доказал своята надеждност повече от веднъж. Благодарение на приноса на отворени членове на общността и мрежови администратори по целия свят, Snort се превърна в много мощен продукт. Текущата версия осигурява анализ на мрежовия трафик в реално време и регистриране на IP трафика при скорост на Fast Ethernet и Gigabit Ethernet.

Майкъл Дейвис пренесе Snort 1.7 към платформата Win32, правейки го достъпен за общността на Windows. След това Крис Рийд се зае със задачата да компилира нови версии на Snort в готови изпълними файлове, които могат лесно да бъдат внедрени в среда на Windows.

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

Изисквания за Snort

За да стартирате Snort, имате нужда от компютър с Windows, оборудван с поне един мрежов адаптер. По-добре е да имате два мрежови адаптера, единият свързан към контролираната мрежа, а другият към производствената мрежа; последният препраща докладите. Snort е съвместим не само с Windows 2000 Server и по-нови версии, но и с Windows XP Professional Edition, XP Home Edition и Windows 2000 Professional. Не се изисква сървърен лиценз. Свързвам моя XP Pro лаптоп към много клиентски мрежи всеки ден и обикновено стартирам Snort като услуга. По този начин програмата работи във фонов режим, откривайки всякакви атаки срещу моята система, идващи от тази клиентска мрежа. Използвам Snort като преносим сензор - програмата действа като NIDS за всеки порт, към който е свързан лаптопът.

В малки мрежи Snort може да бъде внедрен на сървър от начално ниво. Не е необходима специална машина с висока мощност за откриване на опити за неоторизиран достъп. Например, чувал съм за базирани на FreeBSD Snort възли с 1 GHz процесори и 1 GB RAM, които успешно обслужват мрежи с 15 000 потребители и множество T-3 WAN връзки. Благодарение на ефективността на изходния код на Snort, не е необходима много мощна машина, за да стартира програмата.

Къде е най-доброто място в мрежата за намиране на NIDS? Първата мисъл е да поставите устройството пред защитната стена. Това е мястото, където NIDS ще открие най-много атаки, но броят на фалшивите положителни резултати също ще бъде най-висок и администраторът ще получи много безполезни предупреждения за опасността. Не трябва да се тревожите за заплахи, спрени от защитна стена; по-важно е да откриете опасни програми, които се крият зад нея. Затова е по-добре да поставите Snort зад защитната стена така или иначе.

Въпреки това, ако потребителите се свързват към мрежата чрез VPN връзка (по интернет или безжична връзка), има смисъл NIDS да се постави по-далеч зад защитната стена, като например зад VPN сървър или концентратор, където пакетите се декриптират при излизане от VPN тунел. В противен случай NIDS няма да може да се противопостави на зловреден софтуер, вграден във VPN трафика, тъй като анализираните пакети ще бъдат криптирани. Същото се отнася за криптиран SMTP трафик, криптирани .zip файлове, прикачени към имейл съобщения, и други типове криптирани данни.

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

Сега, след като сте запознати със Snort и знаете неговите изисквания за хостинг, можете да инсталирате и тествате NIDS. За повече информация относно Snort вижте документите, свързани в страничната лента „Уеб ресурси“. Този процес се състои от седем етапа:

  1. Инсталиране на WinPcap
  2. Инсталиране на Snort
  3. Тестване на Snort
  4. Настройване на Snort
  5. Задаване на правила
  6. Настройка на предупреждения и регистрационни файлове
  7. Изпълнявайте като услуга

Етап 1. Инсталиране на WinPcap

Snort е по същество мрежов анализатор в безразборен режим, така че изисква поддръжка на драйвер. Тази поддръжка се предоставя от WinPcap. Loris Digioanni създаде WinPcap чрез пренасяне на драйвера за улавяне на пакети libpcap, широко използван сред потребителите на Unix, в средата на Windows. WinPcap включва филтър за пакети на ниво ядро, DLL от ниско ниво (packet.dll) и независима от системата библиотека от високо ниво (wpcap.dll, базирана на libpcap 0.6.2).

WinPcap може да бъде изтеглен от http://winpcap.polito.it. Драйверът е съвместим с Windows Server 2003, XP, Windows 2000, Windows NT, Windows Me и Windows 9x. WinPcap също така поддържа Ethereal пакетен снифър с отворен код, който може да бъде получен от . Използвайки Ethereal, можете да проверите дали Snort е инсталиран правилно.

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

Стъпка 2: Инсталирайте Snort

Следващата стъпка е да инсталирате Snort. Последната версия може да бъде намерена на уеб сайтовете на консултантите на CodeCraft ( http://www.codecraftconsultants.com/snort.aspx) или Snort.org ( http://www.snort.org). Препоръчвам да изтеглите Snort от консултантите на CodeCraft, тъй като можете да получите саморазархивиращ се изпълним файл от този сайт. Програмата дори води потребителя през основните стъпки за инсталиране на Snort на компютър. Най-новата версия на Snort 2.1.1, build 18 беше използвана при подготовката на тази статия. Оттогава бяха пуснати актуализирани версии.

Когато стартирате инсталационната програма, в първия диалогов прозорец трябва да изберете режима на конфигурация на базата данни за съхраняване на резултатите. Ако използвате MySQL или ODBC-съвместима база данни, можете да приемете режима по подразбиране (Фигура 1). Но ако ще съхранявате протоколи в база данни на Microsoft SQL Server или Oracle, тогава трябва да изберете подходящия режим и да се уверите, че необходимата клиентска програма е налична на машината. При подготовката на тази статия е използван режимът по подразбиране.

Следващата стъпка е да идентифицирате компонентите на Snort, които искате да инсталирате. Стандартният набор (екран 2) е наред, така че препоръчвам да го приемете и да щракнете върху Напред. В диалоговия прозорец Избор на място за инсталиране трябва да посочите директорията, където ще бъде внедрен Snort. След като въведете името на директорията, щракнете върху Напред, за да завършите инсталационния процес.

Екран 2: Избор на инсталационни компоненти

Стъпка 3: Тествайте вашата инсталация на Snort

След завършване на инсталационния процес, Snort трябва да бъде тестван. По подразбиране на изпълнимия файл на Snort трябва да бъдат указани две местоположения: къде да записва регистрационни файлове и къде да намери конфигурационния файл (snort.conf). Тази информация се предоставя от потребителя, когато стартира Snort от командния ред, като използва съответно ключовете -l и -c. Например командата

Snort -l F:snortlog -c F:snortetcsnort.conf -A конзола

казва на програмата, че регистрационните файлове трябва да се записват в директорията F:snortlog и че snort.conf се намира в директорията F:snortetc. Ключът -A указва метода за предаване на предупреждения, генерирани от програмата. В този пример предупрежденията се показват на екрана на конзолата, така че администраторът да може да провери дали Snort работи правилно. Моля, обърнете внимание, че в статията командата е отпечатана на няколко реда, но в командния прозорец трябва да се въведе на един ред. Същото важи и за другите многоредови команди в тази статия. Много превключватели на командния ред на Snort са чувствителни към главни и малки букви, така че трябва да въвеждате командите точно както са въведени.

Ако системата има множество мрежови интерфейси, тогава по подразбиране Snort слуша първия интерфейс, който открие. Ако редът на мрежовите интерфейси на дадена машина е неизвестен, можете да изпълните командата Snort с един ключ -W. Snort изброява имената и номерата на мрежовите интерфейси в реда, в който програмата ги открива. За да принудите Snort да използва определен мрежов интерфейс, трябва да въведете ключа -i с номера на интерфейса, когато стартирате Snort. След като стартирате Snort, екранът ще покаже информация, подобна на тази, показана в екран 3 .

След като стартирате Snort, можете да тествате неговата чувствителност, като изпратите специално подготвен трафик към NIDS. Един от най-лесните начини за задействане на предупреждение е да извикате командния интерпретатор (cmd.exe) на отдалечената машина като част от HTTP URL заявка (обща техника за червеите Code Red и Nimda). За да симулирате тази фаза на атаката, отворете произволен URL адрес и добавете знаците /cmd.exe в края на заявката. Например, в отговор на извикване на http://www.a-website-that-I-can-trust.com/cmd.exe, Snort трябва да покаже предупреждение в командния прозорец, подобно на външния вид на първите три предупреждения На екран 4. Тези съобщения се записват в регистрационния файл на F:snortlog.

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

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

Ping -l 32767 ip_адрес

където ip_address е IP адресът на целевия сървър или Snort компютър. Тази команда трябва да изпрати много дълъг пакет (точна дължина - 32 KB), което очевидно е необичайно за команда Ping. Snort трябва да открие този пакет, както се вижда в долните осем предупреждения екран 4 .

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

Стъпка 4: Настройване на Snort

Основните конфигурационни данни на Snort се съхраняват във файла snort.conf, който по подразбиране се намира в директорията %systemdrive%snortetc. Файлът може да бъде оставен в тази папка или преместен в друга, ако посочите пътя до програмата в командния ред.

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

За да разграничите входящия трафик от изходящия, трябва да кажете на Snort хостовете и IP адресите на вашата корпоративна мрежа. За да въведете тази информация, променливата HOME_NET трябва да бъде зададена във файла snort.conf. Трябва да намерите линията

Променлива HOME_NET произволна

и го заменете с набор от IP адреси. Можете например да посочите един диапазон

Променлива HOME_NET 192.168.0.1/24

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

Променлива HOME_NET

казва на Snort, че подмрежи 10.0.1.0/24, 10.0.2.0/24 и 10.0.3.0/24 принадлежат на корпоративната мрежа. По подразбиране Snort третира всички други адреси като външни. Можете изрично да укажете кои мрежи да се считат за външни, като зададете променливата EXTERNAL_NET. Във файла snort.config трябва да намерите реда

Променлива EXTERNAL_NET произволна

и го заменете с IP адреса на мрежата, която трябва да се счита за външна. Обаче обикновено е най-добре да оставите променливата EXTERNAL_NET зададена на произволна за начало.

След като отделите известно време, можете да идентифицирате типовете сървъри, които вашето предприятие има, и техните местоположения. Тази информация се съдържа в променливите DNS_SERVERS, SMTP_SERVERS, HTTP_SERVERS, SQL_SERVERS и TELNET_SERVERS в следните редове на файла snort.conf:

Var DNS_SERVERS $HOME_NET var SMTP_SERVERS $HOME_NET var HTTP_SERVERS $HOME_NET var SQL_SERVERS $HOME_NET var TELNET_SERVERS $HOME_NET var SNMP_SERVERS $HOME_NET

По подразбиране всичките шест сървърни променливи са зададени на $HOME_NET; това означава, че Snort ще наблюдава всички видове атаки на всички системи в диапазона HOME_NET. Тази конфигурация е доста приемлива за малка мрежа, чиито администратори толерират определен брой фалшиви сигнали. Но за наблюдение на тежък трафик е препоръчително да настроите фино Snort да проверява само част от подписите за определени възли. Няма смисъл да защитавате уеб сървър, работещ само с Microsoft IIS, от атаки за препълване на SQL буфер. За да дефинирате конкретен клас хост, трябва да замените $HOME_NET с набор от IP адреси на целеви сървъри според формата, използван за променливата HOME_NET. Например, за променливата DNS_SERVERS, вместо $HOME_NET, трябва да замените диапазона от IP адреси на DNS сървърите.

Точността на настройка може да бъде подобрена чрез идентифициране на портовете, използвани от сървърите за конкретни приложения. Например, ако уеб сървърите използват специален порт 8080 за HTTP трафик вместо порт 80 (този порт обикновено се използва за уеб сървъри и браузъри), можете да конфигурирате Snort да наблюдава порт 8080, като промените променливата HTTP_PORTS. В snort.conf трябва да намерите реда

Променлива HTTP_PORTS 80

и го заменете с линията

Променлива HTTP_PORTS 8080

По подобен начин можете да промените портовете за Oracle (дефинирани от променливата ORACLE_PORTS) и други приложения. Подобно на променливата HTTP_PORTS, ORACLE_PORTS по подразбиране е 80. Ако сървърът използва порт 1521 вместо това, низът ще изглежда така

Променлива ORACLE_PORTS 1521

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

Етап 5. Определяне на правилата

Един от редовете в snort.conf съдържа променливата RULE_PATH. Пример за този ред:

Променлива RULE_PATH ../rules

Опцията ../rules указва, че правилата (т.е. подписите) могат да бъдат намерени в директорията с правила, която е на същото ниво като двоичните файлове на Snort в структурата на директорията. Така, например, ако инсталирате Snort в генеричната папка F:snort, двоичните файлове на Snort са във F:snortin, а правилата са във F:snort ules. Можете да промените променливата RULE_PATH, ако желаете, но опцията по подразбиране е добра.

Правилата са в основата на Snort. Те са поредици от байтове, сигнатури за атака и други типове данни, които, когато бъдат открити, генерират предупреждение. Snort има повече от 1500 готови подписа.

Как изглежда правилото? Правилото за cmd.exe, което беше нарушено по време на теста на Snort, изглежда така: alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-IIS cmd.exe access"; flow:to_server, created; content: " cmd.exe"; тип клас: атака на уеб приложение; sid: 1002;). Нека да разгледаме основните компоненти на правилото. Връзката $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS указва, че трябва да се анализира само трафик, идващ в мрежата отвън (както е дефинирано от променливата EXTERNAL_NET). Параметърът content: указва търсенето на поредица от символи cmd.exe в потока от данни. Когато Snort открие такава последователност, той генерира предупреждение, указано от параметъра msg:.

Както можете да видите от примера с cmd.exe, правилата са най-вече прости. Можете да създадете свои собствени правила за всеки тип трафик. Например, ако искате да откриете неупълномощени опити за отдалечен достъп до директория на машина чрез интерпретатора на команди, можете да търсите том в устройството или сериен номер на том на портове, където рядко се намират, като изходящи портове. Благодарение на гъвкавия подход за задаване на правила, на администраторите се предоставят обширни опции за конфигуриране на Snort.

1500-те правила на Snort се съхраняват в различни файлове според типовете данни, които се анализират. Например правилото за cmd.exe е във файла web-iis.rules. Ако предприятието не използва IIS, тогава програмата не трябва да открива IIS атаки. Файлът web-iis.rules може лесно да бъде премахнат изцяло от конфигурацията, като намерите и коментирате реда

Включете $RULE_PATH/web-iis.rules

във файла snort.conf. За да направите ред коментар, предхождайте го със символ (#):

# включват $RULE_PATH/web-iis.rules

По подразбиране някои типове файлове с правила (например icmp-info.rules, chat.rules) са представени чрез коментари в snort.conf. Конфигурацията по подразбиране на правилата в snort.conf е доста добра. След активиране на блокирани правила програмата обикновено генерира много ненужни предупреждения.

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

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

Стъпка 6: Конфигуриране на предупреждения и регистрационни файлове

Както беше отбелязано, Snort осигурява запис на информация в MySQL, SQL Server, Oracle и ODBC-съвместими бази данни. Просто изберете подходящия тип база данни по време на инсталационния процес на Snort. За да не увеличаваме прекомерно дължината на статията, ще разгледаме стандартните режими на регистриране с помощта на текстов файл и функцията за писане на съобщения в регистъра на събитията на Windows.

Когато стартирате NIDS с помощта на командата Snort, превключвателят на конзолата -A предизвиква показване на предупреждения на екрана. За да препращате съобщения към текстов файл, трябва да замените този ключ с -A бързо или -A пълно, в зависимост от предпочитания от вас режим на регистриране. Пълният параметър показва подробно описание на заплахата в няколко реда на текстов файл с име alerts.ids в директорията, пътят до който е посочен от ключа -l. Този тип регистриране предоставя изчерпателни подробности, но може да бъде трудно за разбиране, ако в мрежата се регистрират много събития. В такива „шумни“ мрежи се препоръчва използването на бърз режим за добавяне на едноредови записи към alerts.ids, съдържащи основните характеристики на подозрителен трафик. Според мен работата с текстов файл в бърз режим е по-лесна, отколкото в пълен режим.

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

За да запишете предупреждения в регистъра на събитията на приложението на системата, на която работи Snort, използвайте ключа -E вместо ключа -A (параметрите не са задължителни). Фигура 5 показва как изглежда събитие Snort (в този случай опит за достъп до cmd.exe), публикувано в регистрационния файл на приложението. Събитието на Windows предоставя същата подробна информация като екрана на конзолата.

NIDS е безполезен, ако администраторът преглежда регистрационните файлове на събитията (или текстовите регистрационни файлове) веднъж седмично. Ако нещо се случи в мрежата, администраторът трябва незабавно да разбере за това. Централизирана система за наблюдение и обработка на събития може да изпраща съобщения чрез имейл, пейджър и други комуникационни устройства. Но ако няма такава система, това не е причина за безпокойство. NETIKUS.NET предлага безплатен пакет EventSentry Light, който може да се използва за изпращане на предупреждения.

EventSentry Light е пробна версия на EventSentry и може да бъде изтеглена от http://www.netikus.net/products_downloads.html. С EventSentry Light можете да конфигурирате вашата система да наблюдава регистрационните файлове на събитията и автоматично да изпраща подробни имейл съобщения за всички Snort събития, записани в регистрационния файл. На екран 6показва имейл съобщение за опити за атака на cmd.exe. Получих това съобщение от EventSentry Light няколко секунди след извършването на атаката.

Както бе споменато по-горе, Snort обикновено генерира много ненужни съобщения, които бързо запълват регистрационните файлове на събитията. Това е нещо, което трябва да имате предвид, когато избирате размери на файлове за регистрационните файлове на събития и как да ги редувате. За да попречите на EventSentry Light да наводни входящата ви кутия със съобщения за незначителни събития, можете да създадете филтър за търсене на ключови низове. Например, организирах филтър за търсене на низ в текста на съобщенията.

Стъпка 7: Стартирайте като услуга

След като приключите, можете да стартирате Snort като услуга, вместо да се налага да влизате в настолния си компютър всеки път, когато искате да стартирате програмата. Ако стартирате Snort с опциите /SERVICE и /INSTALL (заедно с други опции на командния ред), Snort е конфигуриран да работи като услуга на Windows и автоматично се стартира с Windows без намеса на потребителя.

Следващо ниво: модули за разширение

Snort е пълнофункционално приложение. В някои случаи обаче програмата трябва да бъде разширена. Например, ако няколко NIDS са разположени в различни части на мрежата, тогава е удобно да управлявате Snort от графичния интерфейс. Такива възможности са внедрени в модулите за разширение IDScenter от Engage Security и IDS Policy Manager от Activeworx. Понякога е необходимо да се анализира информацията, съдържаща се в съобщенията. Можете да преглеждате и анализирате съхранени данни с помощта на модула Analysis Console for Intrusion Databases (ACID), разработен в университета Карнеги Мелън.

Надеждна защита

Snort е пълнофункционална програма, която няма да навреди на бюджета на компанията. Като комбинирате Snort с мощно приложение за наблюдение на събития като EventSentry Light, можете проактивно да предотвратите атаки срещу вашата мрежа.

Статията ще разгледа пример за внедряване на IDS система, базирана на OS Debian и Snort за наблюдение на вътрешния мрежов периметър, включително следните подсистеми:
— Услуга за откриване на проникване на Snort;
— MySQL сървър на база данни за съхраняване на записи на атаки, получени от Snort;
— интерфейс за анализ, обработка и визуализация на Snort събития (nginx, php5-fpm, BASE).

Инсталация и първоначална настройка

Оптимизация на мрежовия интерфейс

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

# apt-get инсталирайте ethtool
# nano /etc/rc.local

Ethtool --offload eth1 rx off tx off ethtool -K eth1 gso off ethtool -K eth1 gro off ...

където „—offload eth1 rx off tx off“ — забранява откриването на контролна сума за входящи и изходящи пакети; и „gso (generic segmentation offload) off“ и „gro (generic receive offload) off“ деактивират функцията за предаване и получаване на пакет без участие на процесора.

Подготовка на база данни

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

# mysql -u"root" -h"MYSQL_SERVER_IP" -p"ROOT_PASSWORD"

Mysql> създаване на база данни snort; mysql> предоставя CREATE, INSERT, SELECT, DELETE, UPDATE на snort.* на snort@"SNORT_SERVER_IP_ADDRESS"; mysql> ЗАДАДЕТЕ ПАРОЛА ЗА snort@"SNORT_SERVER_IP_ADDRESS"=ПАРОЛА("SNORT_USER_PASSWORD"); mysql> изход;

Инсталиране на Snort

След първоначалната настройка на базата данни, нека започнем да инсталираме Snort с поддръжка на MySQL:

# apt-get инсталирате snort-mysql

По време на процеса на инсталиране трябва да посочите режима на стартиране на Snort (зареждане по подразбиране), както и интерфейсите и мрежовите адреси на вътрешната мрежа. Ако е необходимо, можете да посочите множество интерфейси или адреси, разделени с интервал. Например:

Eth1 eth2 eth3 192.168.1.0/24 192.168.2.0/24 192.168.3.1/32

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

Нека създадем структурата на базата данни на Snort:

# cd /usr/share/doc/snort-mysql
# zcat create_mysql.gz | mysql -u"snort" -h"MYSQL_SERVER_IP" -p"SNORT_USER_PASSWORD" snort

Когато приключите, изтрийте файла:

# rm /etc/snort/db-pending-config

и нека започнем да настройваме уеб интерфейса.

Настройка на уеб сървър

Ние използваме комбинация от nginx и php5-fpm като уеб среда. За да изградите графики, ще ви е необходим и компонентът php5-gd.

# apt-get инсталирайте nginx-light php5-fpm libphp-adodb php5-gd php-pear
# pear install --alldeps Image_Canvas канал://pear.php.net/Image_Canvas-0.3.5
# инсталиране на круша --alldeps Image_Graph канал://pear.php.net/Image_Graph-0.8.0

Нека зададем TIMEZONE в настройките на php5-fpm:

# nano /etc/php5/fpm/php.ini

Date.timezone = Европа/Москва

и също заменете реда:

Error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Error_reporting = E_ALL & ~E_NOTICE

Нека конфигурираме vhost:

# cd /etc/nginx/sites-enabled
# mv фъркане по подразбиране
#нано хъркане

Сървър ( слушане 8080; име на сървър snort; корен /var/www/snort-base; индекс index.php; местоположение @rewrite (пренаписване ^/(.*)$ /index.php?_url=/$1; ) местоположение ~ \. php$ ( fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; ) )

Визуализация на атаки с помощта на BASE

За да визуализирате откритите атаки, инсталирайте BASE (основен анализ и механизъм за сигурност):

# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz -qO- | tar xvzpf - -C /var/www/ && mv /var/www/base-1.4.5 /var/www/snort-base
# chmod -R 0770 /var/www/snort-base && chown -hR www-data:www-data /var/www/snort-base

Нека рестартираме уеб услугите:

# /etc/init.d/php5-fpm рестартирайте
# /etc/init.d/nginx рестартирайте

Нека се свържем с BASE и извършим първоначална инициализация:

    Път до adodb: /usr/share/php/adodb;
    Посочете параметрите за свързване към базата данни на Snort;
    Нека настроим потребител за оторизация в BASE;
    Процесът на конфигуриране на BASE завършва със създаването на таблицата BASE AG - „Създаване на BASE AG“ и щракване върху връзката „стъпка 5“.

Нека бягаме snort:

# стартиране на snort на услугата

Сега атаките, записани от Snort, ще бъдат записани в базата данни и достъпни през уеб интерфейса BASE.

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

Разширена настройка на Snort

Ще започна с цитат: „Основният проблем на информационната сигурност, като правило, не е свързан с наличието на системи за информационна сигурност, а с обработката и анализа на резултатите от тяхната работа.“ Нека се опитаме да разберем как и по какви критерии Snort генерира събития и да оптимизираме изхода и обработката им, като елиминираме всички ненужни неща.

Конфигурационните файлове на Snort се намират в директорията /etc/snort. Информацията за интерфейсите, които Snort слуша, както и информацията за мрежовото адресиране, указана по време на инсталирането на помощната програма, се съхраняват във файла snort.debian.conf. Данните за свързване към базата данни са във файла database.conf. Информация за правилата на Snort е във файла snort.conf. Нека го разгледаме по-отблизо.

snort.conf

Конфигурационният файл се състои от секции:

    1) Задайте мрежовите променливи
    2) Конфигурирайте декодера
    3) Конфигурирайте основния двигател за откриване
    4) Конфигурирайте динамично заредени библиотеки
    5) Конфигуриране на препроцесори
    6) Конфигурирайте изходни плъгини
    7) Персонализирайте своя набор от правила
    8) Персонализирайте набора от правила за препроцесор и декодер
    9) Персонализирайте набор от правила за споделен обект

Нека да разгледаме основните раздели.

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

Освен това разделът показва местоположението на директорията с правила на Snort, както и белите и черните листове. Ще се върнем към това малко по-късно.

Var RULE_PATH /etc/snort/rules ... var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules

2. Декодери
Един от първите процеси, които Snort извършва върху пакет, е обработката от декодери, чиято задача е да определят базовия протокол в пакета (ETHERNET, IP, TCP и т.н.), но съдържанието на пакета не се обработва, а се прехвърлят за по-нататъшна обработка към препроцесори и машини за откриване.

Пример. Нека изключим пакети с неправилни IP опции от декодера:

Конфигурирайте disable_ipopt_alerts

и пакети, адресирани до DNS сървъра:

Конфигурация ignore_ports: 53

3. Настройване на двигателя за откриване
Машината за откриване може да използва PCRE, Perl-съвместима библиотека за търсене на шаблони. В този раздел можете да оптимизирате параметрите на търсенето, както и метода му.

5. Настройка на препроцесори
Трябваше да го обявя в самото начало, но ще ви кажа сега - Snort може да работи в 2 режима - inline (IPS) и promiscuous mode (IDS). В първия случай Snort може да контролира преминаващите през него пакети (промяна, блокиране), във втория може само да наблюдава и предупреждава в случай на подозрителна активност. В настройките на препроцесора някои опции работят само във вграден режим, например опцията на препроцесора normalize_ip4 нормализира (така да се каже) пакети - коригира TTL, TOS и т.н. Тъй като в контекста на тази статия говорим за IDS, ще пропуснем такива опции.

Препроцесорът работи директно със съдържанието на пакета, използвайки набори от правила като http_inspect_server, който дефинира http метода, портове, необходимостта от анализ на бисквитки, валидни специални знаци и т.н. Налични са и профили за уеб сървъри.

6. Изходни настройки
Snort има доста гъвкава изходна функционалност във формат syslog, unified2, prelude, tcpdump и др.
По подразбиране данните се записват във формат tcpdump (pcap) във файла tcpdump.log. Нека коментираме реда:

Изход log_tcpdump: tcpdump.log

Би било добра идея да настроите записване ред по ред на предупреждения във файл с помощта на alert_fast:

Изход alert_fast: snort.log 10M

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

7. Активиране/дезактивиране на правилата на Snort
Този раздел ви позволява да активирате и деактивирате правилата на Snort. Променливата $RULE_PATH, дефинирана в първия раздел, се използва като директория за поставяне на правилата. И така, разгледахме конфигурацията, нека се опитаме да разберем правилата.

Правила за смъркане

Както разбираме, правилата се намират в директорията /etc/snort/rules. Нека да разгледаме примера на предупреждение за изпращане на мултикаст заявки:

След като разширим записа за предупреждение, ние определяме страната на правилото, което е генерирало предупреждението.

В този случай sid е 527. Нека потърсим правилото:

# grep "sid:527" -R /etc/snort/rules/

/etc/snort/rules/bad-traffic.rules:alert ip всяко всяко -> всяко всяко (msg:"BAD-TRAFFIC същия SRC/DST"; sameip; справка:bugtraq,2666; справка:cve,1999-0016; справка:url,www.cert.org/advisories/CA-1997-28.html; classtype:bad-unknown;

Нека да разгледаме правилото:

    ip - протокол;
    първите „any any“ са SRCIP и SRCPort, вторите са съответно DSTIP и DSTPort;
    "->" - показва посоката на пакета, можете да използвате и "";
    msg:"BAD-TRAFFIC същия SRC/DST" — съобщение, генерирано при задействане на предупреждение;
    параметърът sameip показва, че правилото трябва да се задейства, ако SRCIP и DSTIP са идентични;
    след това има връзки към външни източници за идентифициране на атаката;
    параметърът classtype определя класификацията на атаката;
    sid — уникален идентификатор на правилото;
    Параметърът rev указва преразглеждането на това правило.

За да изключите хост от правилото, просто добавете!. Нека изключим мултикаст адреса от правилото:

Предупреждение ip всяко всяко -> ! всякакви (msg:"BAD-TRAFFIC същия SRC/DST"; sameip; справка:bugtraq,2666; справка:cve,1999-0016; справка:url,www.cert.org/advisories/CA-1997-28.html; classtype:bad-unknown;sid:527;rev:8;

Нека рестартираме Snort:

# service snort рестартиране

Нека разгледаме друг пример - опит за достъп до резервната директория на уеб сървър:

Правилото изглежда така:

Предупреждение tcp $EXTERNAL_NET всяко ->

Нека добавим администраторски хостове към изключението:

Предупреждение tcp! $EXTERNAL_NET всеки -> $HTTP_SERVERS $HTTP_PORTS (msg:"Достъп до резервно копие на WEB-MISC"; flow:to_server,established; uricontent:"/backup"; nocase; classtype:attempted-recon; sid:1213; rev:5;)

Можете също да посочите IP адресите на администраторите като променлива в snort.conf и да използвате такава променлива, за да изключите правилата. В допълнение, Snort използва бели\черни листове, в които можете да посочите IP адреси на хостове и мрежи. Пример:

Репутация на препроцесора: \ blacklist /etc/snort/default.blacklist whitelist /etc/snort/default.whitelist

P.S.
Стандартният набор от правила на Snort (правила на общността) се разпространява безплатно, разширен набор, съдържащ най-актуалните сигнатури на известни атаки, е достъпен за платен абонамент.
Подробно ръководство за Snort на английски можете да намерите тук.
Това е всичко! Ако имате допълнения или коментари, ще се радвам да ги обсъдим в коментарите.

1. Какво е IDS.

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

За да разберат за атаки или просто за да бъдат в крак с всички събития, случващи се на сървъра, много администратори преглеждат регистрационни файлове всеки ден. Но когато регистрационният файл, например на уеб сървъра Apache, нараства с 10 Mb на ден, тогава трябва да автоматизирате процеса на наблюдение на сигурността на сървъра. Едно от решенията е IDS - системи за откриване на проникване, чиято ефективност се увеличи значително през последните няколко години и те вече са неразделна част от всяка мрежова защита.

От многото разновидности на IDS (система за откриване на проникване) могат да се разграничат две: въз основа на анализ на протокола(идентифициране на пакети, които не отговарят на стандартите) и въз основа на анализ на подписа(сигнатурата на атаката се търси в пакети - низ (проба), показващ, че даден пакет принадлежи към злонамерен трафик. Такива IDS се наричат ​​NIDS (система за откриване на проникване в мрежа). Най-общо принципът на работа на NIDS може да се опише по следния начин : целият трафик се анализира за наличие на пакети, съдържащи злонамерени данни, и ако такъв пакет бъде намерен, тогава се извършват различни сигнални действия (показва се съобщение на конзолата, изпраща се поща, записва се съобщение в журнала, Изпраща се съобщение Winpopup и т.н. И двата типа IDS имат своите предимства и недостатъци, например анализът на протокола е по-бавен, поради трансформирането на пакета във форма, достъпна за анализ, но има много по-малко фалшиви аларми, тъй като наистина реалните отклонения от стандартите за IDS се записват въз основа на анализ на сигнатурата и също така са лесни за конфигуриране и актуализиране (видях нова уязвимост, добавих я към. base и вашият IDS ще я открие). на два метода за анализ, това ще даде наистина отличен резултат.

2. Кратък преглед на IDS

В момента има огромен брой IDS, всеки от които има своите качества и недостатъци. Ще дам кратко описание на някои от тях (тази информация за програмите е взета от уебсайта www.opennet.ru, където можете да намерите и всички тези IDS):

PortSentry

Програма, която ви позволява да откривате и блокирате опити за сканиране на UDP и TCP сървърни портове в реално време. Откриват се и скрити опити за сканиране на портове (SYN/полуотворен, FIN, NULL, X-MAS, странно).

Система за анализиране и проследяване (регистриране) на преминаващи пакети, такива атаки като „препълване на буфер, скрито сканиране на портове, CGI атаки, SMB сонди, опити за отпечатване на ОС“ се разпознават. Има възможност за уведомяване на администратора в реално време, когато бъде открита атака

Нидсбенч

Система за тестване на мрежа за типични уязвимости и определяне на реакцията на инсталираната система за откриване на опити за неоторизиран достъп. Има добра селекция от документация за NIDS.

TCP/IP монитор за трафик, способен да поддържа журнали на преминаващия трафик, да открива сканиране на портове, наводняване и някои видове атаки.

Библиотека за изграждане на NIDS системи, емулира TCP/IP стека на Linux 2.0.x, което ви позволява не само да прихващате пакети (хаотичен набор от пакети), както правят повечето снифери (например libpcap, tcpdump), но също така за наблюдение на отделни сесии (например прихващане на SMTP трафик и отделяне на всяка SMTP сесия), като се вземат предвид дефрагментирането и сглобяването на TCP пакети. Работи под Linux, *BSD и Solaris.

Програмата ви позволява да проследявате и поставяте в лог файл всички данни, преминаващи през серийния порт.

Това не са всички IDS и дори не са най-известните, но се намират лесно.

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

3. Инсталиране и конфигуриране на Snort

Първо, изтеглете Snort от уебсайта www.snort.org Ето директна връзка към най-новата версия в момента http://www.snort.org/dl/binaries/linux/snort-1.9.1-1snort.i386. .rpm. Има и различни модификации на Snort, например с поддръжка на MySQL, postgresql, snmp, можете да изтеглите всичко това от същия сайт и аз избрах нашата версия на програмата като най-лесна за инсталиране.

Инсталацията е доста проста:

rpm –i snort-1.9.1-1snort.i386.rpm

След това всички необходими файлове ще бъдат копирани в системата.

Сега трябва да персонализирате програмата за себе си, което ще направим сега... Да отидем в директорията /etc/snort, тук можете да намерите бази данни със сигнатури (по-точно, те могат да се нарекат правилата, по които Snort идентифицира вредния трафик) и няколко конфигурационни файла, имаме нужда от snort.conf. Тук задаваме променливи като HOME_NET, EXTERNAL_NET и други... Няма да е трудно да го разберете, тъй като всяка опция е придружена от доста ясни коментари, макар и на английски. В самия край на конфигурационния файл има подписи на добавките; ненужните могат да бъдат коментирани, за да се подобри производителността.

Ето пример за моята конфигурация:


# Стъпка #1: Задаване на променливи, свързани с мрежата
# Променете IP на вашите локални мрежови адреси
# Можете да посочите няколко диапазона, разделени със запетаи
вар. HOME_NET 192.168.168.0/24
var EXTERNAL_NET !$HOME_NET
var DNS_SERVERS $HOME_NET
var SMTP_SERVERS $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var TELNET_SERVERS $HOME_NET
променлива ORACLE_PORTS 1521
var HTTP_PORTS 80
var SHELLCODE_PORTS !80

# Път до подписи
var RULE_PATH /etc/snort

#Включваме необходимите файлове, съдържащи класификацията на откритата атака и връзки към
# бъгове

Включете classification.config
включете reference.config

###################################################

# Стъпка #2: Конфигуриране на механизма за откриване на атака

Препроцесор frag2
препроцесор stream4: detect_scans, disable_evasion_alerts
препроцесор stream4_reassemble
препроцесор http_decode: 80 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
препроцесор rpc_decode: 111 32771
препроцесор портсканиране: $HOME_NET 4 3 portscan.log
# Трябваше да добавя тази опция поради някои специфични програми, използвани в моя
# мрежи, които често предизвикват фалшиви положителни резултати
препроцесор portscan-ignorehosts: 192.168.168.0/24
препроцесор arpspoof
разговор на предпроцесора: разрешени_ip_protocols всички, изчакване 60, max_conversations 32000
preprocessor portscan2: scanners_max 3200, targets_max 5000, target_limit 5, port_limit 20, таймаут 60

####################################################################

# Стъпка #3: Посочете какви подписи са ни необходими

Включете $RULE_PATH/bad-traffic.rules
включват $RULE_PATH/exploit.rules
включват $RULE_PATH/scan.rules
включват $RULE_PATH/finger.rules
включват $RULE_PATH/ftp.rules
включват $RULE_PATH/dos.rules
включват $RULE_PATH/ddos.rules
включват $RULE_PATH/dns.rules
включват $RULE_PATH/web-cgi.rules
# Оставих следващата опция за статистика - сървърът ми се сканира редовно за грешки в IIS,
# По-точно, не моя сървър, а набор от адреси, в които попадам и аз :)
включват $RULE_PATH/web-iis.rules
включват $RULE_PATH/web-client.rules
включват $RULE_PATH/web-php.rules
включват $RULE_PATH/sql.rules
включват $RULE_PATH/icmp.rules
включват $RULE_PATH/netbios.rules
включват $RULE_PATH/misc.rules
включват $RULE_PATH/attack-responses.rules
включват $RULE_PATH/mysql.rules

Включете $RULE_PATH/pop3.rules
включват $RULE_PATH/pop2.rules
включват $RULE_PATH/other-ids.rules
включват $RULE_PATH/web-attacks.rules
включват $RULE_PATH/backdoor.rules
включват $RULE_PATH/shellcode.rules

Вече сте готови да стартирате Snort. Напишете го в inittab и той ще стартира заедно със системата.

4. Добавяне на собствени подписи

Snort е много гъвкав и удобен за настолен компютър IDS. Едно от неговите качества ни позволява сами да добавяме подписи за атака (или както казах, това е по-скоро като правила). Имаме такива правила в *.rules файлове. Синтаксисът на правилата е доста прост:

ACTION PROTO IP_ADDR1 PORT1 DIRECTION IP_ADDR2 PORT2 [ (ОПЦИИ) ]

Нека разгледаме по-подробно полетата на правилата:

Полето Действие има три основни директиви, които определят действията, когато бъде открит мрежов пакет, който отговаря на определено правило: пропуск, лог и предупреждение.

пас- игнорирайте пакета

дневник- пакетът трябва да бъде предаден на процедурата за регистриране, за да бъде записан в лог файла

тревогагенерира известие, когато бъде намерен пакет, отговарящ на правило

Пакетен протокол може да има следните стойности: tcp, udp, icmp

Както става ясно от името на опцията, това поле означава IP адреса. всякаквиви позволява да посочите всички възможни адреси. Символ! обръща условието, т.е. !192.168.168.0/24 означава всичко извън подмрежата 192.168.168.0/24. Можете да посочите множество IP адреси, разделени със запетаи

В допълнение към един номер на порт, можете да посочите диапазон от портове, разделени с двоеточие, например 6000:6010, символ ! обръща условието и всякаквистои за всички портове

ПОСОКА

Определя посоката на движение на пакета:

-> (еднопосочен) - правилото ще се прилага само за пакети, преминаващи от IP_ADDR1 към IP_ADDR2;

(двупосочен) - посоката на движение на пакета няма значение

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

Параметри, които задават допълнителни условия за съответствие на правилото:

ttl- задава стойността на полето TTL в заглавката на IP пакета;

tos- задава стойността на полето TOS в заглавката на IP пакета;

документ за самоличност- задава стойността на полето номер на фрагмент в заглавката на IP пакета;

ipopts- задава стойността на полето за параметри на IP пакета;

фрагменти- задава битове за фрагментиране на IP пакети;

dsize- задава условия за размера на IP пакета;

знамена- задава условия за наличие или отсъствие на определени TCP флагове;

след- задава номера на сегмента на TCP пакета в последователността;

акк- задава стойността на полето за потвърждение в TCP пакета;

itype- задава стойността на полето тип ICMP пакет;

icode- задава стойността на полето за код на ICMP пакета;

icmp_id- задава стойността на полето ICMP ECHO ID в ICMP пакета;

icmp_seq- задава последователно номера на ICMP ECHO пакета;

съдържание- посочва необходимия шаблон в съдържанието на пакета, а не в заглавката (моделът може да бъде посочен както в текстова форма, така и в шестнадесетичен);

списък със съдържание- този параметър е подобен на параметъра съдържание, с изключение на това, че списъкът с търсените шаблони се взема от посочения файл;

изместване- работи заедно с опцията за съдържание, за да определи отместването в пакета, от който ще се анализира съдържанието;

дълбочина- подобно на параметъра offset и определя позицията в пакета, до която ще се анализира съдържанието;

nocase- деактивира чувствителността към главни и малки букви при анализиране на съдържанието на пакета;

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

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

Параметри, чиито стойности имат смисъл, ако анализираният пакет отговаря на всички условия:

съобщ- съдържа текста на съобщението;

logto- указва алтернативен файл за запис на съдържанието на пакета;

сесия- този параметър ви позволява да активирате много интересна функция на Snort - извличане на потребителски данни от TCP сесия, например, за последващ анализ на това какви команди е въвел потребителят по време на telnet сесия;

респ- ако пакетът отговаря на правилото, тогава Snort ще извърши едно от посочените действия - например, затваряне на връзката чрез изпращане на TCP-RST пакет до един от хостовете.

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

Ето няколко примера за създаване на ваши собствени правила:

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

5. Тестване на Snort

За да тестваме функционалността на Snort, нека вземем един прост пример. В командния ред въведете ping –s 65507. Сега отидете на /var/log/snort, регистрационните файлове се съхраняват тук по подразбиране. Отворете файла за предупреждение и вижте следните редове:

[**] ICMP голям ICMP пакет [**]
01/06-07:37:37.119752 192.168.168.99 -> 192.168.168.9
ICMP TTL:255 TOS:0x0 ID:18479 IpLen:20 DgmLen:63028
Тип:0 Код:0 ID:512 Seq:19456 ЕХО ОТГОВОР

Първият ред ни казва какво действие е причинило алармата, в този случай ICMP пакет, който е твърде голям. Вторият ред показва класа на атака и неговия приоритет (тази информация се определя от файла classification.config). Третият ред съдържа времето на атаката, както и IP адресите на хоста, който е изпратил пакета, и хоста, към който е бил предназначен пакетът. Следват останалите полета на пакета, като TTL, TOS - по които, между другото, можете да определите операционната система на атакуващия и други ...

6. Заключение

От всичко казано по-горе ми се струва, че можем да заключим, че Snort е изключително полезен. Така или иначе, използването на тази програма ще направи живота малко по-труден за хакерите. Не е ли това целта, която всеки системен администратор преследва?

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

Добре дошли отново, мои хакери!

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

Snort, създаден от Мартин Роеш през 1999 г., стана толкова популярен, че мрежовият гигант Cisco го придоби през 2014 г. Следователно е вероятно да го видите на почти всички устройства на Cisco в близко бъдеще. И тъй като Cisco е производител на най-популярните мрежови устройства, скоро ще намерите Snort навсякъде.

Дори ако вашата организация никога не използва продукти на Cisco (което е малко вероятно) или Snort, трябва да разберете как работи този IDS, тъй като повечето други системи за откриване на проникване работят по подобен начин.

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

Да започваме!

Метод 1: Инсталирайте Snort от хранилищата

Инсталирането на Snort е лесно, ако имате Snort в хранилищата на вашата система. За съжаление вече не е наличен в Kali, така че първата ни стъпка е да добавим хранилище, което има Snort. В този случай ще добавим някои хранилища на Ubuntu.

Отворете файла /etc/sources.list. Можем да направим това с помощта на всеки текстов редактор (тук ще използваме Leafpad).

Kali> leafpad /etc/apt/sources.list

Както можете да видите на екранната снимка по-горе, добавихме няколко хранилища на Ubuntu, които също са изброени по-долу. Тъй като Ubuntu е разклонение на Debian (основната дистрибуция на Linux, върху която е изграден Kali), повечето пакети на Ubuntu ще работят на Kali.

Deb http://ch.archive.ubuntu.com/ubuntu/ saucy main limited deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main limited deb http://httpredir.debian.org/debian jessie main deb-src http://httpredir.debian.org/debian jessie main

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

Kali> apt-get актуализация

След като нашите пакети бъдат актуализирани, можем да инсталираме пакета Snort от хранилището, като използваме командата:

Kali> apt-get install snort

Това е всичко. Snort е инсталиран и готов за работа! За да проверите това, просто въведете в конзолата:

Кали> пръхти -В

В нашия случай Snort показа номера на версията си (в този случай 2.9.2).

Метод 2: Инсталирайте Snort от източника

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

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

Когато използвате Snort в защитена производствена среда, инсталирането от източника е много за предпочитане. Освен това инсталирането от източника гарантира, че инсталирате най-новата версия на Snort. Много от хранилищата съдържат по-стари версии. Текущата версия на Snort е 2.9.8, а в хранилищата е 2.9.2. Разликата е малка, но когато се опитваме да защитим едно "съкровище", всеки детайл ще бъде полезен.

Нека започнем със създаване на директория в Kali, където ще качим изходния код.

Kali> mkdir snort_source

Тогава нека отидем в тази директория

Kali> cd snort_source

Преди да изтеглите Snort, трябва да инсталирате библиотеката за събиране на данни или DAQ. DAQ има няколко зависимости, които трябва да инсталираме.

Kali> apt-get install -y bison flex

Сега можем да изтеглим и инсталираме DAQ от уебсайта на Snort.

Kali> wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz kali> tar -xvzf daq-2.0.6.tar.gz

Тогава нека отидем в директорията daq.

Kali> cd daq-2.0.6

И накрая, нека конфигурираме DAQ и извикаме командата make.

Kali> ./configure kali> make kali> инсталирайте kali> wget "https://snort.org/snort/snort-2.9.8.0.tar.gz"https://snort.org/snort/snort-2.9.8.0 .tar.gz

След като бъде изтеглен, ще трябва да го разопаковате. (За повече информация относно командата tar вижте нашата статия Основи на Linux).

Kali>tar -xvzf snort-2.9.8.0.tar.gz

Нека отидем в директорията, където се намират новите файлове на Snort.

Kali> cd /snort-2.9.8.0

Трябва да го конфигурирате.

Kali> ./configure --enable-sourcefire

След това трябва да използваме командата make, която определя кои от компонентите на изходния код трябва да бъдат прекомпилирани и след това я инструктира да го направи.

Кали> направи

И накрая, правим инсталацията (make install). Тази команда взема прекомпилираните програмни компоненти и ги поставя в съответните директории.

Kali> направете инсталиране

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

Kali>ldconfig

За да стартирате Snort от която и да е директория, можете да направите символна връзка към бинарните (изпълними) файлове в /usr/local/bin/snort и да я поставите в директорията /usr/sbin, наричайки я snort. Тъй като /usr/sbin е в нашия PATH, можем да въведем Snort навсякъде в операционната система, за да започнем да използваме IDS.

Kali > ln -s /usr/local/bin/snort /usr/sbin/snort

Нека проверим дали Snort е инсталиран нормално. За да направите това, въведете в конзолата:

Кали> изсумтя

Както виждаме, Snort стартира и работи успешно в режим на изхвърляне на пакети или така наречения sniffer режим.

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

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

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

Системата IDS е проектирана да блокирайте действията на нападател на етапа на изучаване на вашата мрежа:

  • откриване на подозрителна мрежова активност,
  • идентифицират известни инструменти за анализиране и хакване на мрежи, използвани от нападател
  • и, където е възможно, предотвратяване на незаконни дейности.

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

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

Настройки

IDS технологията е безплатна, но относително сложна за инсталиране и поддръжка, вероятно няма да можете просто да инсталирате IDS SNORT (както правим със защитна стена и антивирусна програма) и да забравите за нея. Програмата и основен набор от правила за откриване се изтеглят от snort.org. Ако оставите всички системни настройки по подразбиране, ще получите много известия за потенциално опасни действия в локалната мрежа, дори командата ping ще предизвика съответна аларма. Ще отнеме време, за да научите системата, да разберете как работят правилата за откриване и да направите подходящите настройки, но това ще избегне много стотици или дори хиляди излишни известия и ще спести системния администратор от главоболия.

Необходимо е да се обучи IDS SNORT да реагира само на определени заплахи, например активността на мрежов скенер, опит за прехвърляне на определени файлове извън локалната мрежа на организацията и/или неоторизиран достъп до избрани мрежови ресурси. IDS SNORT е много адаптивна система, която позволява на всеки потребител да зададе свой собствен набор от филтри, които могат да отговорят на по-значими заплахи за дадена мрежа и да игнорират други, по-малко подходящи. Основен пакет от правила за откриване се предоставя от разработчика; допълнителни подписи могат да бъдат закупени от други компании, предлагащи IDS системи, базирани на SNORT, който отдавна се е превърнал в индустриален стандарт в областта на системите за откриване на проникване.

IDS работи на Linux, Windows, SunOS и други операционни системи.

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

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