Skip to main content

Базавая налада iptables



Адной з першачарговых задач пасля ўстаноўкі сістэмы з'яўляецца карэктная налада iptables для фільтрацыі трафіку. Палітыка па-змаўчанню дазваляе ўсё, што не забаронена. Гэта не самы ўдалы метад у плане бяспекі, таму што ў такім рэжыме сервер схільны ўздзеянню зламыснікаў.

Можна, напрыклад, заняцца сканаваннем адкрытых на сэрвэры партоў. На аснове гэтага магчыма вызначэнне выкарыстоўваюцца сэрвісаў, іх версіі, назвы і версіі аперацыйнай сістэмы. Далей - падбор уразлівасцяў да іх. Ці некаторыя icmp - паведамленні могуць выдаць лішнюю інфармацыю.



Увогуле, апісанне таго, навошта трэба наладжваць сеткавы экран, годна асобнага артыкула, якіх незлічонае мноства. І ўжо калі вы чытаеце гэты артыкул, то вызначана ведаеце, навошта вам гэта трэба. ;)

Як і ўсе артыкулы на сайце, гэта інструкцыя напісана на аснове асабістага досведу, а-ля «я раблю так», нехта іншы інакш.



Змест артыкула:

Ўстаноўка неабходных кампанентаў

І так, у сістэме ўжо прысутнічае галоўны з спісу неабходных інструмент - iptables. Але гэтага недастаткова. Таксама спатрэбяцца фільтр tarpit і iptables-persistent Каб укладваць правілы пры старце сістэмы.

  # Aptitude install iptables-persistent xtables-addons-dkms 

Падчас ўстаноўкі persistent будзе зададзена два пытанні аб захаванні бягучых правілаў. Можна адказаць «Так» і тады ў тэчцы / etc / iptables / rules / будуць створаны патрэбныя файлы з правіламі, якія мы адрэдагуем.

Рэдагаванне правілаў для ip версіі 4

Адкрываем файл /etc/iptables/rules.v4 ў любімым рэдактары. Вы ўбачыце радкі, якія ўстанаўліваюць палітыку па-змаўчанні для размоваў. Ва ўсіх значэннях яна будзе мець значэнне accept. Для ланцужкі FORWARD усталёўваем палітыку DROP. Мы ж не роутер і ня кампутар, перанакіроўвае трафік кудысьці яшчэ. :) Астатняе не мяняем.


  * filter
 : INPUT ACCEPT [0: 0]
 : FORWARD DROP [0: 0]
 : OUTPUT ACCEPT [0: 0]
 COMMIT 

Усе астатнія правілы будзем дадаваць перад радком COMMIT. І ў першую чаргу дадаем правіла, якое дазваляе лакальны трафік.

  -A INPUT -i lo -j ACCEPT 

Далей правіла, якое дазваляе ўсё ўжо устаноўленыя актыўныя злучэнні як для tcp, так і для udp пратаколаў. Гэта трэба для правільнай працы сеткі, так як без яго адказы на выходныя злучэнні будуць адхіляцца.

  -A INPUT -m state --state RELATED, ESTABLISHED -p all -j ACCEPT 

Зараз неабходна дадаць правіла, якое дазваляе ўстаноўку новых ўваходзяць злучэнняў да пэўных сэрвісам. У мяне гэта web-сервер і паштовы, а таксама ssh.

Важная заўвага! Заўсёды дадавайце дазвалялае правіла для ssh, каб потым не страціць доступ да сервера пасля прымянення правілаў.

Сюды можна дадаваць і іншыя парты, падзяляючы коскі. Пашырэнне multiport дазваляе паказаць некалькі партоў, каб не пладзіць амаль аднолькавыя правілы для кожнага асобна. ;)

  -A INPUT -m state --state NEW -p tcp -m multiport --dport 22,25,80,443 -j ACCEPT 

Калі ў вас на сэрвэры толькі адзін сэрвіс, для якога трэба адкрыць адзін порт, то правіла будзе такім:

  -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 

Таксама вам можа спатрэбіцца адкрыць нейкія udp парты. Адрозненне ад вышэйпрыведзенай правілаў будзе толькі ў тым, што замест -p tcp варта паказаць -p udp.

А пры даданні наступнага правіла спатрэбіцца фільтр tarpit, які мы ўсталявалі з пакетам xtables-addon-dkms. Калі коратка, то ён стварае пастку для ўваходных злучэнняў, ня адсылаючы нічога ў адказ, але утрымліваючы злучэнне, што марнуе рэсурсы падлучыўся кліента, але не сервера. Больш падрабязна пра tarpit можна даведацца на сайце OpenNET. А пакуль дадаем правіла для ўсіх астатніх ўваходзяць злучэнняў.

  -A INPUT -p tcp -m tcp -j TARPIT 

Важна мець на ўвазе, што пастка працуе толькі з tcp. Падобным чынам можна рэалізаваць бан па ip на ўзроўні iptables, замест стандартнага drop. На жаль, для udp ён не прыдатны. Таму забараняем ўсе астатнія ўваходныя udp - пакеты, для якіх не стварылі выключэння раней.

  -A INPUT -p udp -j DROP 

І прымаемся за icmp. Тут у якасці тыпу icmp можна паказаць як код, так і эквівалентнае яму назва. У мяне - код. :)

Дазваляем ўваходныя рэха-адказы на выпадак, калі пингуем нейкай іншай хост з сервера.

  -A INPUT -p icmp --icmp-type 0 -j ACCEPT 

Затым ўваходныя icmp - паведамленні аб недаступнасці адрасата.

  -A INPUT -p icmp --icmp-type 3 -j ACCEPT 

І ўваходныя рэха-запыты, калі хто-то пінг наш сервер.

  -A INPUT -p icmp --icmp-type 8 -j ACCEPT 

А таксама паведамленне аб заканчэнні часу дзеяння пакета.

  -A INPUT -p icmp --icmp-type 11 -j ACCEPT 

Гэта неабходны мінімум паведамленняў для карэктнай працы сеткі. Магчыма, вам спатрэбяцца іншыя коды . Як іх вырашыць, вы ўжо ведаеце. :)

Зараз прымаемся за стварэнне правілаў для выходных icmp паведамленняў. Гэтыя правілы выглядаюць падобнымі, але ланцужком будзе ўжо OUTPUT. Таму апісваць іх няма сэнсу.

  -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
 -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT
 -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
 -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
 -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT 

Акрамя дванаццатай. Яно дазваляе адпраўку паведамленні аб няправільным параметры (памылка ў IP-загалоўку або адсутнічае неабходная опцыя).

Усе астатнія выходныя ICMP забараняем, каб сэрвэр не прагаварыўся лішняга.

  -A OUTPUT -p icmp -j DROP 

На гэтым усё. Захоўваем файл /etc/iptables/rules.v4, актывуецца правілы камандай:

  cat /etc/iptables/rules.v4 |  iptables-restore -c 


Як вы ацэніце артыкул?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (6 адзнак, сярэдняе: 4,17 з 5)
Загрузка ...

Дадаць каментар

Ваш e-mail не будзе апублікаваны.