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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Сервер(1хeth0. forward запросов(почта) клиентов на конечный роутер. [РЕШЕНО]  (Прочитано 1685 раз)

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

Оффлайн Brunen

  • Автор темы
  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
Как я это вижу?
2. К делает запрос в The Bat(забрать почту) - и его запрос идёт на С, т.к. у К это шлюз по-умолчанию.
Далее, пришедший на С пакет подхватывает iptables и перенаправляет его на Р, который отправляет его в И
Собственно, на сервере нужно только включить форвардинг и всё. При условии, что iptables пусты (везде стоит политика ACCEPT), а основным шлюзом для сервера выступает роутер, то все приходящие на сервер пакеты (с интернетовским целевым адресом) будут маршрутизированы им в интернет через роутер.

Включить форвардинг:
echo 1 > /proc/sys/net/ipv4/ip_forward

Насчёт форвардинга - понял. Я не спец., но его нужно включать даже, если сервер имеет один интерфейс(eth0)?

Цитировать
И есть ещё один нюанс. По умолчанию в убунте включена отправка редиректов:
cat /proc/sys/net/ipv4/conf/all/send_redirects
Работает это так. Когда сервер получит от клиента пакет, направленный в интернет, он его честно отмаршрутизирует через роутер в инет. Но вместе с тем, сервер отправит клиенту специальный пакет (ICMP redirect), который предложит клиенту отправлять пакеты по кратчайшему пути, то есть напрямую на роутер минуя сервер (так как они фактически находятся в одной и той же сети). Поэтому, если клиент "послушается" такого редиректа, то больше вы пакетов от соответствующего клиента на сервере не увидите. :)

Чтобы избавиться от этого, есть несколько вариантов:
1) Исправить структуру сети как советовали выше (правильное решение);
2) Отключить "отправку редиректов" (фактически костыль).

Спасибо за совет, я про это даже не знал. Сделаю.

Цитировать
Кроме вышеописанного нюанса, могут быть и другие. Скажем, в вашей схеме построения сети никто не запрещает клиенту самостоятельно поменять адрес шлюза на роутер и ходить в инет в обход сервера.

У клиентов права обычного пользователя в системе(Windows XP), так что сменить не сможет.

По поводу убрать текущую железку(dlink), которая выступает в качестве шлюза - не хочу, т.к. пока не хватает знаний в области обезопасивания убунтовского сервера. А dlink этот запрещает ломиться внутрь запросам извне из-за NAT.

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля

По поводу убрать текущую железку(dlink), которая выступает в качестве шлюза - не хочу, т.к. пока не хватает знаний в области обезопасивания убунтовского сервера. А dlink этот запрещает ломиться внутрь запросам извне из-за NAT.

так и надо было писать с самого начала. как появится желание подробней разобраться - пиши, хотя тем по iptables тут более чем достаточно.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Включить форвардинг:
echo 1 > /proc/sys/net/ipv4/ip_forward
Насчёт форвардинга - понял. Я не спец., но его нужно включать даже, если сервер имеет один интерфейс(eth0)?
Да.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Brunen

  • Автор темы
  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля

По поводу убрать текущую железку(dlink), которая выступает в качестве шлюза - не хочу, т.к. пока не хватает знаний в области обезопасивания убунтовского сервера. А dlink этот запрещает ломиться внутрь запросам извне из-за NAT.

так и надо было писать с самого начала. как появится желание подробней разобраться - пиши, хотя тем по iptables тут более чем достаточно.

