iptables
ポート 80 のリクエストをポート 8080 のアプリケーション サーバー (GlassFish) にリダイレクトするいくつかのルールがあります (SSL ポートも同様ですが、簡単にするために省略しています)。
私たちが持っているものは正常に動作しますが (個人的には問題はありません)、ポート 8080 は、誰かが URL で指定したい場合、外部に対しても開かれています。ポート 8080 を外界からのアクセスから遮断し、80 のみを開放することが義務付けられています。
アプリケーション サーバーのリスナーを変更したくありません (ポート 80 を使用する場合、アプリ サーバーを実行しているユーザーの権限を昇格する必要があるようです)。ポート 8080 のリスナーは、パケットの送信元 IP をアプリケーションは、アプリケーションへのリクエストを監査します (つまり、送信元 IP アドレスをローカル IP アドレスに変更することはできません)。
現在のiptables
構成は以下です。ポート80からリダイレクトされたパケットのソースIPを保持しながら、パブリックインターネットから8080をブロックする方法があるかどうかは誰にもわかりませんか?
よろしくお願いします。
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