anonymous
написал 23 апреля 2004 года в 16:43 (3557 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Товарищи!
к сожалению так и смог разобраться как мне с помощью iptables закрыть все порты кроме тех, которые использует sshd?
во-первых не знаю точно какие он использует порты, поэтому после
iptables -A INPUT -p tcp --dport ! 23 -j DROP
ssh kedr42
Все подвисает. Если это правило убрать — все работает.
во-вторых не понятно как мне задавать диапазон портов, типа закрыть порты: 1-1024, кроме 23, 111 и т.д.
заранее благодарен,
athilson.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Цитируем man iptables:
--destination-port [!] port[:port]
Destination port or port range specification. The
flag --dport is a convenient alias for this option.
Читаем
$ 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
Вывод: Не угадал ты, братец… :-)
# iptables -A INPUT -p tcp --dport 1:1024 -j DROP
Впрочем, я не уверен, проверь.
Good Luck,
UT
Устанавливаеш политику по умолчанию. (т.е. если пакет не попал под какое-либо правило — он удаляеться)
$ 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). Рекомендую.
Ну аки детки малые — одну и ту же ошибку повторять..
iptables -A -m state --state ESTABLISHED -j ACCEPT
iptables -A -p tcp -m tcp --dport 22 -j ACCEPT
Адреса и интерфейсы расставить по необходимости
И таблицы, я так понимаю — тоже? :-)
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Чего я не понимаю, это где по-твоему ошибка в наших с Nuclear вариантах, и на фига, спрашивается делать явное указание матча на протокол, когда протокол уже указан один раз? Объясни?
Good Luck,
UT
а нельзя просто
/sbin/service sshd stop
Не, он хочет наоборот, service sshd start, а service все остальное stop.
И к тому же, так неинтересно… :-) Куда как приятнее наворочать фаервольных скриптов, чем сервис выключть… :-)
Good Luck,
UT
Угумс, это точно, виноват..
отвлёкся в тот момент :))
«-p tcp» указывает на то, что прописано в заголовке ip-пакета, т.е. глядеть на значение поля пакета.
«-m tcp» указывает на то, чтобы подключить расширения обработки пакета tcp-специфичными правилами. автоматически не выполняется при указании «-p tcp"! но так же нигде не сказано, что оно для своей работы требует указания этого самого «-p tcp».
Разница очень тонкая, и правило без указания «-m tcp» считается корректным, однако, при попытке выполниться, оно не срабатывает.
Особенно это достаёт в конфиге. Ни на что не ругается, а при попытке COMMIT выдаётся ошибка. из-за отсутствия «-m tcp».
Из командной строки поведение странноватое — в зависимости от версии то срабатывает, то не срабатывает…
Подожди, не собирай все в одну кучу. Подгрузка модуля (-m) нужна если ты собираешься использовать какие-то специфичные для этого модуля функции, чего я здесь не наблюдаю. Что, без -m tcp не сработает --dport или jump, что ли?
А commit’а тута нету…
Good Luck,
UT
Насколько я понял из прочтенной документации, параметр «-m» позволяет явно указать загрузку разширения для обработки конкретного протокола или чего-нибудь еще. Рекомендуеться явно подгружать разширения с которыми необходимо работать, хотя эти самые резширения должны подгружаться автоматически.
Приплыли…
Судя по тому же самому `man iptables` --sport и --dport являются параметрами 'match extensions’. и только для '-m tcp' и '-m udp’. есть еще --sports и --dports, но это расширение '-m multiport’.
Тут, я надеюсь, путаницы никакой нет?
Далее.. хоть и написано в мане, что при указании '-p tcp' грузятся расщирения '-m tcp’, на практике этого не происходит при работе с конфигом. Может из командной строки это и работает, но вот в конфиге — нет. ((сколько я матов по этому поводу раз в пару месяцев выдаю.. именно по этому поводу, когда в очередной раз, путём комментирования последовательно строчек конфига не наткнусь на строчку без злополучного '-m tcp’))
А commit при вызове из шелла всегда есть. неявный, без него — никак нельзя ;)
Ну ладно, уговорил, буду знать. Хотя в моих скриптах для router’а все работает и так. Ну а если перестанет, буду знать где смотреть. Спасибо.
Good Luck,
UT
Ага, таже фигня. Всегда добавлял правила из командной строки без указания '-m tcp’. Затем сохранял всё это дело в конфиге командой iptables-save. Сейчас заглянул в этот в файл конфига — этот самый '-m tcp' добавился сам автоматически.
Гы! И правда!
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