Git Product home page Git Product logo

tufilter's Introduction

Данная программа, далее tufilter, является упрощённым вариантом iptables и состоит из двух частей  
1. Модуль ядра, который обеспечивает сам функционал  
2. Управляющая программа с командным интерфейсом  
tufiter может поддерживать до 10 правил/фильтров одновременно(количество можно изменить в коде)  
tufilter блокирует входящие tcp/udp пакеты по связке ip:port(один из параметров может быть не указан, подразумевая значение "любой")  
передача данных(правил/фильтров и статистики по активным правилам) происходит с помощью ioctl через символьное устройство tufilter_dev  
Программа и модуль ядра написаны на Си
Для блокировки входящих пакетов использовалась библиотека netfilter  
Программа была протестирована на системах Debian 9.5(ядро 4.9.0-8-amd64) и Ubuntu 16.04(ядро 4.13.0-36-generic)  

Для сборки и дальнейшего использования программы нужно:  
1. make для сборки программы и модуля ядра  
2. (sudo) insmod tufilter_core.ko для вставки модуля ядра  
3. (sudo) mknod tufilter_dev c 101 0 для создания символьного устройства, символьное усройство должно быть создано в одной папке вместе с tufilter
для обмена иформации между модулем и программой(эта информацая пишется в логи при вставки модуля)  
Если всё прошло успешно, программа готова к использованию  

Команды:  
./tufilter --help		вызывает помощь по программе  
./tufilter --show		показывает активные правила, если они есть, и статистику по ним(кол пакетов и размер)  
./tufilter --transport proto добавить или удалить фильтр, protocol имя протокола (tcp или udp)   
           --ip addres		указать ip адрес(ipv4) для блокировки, может отсутствовать  
           --port port		указать порт для блокировки, может отсутствовать  
           --route route	указать какие пакеты фильтровать: входящие(input), исходящие(output)  
           --filter filter	указать отключить(disable) или включить(enable) данный фильтр  
  
Пример:  
./tufilter --transport tcp --ip 8.8.8.8 --port 443 --filter enable  
./tufilter --transport tcp --port 80 --filter Enable  
./tufilter --transport udp --ip 8.8.8.8 --filter Enable  
./tufilter --transport udp --ip 8.8.8.8 --filter disable  
./tufilter --transport tcp --port 81 --filter Enable --route input  
./tufilter --transport tcp --port 81 --filter Enable --route output  
./tufilter --show  
./tufilter --help  


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.