2019-02-27
Задача: разрешить доступ к порту только по определенным ip на примере mysql на debian Смотрим какие порты открыты
netstat -tuwpln
результат у меня:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8980 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2298 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8878 0.0.0.0:* LISTEN 1498/python
tcp6 0 0 :::8980 :::* LISTEN -
tcp6 0 0 :::2298 :::* LISTEN -
tcp6 0 0 :::443 :::* LISTEN -
tcp6 0 0 :::8878 :::* LISTEN 1498/python
tcp6 0 0 :::80 :::* LISTEN -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 0.0.0.0:61726 0.0.0.0:* -
udp6 0 0 :::60245 :::*
Порт 3306 открыт и все могут коннектится, что очень плохо. Настраиваем Netfilter. Смотрим какие у нас настройки фаервола
iptables -L -n
И сохраняем их на всякий случай
iptables-save > /etc/network/iptable.rules
Создаем новую цепочку MYSQL
iptables -N MYSQL
и добавляем правила
iptables -A MYSQL -s 127.0.0.0/8 -j ACCEPT
iptables -A MYSQL -s 92.x.x.x -j ACCEPT
iptables -A MYSQL -j DROP
iptables -A INPUT -p tcp -dport 3306 -j MYSQL
Проверяем если все ок снова выгружаем
iptables-save > /etc/network/iptable.rules
и добавляем в атозагрузку
nano /etc/network/if-pre-up.d/iprules
Содержимое
#!/bin/sh
iptables-restore < /etc/network/iptable.rules
exit 0
и делаем его исполняемым
chmod +x /etc/network/if-pre-up.d/iprules
Если надо удалить правило
iptables -D INPUT 3