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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: правила iptables: закрытые порты  (Прочитано 13558 раз)

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

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
правила iptables: закрытые порты
« : 13 Июля 2011, 00:03:06 »
Доброго времени!
Составляю правила iptables, сохранила - все сохраняется, все работает. Дополнила найденным списком "самых опасных уязвимостей" и столкнулась с проблемой: закрыла какой-то порт, и изображения, флеш-анимация не загружаются, на форуме зарегистрироваться даже не могла - капчи не вижу. Гугл, маны, поиск по форуму, список номеров портов, к сожалению, не помогли.Вот, прилагаю листинг - конечно, правильно написанными правилами его назвать сложно, некоторые пришлось выбросить - модули нужны, но пока я его не пополнила, он работал.
(Нажмите, чтобы показать/скрыть)


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

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #1 : 13 Июля 2011, 00:14:24 »
iptables-save
Wars ~.o

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #2 : 13 Июля 2011, 00:21:47 »
Спасибо, что откликнулись. iptables-save?
Я так поняла, это?
(Нажмите, чтобы показать/скрыть)
Вот.
А за скриптик спасибо - может, пригодится, за каркас возьму, а то в правилах, чувствую,  у меня какая-то каша получается - а тут все по полочкам :)
« Последнее редактирование: 13 Июля 2011, 00:48:14 от Lara »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #3 : 13 Июля 2011, 00:29:57 »
Lara, а нафига столько копипасты? Вот скрипт для простейшей защиты:
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 13 Июля 2011, 00:30:31:
Но этот скрипт не универсальный.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #4 : 13 Июля 2011, 00:41:59 »
Lara, а нафига столько копипасты? Вот скрипт для простейшей защиты:
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 13 Июля 2011, 00:30:31:
Но этот скрипт не универсальный.

Спасибо и вам на добром слове :)
Это не копипаста - почти что. Гугл, маны, форум - я сама три дня сидела над этим чудовищем, иначе я никак не назову этот список.  Трудно с нуля, кое-что поняла, многое - нет... Вот  -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT это - не поняла, что и к чему :) А  зачем - мне нужен очень защищенный выход в интернет, максимально. И мне еще предстоит LAMP, вот пыталась закрыться извне.

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #5 : 13 Июля 2011, 00:47:53 »
Lara, первое правило в ваших таблицах разрешает (ACCEPT) трафик по всем (all) протоколам с любого хоста (anywhere) к любому хосту (anywhere). Дальше этого правила не проходит ни один пакет и весь трафик идет на Ваш хост, о защищенности которого промолчу. Можете проверить:
iptables -L -vnЕсли нужно, то могу разъяснить работу скрипта и те правила, которые он генерирует.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #6 : 13 Июля 2011, 00:55:40 »
Lara, первое правило в ваших таблицах разрешает (ACCEPT) трафик по всем (all) протоколам с любого хоста (anywhere) к любому хосту (anywhere). Дальше этого правила не проходит ни один пакет и весь трафик идет на Ваш хост, о защищенности которого промолчу. Можете проверить:
iptables -L -vnЕсли нужно, то могу разъяснить работу скрипта и те правила, которые он генерирует.

Поняла - я в ужасе,  думала, что эта строчка совсем не то. Промолчу тоже. А насчет скрипта - если вы не заняты, с удовольствием. Одно дело читать непонятные отрывки чего-то, другое дело - живой человек объяснит.

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #7 : 13 Июля 2011, 01:03:19 »
Для начала, лучше скажите как Вы подключаетесь к сети, т.е. VPN, DHCP, StaticIP. Далее, что нужно открыть или закрыть. И желательно поподробнее. Тогда подскажу как настроить iptables индивидуально.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #8 : 13 Июля 2011, 01:20:51 »
Для начала, лучше скажите как Вы подключаетесь к сети, т.е. VPN, DHCP, StaticIP. Далее, что нужно открыть или закрыть. И желательно поподробнее. Тогда подскажу как настроить iptables индивидуально.
Подключение Ethernet, динамический. Что нужно закрыть - проще сказать, что открыть - открыть 80, 443 - лишь бы просто выход. Закрыть пока что все - даже аську, все-все. Потом понадобится выход по FTP,  но это позже. Думала настроить iptables и  ставить Lamp, но его ведь тоже нужно закрыть.

