Arch Linux インストール日記 2

ファイアウォール iptables の設定

間違っても最後の箇所だけコピペするの早めたほうがいいです。コマンドを通して設定するようにしましょう

とりあえず、公式のとおりにやっただけです。
なお、普通のデスクトップ環境による一般使用のため、何もポート等開けませんので特別なことは何一つしないです。

1.iptables
https://wiki.archlinux.jp/index.php/Iptables

2.シンプルなステートフルファイアウォール
https://wiki.archlinux.jp/index.php/シンプルなステートフルファイアウォール

普通に使う分には、これだけでいいと思う・・・多分。
また、全ての作業は root で行います。

以下、始まります。

1.iptables の起動
1-1.iptables.rules の作成   ※これがないとサービスが起動できないようです

以下のコマンドを実行

# touch /etc/iptables/iptables.rules
1-2.iptables のサービスを起動・有効化

以下のコマンドを実行

# systemctl start iptables 
# systemctl enable iptables
1-3.現在のルールを表示

以下のコマンドを実行

# iptables -nvL

※ Arch Linux 入れたてであれば、下記のとおり全て許可 = ACCEPT になっていると思います

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

2.ファイアウォールの設定
2-1.TCP と UDP のユーザー定義チェインを作成

以下のコマンドを実行

# iptables -N TCP
# iptables -N UDP
2-2.FORWARD チェインを DROP = 拒否 に設定

以下のコマンドを実行

# iptables -P FORWARD DROP
2-3.OUTPUT チェインを ACCEPT = 許可 に設定

以下のコマンドを実行

# iptables -P OUTPUT ACCEPT
2-4.INPUT チェインを DROP = 拒否 に設定

以下のコマンドを実行

# iptables -P INPUT DROP
2-5.INPUT チェインに正当なトラフィックを許可するルールを追加

以下のコマンドを実行

# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
2-6."loopback" (lo) インターフェイスからのトラフィックを全て許可

以下のコマンドを実行

# iptables -A INPUT -i lo -j ACCEPT
2-7."INVALID" ステートに一致する全てのトラフィックを破棄

以下のコマンドを実行

# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
2-8.ICMP エコー要求 (ping) を全て許可

以下のコマンドを実行

# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
2-9.INPUT チェインに TCP チェインと UDP チェインを適用

以下のコマンドを実行

# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
# iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
2-10.ポートを開いていない場合、TCP 接続は TCP RESET パケットで、
UDP ストリームは ICMP port unreachable メッセージで拒否

以下のコマンドを実行

# iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
2-11.他のプロトコルのために、icmp protocol unreachable メッセージで
残りの受信トラフィックを拒否する最終ルールを INPUT チェインに追加

以下のコマンドを実行

# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
2-12.iptables.rules ファイルの生成

以下のコマンドを実行

# iptables-save > /etc/iptables/iptables.rules

3.公式のサンプルと相違ないか確認してみる

以下のコマンドを実行

# cat /etc/iptables/iptables.rules

表示されたものと、下記の公式サイトのサンプルを比較する

------この下から------

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP  ※
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

------この上まで------
※後述
ip6tables.rules のルールと間違ってコピペしてました。
まさか、ここのやつを直接コピペしてませんよね・・・。

コマンドにミスがあるとエラーが起きますが、十分に注意しながら記述しましょう。

以上で終了です。

Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です