Как добавить 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

2 ответа

Решение

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 по необходимости автоматически).

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

Или вы могли бы подражать многопользовательскому поведению, создавая новую таблицу для фильтрации вашего заданного списка 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, это будет 4-й инструмент командной строки межсетевого экрана для linux (после ipfwadm, ipchains и наших текущих iptables).

Другие вопросы по тегам