LINUX.ORG.RU

Так Netfilter - это файрволл или нет?

 , ,


0

1

Захотелось понять, как настроить файрвол в Linux, какие современные программы для этого есть. Оказалось, что программы не нужны, т.к. файрвол (вроде как) уже встроен в Linux, и называется он Netfilter.

Многие сайты пишут, что Netfilter- это встроенный файрволл в Linux. Но что под этим словом понимается, и так ли это?

В моем обычном понимании файрвол - это программа для компьютера, которая защищает сетевой трафик, позволяет настраивать правила безопасности и т.д. Значит, следуя логике этих сайтов, которые называют Netfilter файрволом, я должен где-то запустить этот Netfilter и настроить его. И тут я узнаю, что запустить его напрямую я не могу.

Открываю английскую вики, и читаю что Netfilter - это фреймворк. А фреймворк это уже другая материя, т.е. нечто, что облегчает разработку. Но мне не надо разрабатывать, мне хочется пользоваться, настраивать.

И тут я захожу на официальный сайт, где написано, что Netfilter- это модуль ядра. Т.е. не программа, которую пользователь запускает, а некий «набор сетевых программ», связанных с фильтрацией и управлением трафика.

Так что такое все-таки Netfilter, если в общем? Корректно ли называть это межсетевым экраном, файрволом? Ведь по сути роль файрвола выполняет одна из программ, которая входит в его набор (вроде iptables).

И тут я узнаю, что запустить его напрямую я не могу.

Можешь, разрешаю, запускай хоть прямо сейчас. Команда называется iptables (или nftables в новых дистрибутивах)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

netfilter — межсетевой экран (брандмауэр), встроен в ядро Linux с версии 2.4

iptables — название пользовательской утилиты (запускаемой из командной строки), предназначенной для управления системой netfilter.

Я просто процитировал Википедию. И что тебя смущает? Почти любая программа состоит из 2 частей: непосредственно рабочей части и интерфейса. netfilter — это межсетвой экран. iptables — интерфейс пользователя для его настройки.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Deleted

Команда называется iptables (или nftables в новых дистрибутивах)

Но в том то и дело, что это компонент, часть системы. По сути файрвол это именно iptables, а Netfilter это нечто большее (вот в вики называют его и фреймворком, и модулем ядра, и файрволом...), но че-то путаница возникает. Netfilter объединяет в себе много утилит для настройки сети, не только файрвол.

shkolnik_2019
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Наверно я мыслю слишком виндовенько. Там это все (и рабочее, и интерфейс) объединяется в одной программе, которую скачиваешь и ставишь, а здесь вот немного заморочено, что сразу так и не въедешь.

shkolnik_2019
() автор топика

В моем обычном понимании файрвол - это программа для компьютера, которая защищает сетевой трафик

нет

targitaj ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Про nftables я что-то читал, там реализуют новый подход к настройке сети, более простой. Значит ли это, что если хочу разобраться в файрволе в Linux, то надо начинать с новой команды, а не с iptables?

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Ой, да ладно заморочено. Вот простая аналогия: у тебя есть комната с рабочими, они сортируют посылки. Вот только эти рабочие (netfilter) совершенно не знают русского языка, потому с ними приходится говорить на том, что они понимают (iptables).

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

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

https://en.wikipedia.org/wiki/File:Netfilter-components.svg

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Нет, это значит, что тебе нужно знать обе. Потому что LTS дистрибутивы с iptables никто не отменял. А в новых используется обычно уже nftables, часто через firewalld или обертку iftables-nftables, хотя через nft тоже очень даже можно.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от shkolnik_2019

Unix — одна программа для одной группы задач. У нас вообще не так много монолитов.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Ну тогда буду изучать оба. А подскажи, есть ли практический плюс от настройки файрвола дома? У меня обычный инет, идущий через роутер. На качество не жалуюсь, хотя вроде спам какой-то в логах есть (как будто сканируют, непонятно кто), но на скорость он никак не влияет. Есть ли смысл настраивать iptables на домашнем компе (если да, для чего), или просто потренироваться без сохранения настроек?

shkolnik_2019
() автор топика
Ответ на: комментарий от targitaj

