LinuCレベル3 303試験の例題と解説
328.3パケットフィルタ
LinuC 303試験の試験範囲から「328.3 パケットフィルタ」についての例題を解いてみます。このテーマは【重要度5】です。パケットフィルタにIPセットを利用すると、大量の接続元のアクセス制御を一つのルールで記述できます。利用できるようになっておきましょう。
例題
「# ipset list」 コマンドの結果が以下であるとします。
Name: BAN_IP
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 120
References: 0
Number of entries: 0
Members:
このIPセットのメンバーにIPアドレス10.1.1.1 を追加するコマンドについて、正しいものを選択してください。
- # ipset create BAN_IP 10.1.1.1
- # ipset add BAN_IP 10.1.1.1
- # ipset del BAN_IP 10.1.1.1
- # ipset save BAN_IP 10.1.1.1
※この例題は実際の試験問題とは異なります。
解答と解説
答えは「2. # ipset add BAN_IP 10.1.1.1」です。
ipset は、様々な接続元に関するIPアドレスなどの情報をIPセットというデータとして管理するコマンドです。大量の有害な接続元からのアクセスをフィルタする必要がある場合、一つ一つの接続元に対してパケットフィルタのルールを作る代わりに、IPセットを参照するルール一つを作るだけでよくなります。
IPセットのデータ内容や保存形式には様々なタイプがあります。利用できるタイプ名は、以下のような形式です。
method:datatype[,datatype[,datatype]]
method は、データの保存形式です。bitmap、hash、listが用意されています。dayatypeは1つのIPセットに格納するデータの種類です。一つまたは複数指定できます。
ip、net、mac、port、ifaceが用意されています。
ip … IPアドレス
net … サブネットワーク指定のIPアドレス
mac … MACアドレス
port … ポート番号
iface … インターフェース名
IPセットは、以下の構文でコマンド実行すると作成できます。
# ipset create SET_NAME TYPENAME
TYPENAMEは上記のタイプ名を指定します。
作成したIPセットにエントリを追加するには、以下の構文でコマンド実行します。
# ipset add SET_NAME ENTRY-DATA
IPセットからエントリを削除する場合は、以下の構文でコマンド実行します。
# ipset del SET_NAME ENTRY-DATA
IPセットの状態を表示するためには、以下のコマンドを実行します。
# ipset list [SET_NAME]
IPセットのデータは、メモリに保存されます。そのため、サーバ再起動によってデータは消失します。IPセットの情報をファイルダンプへするには、以下のコマンドを実行します。
# ipset save [SET_NAME] [-f FILENAME]
ファイルからリストアする際は、以下のコマンドを実行します。
# ipset restore [-f FILENAME]
また、ipset コマンドで、例題のIPアドレスセット「BAN_IP」を作成した後、パケットフィルタのINPUT チェインに、BAN_IP のメンバに含まれるIPアドレスからの接続をすべてDROPするように設定するといったことが可能です。以下はその設定の例です。
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m set --match-set BAN_IP src -j DROP
「-m set」を指定することで、IPセット拡張モジュール(※名称は「set」)を利用する指定をします。「--match-set BAN_IP src」の部分は拡張モジュールのコマンドであり、IPアドレスセット「BAN_IP」に保存されたデータにマッチするIPアドレスが接続元である場合にDROP処理を行う、という指定です。
選択肢を一つずつ見ていきましょう。
[1. # ipset create BAN_IP 10.1.1.1]
誤りです。create コマンドはIPセットを新規作成するコマンドです。
[2. # ipset add BAN_IP 10.1.1.1]
正しいです。このコマンドを実行すると、IPセット「BAN_IP」のメンバーとして、10.1.1.1のIPアドレスを追加します。
[3. # ipset del BAN_IP 10.1.1.1]
誤りです。このコマンドはIPセット「BAN_IP」のメンバーから、10.1.1.1のIPアドレスを削除します。
[4. # ipset save BAN_IP 10.1.1.1]
誤りです。 saveコマンドはIPセットデータをダンプするコマンドです。saveコマンドの書式は、「ipset save SET_NAME」です。
例題作成者
株式会社デージーネット OSS研究室 後藤 慎司