LXF139:DrBrown2

Материал из Linuxformat.

Перейти к: навигация, поиск

Не­слож­ный бранд­мау­эр

Вот как Ubuntu из­бав­ля­ет нас от бре­ме­ни на­строй­ки пра­вил бранд­мау­эра.

Ес­ли да­же от уп­ро­щен­но­го син­так­си­са ufw у вас бо­лит го­ло­ва, в уни­вер­саль­ном ре­по­зи­то­рии есть гра­фи­че­ская обо­лоч­ка GUFW.

Код се­те­во­го фильт­ра в яд­ре Linux про­сеи­ва­ет се­те­вые па­ке­ты, при­хо­дя­щие к ком­пь­ю­те­ру, ухо­дя­щие от ком­пь­ю­те­ра и про­хо­дя­щие че­рез ком­пь­ю­тер, и пре­дос­тав­ля­ет мощ­ный ме­ха­низм для соз­да­ния бранд­мау­эров. Од­на­ко у ко­ман­ды Iptables, ис­поль­зуе­мой для по­строе­ния пра­вил, бо­га­тый син­так­сис, и на­строй­ка бранд­мау­эра на этом уров­не тре­бу­ет глу­бо­ких зна­ний TCP/IP. Что­бы уп­ро­стить си­туа­цию, в Ubuntu до­ба­ви­ли ути­ли­ту ufw (uncomplicated firewall, не­слож­ный бранд­мау­эр) для сер­ве­ров. Она пред­на­зна­че­на для соз­да­ния бранд­мау­эров, за­щи­щаю­щих ком­пь­ю­тер, где они за­пу­ще­ны, а не для пол­но­цен­ных бранд­мау­эров с мно­же­ст­вен­ны­ми под­клю­че­ния­ми ко внеш­ним се­тям, де­ми­ли­та­ри­зо­ван­ны­ми зо­на­ми и т. п. Син­так­сис ufw прост – что­бы от­крыть порт (в дан­ном слу­чае SSH), ско­ман­дуй­те

sudo ufw allow 22

Ес­ли порт ука­зан в /etc/services, вме­сто но­ме­ра пор­та мож­но ука­зать имя сер­ви­са:

sudo ufw allow ssh

Чуть бо­лее ис­кус­ным об­ра­зом мож­но по­лу­чить бо­лее точ­ный кон­троль. Сле­дую­щей ко­ман­дой мы раз­ре­ша­ем SSH дос­туп с од­но­го диа­па­зо­на IP-ад­ре­сов:

sudo ufw allow ssh allow proto tcp from 192.168.0.0/24 to any ssh

В по­след­них вер­си­ях ufw мож­но ог­ра­ни­чить час­то­ту пе­ре­да­чи па­ке­тов – это силь­но по­ме­ша­ет ха­ке­рам, пы­таю­щим­ся по­лу­чить ин­фор­ма­цию ме­то­дом гру­бой ата­ки. Ана­ло­гич­ный вы­зов Iptables до­воль­но гро­моз­док, а с ufw все про­сто и яс­но:

sudo ufw limit ssh/tcp

По умол­ча­нию ufw при­ме­нит пра­ви­ла ко всем дос­туп­ным ин­тер­фей­сам, но мож­но ука­зать и кон­крет­ный ин­тер­фейс. На­при­мер, раз­ре­шит HTTP-со­еди­не­ния, при­бы­ваю­щие на eth0, ко­ман­да

sudo ufw allow in on eth0 to any port 80 proto tcp

Это по­зво­ля­ет соз­да­вать бранд­мау­эры, ска­жем, с од­ним со­еди­не­ни­ем во­внутрь, к до­ве­рен­ной се­ти, и од­ним со­еди­не­ни­ем во­вне, в боль­шой (не­до­ве­рен­ный) мир. Весь на­бор пра­вил мож­но ак­ти­ви­ро­вать или де­ак­ти­ви­ро­вать ко­ман­да­ми

sudo ufw enable
sudo ufw disable

а его те­ку­щее со­стоя­ние по­лу­чить так:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere

На­бо­ры пра­вил, за­да­вае­мых эти­ми ко­ман­да­ми, яв­ля­ют­ся по­сто­ян­ны­ми, и по­ка ufw ак­тив­на, пра­ви­ла бу­дут ав­то­ма­ти­че­ски ус­та­нав­ли­вать­ся во вре­мя за­груз­ки.

По­след­няя воз­мож­ность ufw на­зы­ва­ет­ся ин­те­гра­ци­ей при­ло­же­ния. Па­ке­ты, пре­дос­тав­ляю­щие се­те­вые сер­ви­сы (а ста­ло быть, им нуж­ны от­кры­тые пор­ты в бранд­мау­эре) мо­гут со­об­щить о се­бе ufw, по­ло­жив про­филь в ка­та­лог /etc/ufw/applications.d. На­при­мер, в фай­ле /etc/ufw/applications.d/cups за­дан про­филь для сер­ве­ра пе­ча­ти CUPS, та­ким об­ра­зом:

[CUPS]
title=Common UNIX Printing System server
description=CUPS is a printing system with support for IPP, samba, lpd, and other protocols.
ports=631

С этим фай­лом мы мо­жем от­крыть пор­ты, не­об­хо­ди­мые CUPS:

sudo ufw allow CUPS

За ку­ли­са­ми

Се­те­вой фильтр мо­жет пе­ре­хва­ты­вать па­ке­ты в раз­ных точ­ках ком­пь­ю­те­ра (оран­же­вые квад­ра­ты).

Оп­ция --dry-run даст вам хо­ро­шее пред­став­ле­ние о том, что про­ис­хо­дит «за ку­ли­са­ми» ufw. Она по­ка­жет це­поч­ки, соз­да­вае­мые ко­ман­дой ufw, без их фак­ти­че­ско­го соз­да­ния.

А в фай­лах /etc/ufw/*.rules вы най­де­те со­от­вет­ст­вую­щие пра­ви­ла Iptables, соз­дан­ные ufw. Это по­зво­лит вам рас­ши­рить ко­ман­ду, до­ба­вив в эти фай­лы свои пра­ви­ла. На­при­мер, мож­но вклю­чить пре­об­ра­зо­ва­ние се­те­вых ад­ре­сов (NAT), не­мно­го поколдовав в /etc/ufw/before.rules. Вам по­на­до­бит­ся не­что вро­де

-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Здесь 10.0.0.0/24 – диа­па­зон IP-ад­ре­сов ком­пь­ю­те­ров, ко­то­рые нуж­но мас­ки­ро­вать, а eth0 – внеш­ний ин­тер­фейс.

За­пас­ной ключ

Ес­ли вы на­страи­вае­те бранд­мау­эр на уда­лен­ной ма­ши­не, к ко­то­рой у вас есть дос­туп толь­ко че­рез SSH, не­труд­но за­бло­ки­ро­вать се­бя са­мо­го, соз­дав на­бор пра­вил, за­пре­щаю­щий ваш же SSH-тра­фик. По­лу­чить ка­кие-то шан­сы на вы­ход из по­ло­же­ния по­мо­жет та­кая ко­ман­да:

sudo at now + 5 min ufw disable
Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию