nixp.ru v3.0

29 мая 2017,
понедельник,
20:13:22 MSK

DevOps с компанией «Флант»
anonymous написал 23 апреля 2004 года в 16:43 (2041 просмотр) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Товарищи!

к сожалению так и смог разобраться как мне с помощью iptables закрыть все порты кроме тех, которые использует sshd?

во-первых не знаю точно какие он использует порты, поэтому после

iptables -A INPUT -p tcp --dport ! 23 -j DROP

ssh kedr42

Все подвисает. Если это правило убрать — все работает.

во-вторых не понятно как мне задавать диапазон портов, типа закрыть порты: 1-1024, кроме 23, 111 и т.д.

заранее благодарен,

athilson.

Uncle Theodore
athilson
Товарищи!

к сожалению так и смог разобраться как мне с помощью iptables закрыть все порты кроме тех, которые использует sshd?

Цитируем man iptables:

--destination-port [!] port[:port]

Destination port or port range specification. The

flag --dport is a convenient alias for this option.

во-первых не знаю точно какие он использует порты, поэтому после

iptables -A INPUT -p tcp --dport ! 23 -j DROP

ssh kedr42

Все подвисает. Если это правило убрать — все работает.

Читаем

$ cat /etc/services | grep ssh

ssh 22/tcp #Secure Shell Login

ssh 22/udp #Secure Shell Login

sshell 614/tcp #SSLshell

sshell 614/udp

x11-ssh 6010/tcp #Unofficial name, for convenience

x11-ssh 6010/udp

Вывод: Не угадал ты, братец… :-)

во-вторых не понятно как мне задавать диапазон портов, типа закрыть порты: 1-1024, кроме 23, 111 и т.д.

# iptables -A INPUT -p tcp --dport 1:1024 -j DROP

Впрочем, я не уверен, проверь.

заранее благодарен,

athilson.

Good Luck,

UT

Nuclear

Устанавливаеш политику по умолчанию. (т.е. если пакет не попал под какое-либо правило — он удаляеться)

$ iptables -P INPUT DROP

$ iptables -P OUTPUT DROP

В цепочке входящих данных пропускаем только пакеты TCP и UDP для порта 22

$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT

$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT

В цепочке исходящих данных пропускаем только пакеты TCP и UDP с порта 22

$ iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

$ iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

Точно в правилах не уверен, так как не проверял. Вообще это все наглядно. Прочитаю документация по IPtables (на opennet.ru). Рекомендую.

Genie

Ну аки детки малые — одну и ту же ошибку повторять..

iptables -A -m state --state ESTABLISHED -j ACCEPT

iptables -A -p tcp -m tcp --dport 22 -j ACCEPT

Адреса и интерфейсы расставить по необходимости

Uncle Theodore

И таблицы, я так понимаю — тоже? :-)

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Чего я не понимаю, это где по-твоему ошибка в наших с Nuclear вариантах, и на фига, спрашивается делать явное указание матча на протокол, когда протокол уже указан один раз? Объясни?

Good Luck,

UT

decvar

а нельзя просто

/sbin/service sshd stop

Uncle Theodore
decvar
а нельзя просто

/sbin/service sshd stop

Не, он хочет наоборот, service sshd start, а service все остальное stop.

И к тому же, так неинтересно… :-) Куда как приятнее наворочать фаервольных скриптов, чем сервис выключть… :-)

Good Luck,

UT

Genie
Uncle Theodore
И таблицы, я так понимаю — тоже? :-)

Угумс, это точно, виноват..

отвлёкся в тот момент :))

Uncle Theodore
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Чего я не понимаю, это где по-твоему ошибка в наших с Nuclear вариантах, и на фига, спрашивается делать явное указание матча на протокол, когда протокол уже указан один раз? Объясни?

«-p tcp» указывает на то, что прописано в заголовке ip-пакета, т.е. глядеть на значение поля пакета.

«-m tcp» указывает на то, чтобы подключить расширения обработки пакета tcp-специфичными правилами. автоматически не выполняется при указании «-p tcp"! но так же нигде не сказано, что оно для своей работы требует указания этого самого «-p tcp».

