インストール後の初期設定(CentOS8.4)

更新日:2021/12/25

新しくPCを作成し、CentOS8.4をインストールしました。設定などの環境構築について、備忘としてまとめました。

KVMによる仮想環境の構築についてはこちらにまとめています

固定IPの割り当て

「/etc/sysconfig/network-scripts/ifcfg-XXXX」を手動するのが、昔は普通だった気がしましたが、NetworkManagerというツール(nmcliコマンド)で設定変更をするのが一般的な様子。
なので、素直にそれに従います。

ネットワークについては、「デバイス」と「コネクション」で、分けて管理されています。
「デバイス」は、単純に物理デバイスのことで、「コネクション」はその物理デバイスが実際にどこかに接続する通信のことを指します。
デバイスの一覧は「nmcli device」、コネクションの一覧は「nmcli connection」で表示できます。
デバイスとコネクションを分けて管理すると、都合が良い時もある様子で、このようになっているみたいです。
しかし、単純なネットワークの場合、デバイス名=コネクション名のほうが管理しやすいです。
そのため、まずは、デバイス名とコネクション名が同じになっているかチェックし、違う名前がついていたら、同じ名前に修正します。
以下の例では、コネクション名が「System enp1s0」、デバイス名が「enp1s0」になっているので、コネクション名を「enp1s0」に変更しています。

[root@localhost ~]# nmcli connection ←現在のコネクション名を表示する(コネクションに対応するデバイス名も表示される)
NAME           UUID                                  TYPE      DEVICE
System enp1s0  c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191f  ethernet  enp1s0
[root@localhost ~]# nmcli con mod c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191f connection.id enp1s0 ←UUIDを指定し、コネクション名をenp1s0に変更
[root@localhost ~]# nmcli connection ←変更した結果を確認
NAME    UUID                                  TYPE      DEVICE
enp1s0  c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191f  ethernet  enp1s0

続いて、固定IPアドレスの設定を行います。 以下の4点を設定し、コネクションを再起動することで、有効になります。
・IPアドレスの指定
・GATEWAYの指定
・DNSの指定
・OS起動時に自動的に有効になるように設定

[root@localhost ~]# nmcli device ←ネットワークのデバイス一覧を表示
DEVICE  TYPE      STATE     CONNECTION
enp1s0  ethernet  接続済み  enp1s0
lo      loopback  管理無し  --
[root@localhost ~]# nmcli connection ←ネットワークのコネクション一覧を表示
NAME    UUID                                  TYPE      DEVICE
enp1s0  ebd0703f-f262-46a4-ae92-c83c95ab7bf1  ethernet  enp1s0
[root@localhost ~]# nmcli connection modify enp1s0 \  ←コネクション名「enp1s0」に対し、固定IPを設定
>   ipv4.method manual \
>   ipv4.addresses 192.168.11.42/24
[root@localhost ~]# nmcli connection modify enp1s0 \  ←コネクション名「enp1s0」に対し、gatewayを設定
>   ipv4.gateway 192.168.11.1
[root@localhost ~]# nmcli connection modify enp1s0 \  ←コネクション名「enp1s0」に対し、DNSを設定
>   ipv4.dns 192.168.11.1
[root@localhost ~]# nmcli connection modify enp1s0 \  ←コネクション名「enp1s0」に対し、OS起動時に起動するように設定
>   connection.autoconnect yes
[root@localhost ~]# nmcli connection up enp1s0  ←コネクション名「enp1s0」を再起動する
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/2)

上記のコマンドのコピペ用。

nmcli connection modify enp1s0 ipv4.method manual ipv4.addresses 192.168.11.42/24
nmcli connection modify enp1s0 ipv4.gateway 192.168.11.1
nmcli connection modify enp1s0 ipv4.dns 192.168.11.1
nmcli connection modify enp1s0 connection.autoconnect yes
nmcli connection up enp1s0

NTPの設定(chrony)

CentOS7あたりから、ntpdからchronydに移行したらしい。
chronyの設定を行いntpサーバーとの時間を同期させるようにします。
基本的にCentOS8やRHEL8をインストールしたら、デフォルトでインストールされていると思います。

