LINUX.ORG.RU

Почему не срабатывает команда iptables?

 ,


0

3

На порте 3308 висит mariadb в докере

пытаюсь заблочить доступ извне:

iptables -A INPUT -p tcp  -destination-ports  3308 -j DROP


Все равно подключаюсь без проблем по ip впски

ставить bind-address не могу, т.к. он д.б. не один

а iptables не срабатывает. Почему?

★★★★★

ты или спать хочешь или не внимателен, во первых то что ты написал это для мультипортовых правил и оно не сработает так как ты пропустил -m multiport и одно тире, если писать через мультипорт всё же хочешь то это так должно быть:

iptables -A INPUT -p tcp -m multiport --dports  3308 -j DROP
для одного порта лучше
iptables -A INPUT -p tcp --dport 3308 -j DROP
, если не работает попробуй заменить -А на -I, если сработает/не сработает то делай вывод своих цепочек через iptables -S до понимания проблемы

vasyan
()
Ответ на: комментарий от rumgot
# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:3031 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8888 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8086 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8083 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:3000 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:4002 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:4001 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:4000 state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8001 state NEW
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,ACK/FIN
ACCEPT     tcp  --  anywhere             anywhere             multiport dports 8000

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:8126
ACCEPT     udp  --  anywhere             172.17.0.2           udp dpt:8125
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:2024
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:2023
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:2004
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:cfinger
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:http

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere




Правила блокировки mysql тут нет (удалил), т.к. не работает.
Но вообще же вроде стоит не пускать все что явно не разрешено.
По крайней мере если поднимаю веб-сервер на произвольном порту - доступа нет - только на явно прописанных. А вот порт MariaDB сразу открытый. Хз в чем дело, не пойму пока.

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 2)
Ответ на: комментарий от vasyan

Да я кучей способов пробовал какие находил - в т.ч.

iptables -A INPUT -p tcp --dport 3308 -j DROP

Без толку. Все равно порт открыт А вот на -I не менял. Надо попробовать

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 1)
Ответ на: комментарий от Qwentor

Но вообще же вроде стоит не пускать все что явно не разрешено.

У тебя дальше в INPUT и FORWARD стоят правила, где разрешено все:

ACCEPT all  — anywhere anywhere

Если ты все это пытаешься делать на хосте, а не в контейнере, то правила надо добавлять в цепочку FORWARD.

ACCEPT tcp  — anywhere anywhere tcp dpt:8083 state NEW

Весту уже обновил?

Deleted
()
Ответ на: комментарий от ozz_is_here

Он пишет, что у него база в контейнере поднята. Т.е. правила нужно в цепочку FORWARD писать, не?

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

Для чего базу в контейнере поднимать? Но это уже другой вопрос и выходит за рамки треда.

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

Внутри докера она на 3306 - наружу смотрит 3308

docker run --name 10.1.23-mariadb -p 3308:3306 -v /opt/test/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10.1.23
Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 1)
Ответ на: комментарий от anonymous

Для того чтобы было 2 базы. Прод и тест. Прод без контейнера

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 1)
Ответ на: комментарий от Qwentor

Разбираться самостоятельно не хочешь?

Ты когда контейнер запустишь командой выше: Оно тебе добавит правило в цепочку докер...

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:3308

Ну и посмотри с какой цепочкой 'chain DOCKER' связана.

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

Есть такое, только 3306

ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:mysql


Я ж говорю в контейнере порт 3306, на хост он проброшен как 3308 - вот его и надо заблочить, а не выходит

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

https://fralef.me/docker-and-iptables.html

Там обратная совсем задача - выставить порт внутри контейнера наружу. А у меня заблокировать, причем не внутри контейнера, а тот который торчит на хост

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

Да епт скинул, чтоб ты посмотрел насчёт портов.

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

В цепочке Forward с ключом I . Чтобы правило запрещающее отправку пакетов на этот порт, было выше разрешенного. Написал же посмотри к чему цепочка Docker относится. Ты конечно упёрся и пытаешься в input добавлять и удивляешься почему не работает)

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

Спасибо всем, тупил нещадно

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