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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите написать простые правила для шлn  (Прочитано 2236 раз)

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

Оффлайн trukhachev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Пытаюсь пересадить все сервера в офисе на линукс (кроме 1С). С dns, dhcp, ldap и samba разобрался, осталось сменить только шлюз. Но упортно противиться мне эти iptables сил нет. Задачи у шлюза просты:
1. Перенаправлять трафик. (тут проблем не возникло, поиском пользоваться умею)
2. Разрешить доступ с определенного ip:port'а и сразу же его перебросить на сервер 1с внутри сети ( работа с сервером 1с осуществляется через терминал, порт стандартный 3398).
Покапавшить в wiki набросал примерно такие правила. Нехватает только пункта 2.
#eth0 (Интернет)
#eth1 (Локалка ) 192.168.0.1 255.255.255.0
 
sysctl net.ipv4.ip_forward = 1 # Разрешаем шлюзу передавать транзитный трафик
iptables -F FORWARD # Очистим цепочку FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем уже установленные соединения
iptables -A FORWARD -m conntrack --ctstate NEW -i eth1 -s 192.168.0.0/24 -j ACCEPT # Разрешаем исходящие соединения из локальной сети к интернет

# тут я так понимаю и должны идти правила для разрешения и перенаправления

iptables -P FORWARD DROP # Весь остальной транзитный трафик — запрещаем.
iptables -t nat -F POSTROUTING # Очистим цепочку POSTROUTING таблицы nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Маскарадим весь трафик, идущий через eth0 (возможно не нужно маскарадить)
« Последнее редактирование: 02 Декабря 2009, 12:49:56 от trukhachev »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
iptables -t nat -F PREROUTING      # Чистим цепочку prerouting в таблице nat
iptables -t nat -A PREROUTING -s тот_самый_определённый_айпишнег -d внешний_ip_адрес -p протокол_tcp_или_udp --dport порт_назначения -j DNAT --to адрес_назначения_внутри_сети:3398  # Перенаправление трафика
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT # Разрешаем перенаправленный трафик

Оффлайн trukhachev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Помогите написать простые правила для шл&
« Ответ #2 : 02 Декабря 2009, 12:00:18 »
Задачи:

0. Политика по умолчанию блокировать всё
1. Разрешить вход и исход внутри сети
2. Разрешить для сервера пинг во все стороны
3. Разрешить доступ к серверу через ssh
4. Перенаправлять трафик из локальной сети в интернет по любому порту
5. Перенаправлять запрос на подключение к терминалу с IP_OFFICE:3389 на  192.168.0.2:3389
6. Спрятать внутренние ip
7. Разрешить шлюзу ходить куда угодно

Получиться должно так? Не прописывал icq и банк клиенты потому что они вроде идут транзитом а на них запретов нет. Проверьте логику пожалуйста. Искренне благодарен.
sysctl net.ipv4.ip_forward = 1 # Разрешаем шлюзу передавать транзитный трафик

iptables -F INPUT # Очистим цепочку INPUT
iptables -P INPUT DROP # По умолчанию все входящие пакеты блокировать
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT # Разрешаем входящие локальной сети
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # Разрешаем ssh
iptables -A INPUT -i eth0 -p icmp -j ACCEPT # Разрешаем входящий пинг
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -F OUTPUT # Очистим цепочку OUTPUT
iptables -P OUTPUT DROP # По умолчанию все исходящие пакеты блокировать
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT # Разрешаем исходящте локальной сети
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT # Разрещаем исходящий пинг
iptables -A OUTPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -F FORWARD # Очистим цепочку FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем проходить пакетам по уже установленным соединениям
iptables -A FORWARD -m conntrack --ctstate NEW -i eth1 -s 192.168.1.0/24 -j ACCEPT # Разрешаем исходящие соединения из локальной сети к интернет-хостам
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT # Разрешаем перенаправленный трафик
iptables -P FORWARD DROP # Весь остальной транзитный трафик — запрещаем.