設定値を変更します。
接続するNTPサーバーを、あらかじめ知っておく必要がありますので、ググっておきます(プロバイダが提供しているものを使う or googleのNTPを使うか・・・自分の好きなものを決めておきます)。
ここでは、私の環境向けに設定します。
NVR500というルーターを使っており、そのルーターがNTPサーバーの代わりもしてくれるので(このルーターもインターネット上のNTPサーバーと時間同期させています)ので、このルーター(192.168.11.1)を使うこととします。

「/etc/chrony.conf」を手動で編集します。
以下の赤字の部分が、元々ある設定ファイルから変更した部分です。
変更部分の説明については、下に記載します。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.centos.pool.ntp.org iburst
server 192.168.11.1 iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.11.0/24

# Serve time even if not synchronized to a time source.
local stratum 10

# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

#port 0

server 192.168.11.1 iburst
NTPサーバーをのIPアドレスを記載しています。
「iburst」はオプション設定です。このオプションのところには、どのぐらいの間隔でNTPサーバーに問合せしに行くかなど、いくつかオプションがあります(詳しくはchronyのドキュメント参照)。
iburstだと、64秒に1回程度の頻度でNTPに接続しにいきます。細かいこだわりがないので、とりあえずこれで良しとします。
(細かい要求がある場合は、オプションを変更する。特にない場合は、これで問題が発生することは無いはず。)

allow 192.168.11.0/24
本サーバをNTPサーバーとして動かす場合、どのIPアドレスからのアクセスを許可するかの設定。
192.168.11.Xの中からしかアクセスさせたくないため、設定を変更しています。
※NTPサーバーとして使用しない場合は、特にコメントアウトのままでOK。

local stratum 10
上位のNTPサーバーとの通信が出来なくなったときの、stratumの値(NTPサーバーの階層レベル)。
stratumは0~15の範囲の値で、NTPの階層構造を表していて、16になるとNTPサーバーとして無効扱いとなる(クライアントがstratumの値をチェックして16の場合、このNTPサーバーは正常ではない・・・という扱いにして、戻り値を使わなくなる・・・みたいなイメージ)
そしてこの設定値は、上位のNTPサーバーと通信できなくなったとき、16を返すのではなく10を返すという挙動にする。
なので、上位のNTPサーバーが何らかの原因で接続できなくなったとしても、エラーとせず、自分の時間を戻り値として返す・・・という挙動になる・・・はず。
※NTPサーバーとして使用しない場合は、特にコメントアウトのままでOK。

#port 0
NTPサーバーとして動作させない(ただのntpクライアントとしてしか動かさない場合)、port 0とする設定をいれる・・・らしい。
この設定を使ったことが無いので、とりあえずコメントアウトしてある。

「/etc/chrony.conf」のファイル編集が終わったら、chronyの再起動をして設定値を読み込ませる。

systemctl restart chronyd

ちゃんと動いているか確認を行います。
まず、NTPサーバーの接続先として、何と接続しているのかを表示するコマンド「chronyc sources」を実行します。
接続先に「setup.netvolante.jp」が表示されているので、OK(NVR500というルーターと接続させていますが、これの場合は、名前がこれになるっぽい)