А первая строчка - думала раз по локальному интерфейсу (loopback, 127.0.0.1), то это локально, т.е. на компе у меня пинг.

Ужас, я уже пакеты на неизвестный порт принимаю ...
Цитировать
Ip:
    всего пакетов принято 5945
    3 с неверными адресами
    0 перенаправлено
    0 входящих пакетов отклонено
    входящих пакетов доставлено: 5941
    запросов отправлено: 6249
    исходящих пакетов сброшено: 233
    сброшено по причине отсутствия маршрута: 17
Icmp:
    ICMP сообщений получено: 13
    неудачных входящих ICMP сообщений: 0
    Гистограмма входа ICMP
        пункт назначения недоступен: 13
    послано сообщений ICMP: 4
    неудачные сообщения ICMP: 0
    Гистограмма выхода ICMP
        пункт назначения недоступен: 4
IcmpMsg:
        InType3: 13
        OutType3: 4
Tcp:
    открытия активных соединений: 323
    открытия пассивных соединений: 0
    неудачные попытки соединения: 6
    получено сбросов соединений: 0
    соединений установлено: 1
    сегментов получено: 4368
    отправлено сегментов: 4681
    повторно передано сегментов: 49
    плохих сегментов получено: 0
    сбросов послано: 62
Udp:
    пакетов принято: 1562
    принято пакетов на неизвестный порт: 4
    ошибок приема пакетов: 0
    пакетов послано: 1573
Вот это закрыла порты...
« Последнее редактирование: 13 Июля 2011, 01:43:30 от Lara »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #9 : 13 Июля 2011, 02:03:22 »
Нулевой и обязательный пункт:
   iptables -F
Добавьте, для начала, три цепочкив таблицу фильтра:
   iptables -N SERVICE
   iptables -N WORKTCP
   iptables -N WORKUDP
Позже, мы будем работать с пакетами этих трех протоколов в отдельных цепочках, что облегчит нам жизнь...

Цепь INPUT:
Прежде всего, отбрасываем пакеты, которые невозможно идентифицировать:
   iptables -A INPUT -m state --state INVALID -j DROP
Разрешаем loopback:
   iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
Далее, разделяем трафик по протоколам:
   iptables -A INPUT -p tcp -j WORKTCP
   iptables -A INPUT -p udp -j WORKUDP
   iptables -A INPUT -p icmp -j SERVICE
Как только мы получим пакет, iptables начнет сверять его протокол с указанным в правилах. Если протокол соответствует правилу, то он будет отослан в соответствующую цепочку.
Добавим правило, которое разрешает хосту принимать пакеты от уже установленных соединений:
   iptables -A INPUT -m state --state ESTABLIISHED,RELATED
И последним правилом будем сбрасывать все пакеты, которые не попали под верхние правила:
   iptables -A INPUT -j DROP
Это правило потребуется для отладки наших таблиц.

Цепочка WORKTCP:
Откроем порты для входящих соединений:
   iptables -A WORKTCP -p tcp --dport 80 -j ACCEPT
   iptables -A WORKTCP -p tcp --dport 443 -j ACCEPT
После этого, проверяем состояние пакета, который попал сюда из INPUT. Если пакет имеет стаус NEW, то есть такой пакет открывает соединение (читай "К нам ломятся"), то мы его просто отфутболиваем и говорим отправителю, что не можем его принять и обрываем соединение:
   iptables -A WORKTCP -p tcp -m state --state NEW #FIXED
   iptables -A WORKTCP -p tcp ! --syn -m state --state NEW -j REJECT --reject-with tcp-rst
