#9:iptables -A INPUT -i eth0 -p tcp -m state --state NEW -m multiport --dports ssh,smtp,http,https -j ACCEPT
これは「multiport」モジュールを使用したチェインであり、これによって複数のポートを指定できるようになる。「multiport」モジュールを用いることで、チェインを複数記述することなく、1つだけ記述すれば済むようになる。つまり、ssh、smtp、http、httpsごとにルールを指定するのではなく、1つのルールを指定するだけで済むようになるわけである。当然のことながら、こういった指定に対して「ACCEPT」や「DENY」、「REJECT」を適用することができる。
#10:iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 0 -j DNAT --to-destination 192.168.1.10:80
ミラーリングを行っている複数のサーバ間でロードバランシングを行いたいという場合(この例では、192.168.1.10というウェブサーバのロードバランシングを行っている)、このルールを使用することになる。このルールで大事な部分は「nth」拡張モジュールであり、これによってiptablesは「n番目(nth)」のパケットごとに対する操作を指定できるようになるのだ。上記のiptablesの記述例では、カウンタ0を使用して4番目のパケットごとに操作が適用されるようになる。この指定を拡張することで、ミラーリングしたサイトのロードバランシングを行うことが可能になる。例えば、ミラーリングされている4台のサーバが稼働しており、それらの間でロードバランシングを行いたいという場合を考えてみよう。この場合、各サーバごとに次のような指定を行うことができる。
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 0 -j DNAT --to-destination 192.168.1.10:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 1 -j DNAT --to-destination 192.168.1.20:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 2 -j DNAT --to-destination 192.168.1.30:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 3 -j DNAT --to-destination 192.168.1.40:80
見ていただくと判るように、192.168.1.10というサーバには各0番目のパケットがルーティングされ、 192.168.1.20のサーバには各1番目のパケットがルーティングされ、 192.168.1.30のサーバには各2番目のパケットがルーティングされ、 192.168.1.40のサーバには各3番目のパケットがルーティングされる。
他の方法は?
iptablesのこういった10個のルールを活用することで、あなたのLinuxサーバをよりセキュアなものにできるはずだ。Linuxにまつわること全般について言える話であるが、他の方法で同じことを行える可能性もある。しかし、ここで紹介したルールはLinuxサーバのセキュリティを向上させるうえで、そしてLinuxのセキュリティについて議論するうえでも、素晴らしい出発点となるはずだ。
この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