Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: iptables запретить все кроме одного сайта[РЕШЕНО]  (Прочитано 29012 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Что нужно сделать, чтобы с данного компьютера можно было попасть только на один сайт, скажем ya.ru. А все остальные сайты должны быть недоступны. Причем по айпи адресу обращаться нельзя. Имеется только  доменное имя.
Спасибо большое!
« Последнее редактирование: 30 Декабря 2010, 23:12:57 от AAXEE »

Оффлайн pterodaktil

  • Активист
  • *
  • Сообщений: 785
  • "Suum cuique" (Каждому свое)
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #1 : 30 Декабря 2010, 17:53:32 »
Я так понимаю  это для маршрутизатора.
iptables  -P  FORWARD  DROP
iptables -A FORWARD -p tcp -s ip.сайта.или.имя.сайта -j ACCEPT
Одним из примеров громоздкой и бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft.

(c)Т.Э.Кренкель, А.Г.Коган, А.М. Тараторин. "Персональные ЭВМ в инженерной практике"

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #2 : 30 Декабря 2010, 18:52:07 »
Спасибо! Только мне нужно не для маршрутизатора, а чтобы с компьютера можно было посещать только один ресурс.
Заменил FORWARD на INPUT.
DROP сработал, а ACCEPT не оканчивает свою работу - будто зависает, и консоль не отдает для ввода. Только Ctrl+C помогает.
Подскажите как быть.

Пользователь решил продолжить мысль 30 Декабря 2010, 18:55:18:
Причем, если сначала сделать ACCEPT - то нормально. И правило добавляется. А после DROP не хочет.
« Последнее редактирование: 30 Декабря 2010, 18:55:18 от AAXEE »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #3 : 30 Декабря 2010, 19:10:39 »
только надо в не в INPUT, а в OUTPUT-цепочку добавлять,
Да и правило для уже установленных соединений надо бы добавить

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #4 : 30 Декабря 2010, 19:22:58 »
Все равно консоль не отдает
iptables  -P INPUT DROP
iptables -A OUTPUT -p tcp -s ip.сайта.или.имя.сайта -j ACCEPT
А это что значит? Не поясните?
Цитировать
Да и правило для уже установленных соединений надо бы добавить

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #5 : 30 Декабря 2010, 19:30:49 »
Вообще, про OUTPUT относилось к обоим правилам
Про правила для установленных соединений где-то здесь, в главе "Критерий состояния соединения"

Пользователь решил продолжить мысль 30 Декабря 2010, 19:58:01:
И, кстати, не -s, а -d в разрешающем правиле
« Последнее редактирование: 30 Декабря 2010, 19:58:01 от fisher74 »

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #6 : 30 Декабря 2010, 20:14:50 »
А почему OUTPUT? Надо же блокировать и разрешать то что будет грузиться, то есть будет входящим, то есть INPUTом.
И все равно почему то зависает консоль. В чем дело?
Про критерий состояния системы почитал, но не понял как это относится сюда.

Оффлайн pterodaktil

  • Активист
  • *
  • Сообщений: 785
  • "Suum cuique" (Каждому свое)
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #7 : 30 Декабря 2010, 20:32:07 »
Тогда уж

iptables  -P INPUT DROP # Блокируем  все
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT  # Разрешаем установленные
iptables -A INPUT -p tcp -s ip.сайта.или.имя.сайта --sport 80 -j ACCEPT  #Разрешаем сайт по 80-му порту
Одним из примеров громоздкой и бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft.

(c)Т.Э.Кренкель, А.Г.Коган, А.М. Тараторин. "Персональные ЭВМ в инженерной практике"

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #8 : 30 Декабря 2010, 20:48:41 »
На последней команде опять консоль не отдает. Что делать? Такое вообще почему может происходить?

Пользователь решил продолжить мысль 30 Декабря 2010, 20:49:29:
Ну и не работает сеть совсем после этого, что логично.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #9 : 30 Декабря 2010, 22:02:00 »

iptables -A INPUT -p tcp -s ip.сайта.или.имя.сайта --sport 80 -j ACCEPT  #Разрешаем сайт по 80-му порту


Улыбнул :)
А ларчик открывался одним правилом:

-A OUTPUT ! -d dest_IP -p tcp -m tcp --dport 80 -j DROP
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #10 : 30 Декабря 2010, 22:09:54 »
Сделал вот так:
sudo iptables -t filter -A INPUT -p tcp --dport http -j DROP
sudo iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
sudo iptables -t filter -A INPUT -p tcp -s ya.ru --dport http -j ACCEPT
sudo iptables -t filter -A OUTPUT -p tcp -s ya.ru --dport http -j ACCEPT
Это хоть не виснет. Но блокируются все сайты.
Пробовал наоборот - сначала разрешить, потом запретить - тоже все блокируется.
Что я делаю не так?

AnrDeamon:
aaxee@aaxee-laptop:~$ sudo iptables -t filter -A OUTPUT ! -d ya.ru -p tcp -m tcp --dport http -j DROP
iptables v1.4.4: ! not allowed with multiple source or destination IP addresses
Try `iptables -h' or 'iptables --help' for more information.
aaxee@aaxee-laptop:~$

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #11 : 30 Декабря 2010, 22:14:42 »
iptables v1.4.4: ! not allowed with multiple source or destination IP addresses
Как бы тут сказано, что функция ! не позволяет использовать несколько адресов для destination и source (перевод в вольном стиле). А, получив в правило доменное имя ya.ru, система идёт с запросом к DNS и получает в ответ несколько IP-адресов. AnrDaemon в своём сообщении указал dest_IP, как бы намекая, что адрес ОДИН.

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #12 : 30 Декабря 2010, 22:18:31 »
В том то и дело, надо чтобы по имени разрешало.
Вообще я для простоты написал про один сайт. Пусть их тогда два разрешенных. Как в таком случае?

А мой вариант почему не хочет работать?
« Последнее редактирование: 30 Декабря 2010, 22:20:43 от AAXEE »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #13 : 30 Декабря 2010, 22:31:09 »
iptables не умеет работать по доменным именам. В пакете нет доменного имени, там есть только (утрируя): адрес отправителя, адрес адресата, порты соединения и данные. Поэтому утилита iptables, получив в качестве адреса доменное имя, в любом случае, перед добавлением правила запросит у DNS IP-адрес.
А вообще... вникни в работу ядерного брандмауера управляемого iptables. ссылку я уже дал, да и гугл немало ещё толковых описаний подбросит.
Разберёшь как это работает и сразу всё поймёшь. И как настроить и как на грабли не наступать. То же решение AnrDaemonа подходит только при использовании IP-адреса и не предусматривает работу с DNS.

Пользователь решил продолжить мысль 30 Декабря 2010, 22:33:36:
Ну чтобы ты не мучился, почему у тебя при вводе в разном порядке ведёт себя по разному, поясню: если ты сначала всё DROP-аешь, то и утилита iptables при запросе IP-адреса(ов) ya.ru не может пробиться к DNS -серверу благодаря своим же запретам.
« Последнее редактирование: 30 Декабря 2010, 22:33:36 от fisher74 »

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: iptables запретить все кроме одного сайта
« Ответ #14 : 30 Декабря 2010, 22:39:26 »
fisher74, знаю что запрашивает ip, ну и ладно, пусть так, неважно. Я уже целый день разбираюсь с iptables. Признаюсь, многое тяжело понять. Но вот все же я что-то наковырял, написал. но оно не работает, хотя казалось бы - все правильно. И понять почему я не могу. Может подскажете?
Я про это:
sudo iptables -t filter -A INPUT -p tcp --dport http -j DROP
sudo iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
sudo iptables -t filter -A INPUT -p tcp -s ya.ru --dport http -j ACCEPT
sudo iptables -t filter -A OUTPUT -p tcp -s ya.ru --dport http -j ACCEPT/code]

Если iptables для моей цели не подходит, то что посоветуете?

PS: На самом деле делаю контент-фильтр для школ. Есть список разрешенных сайтов. Нужно, чтобы можно было только их открывать.

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.