LINUX.ORG.RU

реализация linux firewall


0

1

Здравствуйте! Поставил себе задачу написать небольшой фаервол под линукс. Его задач это выводить текущие соединения с сетью(local/global)(название программы/сервиса PID), текущая скорость или количество in/out трафика для соединения, на какой IP(или веб ресурс) передаётся трафик, протокол, и собственно главное это возможность запрещать программе доступ в сеть или из сети.

Библиотека libpcap не подходит. т.е. пользуясь только ядром.

Прошу подсказать с чего начать и куда копать в ядре.

Из примеров отображения статистики соединений я нашел netactview, ifstat. По запрету соединения не нашел.

Но пока разбираться еще трудновато в них.



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

>небольшой фаервол

Его задач это выводить текущие соединения с сетью(local/global)(название программы/сервиса PID), текущая скорость или количество in/out трафика для соединения, на какой IP(или веб ресурс) передаётся трафик


Бегом читать, что такое фаервол.

Зачем оно нужно, если есть iptables?

Zhbert ★★★★★
()

>Его задач это выводить текущие соединения с сетью(local/global)(название программы/сервиса PID), текущая скорость или количество in/out трафика для соединения, на какой IP(или веб ресурс) передаётся трафик, протокол, и собственно главное это возможность запрещать программе доступ в сеть или из сети.

man lsof

в дополнению к уже порекомендованному man iptables

есть множество более интересных задач. Лучше календарик для меня сделайте на Qt4 в IceWM

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

> есть множество более интересных задач. Лучше календарик для меня сделайте на Qt4 в IceWM

сравнили опу с альцем.
человек хочет потренироваться в системном/сетевом программировании, а вы ему предлагаете задачу из области прикладного ПО для 9 класса.

отвратительно и мерзко.

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

>отвратительно и мерзко.

простите. но мне просто лень этот календарик писать. :-) а хочется...

Ладно, я в таких случаях просто беру исходник lsof, и смотрю, как и что там сделано. Если непонятно что-то, спрашиваю. Мне почему-то кажется, что lsof делает всё что нужно для TC. особенно с опцией -i.

drBatty ★★
()

1) читать lartc

2) нестеснятся дёргать тулзу iptables как непосредственный интерфейс над ядром

3) обратить внимание на ULOG, QUEUE - они как для ваших целей

разобрать исходники хорошо известных утилит - оно конечно полезно, но скорее всего грозит кипящим мозгом :) Слишком там много народу попринимало участие..Это скорее уже позже - глянуть «а вот как там народ делал тот же самый велосипед»

MKuznetsov ★★★★★
()

Как то писал я такой велосипед, в гугле много примеров, но то был именно файрвол

cyclon ★★★★★
()

Спасибо за начальные направления. Цитата

Как то писал я такой велосипед, в гугле много примеров, но то был именно файрвол

если осталось что(и инфа которая была полезная), то не мог бы поделиться?

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

Google: netfilter. Можешь нарисовать свой netfilter, с блекджеком и jit'ом )

vasily_pupkin ★★★★★
()

эмн, вопрос вот в чём : Зачем? писать ещё один файрвол на ядерном уровне и что там делает биллинг?

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

>Зачем? писать ещё один файрвол на ядерном уровне и что там делает биллинг?

Я бы стал его писать, чтобы лучше понять принципе работы сети, приниципы создания ядромодулей, да и так это довольно интересная задача.

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

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

>Я бы стал его писать, чтобы лучше понять принципе работы сети, приниципы создания ядромодулей, да и так это довольно интересная задача.

Что бы лучше понять принципы работы сети достаточно написать модель с поддержкой какого-нибудь протокола вида TCP,UDP,SCTP. Даже книжка есть, так и называется «Сетевая архитектура ядра linux», где рассказано про большинство внутренних структур, которые используются при сетевом взаимодействии.

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

Это всё замечательно. Код становиться говнокодом лишь тогда - когда вы его выложите в общий доступ.

PS | Я просто предполагаю, что ТСа(судя по изъяснениям, стилю и дате регистрации) тут недавно очень обширно банили.

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

>Что бы лучше понять принципы работы сети достаточно написать модель с поддержкой какого-нибудь протокола вида TCP,UDP,SCTP. Даже книжка есть, так и называется «Сетевая архитектура ядра linux», где рассказано про большинство внутренних структур, которые используются при сетевом взаимодействии.

Да, согласен, для обучения можно и простенький модуль сделать. Хотя реализовать такой велосипед, мне лично, было бы интересно.

PS | Я просто предполагаю, что ТСа(судя по изъяснениям, стилю и дате регистрации) тут недавно очень обширно банили.

Угу, помню такого )

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

> Да, согласен, для обучения можно и простенький модуль сделать. Хотя реализовать такой велосипед, мне лично, было бы интересно.

Желаю вам удачи и получить конечный результат.

guilder
()

bash, perl, pyton
+
cat /proc/*; netstat -pn; ip; iptables

Судя по ТЗ топикстартер виндузятник и ло^W^Wнешарит

Jetty ★★★★★
()

посмотри nethogs, там всё, кроме запрещения траффика

xorik ★★★★★
()

watch conntrack -L :)
Только с привязкой к локальным прогам традиционная проблема. Впрочем, костылей для ее обхода куча, см. всякие jnettop.

nnz ★★★★
()

Спасибо за ответы. Начал разбираться в netfilter. Но возник вопрос. Он управляет только трафиком. А как быть с приложениями? Т.е. какими модулями ядра можно запрещать(либо перехватывать) трафик от приложения, чтобы пакеты от него исходящие не отсылались во вне? как мне показалось на первый взгляд netfilter такого не делает

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