Webセキュリティの小部屋

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

CentOS8でiptablesを使用できるようにする

はじめに

CentOS 8が、2019年9月24日にリリースされました。

大きな変更点は、yum コマンドが廃止され dnf コマンドが採用されたことでしょうか。yum コマンドも dnf コマンドのラッパーとして使用できるようですけどね。

それ以外に、パケットフィルタ機能が iptables から nftables に変更になっています。

ですが、firewalld を使用している場合は、バックグラウンドで動作するモジュールが iptables から nftables に変わるだけなので影響はありません。

iptables を使用している場合は影響があります。

ですが、心配ありません。

意外でしたが、iptables-services をインストールすれば CentOS 8 でも iptables が使用できます。

では、その方法を見ていきましょう。

iptables-services のインストールと設定

まずは iptables-services をインストールする前に、firewalld を無効にします。iptables との共存ができないためです。

# systemctl stop firewalld.service
# systemctl mask firewalld.service
# systemctl list-unit-files | grep firewalld
firewalld.service                           masked 
nftables が有効になっていないか確認します。環境によって active になっていることがあるようなので、その場合は後述の方法で停止します。
# systemctl status nftables
● nftables.service - Netfilter Tables
   Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor p>
   Active: active (exited) since Sat 2019-10-12 15:19:02 JST; 6s ago
     Docs: man:nft(8)
  Process: 1310 ExecStart=/sbin/nft -f /etc/sysconfig/nftables.conf (code=exite>
 Main PID: 1310 (code=exited, status=0/SUCCESS)
active の場合は次のように無効にします。 deactive の場合はなにもしなくて大丈夫です。
# systemctl stop nftables
# systemctl disable nftables
# systemctl list-unit-files | grep nftables
nftables.service                            disabled 
では、いよいよ iptables-services をインストールします。yum コマンドではなく dnf コマンドでインストールしている点に注意してください。
# dnf install -y iptables-services
iptables-services のインストールが終わったら、iptables を有効にします。
# systemctl start iptables.service
# systemctl enable iptables.service
# systemctl list-unit-files | grep iptables
iptables.service                            enabled
ip6tables も有効にします。
# systemctl start ip6tables.service
# systemctl enable ip6tables.service
# systemctl list-unit-files | grep ip6tables
ip6tables.service                           enabled  

iptabels (IPv4) の設定

次のコマンドで、iptables の設定ファイルを直接編集します。

# vi /etc/sysconfig/iptables
設定の内容は以下のようになります。CentOS 8 では、改行だけの行を許容しなくなったみたいなのでご注意ください。
*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 icmp --icmp-type any -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 22 -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 icmp-host-prohibited
COMMIT
iptables を再起動します。
# systemctl restart iptables.service
nmap でポートが正しく開放されているか確認します。
$ nmap hostname
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-12 13:23 JST
Nmap scan report for IPAddress
Host is up (0.064s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https
問題ありませんね。

ip6tabels (IPv6) の設定

以下のコマンドで設定ファイルを直接編集します。

# vi /etc/sysconfig/ip6tables
設定ファイルの内容は以下のようになります。
*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 22 -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
ip6tables を再起動します。
# systemctl restart ip6tables.service
nmap でポートが正しく開放されているか確認します。
$ nmap -6 hostname
Starting Nmap 6.40 ( http://nmap.org ) at 2019-10-12 15:30 JST
Nmap scan report for IPAddress
Host is up (0.97s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https
問題ありませんね。

おわりに

CentOS 8 でも iptables-services をインストールすることで、iptables が使用できることが分かりました。

CentOS 7 で firewalld が導入された際は、iptables から firewalld に移行することを勧めていましが、意外とこれからも iptables は残る技術なのかも?

まあ、可能性の話なので、firewalld へ移行する方がよいとは思いますけどね。

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

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


スポンサーリンク





カテゴリー:ブログ

コメントを残す

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

CAPTCHA