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