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

Как добавить доступ mysql к iptables

На одном из моих серверов я вижу это:

ACCEPT     tcp  --  distinct_server_ip               anywhere            tcp dpt:mysql

При выполнении

sudo iptables -L | grep distinct_server_ip

И с

iptables -L -n -v | grep 3306

432K   26M ACCEPT     tcp  --  *      *       mydistinctip       0.0.0.0/0           tcp dpt:3306
90  5400 ACCEPT     tcp  --  *      *       mydistinctip2       0.0.0.0/0           tcp dpt:3306

Я хотел бы включить то же самое на другом сервере, не могли бы вы помочь мне с командой, которую я должен использовать?

Я думал о чем-то вроде:

iptables -A INPUT -p tcp -s distinct_server_ip --sport 1024:65535 -d this_server_ip --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables сильно зависит от порядка ваших правил. Ваш вопрос не совсем ясен, поэтому я рассмотрю обе ваши возможности.

На ServerA, если вы хотите разрешить ServerB чтобы подключиться к нему:

iptables -A INPUT -p tcp -s ServerB --dport 3306 -j ACCEPT

И для правил выхода на ServerB (не рекомендуется), если вы хотите разрешить ему подключаться к ServerA:

iptables -A OUTPUT -p tcp -d ServerA --dport 3306 -j ACCEPT

Большое предостережение: у вас может быть что-то в INPUT или OUTPUT цепочка, которая может предотвратить обработку этих правил. Чтобы сообщить об этом, нам необходимо просмотреть все ваши правила.

Вы не можете сделать это просто, потому что iptables принимает только один IP-адрес в своих правилах (то же самое не относится к портам, они могут быть несколько сгенерированы mport модуль, который загружается iptables по необходимости автоматически).

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

Или вы могли бы эмулировать поведение multi-ip, создав новую таблицу для фильтрации вашего заданного списка ip-адресов. Например:

Chain MY_WISHLIST (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       1.2.3.4/19       0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       1.2.0.0/17        0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       1.3.0.0/16        0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       1.4.128.0/20      0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       1.5.152.0/21      0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       1.6.0.0/15        0.0.0.0/0

... и вы можете ссылаться на эту цепочку откуда угодно:

0 0 MY_WISHLIST        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 2,3,5,7,11,13,17,19

Наконец, есть новая разработка, связанная с ядром linux / сетевыми функциями, и это ipset. Ipset обрабатывает именно этот фактический недостаток (?) Iptables, это будет четвертый инструмент командной строки межсетевого экрана для Linux (после ipfwadm, ipchains и наших текущих iptables).