Перенаправить любой исходящий трафик на локальный IP
Итак, вот моя ситуация.
Я получил следующее доступное оборудование: 5 клиентских ПК под управлением Ubuntu 12.04.4 LTS (при необходимости можно изменить). 1 LAMP-сервер, на котором размещены несколько похожих сайтов. 1 Linksys WRT54g прошил с помощью dd-wrt.
Предполагается, что настройка работает следующим образом: пользователь входит в любой домен в браузере, скажем, google.com, и вместо запроса google.com пользователь перенаправляется на локальный LAMP-сервер, который затем отправляет пользователю запрос так же google.com. Все это без изменения URL в браузере, так что пользователь думает, что он на google.com, а он - нет. Если пользователь входит в домен, который не найден на локальном сервере, ему должна быть показана страница с ошибкой, сообщающая ему, что он пытается просмотреть запрещенный контент. Пользователь не должен иметь возможность посещать какие-либо веб-сайты, которых нет на локальном сервере.
Как я могу сделать это? Я попытался изменить файл хоста в Windows, но тогда мне пришлось бы вводить каждый домен, и я не могу этого сделать.
Я думаю, что межсетевой экран на маршрутизаторе мог бы сделать это, но я не знаю как.
Если что-то неясно, пожалуйста, дайте мне знать.
РЕДАКТИРОВАТЬ:
Ну, а теперь, спустя годы, я встретил людей, которые знают, как это сделать, поэтому я подумал, что снова зайду к нему и немного лучше объясню проблему, и как бы я решил ее сейчас.
Идея заключалась в том, чтобы заставить некоторых разведчиков думать, что они посещают законные сайты, чтобы найти номер телефона журналиста, чтобы они могли продолжить свое путешествие. Мы не хотели, чтобы они называли настоящих журналистов, потому что мы их "похищали" и тому подобное... Поэтому, когда они заходили на компьютер в этом "безопасном месте", им не нужен был доступ ко всему Интернет, только несколько избранных сайтов, которые мы будем создавать.
Что бы я знал, чтобы решить эту ситуацию.
Я бы настроил два сервера вместе с клиентскими компьютерами. Это не должно быть проблемой, если они работают практически на одном устройстве, но это потребует дальнейшей настройки, которую я не собираюсь проходить. Все клиенты в этом примере будут чистыми, поэтому они не будут знать, должен ли сайт иметь или не иметь активный SSL-сертификат.
Один сервер будет веб-сервером, а другой - маршрутизатором pfSense. Веб-сервер должен быть настроен с сайтом по умолчанию, говорящим что-то вроде: у вас нет доступа здесь. Должен быть сайт, похожий на Google, с небольшой проверкой, чтобы немного изменить результаты поиска в зависимости от ввода пользователя. Там должно быть несколько сайтов, которые выглядят как официальные сайты для некоторых журналистов. Маршрутизатор должен иметь набор правил для переадресации всего исходящего трафика на веб-сервер. Я не специалист по pfSense, но мои друзья говорят, что это возможно.
1 ответ
Вам нужно создать поддельные веб-страницы для каждого домена, который вас интересует. Почему было бы слишком много работы по созданию записей таблицы DNS или хоста для доменов, которые вас интересуют?
Вы также столкнетесь с проблемами с TLS, если только вы не создадите свой собственный CA, доверяете ему во всем клиентском программном обеспечении, которое собираетесь использовать, и генерируете новые сертификаты для сайтов, которые вы подделываете, так что вы может установить действительные сеансы TLS. Тем не менее, все, что использует закрепление сертификата, сломается.
Что касается перенаправления трафика, вы можете получить некоторое вдохновение от дизайна "Network RErouting Daemon", описанного в этой статье. Он использовал цель NFQUEUE в iptables для пересылки пакетов, предназначенных для определенных IP-адресов, в программу пространства пользователя, которая запускала локальные серверы для обработки соединений, а затем перезаписывала заголовки пакетов, чтобы исходные исходящие соединения обрабатывались локальным сервера.