Прозрачное проксирование iptables

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

Прозрачное проксирование

Основной сетевой экран в Linux серверах — iptables. Над iptables существует несколько надстроек, позволяющих работать на более высоком уровне. Например, ufw (Ubuntu FireWall) и firewalld.

Прозрачное проксирование проще всего реализовать работая непосредственно с iptables.

Рассмотрим ситуацию при которой служба ssh на сервере работает на порту, отличном от стандартного — пусть это 126 порт.

Настроим маршрутизацию таким образом, что при запросе с адресов из сети 182.402.104.0/24 сервер будет отвечать по стандартному 22 порту. При обращении с любого другого адреса служба будет работать на порту 126, а на при обращении на 22 будет возникать ответ Conection refused.

Для этого потребуется пробросить порты и учитывать при фильтрации адрес источника подключений.

iptables -t nat -I PREROUTING —src 182.402.104.0/24 -p tcp —dport 22 -j REDIRECT —to-ports 126

iptables-save

Прозрачное проксирование предполагает, что клиент из сети 182.402.104.0/24 не узнает о том, что подключается на 126 порт пока не окажется на сервере и не выполнит команду netstat.К такому решению часто приходится прибегать когда нужна безопасность, при этом имеются какие-то внешние сервисы, обращающиеся только по стандартному порту.

Порт определить используя nmap не получится, обычно таким образом получается успешно защититься от подбора паролей ssh методом грубой силы.

Прозрачное проксирование также используется в специализированных решениях для контроля трафика, в частности — SQUID.