Разница очень тонкая, и правило без указания «-m tcp» считается корректным, однако, при попытке выполниться, оно не срабатывает.

Особенно это достаёт в конфиге. Ни на что не ругается, а при попытке COMMIT выдаётся ошибка. из-за отсутствия «-m tcp».

Из командной строки поведение странноватое — в зависимости от версии то срабатывает, то не срабатывает…

Uncle Theodore
Genie
«-p tcp» указывает на то, что прописано в заголовке ip-пакета, т.е. глядеть на значение поля пакета.

«-m tcp» указывает на то, чтобы подключить расширения обработки пакета tcp-специфичными правилами. автоматически не выполняется при указании «-p tcp"! но так же нигде не сказано, что оно для своей работы требует указания этого самого «-p tcp».

Разница очень тонкая, и правило без указания «-m tcp» считается корректным, однако, при попытке выполниться, оно не срабатывает.

Особенно это достаёт в конфиге. Ни на что не ругается, а при попытке COMMIT выдаётся ошибка. из-за отсутствия «-m tcp».

Из командной строки поведение странноватое — в зависимости от версии то срабатывает, то не срабатывает…

Подожди, не собирай все в одну кучу. Подгрузка модуля (-m) нужна если ты собираешься использовать какие-то специфичные для этого модуля функции, чего я здесь не наблюдаю. Что, без -m tcp не сработает --dport или jump, что ли?

А commit’а тута нету…

Good Luck,

UT

Nuclear

Насколько я понял из прочтенной документации, параметр «-m» позволяет явно указать загрузку разширения для обработки конкретного протокола или чего-нибудь еще. Рекомендуеться явно подгружать разширения с которыми необходимо работать, хотя эти самые резширения должны подгружаться автоматически.

На сегодняшний день существует три автоматически подгружаемых расширения, это TCP критерии, UDP критерии и ICMP критерии (при построении своих правил я столкнулся с необходимостью явного указания ключа -m tcp, т.е. о неявности здесь говорить не приходится, поэтому будьте внимательнее при построении своих правил, если что-то не идет — пробуйте явно указывать необходимое расширение. прим. перев.). Загрузка этих расширений может производиться и явным образом с помощью ключа -m, -match, например -m tcp.
Genie

Приплыли…

Судя по тому же самому `man iptables` --sport и --dport являются параметрами 'match extensions’. и только для '-m tcp' и '-m udp’. есть еще --sports и --dports, но это расширение '-m multiport’.

Тут, я надеюсь, путаницы никакой нет?

Далее.. хоть и написано в мане, что при указании '-p tcp' грузятся расщирения '-m tcp’, на практике этого не происходит при работе с конфигом. Может из командной строки это и работает, но вот в конфиге — нет. ((сколько я матов по этому поводу раз в пару месяцев выдаю.. именно по этому поводу, когда в очередной раз, путём комментирования последовательно строчек конфига не наткнусь на строчку без злополучного '-m tcp’))

А commit при вызове из шелла всегда есть. неявный, без него — никак нельзя ;)

Uncle Theodore

Ну ладно, уговорил, буду знать. Хотя в моих скриптах для router’а все работает и так. Ну а если перестанет, буду знать где смотреть. Спасибо.

Good Luck,

UT

fly4life
Uncle Theodore
Ну ладно, уговорил, буду знать. Хотя в моих скриптах для router’а все работает и так.

Ага, таже фигня. Всегда добавлял правила из командной строки без указания '-m tcp’. Затем сохранял всё это дело в конфиге командой iptables-save. Сейчас заглянул в этот в файл конфига — этот самый '-m tcp' добавился сам автоматически.

Uncle Theodore

Гы! И правда!

root@localhost:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

root@localhost:~# iptables-save

# Generated by iptables-save v1.2.8 on Fri Apr 23 18:20:19 2004

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

COMMIT

# Completed on Fri Apr 23 18:20:19 2004

Век живи — век учись… и понятно, чем все это кончится.

Good Luck,

UT