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


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

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 528150 раз)

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

Оффлайн ivsatel

  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1470 : 26 Ноября 2011, 20:25:30 »
1. 9 из 10 правил в INPUT легко заменяются одним
-A INPUT -m state --state INVALID -j DROP
выставленным в самое начало.

Это я поторопился выложить. Исправил сразу. Т.к. замечание по этому поводу уже было.

2. Вы запустите у себя
iptables -vL
и полюбуйтесь на счётчики попаданий...
Сразу будет видно, какие правила только глаза мозолят, ничего реально не делая.

ОК ща посмотрю. Спасибо за подсказку!
А не может быть, что правило с нулевым попаданием на данный момент сработает позже?

3. Хотите открыть? Открывайте.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Не, это глобально. Откроет и на внешку. Я не ошибаюсь?
Вполне достаточно было бы из локального диапазона на интерфейс смотрящий в ЛАН. Это правильный ход мыслей?
« Последнее редактирование: 26 Ноября 2011, 20:27:55 от ivsatel »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1471 : 26 Ноября 2011, 20:28:47 »
А это уже допиливайте, как вам кажется удобным. У меня просто открыт 22-й порт, и авторизация по ключу.
При необходимости всегда могу зайти из дома и посмотреть, что вообще творится.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн ivsatel

  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1472 : 26 Ноября 2011, 20:38:54 »
В идеале хочу вот так:
iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Это правильно?

Но есть правило отсева запросов на интернет:

iptables -A FORWARD -i eth0 -s 192.168.1.2 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

Глядя на таблицу подозреваю появится доступ к локальным ресурсам, даже если поставлю DROP:

iptables -A FORWARD -i eth0 -s 192.168.1.2 -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

Через правило:

iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Имею в виду, не будут ли пересекаться правила?
« Последнее редактирование: 26 Ноября 2011, 21:13:04 от ivsatel »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1473 : 27 Ноября 2011, 03:01:54 »
Ладно, давайте по очереди.

iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Самое первое - не стоит мешать в одну кучу NEW,ESTABLISHED,RELATED.
Второе - что вообще вы собираетесь этим правилом делать?

И... Правила, попавшие в цепочку FORWARD, не могут оказаться в цепочке INPUT без очень сильного колдунства...
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн ivsatel

  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1474 : 27 Ноября 2011, 17:09:17 »
Ладно, давайте по очереди.

iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Самое первое - не стоит мешать в одну кучу NEW,ESTABLISHED,RELATED.
Второе - что вообще вы собираетесь этим правилом делать?

iptables -A INPUT -i eth0 = Обращение к eth0 из LAN (eth0 смотрит в локалку)

--source 192.168.1.0/24 = Источник локальный диапазон адресов

--match state --state NEW,ESTABLISHED,RELATED -j ACCEPT = Разрешить прохождение пакетов с любым состоянием

И... Правила, попавшие в цепочку FORWARD, не могут оказаться в цепочке INPUT без очень сильного колдунства...

Понял.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1475 : 27 Ноября 2011, 18:18:03 »
А вот теперь смотрите сюда. (eth0 - локалка, eth1 - инет)

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Запрещаем левые пакеты
-A INPUT -m conntrack --ctstate INVALID -j DROP
# Разрешаем то что уже и так разрешено
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Разрешаем любой локальный трафик
-A INPUT -i lo -j ACCEPT
# Разрешаем служебрый трафик
-A INPUT -p icmp -j ACCEPT
# Разрешаем трафик из локальной сети
-A INPUT -s 192.168.17.0/24 -i ! eth1 -m conntrack --ctstate NEW -j ACCEPT
# Разрешаем discard и SSH.
-A INPUT -p tcp -m tcp --dport 9 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
# Запрещаем левые пакеты
-A FORWARD -m conntrack --ctstate INVALID -j DROP
# Разрешаем то что уже и так разрешено
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
# Разрешаем выход в интернет из локальной сети
-A FORWARD -s 192.168.17.0/255.255.255.0 -i ! eth1 -o eth1 -m conntrack --ctstate NEW -j ACCEPT
# Разрешаем обращение из локальной сети к PPTP клиентам
-A FORWARD -s 192.168.17.0/255.255.255.0 -o ! eth1 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн getikalex

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1476 : 28 Ноября 2011, 02:19:16 »
Есть простой мануал по открытию порта в убунте
http://myubuntu.ru/rukovodstvo/otkryvaem-port-dlya-bittorrent-klienta
Вроде просто копипастил, а мне дает ошибку в синтаксисе
И вот что имею на убунте 11.04:
Цитировать
alex@alexserver:~$ sudo iptables -A INPUT -p tcp –dport 6881 - j ACCEPT
Bad argument `–dport'
Try `iptables -h' or 'iptables --help' for more information.
alex@alexserver:~$
Если даже это не получается, может уже заодно подскажете ответ на классическую задачу:
Имеется сервер на убунте 11.04.
eth0 поднимает ppp0 с динамическим IP
eth1 смотрит в локалку с IP 192.168.69.1
Как пробросить порт не одной машине в локалке, а всем. Грубо говоря, чтоб ко всем машинам в локалке 192.168.69.2-254 был открытый порт для торрента (6881)


