ファイアウォール 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 のルールと間違ってコピペしてました。
まさか、ここのやつを直接コピペしてませんよね・・・。
コマンドにミスがあるとエラーが起きますが、十分に注意しながら記述しましょう。
以上で終了です。