お品書き
書き直し中…
とりあえず、中へどうぞ
↓↓↓
スポンサーリンク

ポートの話

超初心者のためのLinux入門
◇dportとsportの違い ~ポートについて覚書~

久々にLinuxのサーバーをいじる機会があった。(Mintではなく、Debianサーバー)
古いPCをLinuxを使ってファイルサーバーにしているが、一年以上、一切何も触らなくてもトラブルもなく稼働し続ける。触る機会が少ないので、たまに触ると完全に操作方法を忘れてしまっている。。。

しょっちゅう再起動を要するWindowsとくらべてみたら、凄いことだと思う。
でも考えてみれば、家電製品なんて、本当はそうでなくては困る、むしろ当たり前の事なのかも知れない。

今回はsquidを使ってプロクシサーバーの設置試験。(※透過プロキシではない。)
色々、もろもろの設定は済んだ(意外と簡単、良い時代になった)けど、最後、iptablesの設定でハマった。

全部解除した状態ではもちろん通信できるが、それではセキュリティ上問題がある。ファイアウォールは設定しない訳にはいかない。完全ローカルネットワークならいいけれど、インターネットに繋がっているので・・・。

また次の時も忘れてそうなので、覚書メモ。

まず基本的な説明、おさらい。
iptablesのオプションのポートの指定で使う、--sportと--dportの "s" というのは "source" の略、"d"と言うのは "destination" の略なので、sportは送信元、dportは宛先、と言う事ですね。

そして、INとOUTの二種類の方向があるので、
INPUT(つまり自分に向かってくる方向)では sport は相手先、dport は自分と言う事に
OUTPUT(つまり自分から出て行く方向)では sport は自分、dport は相手と言う事になる。

※ここでポイント
ポートというのは、違う番号同士で通信ができる。ここを勘違いしていたので、間違ってしまった(笑)

そもそもポートの番号というのは、サーバー側(サービスを提供する側)で番号が決まっているだけで、そこに接続してくるクライアント(サービスを受ける側)は、毎回適当な番号が割り振られて、通信が終わると閉じられるようになっているのだそうな。

だから、指定するのはサーバー側のポート番号だけで、クライアント側のポート番号を明示する必要はない。
しかも、INとOUTでその番号の指定の仕方が入れ替わる。

#そういえば、何年か前、同じ事でハマった記憶が、ある、ような、気がしてきたなぁ・・・(笑)

ということで、iptablesの設定

●とりあえず、ルールクリア&全部拒否
---------------------------------------------------------------------------------------
#設定の初期化
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z

#デフォールトポリシーの設定(全てDROP)
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
---------------------------------------------------------------------------------------

●ローカルのパソコンは全部許可
※LAN二枚刺しで、インターネットに繋がっている側とローカル側が完全に分離されている構成なので、インターフェースでバッサリ区別した。
---------------------------------------------------------------------------------------
#ローカルエリアの許可(インターフェース指定)
/sbin/iptables -A OUTPUT -o eth0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j ACCEPT
---------------------------------------------------------------------------------------

●WEB閲覧の許可
---------------------------------------------------------------------------------------
#DNSの許可
iptables -A OUTPUT -i eth1 -p udp --dport 53 -j ACCEPT

#web閲覧の許可
/sbin/iptables -A OUTPUT -o eth1 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -p tcp --dport 443 -j ACCEPT

#接続戻りパケットを許可
/sbin/iptables -A INPUT -i eth1 -m state --state ESTABLISHED -j ACCEPT
---------------------------------------------------------------------------------------

おっと、忘れていた
●NTPサーバーの許可
---------------------------------------------------------------------------------------
#NTPの許可
/sbin/iptables -A OUTPUT -i eth1 -p udp --dport 123 -j ACCEPT
---------------------------------------------------------------------------------------

他にもいくつか、セキュリティ上の対策設定をして、終了。

コメント