Centos 6.4では、22、80、および443を除くすべての着信ポートをブロックします。80(外部)は8080(内部)にリダイレクトする必要があります。 443(外部)は8181(内部)にリダイレクトされます。次のコマンドを使用しました。
service iptables stop
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8181
service iptables save
service iptables restart
ただし、ポート8080および8181には引き続きアクセスできます。ポート8080および8181を外部でブロックし、80および443からのリダイレクト用に内部的に開いている方法はありますか?
パケットをドロップするルールはありません。これを行うには、INPUT
チェーンのデフォルトポリシーをDROP
に設定します。デフォルトではACCEPT
です。
iptables -P INPUT DROP
これを行うと、発信接続が機能しなくなることに気付く場合があります。
INPUT
チェーンの上部で、すでに確立されているACCEPT
トラフィックにルールを追加できます。
次のようにしてください。
iptables -A INPUT -m state --state ESTABLISHED,RELATED
RELATED
部分は、他の関連するトラフィックを通過させます(たとえば、ESTABLISHED
接続で発生した何かの結果として送信されたICMPパケット)
新しいチェーンを作成してから、このチェーンにルールを追加する方がよいでしょう。あなたはそれを行うことができます:最初のDROP着信/転送/発信トラフィック
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
次に、判断がACCEPTのチェーンを作成し、内部にルールを追加します。
iptables -N myrules # Create a new chain
iptables -A myrules -m state --state ESTABLISHED,RELATED
iptables -A myrules -j LOG --log-prefix="Myrules: " # Just a log prefix
iptables -A myrules -j ACCEPT # Packets matching this rule will be ACCEPTed
iptables -A INPUT -i eth0 -p tcp --dport 22 -j myrules
次に、リダイレクトルールを追加します。
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8181