iptables
さくらVPSのプランを乗り換えたので、これを機にiptablesの設定もやっておくかと思い調べた。
だが結局自分のケースではSSHのポート変更とhosts.allowやhosts.denyの設定で事足りることが分かった。
備忘録的に書いておく。
以下メモ
>>概念
・テーブル
filter, nat, mangleの3つがある。
それぞれパケットフィルタリング、アドレス変換パケット処理に対応
画像の各フローにリストしたテーブルが、各フローで使える・チェイン
組み込みチェインとユーザ定義チェインの2つがある。
画像の各フローに対応した組み込みチェインがある。
・ターゲット
ルールに合致したパケットに行う処理のことをターゲットと呼ぶ。・ルール
パケットの内容との比較条件
- -
>>チェインの作成・削除・変更
iptables -t filter -N MYTEST
iptables -t filter -X MYTEST
iptables -t filter -E MYTEST HOGE
- -
>>チェインのルールの操作
・ポリシーの設定
iptables -P
chainにはINPUT, OUTPUT, FORWARDのみ指定できる。ユーザ定義チェインは指定できない
targetにはACCEPT, DROPのみ
原則ルールの決定です。デフォルトではACCEPTになっていて、何も設定しなければ
全てを通過させるようになっています。・ルールの追加
iptables -A
- -
>>パケットフィルタリング
2つのモデル
1.厳密に必要な通信だけを許可する
2.サーバ内部から外部への通信は全て許可。外部からサーバ内部への通信は
必要なものだけを許可する。
だいたいは2のケースでいいやってなるのかな。個人的な用途のサーバであれば
そんな感じ。
- -
>>実例
# iptables -N MYCHAIN
# iptables -A INPUT -j MYCHAIN
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
MYCHAIN all -- anywhere anywhereChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destinationChain MYCHAIN (1 references)
target prot opt source destination//policyはACCEPTとなっていてユルユルの設定。
//これがモデル1であればDROPにしてstrictな設定にする。# iptables -A MYCHAIN -s 123.123.123.123 -p tcp --dport 22 -j ACCEPT
# iptables -A MYCHAIN -s 0.0.0.0/0 -p tcp --dport 22 -j DROP
//指定したIPからのSSHアクセスをACCEPT
//全てのIPからのSSHアクセスをDROP# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
MYCHAIN all -- anywhere anywhereChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destinationChain MYCHAIN (1 references)
target prot opt source destination
ACCEPT tcp -- 123.123.123.123 anywhere tcp dpt:22
DROP tcp -- anywhere anywhere tcp dpt:22