Второе, что сделаем - определим состояние пакета, который не попал под первое правило. Если соединение установлено, то разрешим его, поскольку наш хост его инициировал и это пришел ответ.
   iptables -A WORKTCP -m state --state ESTABLISHED -j ACCEPT

Цепь WORKUDP:
Копируем правила из WORKTCP, но с учетом протокола:
   iptables -A WORKUDP -m state --state NEW -j REJECT
   iptables -A WORKUDP -m state --state ESTABLISHED -j ACCEPT

Цепь SERVICE:
В этой цепочке мы разрешаем пинги, понги и прочую служебную чешую:
   iptables -A SERVICE -p icmp --icmp-type 0 -j ACCEPT
   iptables -A SERVICE -p icmp --icmp-type 3 -j ACCEPT
   iptables -A SERVICE -p icmp --icmp-type 8 -j ACCEPT
И добавляем сброс нежелательных icmp хапросов:
   iptables -A SERVICE -p icmp -j DROP

Теперь можем попробовать применить политику DROP для цепчки INPUT и посмотреть что будет происходить и надо ли будет что-либо изменить в правилах.
   iptables -P INPUT DROP
Если "ляжет" сеть, то придется снова поменять политику для INPUT
   iptables -P INPUT ACCEPT

Теперь сохраним правила:
   iptables-save > ./firewall-rules

Если все в порядке и сеть не падает, то следует проверить работоспособность хоста полностью, то есть перезапустить сеть.
Пока что все. Многабукаф...
« Последнее редактирование: 13 Июля 2011, 02:29:06 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Lara

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #10 : 13 Июля 2011, 02:39:04 »
Спасибо большое - по крайней мере, пока читаю, кажется, понимаю как привести все в приличный вид.


"Теперь можем попробовать применить политику DROP для цепчки INPUT " - это начинаем закрывать все "уязвимые порты", да? Я закрывала все что можно, теперь никак не открою то что нужно :(
И вот еще вопрос: apache, mysql - да, но и порт, на который идут обновления, порты почты, трансляции и т.п. - они открыты, их ведь тоже нужно закрывать? И выход в репозитории тоже интересно - он открыт или закрыт? По идее открыт ведь. А какие это порты - особенно меня смущают эти обновления и репозиторий :) Может, все же проще все DROP, и только некоторые ACCEPT?

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #11 : 13 Июля 2011, 02:53:45 »
Lara, лучше послушайте что говорят... Вот когда вкурите эдак 2-3 хороших мана по iptables, вот тогда и DROP всему и вся... А сейчас паранойя просто вредна.
Курить до полного просветления:
http://www.opennet.ru/docs/RUS/iptables/
http://ru.wikipedia.org/wiki/Iptables
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

alexxnight

  • Гость
Re: правила iptables: закрытые порты
« Ответ #12 : 13 Июля 2011, 03:00:16 »
Есть очень хорошая статья-туториал (хоть и старая)
http://www.opennet.ru/docs/RUS/iptables/

Почти одновременно выложили посты :)

там в конце есть примеры (по сути, один пример под разные варианты), которые можно адаптировать под Ваши требования (убрав лишнее из таблицы NAT)

to Protopopulus
Со всем уважением... У Вас много ошибок в написании правил

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: правила iptables: закрытые порты
« Ответ #13 : 13 Июля 2011, 03:05:39 »
Так я ж только учусь :) И помогаю осваивать эту хитрую штуку другим.

Если не трудно, то укажите на ошибки, дабы исправить мог. Буду признателен.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

alexxnight

  • Гость
Re: правила iptables: закрытые порты
« Ответ #14 : 13 Июля 2011, 15:20:49 »
iptables -A INPUT -m state --state ESTABLIISHED,RELATED

это правило логичнее поставить в самом начале цепочки INPUT:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

затем...

Разрешаем loopback:
   iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT

loopback разрешают так:
iptables -A INPUT -i lo -j ACCEPT

