はじめに
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 maskednftables が有効になっていないか確認します。環境によって 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-servicesiptables-services のインストールが終わったら、iptables を有効にします。
# systemctl start iptables.service # systemctl enable iptables.service # systemctl list-unit-files | grep iptables iptables.service enabledip6tables も有効にします。
# 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 COMMITiptables を再起動します。
# systemctl restart iptables.servicenmap でポートが正しく開放されているか確認します。
$ 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 COMMITip6tables を再起動します。
# systemctl restart ip6tables.servicenmap でポートが正しく開放されているか確認します。
$ 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 セキュリティ設定を以下の記事にまとめていますので、こちらもどうぞ。
コメント