« Последнее редактирование: 28 Ноября 2011, 02:23:49 от getikalex »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1477 : 28 Ноября 2011, 03:37:08 »
Вот не надо копипастить.
--dport а не –dport
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1478 : 28 Ноября 2011, 08:20:20 »
Как пробросить порт не одной машине в локалке, а всем. Грубо говоря, чтоб ко всем машинам в локалке 192.168.69.2-254 был открытый порт для торрента (6881)
"Нет, сынок. Это фантастика" ©
Для решения этой и подобных задач придумали uPnP

Оффлайн getikalex

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1479 : 28 Ноября 2011, 13:15:39 »
Посоветуйте uPnP попроще. А-то на запрос гугла об uPnP кругом описывается только uPnP media серверы типа mediatomb ushare, а это совсем из другой оперы.
Нашел упоминание о linux-igd, но как-то уж очень нелестно о нем вспоминают, да и последняя версия лежит только трехлетней давности, что настораживает.
Какая лучшая альтернатива для решения моей задачи ?
« Последнее редактирование: 28 Ноября 2011, 13:27:48 от getikalex »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1480 : 28 Ноября 2011, 13:29:25 »
Пользую linux-igd

Оффлайн getikalex

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1481 : 28 Ноября 2011, 17:39:50 »
uPnP я хоть и поднял, но по-уму работать он не хочет.
Попробую вернуться к iptables.
Как я понял пробросит порт на все машины не смогу. Но я так и не догнал как прокинуть даже на одну. Надо прокинуть порт 6881 с интерфейса ppp0 (интернет на eth0) во внутреннюю локалку (eth1 - 192.168.69.1)именно к машине 192.168.69.191
Гугл  дает пример:
http://alexmuz.ru/ubuntu-iptables/
В моем случае д.б. (как я понимаю)примерно так:
sudo iptables -t nat -A PREROUTING -p tcp -d ВНЕШНИЙ_IP --dport 6881 -j DNAT --to-destination 192.168.69.191:6881
sudo iptables -t nat -A POSTROUTING -p tcp --dst 192.168.69.191 --dport 6881 -j SNAT --to-source ВНЕШНИЙ_IP

Но ВНЕШНИЙ_IP - динамический, а подставить вместо него интерфейс ppp0 или eth0 - не получается, пишет об ошибке. Как правильно ?
И еще вопрос: после внесения этих изменений - порт пробросится сразу, или надо перезапустить сеть ? (restart network)
« Последнее редактирование: 28 Ноября 2011, 17:45:52 от getikalex »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1482 : 28 Ноября 2011, 17:56:43 »
Первая строка правильная (почти), вторая скорее всего дублирует уже существующий маскарад на интерфейсе ppp0
"Почти", потому что нужно ещё определиться какой протоко используется tcp или udp.

И еще вопрос: после внесения этих изменений - порт пробросится сразу, или надо перезапустить сеть ? (restart network)
Правила вступают в работу сразу. Потому будьте осторожны с запрещающими правилами цепочек INPUT/OUTPUT, если не сидите непосредственно за терминалом мучаемого компа.

uPnP я хоть и поднял, но по-уму работать он не хочет.
Как Вы это определили? У меня пока нареканий к нему не было. Может Вы ему "дышло" перекрыли и он никого не слышит?

Оффлайн ivsatel

  • Активист
  • *
  • Сообщений: 336
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1483 : 28 Ноября 2011, 18:09:07 »
# Разрешаем служебрый трафик
-A INPUT -p icmp -j ACCEPT

Во всех строках, все понятно. Единственно я не пойму для чего разрешать не мной порожденный трафик по icmp? Или тут как с FTP? (имею ввиду комплексность протокола) Все равно как-то не вяжется.
« Последнее редактирование: 28 Ноября 2011, 18:12:12 от ivsatel »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1484 : 28 Ноября 2011, 18:46:50 »
Что вам не понятно в написанном мною комментарии?
ICMP - это служебный протокол. Правильно настроенный маршрутизатор обязан на него реагировать установленным образом, а не резать без зазрения совести.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

 

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