И последним правилом будем сбрасывать все пакеты, которые не попали под верхние правила:
 iptables -A INPUT -j DROP

Правильно будет установить правила по умолчанию:
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Цепочка WORKTCP:
Откроем порты для входящих соединений:
iptables -A WORKTCP -p tcp --dport 80 -j ACCEPT
   iptables -A WORKTCP -p tcp --dport 443 -j ACCEPT

У Вас не соединения открываются, а ЛЮБОЙ tcp трафик на эти порты. Правильно так:
iptables -A WORKTCP -p tcp --dport 80 --syn -m conntrack --ctstate NEW -j ACCEPT
а "остальной" трафик по этому порту "подхватит", написанное мной, первое правило

После этого, проверяем состояние пакета, который попал сюда из INPUT. Если пакет имеет стаус NEW, то есть такой пакет открывает соединение (читай "К нам ломятся"), то мы его просто отфутболиваем и говорим отправителю, что не можем его принять и обрываем соединение:
   iptables -A WORKTCP -p tcp -m state --state NEW #FIXED
   iptables -A WORKTCP -p tcp ! --syn -m state --state NEW -j REJECT --reject-with tcp-rst

Я понял о чем Вы говорите. Это делается так:
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW,INVALID -j DROP

Второе, что сделаем - определим состояние пакета, который не попал под первое правило. Если соединение установлено, то разрешим его, поскольку наш хост его инициировал и это пришел ответ.
   iptables -A WORKTCP -m state --state ESTABLISHED -j ACCEPT

Это правило мы уже поместили в самое начало, тут оно не логично

Цепь WORKUDP:
Копируем правила из WORKTCP, но с учетом протокола:
   iptables -A WORKUDP -m state --state NEW -j REJECT
   iptables -A WORKUDP -m state --state ESTABLISHED -j ACCEPT

Ошибка. Весь UDP трафик будет "резаться" первым правилом. Вот пример для DHCP
iptables -A WORKUDP -p udp --sport 68 --dport 67 -m conntrack --ctstate NEW -j ACCEPT

Цепь SERVICE:
В этой цепочке мы разрешаем пинги, понги и прочую служебную чешую:
   iptables -A SERVICE -p icmp --icmp-type 0 -j ACCEPT
   iptables -A SERVICE -p icmp --icmp-type 3 -j ACCEPT
   iptables -A SERVICE -p icmp --icmp-type 8 -j ACCEPT
И добавляем сброс нежелательных icmp хапросов:
   iptables -A SERVICE -p icmp -j DROP

Оставьте пока только:
iptables -A SERVICE -p icmp --icmp-type 8  -j ACCEPT
iptables -A SERVICE -p icmp --icmp-type 11 -j ACCEPT

ИТОГО: Доделанный Ваш пример (Я бы еще чуть-чуть по другому сделал)
iptables -F
iptables -X

iptables -N SERVICE
iptables -N WORKTCP
iptables -N WORKUDP

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW,INVALID -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW,INVALID -j REJECT --reject-with tcp-reset

iptables -A INPUT -p tcp -j WORKTCP
iptables -A INPUT -p udp -j WORKUDP
iptables -A INPUT -p icmp -j SERVICE

iptables -A WORKTCP -p tcp --dport 80 --syn -m conntrack --ctstate NEW -j ACCEPT
iptables -A WORKTCP -p tcp --dport 443 --syn -m conntrack --ctstate NEW -j ACCEPT

# Пример INPUT UDP трафика
iptables -A WORKUDP -p udp --sport 68 --dport 67 -m conntrack --ctstate NEW -j ACCEPT

iptables -A SERVICE -p icmp --icmp-type 8  -j ACCEPT
iptables -A SERVICE -p icmp --icmp-type 11 -j ACCEPT

Пока вроде все... Писал по памяти, может где-то и ошибся. Спрашивайте...
« Последнее редактирование: 13 Июля 2011, 15:23:31 от alexxnight »

 

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