iptablesでもっとしっかりセキュリティを固めてみる メモ書き

投稿日:2016年09月21日
最終更新日:

こちらのページは、「CentOS7の仮想サーバー構築にチャレンジ その4」にて使用したiptablesの設定について多少解説を加えるページです。

もくじ

  • 設定の方針
  • 共通の設定
  • 個別の設定
  • 完成形

設定の方針

今回iptablesを設定するにあたっては、「まず全部のポートを塞いで、後から個別に開ける」方針で行きます。ここで「とりあえず全部のポートを開けて、後から個別に塞ぐ」考え方で行くと、塞ぎ忘れた穴から侵入者が堂々と入ってきます。なのでとりあえず全部塞ぐのがおすすめです。…セキュリティを多少犠牲にしてでも楽をしたい方はこちらへ。

共通の設定

というわけで、早速iptablesを組んでいきます。設定内容は、基本的に「*filter」と「COMMIT」の間に書きます。…CentOS7でiptablesを有効化する手順はCentOS7の仮想サーバー構築にチャレンジ その4を参照してください。

今回はfilterテーブルでパケットの通過・遮断の制御を行います。設定ファイルに直接書き込む場合はこんな感じになります。

ここにチェーンと呼ばれるルールを書き込んでいきます。チェーンは

  • INPUT(自分のサーバーに入ってくる)
  • OUTPUT(自分のサーバーから出て行く)
  • FORWARD(自分のサーバーを経由する)
の3種類に別れます。パケットの取り扱いは、
  • ACCEPT (通す)
  • DROP (相手に通知せずに捨てる)
  • REJECT (エラーメッセージを送りつけて捨てる)
  • LOG (ログを取る)
の4つになります。

filterテーブルしょっぱなのこの3行が、全体に対して適用するルールです。とりあえず全部塞ぐので、全部DROPします。[0:0]は適用するポート番号の範囲を指定し、今回のように[0:0]表記の場合は全ポート番号に適用されます。後から個別適用のルールで必要なポートを開けていきます。

次はこの部分の解説です。ここから個別にルールを適用していきます。この辺で各種オプションの解説を入れます。

  • -p プロトコルを指定(tcp,udp,icmp 省略した場合は全部)
  • -s パケットの送信元(IPアドレスや範囲等で指定 192.168.0.1 や 192.168.0.0/24 省略した場合は全部)
  • -d パケットの宛先(指定法は -s と同じ)
  • -i パケットを受信するインターフェース(eth0,eth1,lo(ローカルループバックアドレス 自分自身)など)
  • -o パケットを送信するインターフェースを指定(-iと同じ)
  • -j パケットの取り扱い(ACCEPT,DROP,REJECT,LOG) 最後に書かれる事多し
こういう感じのパラメータを指定していきます。実際の例で見てみましょう。

…この2行は決まり文句だと思ってもいいでしょう。すでに通信しているパケットを許可するものです。個別ルールにマッチすればそちらが適用されます。

この2行は自分自身との通信を許可するものになります。INPUT(入ってくる)の時は-i(パケットを受信するインターフェース)で、OUTPUT(出て行く)の時は-o(パケットを送信するインターフェース)で、lo(自分自身)を指定しています。最後に-jパラメータで許可します。

ICMPプロトコルの通信を許可します。これもまあ決まり文句といえます。

…この部分についてはさくらインターネットのVPSヘルプにあるものをそのまま引っ張ってきたものになります。サーバーへの攻撃対策の3行です。詳しくはiptablesの設定方法|さくらインターネット公式サポートサイトでおねがいします。

個別の設定

ここからはサーバーをどのように運用するかによって様々な設定が出てきますが、基本を押さえておけばまあどうにかなると思います。今回はSSHについて設定します。ポート番号は22番になります。自分で変更した場合はそちらに従って下さい。

ここで–dport,–sportについて少し触れます。–dportは送信先のポート番号を、–sportは送信元のポート番号を指定します。今回はSSHなのでどちらも22番を指定しています。53番はDNS,80番はHTTP,443番はHTTPSになります。これらはyumを使用する上で開放する必要があるポートになります。また、家庭内LAN環境でテストサーバーとして運用している場合など、サーバーのIPアドレスがDHCPで割り当てられている場合は、67番ポートも開けないとyumが使えませんでした(実際にこれで私は2時間ほど浪費しました)。

完成形

冒頭で示したこれが一応の完成形になります。以下は参考にさせていただいたサイト様の一覧です。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

Bitcoin:

Monacoin:

Litecoin: