◇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
---------------------------------------------------------------------------------------
他にもいくつか、セキュリティ上の対策設定をして、終了。
コメント