iptables -t nat -F POSTROUTING # На всякий случай очистим цепочку POSTROUTING таблицы nat
iptables -t nat -A PREROUTING -s IP_OFFICE_1 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3398
iptables -t nat -A PREROUTING -s IP_OFFICE_2 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3398
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Маскарадим весь трафик, идущий через eth0
« Последнее редактирование: 02 Декабря 2009, 12:50:33 от trukhachev »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
Это обычно в начало цепочки ставится. Типа оптимизация.
iptables -A INPUT -i eth0 -p icmp -j ACCEPT # Разрешаем входящий пинг
По комменту. Это разрешает не только пинг, а еще много полезных управляющих пакетов.

7. Разрешить шлюзу ходить куда угодно
Это противоречит тому, что щас в цепочке OUTPUT. Если надо разрешить ходить куда и как угодно, то цепочка должна быть пустая.

Пользователь решил продолжить мысль 02 Декабря 2009, 12:19:38:
Еще забыл:
iptables -t nat -F PREROUTING      # Чистим цепочку prerouting в таблице nat

Оффлайн trukhachev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Помогите написать простые правила для шл&
« Ответ #4 : 02 Декабря 2009, 12:40:46 »
Я это добавил цепочки INPUT OUTPUT, чтобы шлюз совсем уж голый не выпустить в интернет.
sysctl net.ipv4.ip_forward = 1 # Разрешаем шлюзу передавать транзитный трафик

iptables -F INPUT # Очистим цепочку INPUT
iptables -P INPUT DROP # По умолчанию все входящие пакеты блокировать
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT # Разрешаем входящие локальной сети
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # Разрешаем ssh
iptables -A INPUT -i eth0 -p icmp -j ACCEPT # Разрешаем входящий пинг

#iptables -F OUTPUT # Очистим цепочку OUTPUT
#iptables -P OUTPUT DROP # По умолчанию все исходящие пакеты блокировать
#iptables -A OUTPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A OUTPUT -o eth1 -j ACCEPT # Разрешаем исходящте локальной сети
#iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT # Разрещаем исходящий пинг

iptables -F FORWARD # Очистим цепочку FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем проходить пакетам по уже установленным соединениям
iptables -A FORWARD -m conntrack --ctstate NEW -i eth1 -s 192.168.1.0/24 -j ACCEPT # Разрешаем исходящие соединения из локальной сети к интернет-хостам
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT # Разрешаем перенаправленный трафик
iptables -P FORWARD DROP # Весь остальной транзитный трафик — запрещаем.

iptables -t nat -F POSTROUTING # На всякий случай очистим цепочку POSTROUTING таблицы nat
iptables -t nat -A PREROUTING -s IP_OFFICE_1 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3398
iptables -t nat -A PREROUTING -s IP_OFFICE_2 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3398
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Маскарадим весь трафик, идущий через eth0
1. Если цепочку output оставить пустой, то это даст возможность ходить любому исходящему транзитному трафику для локалки и шлюза?
2. Влияет ли цепочки output input на блокировку переправленного трафика? Иначе говоря, если я не разрешу в них порт для icq, то из локалки icq будет недоступна? Или эти цепочки касаются локалки только в случае когда я указываю  -i eth1
3. Не будут ли эти правила блокировать установку соединения с терминалом (для перенаправления к локальному серверу 1С)?
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

« Последнее редактирование: 02 Декабря 2009, 12:50:46 от trukhachev »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Помогите написать простые правила для шлn
« Ответ #5 : 02 Декабря 2009, 12:52:38 »
INPUT и OUTPUT только для тех пакетов, которые предназначены или исходят исключительно от хоста шлюза. Для транзитного трафика таблица FORWARD.

Пользователь решил продолжить мысль 02 Декабря 2009, 13:02:03:
Присмотрись, тут опечатка. 3389 или 3398?
5. Перенаправлять запрос на подключение к терминалу с IP_OFFICE:3389 на  192.168.0.2:3389
iptables -t nat -A PREROUTING -s IP_OFFICE_1 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3398

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

iptables -t nat -A PREROUTING -s IP_OFFICE_1 -d GATE_IP -p tcp --dport 3389 -j DNAT --to 192.168.0.2
« Последнее редактирование: 02 Декабря 2009, 13:02:03 от Mam(O)n »

 

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