0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シンプルなファイアウォール iptables の設定と IPv6 の無効化

Last updated at Posted at 2024-12-28

とりあえず、公式のとおりにやっただけです
※ SSH 接続で遠隔操作をしない場合は、SSH で使用するポートを許可の箇所は無視して下さい
※ IPv6 は使わないので無効化しました

※ iptables ArchLinux 公式サイト
https://wiki.archlinux.jp/index.php/Iptables

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

※ 全ての作業は root で行います。

◆ iptables.rules の作成

# touch /etc/iptables/iptables.rules

◆ iptables のサービスを起動・有効化

# systemctl start iptables 
# systemctl enable iptables

◆ 現在のルールを表示

# 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

◆ TCP と UDP のユーザー定義チェインを作成

# iptables -N TCP
# iptables -N UDP

◆ FORWARD チェインを DROP = 拒否 に設定

# iptables -P FORWARD DROP

◆ OUTPUT チェインを ACCEPT = 許可 に設定

# iptables -P OUTPUT ACCEPT

◆ INPUT チェインを DROP = 拒否 に設定

# iptables -P INPUT DROP

◆ INPUT チェインに正当なトラフィックを許可するルールを追加

# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

◆ "loopback" (lo) インターフェイスからのトラフィックを全て許可

# iptables -A INPUT -i lo -j ACCEPT

◆ "INVALID" ステートに一致する全てのトラフィックを破棄

# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

◆ ICMP エコー要求 (ping) を全て許可

# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

◆ 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

◆ ポートを開いていない場合、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

◆ 他のプロトコルのために、icmp protocol unreachable メッセージで
残りの受信トラフィックを拒否する最終ルールを INPUT チェインに追加

# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable

◆ iptables.rules ファイルの生成

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

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

以下のコマンドを実行

# 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

------この上まで------

※ コマンドにミスがあるとエラーが起きますが、十分に注意しながら記述しましょう
※ 公式サイトのサンプルは古く、若干表記が変わっている場合があります

◆ ファイアウォール iptables.rules に SSH で使用するポートを許可
※ SSH による遠隔操作をしない場合は設定不要

● 方法1
$ sudo nano /etc/iptables/iptables.rules

-A TCP -p tcp --dport 22 -j ACCEPT
※ COMMIT の真上に追記します

● 方法2 
※ 『 >> 』で追記となります(『 > 』は上書きになり設定した項目が全て消えるため要注意、よく確認して下さい)

設定を間違った時のために、念のためバックアップを取ります
# cp /etc/iptables/iptables.rules /etc/iptables/iptables.rules.bak

設定
# iptables -A TCP -p tcp --dport 22 -j ACCEPT
# iptables-save >> /etc/iptables/iptables.rules

◆ IPv6 の無効化
※私は使用しないので無効化します
※使用する場合は公式サイトを参照してファイアウォールの設定をして下さい

● 現在の状態を確認します
$ ip a

※デフォのままでは IPv6 の情報が出て来ていると思います

● 無効化します
$ sudo nano /etc/default/grub

※『 GRUB_CMDLINE_LINUX 』の欄に 『 ipv6.disable=1 』を追記します
GRUB_CMDLINE_LINUX="ipv6.disable=1"

Ctrl+x で保存終了します

● GRUB の設定を更新
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

● 再起動します

● ターミナルを開いて、現在の状態を確認します
$ ip a

IPv6 の情報が出て来なくなると思います
これで設定終了です

以上で、基本的なファイアウォールの設定は終了です
ド素人なので、もっと楽に簡単に設定する方法ないですかね
また調べて、良いのがあればお知らせします
(/・ω・)/ コロコロコロ =〇

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?