Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2014年1月13日
最終更新日:2020年8月8日

CentOS に ip6tables の設定を行う(IPv6)

はじめに

CentOS 6.x に ip6tables の設定を行います。

ip6tables は、IPv6 用のパケットフィルターになります。

設定の確認

以下のコマンドを実行して、ip6tables が 3:on になっていることを確認します。3:on になっていると起動時に実行されるようになります。

# chkconfig ip6tables --list
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off

もし、3:off になっていた場合は、以下のコマンドで 3:on にします。
# chkconfig ip6tables on

ip6tables の汎用設定

ip6tables の汎用設定をします。

設定は、以下のように ip6tables を直接編集します。

# vi /etc/sysconfig/ip6tables

余計な改行や空白が入るとうまく動作しないようなので注意してください。なお、サーバー側で SSH サービスのポートを 10022 に変更しています。

51 番ポートの指定が、50 番ポートの記述方法と異なることに注意してください。これは、51 番ポートを 50 番ポートと同じように記述すると警告が表示されてしまうためその回避策です(CentOS 6.5 時点)。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH(22,10022,22->delete after), HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

設定を有効にします。
# service ip6tables restart

Zenmap によるポートスキャン

Zenmap は、Nmap の GUI インターフェースを持ったツールで、オープンソースで開発されているので無償で利用することができるポートスキャナーです。Windows, Mac, Linux 版があります。

pic01

ポートが正しく設定されているかどうか、Zenmap を使用して確認します。

nmap コマンドのオプションの –6 は、IPv6 でポートスキャンを行うという指示です。

なお、IPv6 によるポートスキャンを行うには、ネットワークが IPv6 環境になっている必要があります。ご利用の環境が IPv6 かどうかは、こちらのサイトで確認できます。

# nmap -6 -p 1-10022 hostname

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-18 00:07 東京 (標準時)
Nmap scan report for hostname (2401:2500:102:1106:xxx:xxx:xxx:xxx)
Host is up (0.044s latency).
rDNS record for 2401:2500:102:1106:133:xxx:xxx:xxx: 133.242.xxx.xxx.v6.sakura.ne.jp
Not shown: 10016 filtered ports
PORT      STATE  SERVICE
22/tcp    closed ssh
51/tcp    closed la-maint
80/tcp    open   http
443/tcp   open   https
631/tcp   closed ipp
10022/tcp open   unknown

Nmap done: 1 IP address (1 host up) scanned in 21.56 seconds

80, 443, 10022 番ポートがオープンされているけど、他のサービスは動作してないようですね。

最低限の ip6tables の設定

Zenmap のポートスキャン結果を受けて、最低限の ip6tables の設定にします。SSH の 22 番ポートを削除しているので注意してください。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

設定を有効にします。
# service ip6tables restart

Zenmap によるポートスキャン

再度、Zenmap によるポートスキャンを行い、設定内容を確認します。

# nmap -6 -p 1-10022 hostname

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-18 00:12 東京 (標準時)
Nmap scan report for hostname (2401:2500:102:1106:xxx:xxx:xxx:xxx)
Host is up (0.045s latency).
rDNS record for 2401:2500:102:1106:xxx:xxx:xxx:xxx: 133.242.xxx.xxx.v6.sakura.ne.jp
Not shown: 10019 filtered ports
PORT      STATE SERVICE
80/tcp    open  http
443/tcp   open  https
10022/tcp open  unknown
Nmap done: 1 IP address (1 host up) scanned in 20.97 seconds

80, 443, 10022 番ポートのみオープンしているので正しいですね。

おわりに

IPv6 のアクセスをフィルタリングする ip6tables の設定と動作を見てきました。

IPv6 になることで、IPv4 の iptables と多少違うところがあったり、IPv6 環境を整えるのが大変だったりするので、IPv6 の設定はできればやるというスタンスでもよいかもしれません。

あと、Windows 環境でも、Zenmap を利用することでポートスキャンをできるので活用したいですね。

最低限必要な CentOS セキュリティ設定

最低限必要な CentOS セキュリティ設定を以下の記事にまとめていますので、こちらもどうぞ。

参考サイト


スポンサーリンク





カテゴリー:Linux

コメントを残す

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

CAPTCHA