Ограничение порта MySQL 3306 для локального хоста с помощью IPTABLES

Я пытаюсь запретить порту MySQL 3306 на Linux-машине любые соединения с чем-либо, кроме localhost, чтобы предотвратить внешние атаки. у меня есть следующий код, я не уверен, что это правильно:

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

iptables -A OUTPUT -p tcp -s localhost --dport 3306 -j ACCEPT

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

iptables -A OUTPUT -p tcp --dport 3306 -j DROP

мой другой вопрос: правильно ли предоставлять доступ только к локальному хосту? это стандартный выделенный веб-сервер Centos с более чем 30 доменами на нем.


person califmerchant    schedule 12.06.2012    source источник
comment
Почему бы просто не использовать разрешения при настройке пользователя mysql, чтобы разрешить этому пользователю входить только с локального хоста, чтобы это было что-то вроде mysqluser@localhost вместо mysqluser@%   -  person bretterer    schedule 12.06.2012
comment
Простите, но почему бы вам просто не использовать сокеты Unix и --skip-networking, если вы не хотите, чтобы порт был открыт?   -  person Wladimir Palant    schedule 12.06.2012
comment
Ваши правила iptable работают, я только что попробовал их.   -  person guylabbe.ca    schedule 07.10.2015


Ответы (3)


Почему бы просто не отключить сетевое взаимодействие с MySQL?

Добавьте в my.cnf:

skip-networking

Предполагается, что это также даст незначительное улучшение производительности за счет принудительного подключения через каналы, что пропускает множество тестов, используемых для сетевого раздела. Обратите внимание, что после внесения изменений вам потребуется использовать локальный хост, а не 127.0.0.1.

person Will Morgan    schedule 12.06.2012

iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

Приведенное выше правило предназначено для преобразования двух строк в одну.

Ответ на ваш второй вопрос:

Если вы не хотите предоставлять доступ к mysql не с локального хоста, то лучше настроить таким образом. Простой. :-)

person Nikunj MAster    schedule 15.06.2012
comment
все равно нужно другое правило, чтобы отбрасывать любые соединения, которые не соответствуют первому правилу, верно? - person Manticore; 13.05.2019

iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

Если вы хотите удалить фильтрацию, используйте это:

iptables -D INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -D INPUT -p tcp --dport 3306 -j DROP

Примечание. В обоих случаях может потребоваться root, поэтому: sudo iptables (...)

person KKKas    schedule 19.05.2016