А, это да. Настройка сетевых интерфейсов выполняется через иные утилиты и интерфейсы. Через ip, systemd-networkd, ifconfig, NetworkManager, /etc/network/interfaces (Debian-based) , /etc/sysconfig/network-scripts (RHEL до 7 версии), netplan (Ubuntu старше 18.04).

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Я недавно столкнулся с магией со стороны хостера servers.com и понял, что пришла пора пощупать netplan. Они там оооочень красиво запилили.

targitaj ★★★★★
()

Давай я тебе в двух словах расскажу. Вот смотри, у тебя есть железяка с сетевыми интерфейсами, которые куда-то подключены. Ты загружаешь ОСь. Одной из задач ОСи является инициализация железяк (твоих интерфейсов для подключения к сетям). Железо инициализируется. Далее может происходить процесс «настройки сети», который выражается в назначении протоколов и параметров в рамках этих протоколов. Если у тебя ipv4, то это всякие ip адреса на включенном в сеть интерфейсе, маски и прочие шлюзы. Ок. У тебя есть загруженная ОСь, проинициализированы и настроены интерфейсы подключения к сетям. Всё, у тебя пошёл трафик. Что значит «пошёл трафик»? Это значит, что байтики доходят до процессов на твоём железе и уходят от процессов на твоём железе. Кто занимается процессом доставки байтиков от сетевого интерфейса до конечного процесса? Ядро ОС. Этим занимается ядро ОС. Вот это самое ядро ОС, занимаясь процессом доставки байтиков, может эти самые байтики фильтровать. Этим занимается, например, модуль ядра linux. Что оно делает? Оно фильтрует. Как оно фильтрует? Согласно выданным модулю правилам. Кто выдаёт правила? Человек, например. Как он это делает? С помощью специальной программы управления. Например, iptables. Что такое iptables? Это программа управления, с помощью которой ты задаёшь правила фильтрации байтиков модулю ядра linux. Потому что трафик идёт через ядро.

Вопросы?

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

Они там оооочень красиво запилили

Шуклин там очень хорошо работает, да :)

Deleted
()
Ответ на: комментарий от shkolnik_2019

Теперь пробеги глазами https://www.frozentux.net/documents/iptables-tutorial/ Не пугайся размера, там много примеров.

https://www.frozentux.net/iptables-tutorial/chunkyhtml/c962.html начни с пути прохождения пакета в ядре

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от shkolnik_2019

Вот еще что. Модуль ядра (netfilter) может не только фильтровать (отсекать «ненужное») байтики, но и вносить изменения в байтики. Может, например, подменить source ip или destination ip в пакете. То есть, это больше чем просто firewall.

targitaj ★★★★★
()
Ответ на: комментарий от shkolnik_2019

Попробуй, но актуальный русский перевод протух на много лет.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

То есть, это больше чем просто firewall.

А Windows Defender это аналог Netfilter для винды, или это скорее тот самый интерфейс (iptables)? А сам файрвол в винде тоже встроенный в ядро? Или это не проверить, т.к. исходники закрыты?

Попробуй, но актуальный русский перевод протух на много лет.

Да вроде пишут что и сам iptables не первой свежести, отстает по развитию на годы. Или уже не отстает?

https://habr.com/post/320278/

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Windows Defender

не в теме

Да вроде пишут что и сам iptables не первой свежести

Да, программа управления правилами обработки сетевых пакетов iptables не первой свежести. Как и сам модуль. Там есть над чем поработать. Вот, например, я не знаю как сделать фильтрацию пакетов для конкретного процесса. Кажется, iptables такого просто не умеет. В смысле, сделать правило не на порт или адрес, а для конкретной запущенной на машине программы.

Разработчики Netfilter предоставили замену iptables

Но тебя это не должно волновать пока не столкнёшься сам с невозможностью сделать задуманное. Пока что оно всё рабочее.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

Блин, ссылку запостил нечайно про net-tools, правда он тоже не первой свежести, но раз уж запостил, спрошу. Net-tools тоже надо изучать параллельно с iproute2? Или он уже не нужен?