[root@localhost ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* setup.netvolante.jp           1   6   377    49    -50ms[ -236ms] +/-   24ms

次に、こちらはntpサーバーから取得した値の補正結果などの情報が表示されます。
詳しいことは、chronyのドキュメント参照(時間の難しい系の話です)。

[root@localhost ~]# chronyc tracking
Reference ID    : C0A80B01 (setup.netvolante.jp)
Stratum         : 2
Ref time (UTC)  : Fri Sep 24 06:10:39 2021
System time     : 0.028412165 seconds slow of NTP time
Last offset     : -0.029395238 seconds
RMS offset      : 0.084289983 seconds
Frequency       : 816.254 ppm fast
Residual freq   : -1061.637 ppm
Skew            : 670.856 ppm
Root delay      : 0.015625017 seconds
Root dispersion : 0.068240523 seconds
Update interval : 65.0 seconds
Leap status     : Normal

ネットワーク設定

通信ポートのopen/closeの設定方法などについて、まとめます。
RHEL8/CentOS8の環境にたいして設定することを前提とします。

ファイヤーウォールについての説明

RHEL/CentOS8においては、「firewalld」「nftables」「iptables」・・・という3種類のパケットの制御方法があります。
そして、この3種類のものを同時に立ち上げると、わけわからんことになるので、どれか1つを使いましょうということらしいです。
 → https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-and-configuring-firewalld_configuring-and-managing-networking

時代の流れで、「iptables」だけの時代から、変化があった様子で、調べたことを以下に記載します。
・Linuxは、「iptables」を使ってパケットの制御をしていた。
・「iptables」を使いやすくするためのツール、「firewalld」が追加される。
・「iptables」から、改良した「nftables」に置き換えが行われる(「iptables」のコマンド自体は使える状態だが、実体は「nftables」)
・「firewalld」も「iptables」ではなく、「nftables」を使うように変更。
という感じの様子。
なので、現在のRHEL8/CentOS8では、パケットの制御には「nftables」が使われており、それの簡単設定ツールである「firewalld」もある・・・という状態。
「iptables」だけを使いたいなぁ・・・というケースも、「firewalld」のサービスを停止してしまえば、「iptables」のコマンド自体は残してあるので、昔から使っているコマンドも使えますよ・・・ということらしい(たぶん)。

ここでは「firewalld」を使った設定についてを扱います。

firewalldの基本

firewalldは、zoneというルールの集合に対し、ネットワークインターフェイスを関連付けて、通信を制御している様子。
最初からいくつかのzoneが作成されており、、詳細は以下のコマンドで見ることができます(自分でzoneを追加することも可能)。
「firewall-cmd --list-all-zones」を実行すると、zone等の情報を全部表示することができます(出力結果が長いので、実行結果は省略)。
なお、「firewalld」は、着信の接続(外部から自分にアクセスしてくる)を制御しますが、自分自身から外へ通信をする時の制御は、zoneの設定では行われません(無制限に外にアクセスできる)。
なので、外へアクセスも制御したい場合は「ダイレクトルール」というものを使用することになっています。

デフォルトでは、「public」というzoneが、PCのあるネットワークインターフェイスに適用されていいます。
「public」は、選択した着信接続のみが許可されます・・・という状態のルールになっているらしい。
基本的には、これで良いはず(それ以外のルールが使用したくなった時に、別途調査しようと思います・・・)。

[root@miranda ~]# firewall-cmd --get-zones ←zoneの一覧を表示
block dmz drop external home internal libvirt nm-shared public trusted work
[root@miranda ~]# firewall-cmd --get-default-zone ←デフォルトで使用するzoneを表示
public
[root@miranda ~]# firewall-cmd --list-all --zone=public ←「public」というzoneの詳細を表示
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: br0 enp3s0 ←このzoneで使用するネットワークインターフェイスが表示されている(環境によって表示されるものは異なる)
  sources:
  services: cockpit dhcpv6-client ssh ←通信を許可するサービスの一覧が表示されている
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@miranda ~]#

上記の「services」で表示されているサービス名ですが、これは「/usr/lib/firewalld/services/」以下にxmlファイルがあり、こちらで定義されています(1サービス、1つのxmlファイル)。
全部が網羅されているわけではないので、新たにserviceを追加することも可能です。
xmlを手動で作成するわけではなく、「firewall-cmd」コマンドに引数を色々渡して設定を行う感じです。
(作り方は、どこかで触れます・・・)

通信を許可するserviceを追加/削除する

通信を許可するserviceを追加・・・は、portに穴を開けるということです。
逆に、通信を許可するserviceを削除は、穴を開けていたportを閉じる・・・ですね。
特定のIPアドレスの、特定portの通信のみ許可は、以下の方法では出来ません。
これは、「リッチルール」というものを使う必要があります。
オプションに「--permanent」をつけていますが、これを付けない場合、OSを再起動すると設定が消えてしまいます。
また、設定変更後に「firewall-cmd --reload」を行わないと、設定が有効になりません。

