今年も残り1ヶ月切ってしまいましたね。
今年の元旦に神社で心に誓った目標の何割が達成できたでしょうか?
ちなみに僕は10の目標のうち4しか達成できませんでしたよ。・゚・(ノε`)・゚・。ウワーン
で、今日はiptablesの簡単な設定方法をメモします。
解説サイトは山のようにあるのですが、結構みなさん複雑な事書かれているので
チョチョイっと設定する人向けのメモです。
まずは設定の確認。
# iptables -L一部のIPは伏せてあります。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- localhost.localdomain anywhere
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:omirr
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- localhost.localdomain anywhere
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT all -- xxx.xxx.xxx.xx/28 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:tproxy
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
僕のテストサーバ、思ったより色々設定されてありましたw誰だこんなんしたやつw
まぁ、大きく分けて3つあります。
「Chain INPUT」・・・入ってくるパケットに関するもの。
「Chain FORWARD」・・・転送されていくパケットに関するもの。
「Chain OUTPUT」・・・出力されるパケットに関するもの。
設定する順番は
1)ポリシーを設定
2)ルールを一旦削除(クリア)
3)ルールを設定
4)設定を保存
5)iptables再起動
です。
ではまず1)ポリシーを設定。
簡単なiptablesという事なのでINPUTは許可(ACCEPT)、FORWARDは破棄(DROP)、OUTPUTは許可(ACCEPT)と言う事にします。
FORWARDは滅多な事じゃないと使わない(ルータにするとか)ですし、OUTPUTはサーバからの出力なので上記の方法で良いと思います。
// 書式は iptables -P [チェイン] [ターゲット]これでOK。
// チェインのポリシーを指定のターゲットに設定するという意。
# iptables -P INPUT ACCEPT
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
次に2)ルールを一旦削除します。現在の設定を変更せずに追加とかした人はココやらなくても良いです。
# iptables -FOK。
これで一旦設定を見てみると、
# iptables -Lになるはずです。
Chain INPUT (Policy ACCEPT)
target prot opt source destination
Chain FORWARD (Policy DROP)
target prot opt source destination
Chain OUTPUT (Policy ACCEPT)
target prot opt source destination
次に3)ルールを設定。
// 書式は iptables -A [チェイン] -p [プロトコル] -s [送信元] -j [ターゲット] --dport [ポート範囲の指定]と書けば、80番ポートに対するtcpプロトコルは通すよ!という意味です。ちなみに、
// 他にオプションはたくさんあるけど、これくらい使えばとりあえずOK。
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPTだと、INPUTチェインの上から3番目に、80番ポートに対するtcpプロトコルは通すルールを挿入!という意味です。
さらには、
# iptables -A INPUT -p tcp -s 192.168.0.0/28 --dport 80 -j ACCEPTと書けば、INPUTチェインの80番ポートに対するtcpプロトコルの192.168.0.0/28からのパケットは通すぜ!という意味になります。
まぁ、こんな感じでどんどんと
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT // ssh接続はACCEPTとこんな感じです。
# iptables -A INPUT -p tcp --dport 110 -j ACCEPT // POPはACCEPT
# iptables -A INPUT -p tcp --dport 25 -j ACCEPT // SMTPはACCEPT
# iptables -A INPUT -p icmp -j ACCEPT // PINGはACCEPT
# iptables -A INPUT -i lo -j ACCEPT // 自サーバからはACCEPT(-iはインターフェースの指定)
# iptables -P INPUT DROP // 他の接続は全てDROP
次は4)設定を保存します。
# service iptables saveこれはサーバ再起動されたら設定がリセットされてしまうので、保存しておくのです。
次に5)iptables再起動します。(念のために)
# service iptables restartOK!こんなもんです(´゚艸゚)∴
ちなみにルールを設定する時に
# iptables -Aと「-A」を多用しましたが、他にも
# iptables -I [チェイン] 番号で挿入。
# iptables -R [チェイン] 番号で書き換え(置換)
# iptables -D [チェイン] 番号で削除ができますので、あしからず。
以上、おやすみー。
0 件のコメント:
コメントを投稿