Так то я сеть ни разу сам не настраивал. Сунул ethernet-кабель в комп и все само в Ubuntu заработало. Максимум логин/пароль ввел. Но тут захотел перекинуть инет в виртуалку, чтобы поэкспериментировать с сервером, и понял что надо создавать отдельный интерфейс... и на этом мои знания кончились. Теперь вот думаю, тратить время на древний Net-tools или не надо.

shkolnik_2019
() автор топика
Ответ на: комментарий от targitaj

Вот, например, я не знаю как сделать фильтрацию пакетов для конкретного процесса. Кажется, iptables такого просто не умеет.

Сейчас это можно сделать через cgroups. И iptables и nftables.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от shkolnik_2019

Net-tools тоже надо изучать параллельно с iproute2?

Лично моё мнение, что надо понимать что происходит и уметь искать ответы. Учить конкретные инструменты не надо. Что часто будешь использовать - само запомнится.

Сунул ethernet-кабель в комп и все само в Ubuntu заработало.

Ну ты попробуй разобраться что именно и как именно настроило тебе сеть на машине. Это сразу ступень в понимании.

Но тут захотел перекинуть инет в виртуалку

я делал с помощью virt-manager и потом в консоли подсматривал какие именно правила фильтрации сети оно применило.

iptables -L -t filter -nv
iptables -L -t nat -nv

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

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

А возможна ли сегодня жизнь без файрвола? Что было бы, если бы в Linux его не было? Было бы куча вирусов, как на винде? Хотя на винде тот же Windows Firewall уже 12 лет, а вирусы все-равно есть...

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

А возможна ли сегодня жизнь без файрвола?

Про серверы не скажу, а на линукс-десктопах у 90% пользователей правила фильтрации трафика отключены.

vvn_black ★★★★★
()
Ответ на: комментарий от shkolnik_2019

А возможна ли сегодня жизнь без файрвола?

Где? На виртуальной машине, которая играет роль шлюза на стоящем в сети Интернет хосте, за которой есть сеть с машинами торговой системы? Нет.

targitaj ★★★★★
()
Ответ на: комментарий от vvn_black

Про серверы не скажу, а на линукс-десктопах у 90% пользователей правила фильтрации трафика отключены.

Т.е. по умолчанию в обычной домашней Ubuntu файрвол отключен, и никаких задач не выполняет?

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

По-умолчанию на любой Ubuntu нет никаких правил. Открой консоль и посмотри

iptables -L -t filter -nv
iptables -L -t nat -nv
targitaj ★★★★★
()
Ответ на: комментарий от targitaj

Да, проверил, вроде ничего не идет.

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

А вот теперь даже интересно стало, если файрвол в Linux по-умолчанию отключен, то почему Linux не атакуют вирусы? У него еще какие-то средства сетевой защиты есть? Ни то чтобы я специально нарывался на вирусы, обычно даже не захожу на незнакомые сайты. Но все же, в чем причина такой высокой защиты от вирусни?

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

если файрвол в Linux по-умолчанию отключен

с чего это отключён? Всё включено. Научись слышать что тебе говорят. Всё включено, ПРАВИЛ НЕТ.

Видишь

policy ACCEPT

? Вот поэтому у тебя ходят пакеты. Потому что по-умолчанию ВСЁ РАЗРЕШЕНО.

почему Linux не атакуют вирусы

что такое «атакуют вирусы»? Что это значит?

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

Да я понял что правил нет, не так выразился.

что такое «атакуют вирусы»?

Под винду существуют миллионы вирусов, столько же антивирусов, но под Linux рабочих вирусов насколько я знаю нет. Иначе как объяснить, что на серверах 100% Linux, видел статистику.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Ты повторяешь какие-то бессмысленные заклинания, которые сам не понимаешь. Что такое «атакуют вирусы»? Что это значит?

targitaj ★★★★★
()
Ответ на: комментарий от shkolnik_2019

Давай на пальцах.

Сервер - это программа. Например, apache. Или nginx. Или еще что-нибудь. Ты держишь запущенным свой сервер apache на машине в сети Интернет для того, чтобы люди могли открыть страницу с твоего сервера у себя в браузере. Что означает, что обращения на ip твоей машины на, например, порты tcp 80 и tcp 443 ОБЯЗАНЫ попасть к процессу сервера apache. То есть, твой сервер apache публичен. Он должен быть доступен из любой части сети Интернет.