С iptables около 6 лет назад разбирался для домашней машины. Сейчас уже позабыл принципы построения цепочек.   :(

В общем, сейчас просмотрел документацию по ним и нарыл следующее, но изначально - пояснения:

1. Шлюз(ubuntu server) у машин стоит - 192.168.0.1. Роутер(dlink), имеющий выход в интернет - 192.168.0.254
2. Разрешить почту(25,110) определённым ip-адресам(192.168.0.12,192.168.0.55) в ЛВС(192.168.0.0/24).
3. Т.е. пакеты от определённых ip-адресов уходят на шлюз, где iptables перенаправляет их на роутер, который их направляет в мир.

На сервере, где настраиваем iptables:
(sysctl -w net.ipv4.ip_forward="1" - сделано)

iptables -L:
(Нажмите, чтобы показать/скрыть)

iptables -t nat -A POSTROUTING -p tcp --dport 25 -s 192.168.0.12 -j SNAT --to-source 192.168.0.254
iptables -t nat -A POSTROUTING -p tcp --dport 25 -s 192.168.0.55 -j SNAT --to-source 192.168.0.254

iptables -t nat -A POSTROUTING -p tcp --dport 110 -s 192.168.0.12 -j SNAT --to-source 192.168.0.254
iptables -t nat -A POSTROUTING -p tcp --dport 110 -s 192.168.0.55 -j SNAT --to-source 192.168.0.254

Или не?



Пользователь решил продолжить мысль 26 Апреля 2011, 09:24:12:
Включить форвардинг:
echo 1 > /proc/sys/net/ipv4/ip_forward
Насчёт форвардинга - понял. Я не спец., но его нужно включать даже, если сервер имеет один интерфейс(eth0)?
Да.

Спасибо, этого тоже не знал :)
« Последнее редактирование: 26 Апреля 2011, 09:29:41 от Brunen »

Оффлайн podkovyrsty

  • Старожил
  • *
  • Сообщений: 1547
  • Content-Type: alternative
    • Просмотр профиля
Вот вам пища для размышлений:
1) Пакеты проходят сквозь шлюз? Проходят - значит форвардинг.
2) Что такое SNAT?
3) если вы вместо длинка поставите машину с убунтой, закроете ssh на инетовском интерфейсе и запретите прохождение запросов на новое подключение из вне - что там еще защищать?
Шаг за шагом можно достичь цели.

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Или не?
вы все еще просите о костылях вместо того чтобы разобраться с iptables и изменить до нормального состояния структуру сети.
какие ресурсы на сервере надо защитить от внешних посягательств?
самое простое заблочить все подключения с внешки
iptables -A INPUT -i $INET_IFACE -j REJECT
где вместо $INET_IFACE подставить имя внешнего интерфейса

Оффлайн Brunen

  • Автор темы
  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
Вот вам пища для размышлений:
1) Пакеты проходят сквозь шлюз? Проходят - значит форвардинг.
2) Что такое SNAT?
3) если вы вместо длинка поставите машину с убунтой, закроете ssh на инетовском интерфейсе и запретите прохождение запросов на новое подключение из вне - что там еще защищать?

1. С этим всё понятно :).
2. SNAT используется(как я понял), когда ip внешнего интерфейса на роутере, выдаваемый провайдером - статический. Иначе юзать MASQUERADE.
3. Поймите меня правильно - я не спец по безопасности. Но вдруг где-то не досмотрю - будет дыра, о которой я даже не знаю, пока не сломают.

Пользователь решил продолжить мысль 26 Апреля 2011, 10:49:54:
Или не?
вы все еще просите о костылях вместо того чтобы разобраться с iptables и изменить до нормального состояния структуру сети.
какие ресурсы на сервере надо защитить от внешних посягательств?
самое простое заблочить все подключения с внешки
iptables -A INPUT -i $INET_IFACE -j REJECT
где вместо $INET_IFACE подставить имя внешнего интерфейса

Да вообщем-то наружу торчит только sshd и удалённый доступ по rdp на машину внутри ЛВС.
Мейл-сервер(postfix+dovecot+fetchmail+procmail) забирают/отправляют почту с внешних ящиков и работает эта связка, как почтовый клиент, условно говоря. Так что почтовик наружу тоже не светится.