通信を許可するserviceを追加してみます。
以下はhttp(80番ポート。service名とポート番号の対応は「/usr/lib/firewalld/services/」の中のファイルを見るしかない)の通信を許可します。

[root@localhost ~]# firewall-cmd --add-service=http --zone=public --permanent ←publicというzoneに、httpを追加
success
[root@localhost ~]# firewall-cmd --reload ←reloadの実行
success
[root@localhost ~]# firewall-cmd --list-all --zone=public --permanent ←恒久設定されている現在の設定を表示
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http ssh ←httpが追加されている
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@localhost ~]#
success

逆に、今度は削除してみます。
以下の例では、先ほど追加したhttpを削除しています。

[root@localhost ~]# firewall-cmd --remove-service=http --zone=public --permanent ←publicというzoneから、httpを削除
success
[root@localhost ~]# firewall-cmd --reload ←reloadの実行
success
[root@localhost ~]# firewall-cmd --list-all --zone=public --permanent ←恒久設定されている現在の設定を表示
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client ssh ←httpが消えている
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

プロセスが使っているポートを表示する

「lsof」コマンドは、ファイルを使っているプロセスを調べたりなど色々できます。
「-i」オプションを付けると、ソケットの一覧を表示させることができます。
全プロセスを表示させたい場合、root権限が必要になります。
ちなみに、「-P」を追加すると、ポート番号がサービス名ではなく、単純に番号として表示してくれます。

[root@localhost ~]# lsof -i ←プロセスが使用しているポートの一覧を表示する
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1   root   41u  IPv4  18956      0t0  TCP *:sunrpc (LISTEN)
systemd      1   root   42u  IPv4  18957      0t0  UDP *:sunrpc
systemd      1   root   43u  IPv6  18958      0t0  TCP *:sunrpc (LISTEN)
systemd      1   root   44u  IPv6  18959      0t0  UDP *:sunrpc
rpcbind    712    rpc    4u  IPv4  18956      0t0  TCP *:sunrpc (LISTEN)
rpcbind    712    rpc    5u  IPv4  18957      0t0  UDP *:sunrpc
rpcbind    712    rpc    6u  IPv6  18958      0t0  TCP *:sunrpc (LISTEN)
rpcbind    712    rpc    7u  IPv6  18959      0t0  UDP *:sunrpc
avahi-dae  749  avahi   15u  IPv4  23124      0t0  UDP *:mdns
avahi-dae  749  avahi   16u  IPv6  23125      0t0  UDP *:mdns
avahi-dae  749  avahi   17u  IPv4  23129      0t0  UDP *:41439
avahi-dae  749  avahi   18u  IPv6  23130      0t0  UDP *:41430
chronyd    765 chrony    6u  IPv4  23139      0t0  UDP localhost:323
chronyd    765 chrony    7u  IPv6  23140      0t0  UDP localhost:323
sshd       816   root    5u  IPv4  24882      0t0  TCP *:ssh (LISTEN)
sshd       816   root    7u  IPv6  24884      0t0  TCP *:ssh (LISTEN)
cupsd      819   root    9u  IPv6  24047      0t0  TCP localhost:ipp (LISTEN)
cupsd      819   root   10u  IPv4  24048      0t0  TCP localhost:ipp (LISTEN)
xrdp-sesm 1045   root    9u  IPv4  26123      0t0  TCP localhost:findviatv (LISTEN)
xrdp      1046   root   11u  IPv4  26126      0t0  TCP *:ms-wbt-server (LISTEN)

ポートスキャン(nmap)

対象のサーバーに対し、どのポートがOPENされているかチェックしてみます。
※ポートスキャンは、自分が所持しているサーバーだけを対象に実行します。他人のサーバーを対象に実行はしません(攻撃とみなされることがあります・・・)。
ここでは、nmapというツールを使用します。
nmapはデフォルトでは1000個ほどのポートにたいして、ポートスキャンを行います(あらゆるポート(0-65535)に対して実行したい場合は、別途オプション指定する必要があります)。
UDPも調査したい場合は、別途オプションを追加する必要有り(後述)。

