У меня есть несколько правил iptables
, которые перенаправляют запросы на порт 80 на наш сервер приложений (GlassFish) на порт 8080 (а также на порты SSL, но я их оставил для простоты).
В то время как у нас все работает нормально (и у меня лично нет проблем), порт 8080 также открыт для внешнего мира, если кто-то хочет указать его в URL-адресе. Утверждено, что порт 8080 должен быть закрыт от доступа из внешнего мира, и только 80 будут открыты.
Я не хочу менять слушателя на сервере приложений (для использования порта 80 для этого требуется, чтобы ему было необходимо получить права доступа для пользователя, на котором запущен сервер приложений), а слушатель на порту 8080 должен знать IP-адрес источника пакет, поскольку приложение проверяет запросы к приложению (т.е. мы не можем изменить исходный IP-адрес на локальный).
Ниже приведена текущая конфигурация iptables
. Кто-нибудь знает, есть ли способ блокировать 8080 из общедоступного Интернета, сохраняя исходный IP-адрес в пакетах, перенаправленных с порта 80?
Большое спасибо заранее.
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# allow establishment of connections initialised by my outgoing packets
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# accept anything on localhost
iptables -A INPUT -i lo -j ACCEPT
################################################################
#individual ports tcp
################################################################
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#drop everything else
iptables -A INPUT -j DROP
################################################################
#Redirection Rules
################################################################
# redirection rules (allowing forwarding from localhost)
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
# redirection http
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080