Ubuntu Linux

Linux/Ubuntuでファイアウォールを実現するための iptables の設定に関する覚え書きです。

 

 

iptables とは

iptables は Linux に実装されているパケットフィルタリング機能でこの iptables によって不要なパケットを拒否することでファイアウォールを実現します。

環境

Desktop (Ubuntu 16.04)

Raspberry Pi (Raspbian)

初期設定

iptables の Lオプションで iptables に設定されている規則の一覧が確認できます。

初期設定では何も設定されていません。

設定

1つずつコマンドとして実行して設定していくこともできますが、見やすさを優先してシェルスクリプトにまとめて記述します。

基本方針として受信するパケットを全て拒否し、後ろに個別で受信するパケットの規則を設定します。

ここではWebサーバ用のHTTP(80)とリモートログイン用のSSH、リモートデスクトップのvncを通すようにしています。

vncに関しては許可するIPアドレスを制限しています。

その他の通信を許可したい場合はHTTPなどと同じような書式でポートを指定して設定することができます。

このスクリプトファイルを実行すればファイアウォールの設定が反映されます。

iptables -L で確認するとスクリプトファイルで記述した設定が確認できます。

設定の自動読み込み

直打ちしたやスクリプトで指定した iptables の設定が有効なのはシャットダウンするまでの間でマシンを再起動すると設定は全て消えてしまいます。

毎回起動後にスクリプトファイルを手動で実行するのは大変なので、マシン起動時に自動で iptables の設定を読み込むように準備します。

設定のエクスポート

上で作成したスクリプトファイルを実行しルールの設定を行って、 iptables-save で現在の設定を書き出します。

sudo でリダイレクトをすると Permission denied のエラーメッセージが表示されるので sudo sh -c を使ってリダイレクトしています。

起動時に設定を読み込むスクリプト

書きだした設定ファイル /etc/iptables.rules を読み込むシェルスクリプトを作成します。

このスクリプトファイルを /etc/network/if-pre-up.d/ 下に保存しておくとマシン起動時に自動でスクリプトを処理して iptables の設定を反映してくれます。

確認

設定が完了したらマシンを再起動して iptables のルールが適用されているか確認します。

iptables -L の出力を確認して、実際に設定したとおりに通信が許可・拒否されているか確認します。

終わりに

iptables-save と iptables-restore を使って設定を読み込むようにしましたが、はじめに設定用のスクリプトファイルを自前で作成しているのでそのファイルを /etc/network/if-pre-up.d/ に配置するのでもいいと思います。

参考

iptablesの設定方法 – さくらのサポート情報

知らなきゃ損するiptablesのTips:iptablesテンプレート集 改訂版(8) – @IT

【Linux/Ubuntu】iptablesの設定とファイアウォール
Tagged on:     

コメントを残す