まず、nmapのインストールを以下のコマンドで行います。

dnf install nmap

nmapには、色々なオプションがあります。
ここでは、以下のオプションを使います。
「-sS」 → TCPを対象にポートスキャンする(TCPのパケットを投げるときの方式の指定。「TCP SYNスキャン」というデフォルトの方式を指定)。
「-sU」 → UDPを対象にポートスキャンする。
IPアドレス「192.168.11.42」のサーバーにたいして、このサーバー自身にログインしてnmapを実行したときと、外部のサーバーから「192.168.11.42」へnmapを実行したときの例を以下に示します。

以下は、IPアドレス「192.168.11.42」のサーバにログインし、自分自身へnmapを実行した結果です。
内側からの通信について、特に何も制御していない状態のため、「1994 closed ports」と表示されています。
「closed」というステータスは、ポートはOPENだが、そのポートで待ち受けをしているプロセスがいない・・・という状態です。

root@localhost ~]# nmap -sS -sU  localhost ←自分自身へnmapを実行
Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-19 15:47 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 1994 closed ports ←closedとなっているところがポイント
PORT     STATE         SERVICE
22/tcp   open          ssh
111/tcp  open          rpcbind
631/tcp  open          ipp
3389/tcp open          ms-wbt-server
111/udp  open          rpcbind
5353/udp open|filtered zeroconf ←openなのかフィルタされているのか、nmapからは判別不能な状態

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

次に、上記でnmapを行ったサーバー(IPアドレスが192.168.11.42)に対し、別のサーバーからnmapを実行してみます。
同じサーバーにたいして内部で実行するのと、外部で実行するのとでは、結果が異なるのが分かります。
実行してから終わるまで約20分程度かかりました。
(UDPも対象にいれているので、時間がかかります)

[root@miranda ~]# nmap -sS -sU  192.168.11.42 ←「192.168.11.42」に対し、nmapを実行
Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-19 15:18 JST
Nmap scan report for 192.168.11.42
Host is up (0.00014s latency).
Not shown: 1997 filtered ports ←filteredとなっているところがポイント
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http
9090/tcp closed zeus-admin
MAC Address: 52:54:00:77:EC:AF (QEMU virtual NIC)

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

サーバーの外からチェックしてみると、「22/tcp」「80/tcp」「9090/tcp」の3つが応答を返している様子です。
続いて、firewalldの設定との整合性を見ていきたいと思います。
firewalldの設定としては、以下の状態でnmapを実行しました。

[root@localhost ~]# firewall-cmd --list-all --zone=public --permanent
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

なので、OPENになっているのは「cockpit」「dhcpv6-client」「ssh」の3つです。
それぞれ、調べたことを記載します。

services 説明
cockpit 「/usr/lib/firewalld/services/cockpit.xml」を見ると、cockpitはtcp/9090であることが分かります。
tcp/9090なので合っていますが、nmapが出力した「zeus-admin」とサービス名が謎です。
nmapはポート番号とサービス名の対応表を「/etc/services」ではなく、「/usr/share/nmap/nmap-services」という自前のものを使っているのかもしれません。
※「/usr/share/nmap/nmap-services」を見ると「9090/tcp」の名前が「zeus-admin」と定義されています。
 おそらく、これが原因ではなかろうかと思います。
cockpit自体使ってないので、closedステータスになっていると思われます。
dhcpv6-client 「/usr/lib/firewalld/services/dhcpv6-client.xml」を見ると、udp/546と書いてありますが、「<destination ipv6="fe80::/64"/>」と書いてあります。
・・・よくわかりませんが、ipv6用なので、「dhcpv6-client」はipv4上においては、意味のないポートOPENなのかもしれません。
詳細よくわからず・・・。
ssh 「/usr/lib/firewalld/services/ssh.xml」を見ると、cockpitはtcp/22であることが分かります。
sshのサービスはONにしているため、ステータスがOPENなので想定通りです。

ダイレクトルール(外への通信の制御)

