контролировать и блокировать исходящий трафик из домашней сети с домашнего сервера

869
Thassilo

У меня есть домашняя сеть за маршрутизатором (модель fritzbox 7490), которая в настоящее время служит шлюзом и сервером DHCP для всех проводных и беспроводных устройств. Кроме того, у меня есть домашний сервер в сети с одной физической сетевой картой, на котором запущен Debian Jessie и DNS-сервер (bind9).

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

0
В зависимости от того, как вы определяете мониторинг, вы можете контролировать и блокировать только с помощью iptables, но ipset является хорошим дополнением к нему. ** iptables -A OUTPUT -j LOG --log-префикс "red alert что-то плохое" --log-tcp-options --log-ip-options ** Очевидно, что вам нужно будет добавить такие условия, как протокол, источник, пункт назначения, и т. д., чтобы сделать это осмысленным правилом. cybernard 8 лет назад 0
squid - это прокси-кеш, который содержит все наиболее часто загружаемые веб-сайты на вашем жестком диске для быстрого доступа. Я не достаточно знаком с ним, чтобы знать, насколько хорошо он контролирует / блокирует трафик, но это второстепенные функции. cybernard 8 лет назад 0
@cybernard: в идеале мне бы хотелось, чтобы на моем домашнем сервере работал веб-сайт, на котором перечислены все посещенные веб-сайты, отсортированные по IP-адресу клиента (решение не обязательно должно быть squid или даже прокси). Кроме того, помните, что в настоящее время мой домашний сервер не является моим шлюзом! Поэтому сначала я должен найти способ перенаправить весь трафик с маршрутизатора обратно на домашний сервер !? Мне не нужна функция кеширования. Thassilo 8 лет назад 0
** iptables -I OUTPUT 1 -p tcp -m tcp -m multiport --dports 80,443 -J LOG --log-prefix "Я посетил веб-сайт" ** Затем введите ** dmesg ** и в конце журнала вы увидите новую запись в журнале после посещения веб-сайта. Однако вам нужно будет изменить это, если вы хотите долгосрочное хранение журналов, и как долго. Стандартный журнал ** dmesg ** может вращаться чаще, чем раз в день, в зависимости от количества посещенных сайтов. cybernard 8 лет назад 0
Если вы хотите долгое ведение журнала, настройте сервер MySQL и установите ulog2, а не старую версию. Вы найдете файл sql, который вам нужно импортировать из ulog2 до того, как база данных будет настроена. Затем замените ** - J LOG и т. Д. ** на ** - J NFLOG --nflog-group 1 --nflog-prefix leftover_udp "Я посетил веб-сайт" ** cybernard 8 лет назад 0

1 ответ на вопрос

3
cybernard

Если вы можете войти через telnet с помощью описанных методов, вы можете попробовать мое правило iptables. В качестве альтернативы вы можете установить Freetz, и тогда мое правило должно работать. Они говорят, что часть документации на немецком языке, так что используйте Google Translate.

Это отрывок из Linux Voice

FRITZ! Box 7490 - Linux Voice

С коробкой FRITZ !, вы можете сделать удивительную сумму, если хотите немного взломать. Telnet можно включить, например, нажав «#» на подключенном телефоне и набрав 96 * 7 *. Вы даже увидите сообщение о том, что оно включено (переключите 7 на 8, чтобы отключить его). Теперь вы можете подключиться к маршрутизатору из командной строки, набрав telnet ip_address и введя пароль веб-администратора. Теперь вы окажетесь в довольно узнаваемой среде командной строки Linux. Вы можете ls или набрать top и посмотреть на файловую систему. Также доступен wget, и есть способы установки скомпилированных пользователем пакетов, таких как DropBear, но мы бы не советовали делать это. Вместо этого мы рекомендуем взглянуть на Freetz. Это коллекция модификаций с открытым исходным кодом, которые могут быть внесены в прошивку вашего маршрутизатора по умолчанию, превращение его в гораздо более гибкое и взломанное устройство (и, вероятно, в то же время аннулирует гарантию). Вам необходимо создать виртуальную машину с определенной средой сборки, а затем извлечь последние файлы из учетной записи GitHub, прежде чем собирать их из базовой системы меню. Почти вся важная и актуальная информация на немецком языке, что значительно усложняет задачу, если вы не говорите на этом языке. Но если вам нужен больший контроль над вашей версией. Если встроенное ПО по умолчанию не дает достаточного контроля, вы можете получить доступ к ОС через Telnet или установить обновление с открытым исходным кодом под названием Freetz. аппаратное обеспечение и возможность вносить собственные изменения в прошивку - это того стоит. Мы обнаружили, что особенно полезно добавлять более широкие функциональные возможности VPN, включая OpenVPN, а также легко добавлять SSH и другие приложения.


Краткосрочная регистрация:

iptables -I OUTPUT 1 -p tcp -m tcp -m multiport --dports 80,443 -J LOG --log-prefix "I visited a website " 

Долговременная:

  1. установить mysql и ulogd2

    mysql -u root -p </src/ulogd2/doc/mysql-ulogd2.sql

Этот файл не может быть в том же месте на вашем компьютере

find / -iname "mysql-ulogd2.sql"

если он говорит, что файл не найден

изменить эту часть ulogd.conf

[log1] # netlink multicast group (the same as the iptables --nflog-group param) # Group O is used by the kernel to log connection tracking invalid message nlgroup=1 group=1  [global] stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2bin1:IP2BIN,mac2str1:HWHDR,mysql1:MYSQL [mysql1] db="ulog2" host="192.168.1.1" user="username" table="ulog" pass="password" procedure="INSERT_PACKET_FULL" 

iptables -I OUTPUT 1 -p tcp -m tcp -m multiport --dports 80,443 -J NFLOG --nflog-group 1 --nflog-prefix "I visited a website " 

ТОЛЬКО iptables и ulogd2 ДОЛЖНЫ быть на вашей fritzbox, а остальные могут быть помещены в любую точку вашей сети.

Большое спасибо за ответ. Это не совсем то, что я искал, но, возможно, это единственный путь. Итак, еще раз спасибо! Thassilo 8 лет назад 0
@Thassilo Это должно привести вас к входной двери, а моя другая информация должна получить список посещенных веб-сайтов по IP-адресу. cybernard 8 лет назад 0
Моя реальная цель состояла в том, чтобы найти настраиваемое программное обеспечение с веб-интерфейсом, которое предлагает более удобный визуальный способ мониторинга трафика. Также я хочу использовать мой домашний сервер linux для выполнения этой работы, будучи только клиентом в сети. Я думал так: мой домашний сервер также работает как DNS-сервер и переводит адреса для всех устройств в моей домашней сети, не являясь реальным шлюзом. Однако, во-первых, я не знаю, возможно ли это даже с моей текущей настройкой, и, во-вторых, я не знаю, как. Thassilo 8 лет назад 0
Если вам нужен веб-интерфейс, после настройки ulogd2 вы можете настроить apache с поддержкой php. Загрузите и поместите файл adminer.php в корневую папку, и у вас есть графический интерфейс базы данных. Посетите http: //ipaddress/adminer.php cybernard 8 лет назад 0
@Thassilo Единственная проблема с запросом DNS-сервера - кеширование. Вы не будете точно знать, сколько раз посещали веб-сайт. Во-первых, Windows добавляет DNS-кеш, а ваш веб-браузер добавляет второй уровень кеширования, и только если оба из них будут пропущены, вы будете связываться с DNS-сервером. cybernard 8 лет назад 0