Назад | Перейти на главную страницу

Как я могу заблокировать порт 6379 для внешнего трафика в ubuntu?

Я хочу заблокировать доступ к порту 6379 на моем сервере, но я все еще хочу подключиться к нему внутренне. Приложение redis-server работает на этом порту, и я хочу подключиться к нему только локально (127.0.0.1). Как я могу это сделать?

Для этого вам необходимо убедиться, что ваши правила IPTables настроены правильно. Ubuntu обычно оставляет свои серверы открытыми по умолчанию, поэтому я до сих пор не рекомендую их использовать в качестве серверов, если вы не знаете, как это сделать правильно.

Я полагаю, что ваш iptables -L -nv выглядит примерно так, да?

# iptables -L -nv
Chain INPUT (policy ACCEPT 4M packets, 9M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8M packets, 4M bytes)
 pkts bytes target     prot opt in     out     source               destination

Он пуст и широко открыт. Руководство Ubuntu IPTables, вероятно, немного поможет в этом. (https://help.ubuntu.com/community/IptablesHowTo)

Я рекомендую что-то вроде этого, которое разрешает SSH на любом интерфейсе и tcp 6379 на любом интерфейсе, кроме того, который вам не нужен:

*filter
:INPUT DROP [92:16679]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [203:36556]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -i lo -p udp -m udp --dport 6379 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT

Затем вы сохраните этот файл в /etc/iptables.rules.

Очевидно, следует добавить любые другие порты, которые вы хотите открыть.

Примечание: для ясности я добавил конкретные строки 6379. Нижний пункт ACCEPT прямо перед COMMIT фактически разрешает это, потому что все петлевые соединения должны быть разрешены в системе Linux для правильной работы.

Вы также захотите поместить правила в свой файл / etc / network / interfaces, чтобы гарантировать, что они будут добавлены при запуске интерфейса, а не позже в процессе загрузки. Рекомендуется добавить что-то вроде этого:

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules

Изменить: чтобы изначально загрузить эту конфигурацию, вам необходимо запустить команду iptables-restore, указанную выше:

iptables-restore < /etc/iptables.rules

Что ж, я бы посоветовал использовать «несложный межсетевой экран» (ufw), который также рекомендуется каноническим. Чтение и запись iptables слишком сложно для случайных задач блокировки портов.

Посмотреть здесь: https://wiki.ubuntu.com/UncomplicatedFirewall

Что-то вроде

iptables -A INPUT -s 0.0.0.0  -i eth0 --protocol tcp --dport 6379 -j DROP

Должно сработать.

Для более новых версий Redis вы можете использовать bind 127.0.0.1 в redis.conf сделать это напрямую без дополнительной настройки iptables

видеть этот статья