Честно говоря: сервер ставится, как настроил и забыл. Обновляться он не будет совсем и подходить к нему не будут совсем. При пропадании питания отрубается он сам через 10 минут(скрипт), при появлении питания - врубается тоже сам(опция в BIOS). Т.е. полностью автономная машина.
« Последнее редактирование: 26 Апреля 2011, 11:05:49 от Brunen »

Оффлайн podkovyrsty

  • Старожил
  • *
  • Сообщений: 1547
  • Content-Type: alternative
    • Просмотр профиля
2) SNAT это подмена IP-адреса источника в заголовке пакета. Зачем вы, у всех пакетов, от 0.12 и 0.55, которые проходят сквозь ваш 0.1, собрались менять IP источника с 0.12 или 0.55 на 0.254 -не понятно.
3) Есть команда netstat - она умеет показывать открытые порты. Если вы закрываете все открытые порты снаружи, кроме тех, которые нужны, а к нужным ограничиваете подключение по IP, то можете немного расслабиться. Потом разбираетесь с ssh туннелями и закрываете оставшиеся порты, кроме ssh, который вешаете на нестандартный порт - от балды, и расслабляетесь почти полностью.


Шаг за шагом можно достичь цели.

Оффлайн Brunen

  • Автор темы
  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
2) SNAT это подмена IP-адреса источника в заголовке пакета. Зачем вы, у всех пакетов, от 0.12 и 0.55, которые проходят сквозь ваш 0.1, собрались менять IP источника с 0.12 или 0.55 на 0.254 -не понятно.
3) Есть команда netstat - она умеет показывать открытые порты. Если вы закрываете все открытые порты снаружи, кроме тех, которые нужны, а к нужным ограничиваете подключение по IP, то можете немного расслабиться. Потом разбираетесь с ssh туннелями и закрываете оставшиеся порты, кроме ssh, который вешаете на нестандартный порт - от балды, и расслабляетесь почти полностью.

Спасибо за ответы и разъяснения. Буду перестраивать структуру сети в недалеком будущем..

Пользователь решил продолжить мысль 26 Апреля 2011, 18:38:10:
Проблема решена.
1. Включил форвардинг в ядре. (echo 1 > /proc/sys/net/ipv4/ip_forward)
2.:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 --source [ip-клиентской машины] --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED -j ACCEPT

Т.о. определённым клиентам разрешен доступ в интернет.
(Нажмите, чтобы показать/скрыть)

Если кому-то будет полезно это решение, скажу сразу - метод костылей. Команда, написанная выше - разрешает идти с клиентского ПК всему трафику через шлюз.

Upd.
Более правильное решение:
Разрешить клиентской машине ходить только по веб(порт - 80), остальное - запрещено.
iptables -A FORWARD -i eth0 --source 192.168.172.43 --destination 0.0.0.0/0 -p TCP --dport 80 --match state --state NEW,ESTABLISHED -j ACCEPT
По аналогии - добавляете правила и для всяких банк-клиентов, которые не умеют прокси. Меняется только номер порта.

p.s. Если у Вас политики цепочек INPUT/OUTPUT iptables стоят в DROP, тогда Вам ещё необходимо разрешить(в iptables) отправлять dns-запросы на шлюзе, который указан в настройках клиента.
« Последнее редактирование: 26 Апреля 2011, 19:26:47 от Brunen »

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
вообще-то это чуть ли не первые из примеров разобранные в iptables-tutorial
не думал что за 6 лет можно все на столько забыть даже если настраивать пытался для домашнего компа...

Оффлайн Brunen

  • Автор темы
  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
вообще-то это чуть ли не первые из примеров разобранные в iptables-tutorial
не думал что за 6 лет можно все на столько забыть даже если настраивать пытался для домашнего компа...
Если заниматься после установок/настроек систем совершенно другой деятельностью, с админством не связанным, то - да.
У каждого человека разная память. Что-то вы хорошо помните, что-то плохо. В зависимости от того, на чём вы больше концентрируетесь.

 

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