Snort ці Suricata. Частка 3: абараняем офісную сетку
В папярэдняй артыкуле мы распавялі, як запусціць стабільную версію Suricata у Ubuntu 18.04/2 LTS. Наладзіць IDS на адным вузле і падключыць бясплатныя наборы правіл даволі нескладана. Сёння мы разбяромся, як з дапамогай усталяванай на віртуальным серверы Suricata абараніць карпаратыўную сетку ён найбольш распаўсюджаных відаў нападаў. Для гэтага нам спатрэбіцца VDS на Linux з двума вылічальнымі ядрамі. Аб'ём аператыўнай памяці залежыць ад нагрузкі: камусьці хопіць і 4 ГБ, а для больш сур'ёзных задач можа запатрабавацца 6 ці нават XNUMX. Плюс віртуальнай машыны ў магчымасці эксперыментаў: можна пачаць з мінімальнай канфігурацыі і нарошчваць рэсурсы па меры неабходнасці.
Вынас IDS на віртуальную машыну ў першую чаргу можа спатрэбіцца для тэстаў. Калі вы ніколі не мелі справы з падобнымі рашэннямі, кідацца заказваць фізічнае жалеза і мяняць архітэктуру сеткі не варта. Лепш абкатаць сістэму бяспечна і без лішніх затрат, каб вызначыць патрэбнасці ў вылічальных рэсурсах. Важна разумець, што ўвесь карпаратыўны трафік пры гэтым давядзецца прапусціць праз адзіны знешні вузел: для падлучэння лакальнай сеткі (або некалькіх сетак) да VDS з усталяванай IDS Suricata можна выкарыстоўваць SoftEther - просты ў наладзе кросплатформавы сервер VPN, які забяспечвае надзейнае шыфраванне. Офіснае падлучэнне да інтэрнэту можа не мець рэальнага IP, таму яго лепш падняць на VPS. У рэпазітары Ubuntu гатовых пакетаў няма, ПА прыйдзецца пампаваць альбо з сайта праекта, альбо з вонкавага рэпазітара на сэрвісе Стартавая пляцоўка (калі вы яму давяраеце):
Паглядзець спіс даступных пакетаў можна з дапамогай наступнай каманды:
apt-cache search softether
Нам спатрэбіцца softether-vpnserver (сервер у тэставай канфігурацыі запушчаны на VDS), а таксама softether-vpncmd - утыліты каманднага радка для яго налады.
Для настройкі сервера выкарыстоўваецца спецыяльная ўтыліта каманднага радка:
sudo vpncmd
Падрабязна расказваць пра настройку мы не будзем: працэдура даволі нескладаная, яна добра апісана ў шматлікіх публікацыях і непасрэдна да тэмы артыкула не адносіцца. Калі сцісла, пасля запуску vpncmd трэба абраць пункт 1, каб перайсці ў кансоль кіравання серверам. Для гэтага неабходна ўвесці імя localhost і націснуць enter замест уводу імя хаба. У кансолі задаецца адміністратарскі пароль камандай serverpasswordset, выдаляецца віртуальны хаб DEFAULT (каманда hubdelete) і ствараецца новы з імем Suricata_VPN, а таксама задаецца яго пароль (каманда hubcreate). Далей трэба перайсці ў кіравальную кансоль новага хаба з дапамогай каманды hub Suricata_VPN, каб стварыць групу і карыстача з дапамогай каманд groupcreate і usercreate. Карыстацкі пароль задаецца з дапамогай userpasswordset.
SoftEther падтрымлівае два рэжыму перадачы трафіку: SecureNAT і Local Bridge. Першы ўяўляе сабой фірмовую тэхналогію пабудовы віртуальнай прыватнай сеткі з уласным NAT і DHCP. SecureNAT не патрабуе TUN/TAP, а таксама налады Netfilter ці іншага файрвала. Маршрутызацыя не закранае ядры сістэмы, а ўсе працэсы віртуалізаваны і працуюць на любым VPS/VDS па-за залежнасцю ад выкарыстоўванага гіпервізара. Гэта прыводзіць да падвышанай нагрузкі на працэсар і зніжэнню хуткасці ў параўнанні з рэжымам Local Bridge, які злучае віртуальны хаб SoftEther з фізічным сеткавым адаптарам ці прыладай TAP.
Налада ў гэтым выпадку ўскладняецца, паколькі маршрутызацыя адбываецца на ўзроўні ядра пры дапамозе Netfilter. Нашы VDS пабудаваны на Hyper-V, таму на апошнім кроку мы ствараем лакальны мост і які актывуецца прылада TAP камандай bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. Пасля выхаду з кансолі кіравання хабам мы ўбачым у сістэме новы сеткавы інтэрфейс, якому яшчэ не прысвоены IP:
ifconfig
Далей давядзецца ўключыць маршрутызацыю пакетаў паміж інтэрфейсамі (ip forward), калі яна неактыўная:
sudo nano /etc/sysctl.conf
Раскаментаваць наступны радок:
net.ipv4.ip_forward = 1
Захоўваем змены ў файле, выходзім з рэдактара і ўжывальны іх з дапамогай наступнай каманды:
sudo sysctl -p
Далей нам трэба вызначыць для віртуальнай сеткі падсетку з фіктыўнымі IP (напрыклад, 10.0.10.0/24) і прысвоіць адрас інтэрфейсу:
sudo ifconfig tap_suricata_vp 10.0.10.1/24
Потым запатрабуецца прапісаць правілы Netfilter.
1. Пры неабходнасці дазволіць уваходныя пакеты на праслухоўваныя парты (фірмовы пратакол SoftEther выкарыстоўвае HTTPS і порт 443)
3. Дазваляем праходзілыя пакеты з падсеткі 10.0.10.0/24
sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT
4. Дазваляем праходзілыя пакеты для ўжо ўсталяваных злучэнняў
sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
Аўтаматызацыю працэсу пры перазапуску сістэмы з дапамогай скрыптоў ініцыялізацыі пакінем чытачам у якасці хатняга задання.
Калі вы жадаеце выдаваць кліентам IP аўтаматычна, прыйдзецца таксама ўсталяваць які-небудзь сэрвіс DHCP для лакальнага маста. На гэтым настройка сервера скончана і можна перайсці да кліентаў. SoftEther падтрымлівае мноства пратаколаў, выкарыстанне якіх залежыць ад магчымасцяў абсталявання лакальнай сеткі.
netstat -ap |grep vpnserver
Паколькі наш тэставы роўтар таксама працуе пад Ubuntu, усталюем на ім з вонкавага рэпазітара пакеты softether-vpnclient і softether-vpncmd, каб скарыстацца фірмовым пратаколам. Трэба будзе запусціць кліент:
sudo vpnclient start
Для налады выкарыстоўваем утыліту vpncmd, выбраўшы localhost у якасці машыны, на якой запушчаны vpnclient. Усе каманды робяцца ў кансолі: запатрабуецца стварыць віртуальны інтэрфейс (NicCreate) і ўліковы запіс (AccountCreate).
У некаторых выпадках неабходна задаць спосаб аўтэнтыфікацыі з дапамогай каманд AccountAnonymousSet, AccountPasswordSet, AccountCertSet і AccountSecureCertSet. Паколькі мы не выкарыстоўваем DHCP, адрас для віртуальнага адаптара задаецца ўручную.
Акрамя таго, нам спатрэбіцца ўключыць ip forward (параметр net.ipv4.ip_forward=1 у файле /etc/sysctl.conf) і наладзіць статычныя маршруты. Пры неабходнасці на VDS з Suricata можна наладзіць пракід партоў для выкарыстання ўсталяваных у лакальнай сетцы сэрвісаў. На гэтым аб'яднанне сетак можна лічыць скончаным.
Выглядаць прапанаваная намі канфігурацыя будзе прыкладна так:
Наладжваем Suricata
В папярэдняй артыкуле мы расказвалі пра два рэжымы працы IDS: праз чаргу NFQUEUE (рэжым NFQ) і праз zero copy (рэжым AF_PACKET). Другі патрабуе наяўнасці двух інтэрфейсаў, але адрозніваецца больш высокай хуткадзейнасцю - мы будзем выкарыстоўваць менавіта яго. Параметр зададзены па змаўчанні ў /etc/default/suricata. Таксама нам спатрэбіцца адрэдагаваць падзел vars у /etc/suricata/suricata.yaml, прапісаўшы тамака віртуальную падсетку ў якасці хатняй.
Для перазапуску IDS выкарыстоўваем каманду:
systemctl restart suricata
Рашэнне гатова, зараз вам можа запатрабавацца праверыць яго на ўстойлівасць да дзеянняў зламыснікаў.
Мадэлюем атакі
Сцэнарыяў баявога прымянення знешняга сэрвісу IDS можа быць некалькі:
Абарона ад нападаў DDoS (асноўнае прызначэнне)
Рэалізаваць такі варыянт усярэдзіне карпаратыўнай сеткі складана, паколькі пакеты для аналізу павінны патрапіць на які глядзіць у інтэрнэт інтэрфейс сістэмы. Нават калі IDS іх заблакуе, паразітны трафік можа пакласці канал перадачы даных. Каб гэтага пазбегнуць, трэба замовіць VPS з досыць прадукцыйным інтэрнэт-падлучэннем, здольным прапусціць увесь трафік лакальнай сеткі і ўвесь вонкавы трафік. Зрабіць гэта часта прасцей і танней, чым пашыраць офісны канал. У якасці альтэрнатывы варта згадаць спецыялізаваныя сервісы для абароны ад DDoS. Кошт іх паслуг параўнальны з коштам віртуальнага сервера, пры гэтым не запатрабуецца працаёмкая налада, але ёсць і недахопы - за свае грошы кліент атрымлівае толькі абарону ад DDoS, тады як уласную IDS можна канфігураваць як заўгодна.
Абарона ад вонкавых нападаў іншых тыпаў
Suricata здольная зладзіцца са спробамі эксплуатацыі розных уразлівасцяў у даступных з інтэрнэту сэрвісах карпаратыўнай сеткі (паштовы сервер, вэб-сервер і вэб-прыкладанні і г.д.). Звычайна для гэтага IDS усталёўваюць усярэдзіне лакалак пасля памежных прылад, але і вынас вонкі мае права на існаванне.
Абарона ад унутраных зламыснікаў
Нягледзячы на ??ўсе намаганні сістэмнага адміністратара, кампутары карпаратыўнай сеткі могуць быць заражаныя шкоднасным ПА. Акрамя таго ў лакалцы часам з'яўляюцца хуліганы, якія спрабуюць выконваць нейкія неправамерныя аперацыі. Suricata здольная дапамагчы заблакаваць такія спробы, хоць для абароны ўнутранай сеткі яе лепш усталяваць усярэдзіне перыметра і выкарыстоўваць у пары з умелым люстэркаваць трафік у адзін порт кіраваным камутатарам. Вонкавая IDS у гэтым выпадку таксама не бескарысная – прынамсі яна зможа адлавіць спробы якія жывуць у ЛВС зловредов звязацца з вонкавым серверам.
Для пачатку створым яшчэ адзін тэставы атакавалы VPS, а на роўтары лакальнай сеткі паднімем Apache з канфігурацыяй па змаўчанні, пасля чаго пракінем на яго 80-й порт з сервера IDS. Далей будзем імітаваць напад DDoS з атакавалага вузла. Для гэтага спампоўваем з GitHub, скампілюем і запусцім на атакавалым вузле невялікую праграму xerxes (можа запатрабавацца ўсталёўка пакета gcc):
Suricata адсякае злыдня, а старонка Apache па змаўчанні адчыняецца, нягледзячы на наш імправізаваны напад і даволі дохлы канал «офіснай» (насамрэч хатняй) сеткі. Для больш сур'ёзных задач варта выкарыстоўваць Metasploit Framework. Ён прызначаны для правядзення тэстаў на пранікненне і дазваляе імітаваць самыя розныя напады. Інструкцыя па ўстаноўцы даступная на сайце праекту. Пасля ўсталёўкі запатрабуецца абнаўленне:
sudo msfupdate
Для тэставання запускаем msfconsole.
Нажаль, у апошніх версіях фреймворка адсутнічае магчымасць аўтаматычнага ўзлому, таму эксплоіты прыйдзецца перабіраць уручную і запускаць з дапамогай каманды use. Для пачатку варта вызначыць адчыненыя на атакаванай машыне порты, напрыклад, з дапамогай nmap (у нашым выпадку яго суцэль заменіць netstat на атакаваным вузле), а потым падабраць і выкарыстаць падыходныя модулі Metasploit.
Існуюць і іншыя сродкі праверкі ўстойлівасці IDS да нападаў, уключаючы анлайн-сэрвісы. Дзеля цікаўнасці можна задаволіць стрэсавае тэставанне з дапамогай трыяльнай версіі IP Stresser. Каб праверыць рэакцыю на дзеянні ўнутраных зламыснікаў, варта ўстанавіць спецыяльныя інструменты на адну з машын лакальнай сеткі. Варыянтаў маса і перыядычна іх варта ўжываць не толькі да эксперыментальнага палігона, але і да працоўных сістэм, толькі гэта ўжо зусім іншая гісторыя