LINUX.ORG.RU
решено ФорумAdmin

Как правельно настроить iptables

 , ,


0

1

Добрый вечер, Стоит задача на выделенном сервер Debian настроить iptables так что бы:

  1. Запретить все входящие, кроме несколько IP адресов и только с 80 и 443 портами

  2. Разрешить все входящие, только по 23 порту

  3. Разрешить всем у кого есть SSH key

  4. Как будет обстоять дела во время установки различных пакетов?

Спасибо.


Запретить все входящие, кроме несколько IP адресов и только с 80 и 443 портами

В цепочке INPUT разреши в начале нужные порты, указывая в них нужные тебе исходящие IP адреса, можно воспользоваться ipset, а следующим правилом заблокируй всё.

Ты хочешь разрешить все пакеты с портом назначения 80 и 443 или портом источника?

Только среди разрешённых портов не забудт указать ssh порт.

Разрешить все входящие, только по 23 порту

Пропиши правило разрещающее прохождение паетов в цепочке INPUT с портом назначения 23. Ты хочешь все входящие на 23 порт назначения или всех входящие с 23 портом источника?

Разрешить всем у кого есть SSH key

Что разрешить? Ты можешь написать правила, разрешающие всё для приложений, запущенных от конкретных пользователей.

Как будет обстоять дела во время установки различных пакетов?

Подумай.

infomeh ★★
()

по сути

1,2)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,23 -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s ip1,ip2,ip3 -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  1. в /etc/ssh/sshd_config
AuthorizedKeysFile      %h/.ssh/authorized_keys
PasswordAuthentication no

service ssh restart

  1. что?
sanekmihailow
()
Ответ на: комментарий от sanekmihailow

1, 2. Пару вопросов: а) Если будет «**iptables -P OUTPUT DROP» и «iptables -A OUTPUT -s ip1,ip2,ip3 -p tcp -m multiport –dports 80,443 -j ACCEPT**» - будет так работать?

б) Как FORWARD чтобы весь OUTPUT перенаправлял на 192.168.1.150 на порт 4422 (т.е. трафик по другому не должен уходить)

в) А почему тут описали только «tcp», «udp» чисто мне на своё усмотрение аналогично делать, или как бы не требуется? (может глупый вопрос)

3. А тут если пользователя IP не будет в iptables как ACCEPT, всё равно авторизация получится? Главное наверное что бы порт был да?

4. Тут имел виду что напр. при установке пакета, ведь происходит «OUTPUT», и далее уже сервера принимает пакеты, т.е. INPUT, так вот исходя из наших правил 1 и 2, не будет ли тут проблемма? (может глупый вопрос)

Спасибо большое, и извините новычка, все через это проходили, только осваиваюсь. Вот уже читаю _https://blld.ru/716-nastrojka-iptables-dlja-chajnikov.html (не реклама)

Hooder
() автор топика
Ответ на: комментарий от Hooder

Вот уже читаю

Не то читаете. Гуглим iptables tutorial.

Разрешить все входящие, только по 23 порту

«Флаг вам в руки, барабан на шею, электричку на встречу»

anc ★★★★★
()
Ответ на: комментарий от anonymous

Ну я не силен в iptables (это первая строчка что я нагуглил + немного уменьшил объем правил, но насколько я понял, чтобы например к мускулю обращаться по 127.0.0.1)

sanekmihailow
()
Ответ на: комментарий от Hooder

1,2 ) не знаю заем вам блочить исходящий трафик, если будет DROP, то все что в INPUT придется делать и в OUTPUT только уже --sports

б) использовать PREROUTING

в) для портов которые вы описали обычно используется tcp порт

  1. что?
sanekmihailow
()
Ответ на: комментарий от sanekmihailow
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Вместо этих комбинаций флагов, а также многих, которые Вы не перечислили, достаточно воспользоваться правилом:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
Его нужно поставить первым. Вторым, а не последним как у Вас, на мой взгляд, нужно поставить:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Как Вы наверное заметили, в первом правиле нет -p tcp. Второе правило должно быть вторым, потому что под него попадает более 90% входящего трафика, соответственно только менее 10% оставшихся входящих пакетов будут проходить по следующим правилам - нам ведь не нужна лишняя нагрузка?

ЗЫ: почитайте Towards the perfect ruleset.

funky
()

funky, sanekmihailow - Спасибо вам большое.

Попробую всё суммировать и приписать комментарий чтобы ясно мне было, елси ошибся подправьте плз

# ???
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# ???
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Дропнуть вход.
iptables -P INPUT DROP

# Дропнуть перенаправление
iptables -P FORWARD DROP

# Разрешить исход.
iptables -P OUTPUT ACCEPT

# Разрешить локальный вход.
iptables -A INPUT -i lo -j ACCEPT

# Разрешить вход. для 22 и 23 портами
iptables -A INPUT -p tcp -m multiport --dports 22,23 -j ACCEPT

# Разрешить вход. для ip1,ip2,ip3, только с 80,443 портами
iptables -A INPUT -s ip1,ip2,ip3 -p tcp -m multiport --dports 80,443 -j ACCEPT

# ???
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Тут всё верно? а Как быть с: 1.а) Некоторые приложение только через ВПН доступны, который будет настроен на ВПН сервере 192.168.1.150, поэтому заранее хотелось бы знать как прописать подобное

1.б) На сервере стоит приложение, которое иногда в фоновом режиме или по действию пользователя делает запрос на постороний сервер, поэтому хотелось бы перенаправлять всё на 192.168.1.150 на порт 4422. Подскажите как настроить PREROUTING

  1. ТЫ предоставил доступ по ключам ССШ, это ясно, но исходя из того что у нас все ИП под ДРОП, ССШ всё равно будет работать, если разрешить его порт да? /etc/ssh/sshd_config
AuthorizedKeysFile      %h/.ssh/authorized_keys
PasswordAuthentication no
  1. Все выше правило не будут конфликтовать с сервером когда напр. надо будет установить какой-нибудь пакет по ССШ, т.к. тут ведь и правило будет работать как для INPUT так и для OUTPUT.

Спасибо!

П.С. Не могу понять зачем писать посты которые не о чём, я знаю что всё возможно, и флаг мне в руки, но руки пока не ровные поэтому и попросил помощ у опытных.

Hooder
() автор топика
Ответ на: комментарий от Hooder

Не могу понять зачем писать посты которые не о чём, я знаю что всё возможно, и флаг мне в руки, но руки пока не ровные поэтому и попросил помощ у опытных.

Если это намек на мой пост то
1. Я вас направил по правильному направлению, читаем iptables tutorial это не так уж сложно.
2. Насчет «флага и барабана» открывать телнет в мир не самая лучшая идея.

anc ★★★★★
()
Ответ на: комментарий от Hooder

Ксттаи при ребуте сервера, правило ведь будет работать?

Если не озаботились сохранением, то скорее нет чем да.

anc ★★★★★
()

Кто как посоветует где и как хранить правило, что бы после ребута не терять и пакеты не проходили? Читаю и есть несколько вариантов вроде

Можно так:

$ touch /etc/network/if-up.d/iptables.conf
$ chmod +x /etc/network/if-up.d/iptables.conf

Вот интереснно вроде что бы пакет не прошёл бы https://zveronline.ru/archives/875

$ vim /etc/network/interfaces

# Восстановление правил после поднятия интерфейса
post-up iptables-restore < /etc/iptables/iptables.rules

Или так: https://codebeer.ru/sohranitvosstanovit-nastrojki-iptables/

$ vim /etc/rc.d/rc.local

Пожалуйста кто-то проверьте и припишите комментарий к тем правилом которые я не описал.

Спасибо.

Hooder
() автор топика
Ответ на: комментарий от Hooder

Пожалуйста кто-то проверьте и припишите комментарий к тем правилом которые я не описал.

Вовка ты ли это? Забыл приписать, что за тебя ещё есть надо.

anc ★★★★★
()
Ответ на: комментарий от Hooder

Ну так начните с изучения русского языка. У меня было(есть) -1(минус один) по русскому ещё с детского сада, но даже меня ваше изложение «приводит в замешательство».

anc ★★★★★
()
Ответ на: комментарий от anc

Если я начну по Италианский говорить ты поймёшь? Врятли, как знаю Русс, так и пишу, извините что тут родился :)

Hooder
() автор топика
Ответ на: комментарий от Hooder

Если я начну по Италианский говорить ты поймёшь?

Если задача будет изложена грамотно то думаю гуля справиться с переводом. Если же это как у вас то думаю, что язык изложения не имеет значения.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.