Далее. Сервер apache - это программа. В программах есть ошибки. Какой-то чел в сети Интернет копался нештатным способом (из консоли копался в обращениях к портам 80 и 443 которые должны быть доступны для доступности страницы). Допустим, чел обнаружил, что если вот так-то послать такое-то говно на 443 tcp порт твоего сервера apache, то этот сервер ломается (это ведь просто программа) и он получает доступ дальше в систему.

Поможет тебе в этом случае механизм фильтрации пакетов (firewall) или нет?

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

https://ru.wikipedia.org/wiki/Компьютерный_вирус

Давай отталкиваться от того, что под разные версии Windows существуют миллионы вирусов (это статистика антивирусных компаний, а не мои догадки - пишут ли они их сами, это уже другой вопрос). В чем сила Linux, в чем его суперзащита? Почему нет миллионов рабочих вирусов под Linux? Почему эта проблема актуальна для винды практически с начала появления интернета, но неактуальна для Linux? Иначе где вирусы под него? Такая постановка вопроса понятна?

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Меня не интересуют заклинания, сори. Ты или понимаешь что именно ты говоришь или это заклинания. От повторения заклинаний ничего не меняется. Ты, очевидно, не понимаешь что ты говоришь. Ты просто повторяешь слова, которые где-то увидел или услышал.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 2)
Ответ на: комментарий от targitaj

Допустим, чел обнаружил, что если вот так-то послать такое-то говно на 443 tcp порт твоего сервера apache

Поможет тебе в этом случае механизм фильтрации пакетов (firewall) или нет?

Может и поможет, смотря что за «говно», и будет ли тип этих пакетов отличаться от другого трафика. Ну мне так думается.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Одна из задач файрволла - ограничивать доступ к сетевому ресурсу (серверу). Твой ресурс-сервер изначально обязан быть доступен всем. Допустим, ты наблюдаешь «неправильную» активность с такого-то ip. Ты блокируешь доступ к твоему серверу с этого ip. Ок. Чел на том конце идёт на форумы и всем сообщает, что если сделать так и так, то можно поиметь твой сервер. Что будешь делать?

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 2)
Ответ на: комментарий от targitaj

Так ты не веришь в существование миллионов вирусов под Windows, и не понимаешь почему их нет под Linux? Я слышал теорию, что Linux непопулярен, поэтому и вирусы писать под него не интересно и не выгодно. Но что значит «непопулярен», если все сервера только под ним и крутятся (банки, научные центры, бизнесы, и т.д.). Наверняка разница в кривой архитектуре винды, которая тянется от самого начала. Почему во времена Windows 98-XP я мог полазить в интернете и легко словить вирус, который потрет половину документов или сделает загрузку системы невозможной? По-твоему это «заклинания» и мне привидилось? Знаешь сколько раз я переустанавливал Windows из-за таких «заклинаний»? Просто зайдя на новый незнакомый сайт.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Какой вопрос? Про идиотов, своими руками приносят себе на машину вредоносный код и своими руками его запускают? Это не вирусная атака. Это просто идиот перед компьютером.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

Т.е. человек (не админ, и не программист) серфит интернет - он идиот? Откуда он знает на каком сайте может быть вирус? Откуда он знает, как вирусы попадают на комп, если специально ничего не качает (файлы, бинари)? Я не в курсе как современная винда устроена, но до XP включительно даже не нужно было ничего качать, достаточно зайти на зараженный сайт и словить вирусняк, который может запороть всю систему. Ты очень нехорошо отзываешься о среднестатистических юзерах, для которых комп это не работа и не цель в жизни.

shkolnik_2019
() автор топика
Ответ на: комментарий от targitaj

Это не вирусная атака.

Я тебя понял. Вирусов не существует. При посещении любых сайтов с винды вероятность словить винус - нулевая. Вопрос исчерпан. Криптовымогателей кстати тоже не существует. «Сынок, это фантастика!»

shkolnik_2019
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.