Contents
1.サーバー構築設定の前準備 SSHによるリモート接続の設定
SSHはサーバーへリモートで接続するためのサービスで、基本的にはOSインストール直後に動作していますが、デフォルトの設定ではややセキュリティに難があります。
ここではデフォルトの設定を変更してssh接続のセキュリティを高める設定を行います。
1.1 SSHサービスの設定ファイル変更
SSHサービスの設定を変更するために設定ファイルを変更します。
SSHサービスの設定ファイルは“/etc/ssh/sshd_config”になります。設定ファイルをviエディターで開きます。(viエディタの使い方はネットに情報がたくさんありますので調べて下さい)
viエディタで開くと次のような画面が出ます。
# vi /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
Port 2244
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
SSH の再起動
2.ファイアウォール(firewalld)の設定方法
openSUSEではファイアウォールはfirewalldがデフォルトに設定されており、OSインストール時に有効になっています。
「firewalld」について簡単に説明すると、通信制御のポリシーを設定する場合、事前に定義されたゾーンに対して通信の許可・遮断ルールを適用し、そのゾーンを各NIC(ネットワークアダプタ)に割り当てていくという方式になっています。
2.1 「firewalld」を制御するための「firewall-cmd」コマンド使用方法
1)ゾーンについて
初期状態で9つのゾーンが用意されています
ゾーン | 通信許可サービス | 説明 |
block | なし 外部からの接続はすべて遮断 | 設定変更不可 遮断時は「CIMP Pohibited」を返し、内部からの通信時は戻りの通信も許可される |
dmz | ssh | dmz用に定義されたゾーン |
drop | なし 外部からの通信はすべて遮断 | 設定変更不可 内部からの通信は送信できるが、外部からの戻りの通信は遮断されるため、結果的にすべての通信が出来ない |
external | ssh | IPマスカレード有効でルータなど外部ネットワークとの接続で使用するために定義されたゾーン |
home | dhcpv6-client ipp-client mdns samba-client ssh | 自宅などで使用するために定義されたゾーン |
internal | dhcpv6-client ipp-client mdns samba-client | 内部ネットワークで使用するために定義されたゾーン |
public | dhcpv6-client ssh | 公共の場所で使用するために定義されたゾーン |
trusted | すべての通信を許可 | 設定変更不可 |
work | dhcpv6-client ipp-client ssh | 職場などの業務エリアで使用するために定義されたゾーン |
2)「fierwalld」の状態や設定内容を確認するためのコマンド
①firewalld稼働状況確認
「firewalld」が動作している場合は「running」、停止している場合は「not running」と表示されます
または
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 金 2016-08-26 15:13:37 JST; 26min ago
Main PID: 735 (firewalld)
CGroup: /system.slice/firewalld.service
mq735 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid
※停止している場合
Active: inactive (dead)と表示され、firewalldが停止していることが分かります
➁defaultゾーン設定を表示
public (default, active)
interfaces: eno16777736 eno33554984
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
上記の例ではpublic」ゾーンが「default」設定となっていて、「eno16777736」「eno33554984」のNICに割り当てられており、サービス「dhcpv6-client」「 ssh」が許可されていること等がわかります
➂指定したゾーンの設定を表示
# firewall-cmd –zone=dmz –list-all
dmz
interfaces:
sources:
services: ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
④「–permanent」オプションについて
サーバの再起動や「firewalld」サービスの再起動で設定が消えてしまわないようにするためには、
「–permanent」オプションを使用して設定を行う必要があります。その際、「–permanent」オプションを指定して設定を行った場合は、そのままでは「firewalld」に設定が反映されないため「fiewall-cmd –reload」で設定を反映させる必要があります
# firewall-cmd –add-service=http –permanent
# firewall-cmd –reload
⑤ゾーンへのサービス追加・削除
# firewall-cmd [–permanent] –zone=ゾーン名 –add-service=サービス名
恒久的にゾーンにサービスを追加したい場合は「–permanent」オプションをつけて設定を行う必要があります。
一時的にサービスを追加する設定例
success
恒久的にサービスを追加する設定例
# firewall-cmd –permanent –zone=public –add-service=http
success
⑥サービス削除
# firewall-cmd [–permanent] –zone=ゾーン名 –remove-service=サービス名
例として「http」サービスを「public」ゾーンから削除
# firewall-cmd –permanent –zone=public –remove-service=http
success
# firewall-cmd –reload
success
⑦ゾーンへのポート追加・削除
サービスとして追加されていない通信をゾーンに追加する場合は、ポート番号とプロトコルを指定して追加する
ゾーンを指定してポートの追加
# firewall-cmd [–permanent]–zone=ゾーン –add-port=ポート番号/プロトコル
設定例
「public」ゾーンにポート番号「10022」プロトコル「TCP」のルールを追加してみます
# firewall-cmd –permanent –zone=public –add-port=10022/tcp
success
# firewall-cmd –reload
success
ゾーンを指定してポートの削除
# firewall-cmd [–permanent]–zone=ゾーン –remove-port=ポート番号/プロトコル
設定例
先ほど追加した「public」ゾーンの「10022/tcp」ルールを削除します
# firewall-cmd –permanent –zone=public –remove-port=10022/tcp
success
# firewall-cmd –reload
success
⑧起動・停止方法
firewalldの起動
# systemctl start firewalld
firewalldの停止
# systemctl stop firewalld
2.2 変更したSSHポート2244番を解放する
# firewall-cmd –reload
3.Windowsからリモート接続
Windowsでの設定
Windowsからリモート接続するための設定を始めます、ターミナルエミュレーターは「Tera Term」を使用します。
Tera Termを起動し、起動画面のキャンセルをした後、Tera Termメニューの「設定」から「TCP/IP」を選択すると、次の画面になりますので赤字で説明の通り入力します。
「サーバーのIPアドレス」「TCPポート番号」の箇所は各自で設定したものを入力します。最後に「OK」をクリック
再度Tera Termメニューの「ファイル」から「新しい接続」を選択すると上記の画面になるのて゜「OK」をクリックすると、次の画面になる
上の画面で「続行」をクリックすると、次の画面になる
情報が正しければ下図のように正常にログインできるはずです。
Last login: Thu Jan 13 21:39:44 2022 Have a lot of fun… lan@localhost:~> |
4. NTP サーバーの設定
Chrony をインストールして、時刻同期のための NTP サーバーを構築します。なお、NTP は 123/UDP を使用します。
4.1 Chronyインストール
4.2 Chrony の設定
# 3-7行目:コメントアウト
#pool 0.suse.pool.ntp.org iburst
#pool 1.suse.pool.ntp.org iburst
#pool 2.suse.pool.ntp.org iburst
#pool 3.suse.pool.ntp.org iburst
#! pool pool.ntp.org iburst
追記
server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
# 29行目: 時刻同期を許可する範囲を追記
allow 192.168.11..0/24
# systemctl enable chronyd
4.3 NTPポートの開放
Firewalld を有効にしている場合は NTP サービスの許可が必要です。なお、NTP は 123/UDP を使用します。
success
# firewall-cmd –reload
success
4.4 動作確認
210 Number of sources = 19
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================
^- any.time.nl 2 8 377 653 +4648us[+4712us] +/- 22ms
^* ntp-a2.nict.go.jp 1 8 377 70 +319us[ +293us] +/- 5508us
^- y.ns.gin.ntt.net 2 8 377 66 -507us[ -507us] +/- 109ms
^- 122x215x240x51.ap122.ftt> 2 8 377 73 +34ms[ +34ms] +/- 78ms
^- kuroa.me 2 8 377 198 +880us[ +854us] +/- 43ms
^- 103.202.216.35 3 8 377 75 +4871us[+4845us] +/- 150ms
^+ ipv4.ntp2.rbauman.com 2 7 377 399 +1714us[+1706us] +/- 14ms
^+ r025169.203112.miinet.jp 4 8 377 322 +393us[ +366us] +/- 12ms
^? any.time.nl 0 6 0 – +0ns[ +0ns] +/- 0ns
^? y.ns.gin.ntt.net 0 6 0 – +0ns[ +0ns] +/- 0ns