The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Простой интерактивный firewall в Linux"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Простой интерактивный firewall в Linux"  +1 +/
Сообщение от auto_tips (??) on 22-Мрт-11, 10:02 
Недавно на форуме спрашивали есть ли интерактивный firewall в Linux и многие отвечали, что нет. Ниже  простая заготовка скрипта, следящего за событиями в логе, в случае подозрительной активности выводящего пользователю окно с предложением блокирования трафика или игнорирования предупреждения.

1. Первоначальные настройки iptables:

   #iptables-save
   # Generated by iptables-save v1.4.7 on Fri Mar 11 15:15:29 2011
   *filter
   :INPUT DROP [137:16764]
   :FORWARD DROP [0:0]
   :OUTPUT DROP [10:708]
   -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A INPUT -j LOG --log-prefix "firewall-INPUT "
   -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A FORWARD -j LOG --log-prefix "firewall-FORWARD "
   -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A OUTPUT -j LOG --log-prefix "firewall-OUTPUT "
   COMMIT
   # Completed on Fri Mar 11 15:15:29 2011
   # Generated by iptables-save v1.4.7 on Fri Mar 11 15:15:29 2011
   *nat
   :PREROUTING ACCEPT [48:6290]
   :POSTROUTING ACCEPT [0:0]
   :OUTPUT ACCEPT [6:396]
   COMMIT
   # Completed on Fri Mar 11 15:15:29 2011

Правила по умолчанию в цепочках можно изменить на ваш вкус.
Основной сценарий будем запускать от рядового пользователя, поэтому
ему требуется право на чтение /var/log/syslog (или куда у Вас попадает журнал netfilter).

Также пользователю требуется право заполнять правила netfilter командой iptables. У меня это сделано через /etc/sudoers

2. Основной сценарий обработки журнала netfilter:

interactive-firewall.sh

   while read line
   do
      echo $line | grep firewall > /dev/null 2>&1
      [ $? != 0 ] && continue
      for item in $line
      do
        case $item in
          firewall-*) CHAIN=$item;;
          PROTO=*) PROTO=$item;;
          SRC=*) SRC=$item;;
          SPT=*) SPT=$item;;
          DST=*) DST=$item;;
          DPT=*) DPT=$item;;
        esac
      done
      CHAIN=${CHAIN#firewall-}
      PROTO=${PROTO#PROTO=}
      PROTO=${PROTO,,}
      SRC=${SRC#SRC=}
      SPT=${SPT#SPT=}
      DST=${DST#DST=}
      DPT=${DPT#DPT=}
      ACTION=`LANG=C xmessage -buttons ACCEPT,DROP,SKIP -default SKIP    -timeout 15 -print "$SRC => $DST:$DPT"`
      ACTION=${ACTION:-"SKIP"}
      case $ACTION in
        SKIP) continue;;
        ACCEPT) sudo iptables -I $CHAIN 2 -s $SRC -d $DST -p $PROTO   --dport $DPT -j ACCEPT;;
        DROP) sudo iptables -I $CHAIN 2 -s $SRC -d $DST -p $PROTO --dport $DPT -j DROP;;
      esac
      sleep 1

3. Запускаем firewall

   tail -f /var/log/syslog | ./interactive-firewall.sh

4. Что можно улучшить.

В этом варианте правила имеют вид SRC => DST:PORT -j ACTION. Исходный порт соединения понятно пропускается. Хорошо бы предоставлять выбор пользователю из нескольких вариантов, но xmessage для этого маловато. Может у кого есть предложения чем рисовать вопрос пользователю и обрабатывать его выбор?

По желанию сценарий можно доработать и отображать в xmessage не голые цифры, а расшифровать их в имена компьютеров командой host, а протоколы по /etc/services. Кроме модификации сценария потребуется так же разрешить первоначально DNS трафик resolver'а в первоначальной конфигурации netfilter.

5. Эта заметка ни на что не претендует, просто идея и простой набросок.


URL:
Обсуждается: https://www.opennet.ru/tips/info/2550.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Простой интерактивный firewall в Linux"  +/
Сообщение от zomg on 22-Мрт-11, 10:13 
PROTO=${PROTO,,}   <-- эта конструкция сработает только в bash4. Просто для информации =)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Простой интерактивный firewall в Linux"  +/
Сообщение от botman (ok) on 28-Мрт-11, 13:59 
В Debian stable идёт Bash 4.1, поэтому - не существенно
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

21. "Простой интерактивный firewall в Linux"  +/
Сообщение от achekalin (ok) on 30-Мрт-11, 13:23 
А где-то в статье указан Дебиан? :)
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

3. "Простой интерактивный firewall в Linux"  +/
Сообщение от non anon on 22-Мрт-11, 10:20 
Use rsyslog, и tail -f не понадобится.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Простой интерактивный firewall в Linux"  +/
Сообщение от non anon on 22-Мрт-11, 10:21 
Правда, придется еще для xmessage ставить DISPLAY и, возможно, разрешить доступ к иксам через xhost.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Простой интерактивный firewall в Linux"  +/
Сообщение от redixin email on 22-Мрт-11, 11:20 
Ога, только действительно интерактивный фаервол держит пакет пока пользователь не скажет пропускать его или нет. А этот сначала дропнет, а потом спросит "а может нужно было пропустить?"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Простой интерактивный firewall в Linux"  +/
Сообщение от non anon on 22-Мрт-11, 14:40 
Грамотный сишный прогер за полчаса напишет юзерспейсный демон, который получает получает от айпистолов пакеты с ctstate NEW через NFQUEUE и запрашивает про них пользователя через какой-нибудь *notify.

Куда более интересный пример использования NFQUEUE - nufw, который управляет разрешениями на фаерволе в зависимости от авторизации пользователей на клиентских десктопах (залогился юзер Вася на энном десктопе - доступ в инет для его айпишника открыли, разлогинился - закрыли). Вот это продакшен, а не кнопочки для блондинок.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "Простой интерактивный firewall в Linux"  +/
Сообщение от pavlinux (ok) on 23-Мрт-11, 20:40 
> Грамотный сишный прогер за полчаса напишет

Чёй-то до сих пор не вижу аналога Cisco ASDM

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

19. "Простой интерактивный firewall в Linux"  +/
Сообщение от анон on 27-Мрт-11, 21:07 
>Чёй-то до сих пор не вижу аналога Cisco ASDM

Наверное, потому что оно в линаксе нафиг никому не сдалось?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

22. "Простой интерактивный firewall в Linux"  +/
Сообщение от achekalin (ok) on 30-Мрт-11, 14:29 
>>Чёй-то до сих пор не вижу аналога Cisco ASDM
> Наверное, потому что оно в линаксе нафиг никому не сдалось?

Нет, потому что производительность труда "грамотного сишного прогера" часто преувеличивают :)

А пофигизм его в отношении "кто же будет ломать мой линух?" - недооценивают ;)

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

6. "Простой интерактивный firewall в Linux"  +/
Сообщение от ананим on 22-Мрт-11, 11:21 
>5. Эта заметка ни на что не претендует, просто идея и простой набросок.

плюс за инициативу и ещё одно доказательство что в линухе при желании можно всё, но наверное лучше уж вот сюда усилия приложить -
https://fedoraproject.org/wiki/FirewallD/

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Простой интерактивный firewall в Linux"  +/
Сообщение от non anon on 22-Мрт-11, 15:12 
Интересная хренюшка. Правда, раздел "why" написан безграмотно (перечисленные там "фундаментальные проблемы" легко устраняются изменением настроек в /etc/sysconfig/ip(6)tables-config).

Но идея все равно хороша. Как systemd разгребает бардак в ините, так и эта штуковина может разгрести бардак в управлении netfilter'ом.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Простой интерактивный firewall в Linux"  +/
Сообщение от ананим on 23-Мрт-11, 15:46 
меня больше интересует использование dbus, который становится по настоящему системной шиной.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

7. "чем рисовать вопрос"  +/
Сообщение от ymkin (??) on 22-Мрт-11, 11:36 
zenity - GTK-диалоги
kdialog - QT-диалоги
dialog - ncurses

http://www.ashep.org/2011/10-poleznyx-utilit-dlya-ispolzovan.../
[Статьи за неделю не попавшие в ленту новостей (выпуск 144)]

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Простой интерактивный firewall в Linux"  +/
Сообщение от balex (??) on 23-Мрт-11, 17:36 
xdialog -X11 диалоги. Во многом по синтаксису совместима с dialog
Ну и естественно нужна логика определения, что из этого есть в текущем окружении
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Dialog"  +/
Сообщение от opasnoste email on 24-Мрт-11, 19:36 
http://code.google.com/p/yad/ - Мощный диалог
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Простой интерактивный firewall в Linux"  +/
Сообщение от o0Dante0o email(ok) on 26-Мрт-11, 13:28 
Хм. Спасибо, попробую, отпишусь о результатах :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Простой интерактивный firewall в Linux"  +/
Сообщение от light (??) on 26-Мрт-11, 21:08 
Можно использовать libnotify
не знаю как в других, а в дебианах примерно так -
sudo aptitude install libnotify-bin
notify-send "Ахтунг, тебя похакали!"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Простой интерактивный firewall в Linux"  +/
Сообщение от light (??) on 26-Мрт-11, 21:09 
ну или в случае если есть только иксы - есть приблуда wish

echo 'button .b -text "Включи скайп" ; pack .b ' | wish

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Простой интерактивный firewall в Linux"  +/
Сообщение от ttt email(??) on 02-Апр-11, 09:04 
Вроде давно уже есть...
http://wiki.mandriva.com/en/Projects/Interactive_Firewall
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Простой интерактивный firewall в Linux"  +/
Сообщение от light (??) on 02-Апр-11, 23:01 
даже под мандриву работает только после патча ядра
а по ссылке даже картинки похерились )

здесь же под любой линух, зачетная статья вобщем

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Простой интерактивный firewall в Linux"  +/
Сообщение от alex320388 (ok) on 04-Апр-11, 10:40 
есть Vuurmuur, он нагляднее
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру