Linux CentOS ipablesのINPUTとOUTPUTにおけるdportとsportについて

最近、仕事上Linuxを操作するようになりました。


これまでWindowsサーバを構築する事が多かったので、色々と勉強になっています。


Linuxを操作するにあたり、理解するのが意外と難しいのがiptables


これまでWindowsサーバを構築している時は、ファイアウォールは無効にして、ネットワーク側で制御する事が多かったのですが、ユーザーによっては、サーバで制御する場合もあると思います。


特に、Linuxの場合、サーバーを公開している事が多いので、不要な通信はiptablesで遮断します。

 


ただ、いきなりiptablesを理解するのは中々、難しく、やはり実機を使いながら動作確認したほうが経験として活きると思います。


そして、iptablesを理解する上で、難しく感じたのがdportとsportの違いについてです。


こちらは、理解するのに参考になったubuntuのサイトです。

Iptables rules should always start with dport ?(ubuntuforums)

http://ubuntuforums.org/showthread.php?t=2157637


質問として、”Iptables rulesは常にdportからスタートしなければならないの?”というものです。


iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
(どうしてdportからsportなのか?)

このルールを以下のようにする事もできます。
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state ESTABLISHED -j ACCEPT

( どうしてsportからdportではないのか?)


回答として、

「OUTPUT」と「dport」組み合わせは、リモートシステムのポート443を宛先として自システムから送信するパケットに適用されます。
【Local Server】 →  port443【Remote Server】

「INPUT」と「sport」組み合わせは、リモートシステムのポート443から送信され、自システムで受信されるパケットに適用されます。
【Local Server】 ←  port443【Remote Server】

「OUTPUT」と「sport」組み合わせは、自システムのポート443から送信されるパケットに適用されます。
【Local Server】port443 →  【Remote Server】

「INPUT」と「dport」組み合わせは、自システムのポート443充てに送信されるパケットに適用されます。
【Local Server】port443 ←  【Remote Server】

最初は理解するのが意外と難しいですが、やはり実機で触りながら動作確認すると記憶に残りやすいと思います。