iptablesの設定にはシェルを作成して、自動化するのがナウいらしい。
多分、フィルタリングしたいIPアドレスの指定が固定でないからだと思われる。(なんだか変更があったらアップデートするとかっていう記述があった)
まあ、シェルで自動化した方が何かと便利なのは僕も分かる。
ということで、いつも参考にしているサイトを見てちょろっとiptablesを設定しやろうと思ったら、シェルだけ書かれていて「これ動かしたら設定完了」的な感じなので、何がなんだかわからんし、わからんまま通り過ぎることも出来るんだけど、そこすっ飛ばしたらサーバ借りた意味が無いので、ざーっと解析して見ることにする。
参考教材ページ
ファイアウォール構築(iptables) - CentOSで自宅サーバー構築
コメントを見れば何をしたいかわかるんだけど、一応勉強がてら検証。
■sed
文字列置換とか出来るコマンド。
置換のルールとかは、正規表現かな、ちょっと独自のものもあるかも。
あと、-eが2個あるのはパイプで繋げなくても連続でかけちゃうっぽい。
【 sed 】 文字列の置換,行の削除を行う:ITpro
【 文字列を置換する「sed」 】:ITpro
■netstat
ネットワークの状態を表示するコマンド。
-rでルーチンテーブルを表示してくれるとは知らなかった。
-nはいるのかなあ・・・僕の環境では有っても無くても変わらなかったけど。
netstat - ホストのネットワーク統計や状態を確認する
■cut
文字列を切り出して表示するコマンド。
バイト数とか、フィールド毎に切り出したりも出来る優れもの。
Linuxコマンド一覧 [cut]
サービスの停止はわかる。
停止した時点で、ルールがクリアされる模様。
-Pコマンドは、デフォルトのルールを設定。
後はコメント分そのまんま。
受信は全て破棄ってのは結構びびるね、初心者にとっては。
間違えなきゃ良いけど。
-AコマンドはAppendで追加。Addじゃないのかー。
-iはIn Interface。loでLocalLoopbackからの入力って意味。ループバックってのは自分自身に送信することらしい。ふーん。
ループバックとは 【loopback】 - 意味・解説 : IT用語辞典
-jはJumpで、ジャンプするターゲットの指定。ACCEPTだとそのまま受け取るんだろうね。ACCEPT、DROP、REJECT、LOG、RETURNとある模様。
REJECTの場合にはパケットが破棄されたという事実を送信者に返答するらしい、なる。
-sはSourceで送信元。IP アドレスやネットワークアドレス(192.168.0.0/24、192.168.0.0/255.255.255.0)での設定が可能。
こういう書式で書くのね。
-mは「TCP拡張、UDP拡張、ICMP拡張以外の拡張を使う時に指定」だそうだ。
今回は「state拡張」で「パケットの接続状態を指定する拡張」らしい。
NEW(新規)、ESTABLISHED(継続)、RELATED(関連)、INVALID(その他)から選べる。
ふむ、新規じゃなく継続と関連だけを許可するから「 内部から行ったアクセスに対する外部からの返答」という意味になるのか。
深いな。
んー、結構深いかもしれん。
続き。
iptables設定シェルスクリプト@CentOS5の解析メモ #2 - blog@longkey1.net
多分、フィルタリングしたいIPアドレスの指定が固定でないからだと思われる。(なんだか変更があったらアップデートするとかっていう記述があった)
まあ、シェルで自動化した方が何かと便利なのは僕も分かる。
ということで、いつも参考にしているサイトを見てちょろっとiptablesを設定しやろうと思ったら、シェルだけ書かれていて「これ動かしたら設定完了」的な感じなので、何がなんだかわからんし、わからんまま通り過ぎることも出来るんだけど、そこすっ飛ばしたらサーバ借りた意味が無いので、ざーっと解析して見ることにする。
参考教材ページ
ファイアウォール構築(iptables) - CentOSで自宅サーバー構築
#!/bin/bash
#---------------------------------------#
# 設定開始 #
#---------------------------------------#
# インタフェース名定義
LAN=eth0
#---------------------------------------#
# 設定終了 #
#---------------------------------------#
# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASKコメントを見れば何をしたいかわかるんだけど、一応勉強がてら検証。
■sed
文字列置換とか出来るコマンド。
置換のルールとかは、正規表現かな、ちょっと独自のものもあるかも。
あと、-eが2個あるのはパイプで繋げなくても連続でかけちゃうっぽい。
【 sed 】 文字列の置換,行の削除を行う:ITpro
【 文字列を置換する「sed」 】:ITpro
■netstat
ネットワークの状態を表示するコマンド。
-rでルーチンテーブルを表示してくれるとは知らなかった。
-nはいるのかなあ・・・僕の環境では有っても無くても変わらなかったけど。
netstat - ホストのネットワーク統計や状態を確認する
■cut
文字列を切り出して表示するコマンド。
バイト数とか、フィールド毎に切り出したりも出来る優れもの。
Linuxコマンド一覧 [cut]
# ファイアウォール停止(すべてのルールをクリア)
/etc/rc.d/init.d/iptables stop
# デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄サービスの停止はわかる。
停止した時点で、ルールがクリアされる模様。
-Pコマンドは、デフォルトのルールを設定。
後はコメント分そのまんま。
受信は全て破棄ってのは結構びびるね、初心者にとっては。
間違えなきゃ良いけど。
# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-AコマンドはAppendで追加。Addじゃないのかー。
-iはIn Interface。loでLocalLoopbackからの入力って意味。ループバックってのは自分自身に送信することらしい。ふーん。
ループバックとは 【loopback】 - 意味・解説 : IT用語辞典
-jはJumpで、ジャンプするターゲットの指定。ACCEPTだとそのまま受け取るんだろうね。ACCEPT、DROP、REJECT、LOG、RETURNとある模様。
REJECTの場合にはパケットが破棄されたという事実を送信者に返答するらしい、なる。
-sはSourceで送信元。IP アドレスやネットワークアドレス(192.168.0.0/24、192.168.0.0/255.255.255.0)での設定が可能。
こういう書式で書くのね。
-mは「TCP拡張、UDP拡張、ICMP拡張以外の拡張を使う時に指定」だそうだ。
今回は「state拡張」で「パケットの接続状態を指定する拡張」らしい。
NEW(新規)、ESTABLISHED(継続)、RELATED(関連)、INVALID(その他)から選べる。
ふむ、新規じゃなく継続と関連だけを許可するから「 内部から行ったアクセスに対する外部からの返答」という意味になるのか。
深いな。
んー、結構深いかもしれん。
続き。
iptables設定シェルスクリプト@CentOS5の解析メモ #2 - blog@longkey1.net
コメント