自分のサーバーから外への通信の制御はfirewalldのzone設定では制御されません。
そのため、ダイレクトルールという物を使用します(何がダイレクトなのかというと・・・コマンドがiptablesのソレだから・・・という意味だと思います)。
ダイレクトルールを使うと、INPUTもOUTPUTも、iptablesのように設定が可能です。
ここでは、OUTPUTの通信を制御する設定を追加してみます。

以下のようにcurlコマンドを使って、インターネット上のファイルの取得が、可能な状態です。

[root@localhost ~]# curl https://alctail.sakura.ne.jp/css/common/diary.css ←webサイトからファイルを取得
@charset "UTF-8";

/* 段落の行間を設定(文章の段落用) */
p.diaryPara {
        margin: 1em 0em;
        padding: 0em 0em;
        text-indent: 1em;
}[root@localhost ~]# firewall-cmd --direct --get-all-rules ←現在のダイレクトルールの一覧を表示
[root@localhost ~]# ←ダイレクトルールは0個なので、何も表示されない

これをfirewalldのダイレクトルールで、https通信(port番号443)を出来ないように設定してみます。
以下のコマンドを実行します。
実行後、「/etc/firewalld/direct.xml」に設定した内容が出力されます。

[root@localhost ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -m state --state NEW -m tcp -p tcp --dport 443 -j DROP
success
[root@localhost ~]# firewall-cmd --reload ←設定を有効にするため、リロード
success
[root@localhost ~]# iptables -L --line-numbers ←iptablesのコマンドを使って、設定を表示
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       tcp  --  anywhere             anywhere             state NEW tcp dpt:https

上記の設定で、https通信がfirewalldによってdropされるはずです。
再度curlでファイル取得を行ってみます(dropしているので、クライアントに応答を返しません。なので、タイムアウト時間を5秒という設定でファイルを取得)。

[root@localhost ~]# curl -m 5 https://alctail.sakura.ne.jp/css/common/diary.css
curl: (28) Connection timed out after 5000 milliseconds
[root@localhost ~]#

といった感じでルールを追加できます。
ちなみに、上記で追加したルールは、以下のコマンドで削除可能です。

[root@localhost ~]# firewall-cmd --permanent --direct --remove-rule ipv4 filter OUTPUT 1 -m state --state NEW -m tcp -p tcp --dport 443 -j DROP
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# iptables -L --line-numbers ←削除したので、なにも表示されていない
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
[root@localhost ~]#

不要なものを消す

ソフトウェアや設定など、不要なものを削除します。

cockpit

「cockpit」というOSをブラウザから操作できるソフトウェアがCentOSでは、インストールされた状態になります(OSインストール時のパッケージの選択次第では入らないときもある)。
使わない場合は、不要なのでアンインストールしておきます。

dnf remove cockpit

アンインストールしても、firewallの設定値が残ったままなので、そちらも削除します。

[root@miranda ~]# firewall-cmd --remove-service=cockpit --zone=public --permanent
success
[root@miranda ~]# firewall-cmd --reload
success
[root@miranda ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: br0 enp3s0
  sources:
  services: dhcpv6-client ssh ←cockpitが消えているのでOK
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

firewalldの設定削除

初期の状態ではSSHのみ受け付けるように設定を行いたいです。
なので、OPENしているサービスで、使わないものを、設定から削除していきます。

[root@miranda ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: br0 enp3s0
  sources:
  services: dhcpv6-client ssh ←ここにでてくるものを「ssh」だけにしたい
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

「services」のところに、「dhcpv6-client」「ssh」と2つ表示されています(環境によってはもっとある)。
これを1個づつ消していきます。
削除方法はこちらを参照。

ホスト名の設定

コマンドで設定することが推奨されています(はず)。
以下のコマンドで、サーバーの名前を「miranda」に変更します。
/etc/hostnameファイルを見ると、ホスト名が指定したものに設定されていることが分かると思います(teratermを接続しなおすとホスト名が設定したものが出てくるはず)。

[root@localhost ~]# hostnamectl set-hostname miranda

ページの一番上へ