У меня есть несколько правил iptables
, которые перенаправляют запросы на порт 80 на наш сервер приложений (GlassFish) через порт 8080 (а также порты SSL, но я их не упомянул). для простоты).
В то время как то, что у нас есть, работает нормально (и лично у меня нет проблем с этим), порт 8080 также открыт для внешнего мира, если кто-то пожелает указать его в URL-адресе. Было предписано, что порт 8080 должен быть закрыт от доступа из внешнего мира и только 80 должен быть открыт.
Я не хочу менять прослушиватель на сервере приложений (поскольку для использования порта 80 требуются повышенные разрешения для пользователя, запускающего сервер приложений), а прослушиватель на порту 8080 должен знать IP-адрес источника package, поскольку приложение проверяет запросы к приложению (т.е. мы не можем изменить исходный 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