Contents
1.サーバー構築設定の前準備 SELinuxの無効化
まず、selinuxを無効化します。selinuxはLinuxの監査やセキュリティを向上させる機能ですが、有効になっているとサービスの動作や、設定内容にかなりの制限が出てきます。そのため、基本的には無効にする場合が多いのが実情です。
ウェブサイトを見ながらサーバー構築を行って、思った通りに動作しない場合は、このselinuxが有効化されていることが原因だったりします。その為、インストール後に忘れずに無効化します。
次のようにすると無効化ができます。(本ページでは一般ユーザー名「jimy」、ホスト名「Lepard」になっています)
一般ユーザーでログイン後、ルートユーザーに権限変更の方法は既知のこととして進めます。
1 2 3 4 5 6 7 8 |
Lepard login: jimy Password: [jimy@Lepard ~]$ su - ルートパスワード入力 [root@Lepard ~]# getenforce ← SELinux機能の確認 Enforcing ← SELinux有効 [root@Lepard ~]# setenforce 0 ← SELinux機能を無効にする [root@Lepard ~]# getenforce ← SELinux機能の再確認 Permissive ← SELinux機能が無効である |
このままでは、サーバーを再起動すればseinuxは有効に戻りますので、永久にselinuxを無効にするには/etc/sysconfig/selinuxファイルを修正します。
1 |
# vi /etc/sysconfig/selinux |
赤枠の中「SELINUX=enforcing」を「SELINUX=disabled」に変更する
変更後
2.サーバー構築設定の前準備 SSHによるリモート接続の設定
SSHはサーバーへリモートで接続するためのサービスで、基本的にはOSインストール直後に動作していますが、デフォルトの設定ではややセキュリティに難があります。
ここではデフォルトの設定を変更してssh接続のセキュリティを高める設定を行います。
2.1 SSHサービスの設定ファイル変更
SSHサービスの設定を変更するために設定ファイルを変更します。
SSHサービスの設定ファイルは"/etc/ssh/sshd_config"になります。設定ファイルをviエディターで開きます。(viエディタの使い方はネットに情報がたくさんありますので調べて下さい)
viエディタで開くと次のような画面が出ます。
SSH の再起動
1 |
# systemctl restart sshd.service |
3.ファイアウォール(firewalld)の設定方法
Rocky Linuxではファイアウォールはfirewalldがデフォルトに設定されており、OSインストール時に有効になっています。
「firewalld」について簡単に説明すると、通信制御のポリシーを設定する場合、事前に定義されたゾーンに対して通信の許可・遮断ルールを適用し、そのゾーンを各NIC(ネットワークアダプタ)に割り当てていくという方式になっています。
3.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稼働状況確認
1 |
# firewall-cmd --state |
「firewalld」が動作している場合は「running」、停止している場合は「not running」と表示されます
または
1 2 3 4 5 6 7 |
# systemctl status firewalld ● 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ゾーン設定を表示
1 2 3 4 5 6 7 8 9 10 |
# firewall-cmd --list-all 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」が許可されていること等がわかります
➂指定したゾーンの設定を表示
下記の実行例は「dmz」ゾーンの設定を表示させた例
1 2 3 4 5 6 7 8 9 10 |
# 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」で設定を反映させる必要があります
例としてHTTPサービスをシステムを再起動しても初期化されず恒久的に利用するためには
1 2 |
# firewall-cmd --add-service=http --permanent # firewall-cmd --reload |
⑤ゾーンへのサービス追加・削除
すでに定義されているサービスをゾーンに追加するためには「–add-service」でサービスの指定行います
1 |
# firewall-cmd [--permanent] --zone=ゾーン名 --add-service=サービス名 |
恒久的にゾーンにサービスを追加したい場合は「--permanent」オプションをつけて設定を行う必要があります。
一時的にサービスを追加する設定例
1 2 |
# firewall-cmd --zone=public --add-service=http success |
恒久的にサービスを追加する設定例
「--permanent」オプションを指定して、「public」ゾーンに「http」サービスを追加する例
1 2 |
# firewall-cmd --permanent --zone=public --add-service=http success |
⑥サービス削除
ゾーンに設定されているサービスを削除するには「--remove-service」を使用
1 |
# firewall-cmd [--permanent] --zone=ゾーン名 --remove-service=サービス名 |
例として「http」サービスを「public」ゾーンから削除
1 2 3 4 |
# firewall-cmd --permanent --zone=public --remove-service=http success # firewall-cmd --reload success |
⑦ゾーンへのポート追加・削除
サービスとして追加されていない通信をゾーンに追加する場合は、ポート番号とプロトコルを指定して追加する
ポートの追加
ゾーンへのポート追加は「--add-port」を使用して行います
1 |
# firewall-cmd [--permanent]--zone=ゾーン --add-port=ポート番号/プロトコル |
設定例
「public」ゾーンにポート番号「10022」プロトコル「TCP」のルールを追加してみます
1 2 3 4 |
# firewall-cmd --permanent --zone=public --add-port=10022/tcp success # firewall-cmd --reload success |
ポートの削除
ゾーンからポートを削除するには「--remove-port」を使用
1 |
# firewall-cmd [--permanent]--zone=ゾーン --remove-port=ポート番号/プロトコル |
設定例
先ほど追加した「public」ゾーンの「10022/tcp」ルールを削除します
1 2 3 4 |
# firewall-cmd --permanent --zone=public --remove-port=10022/tcp success # firewall-cmd --reload success |
⑧変更したSSHポート3333をfirewallで許可する
1 2 3 4 |
# firewall-cmd --permanent --add-port=3333/tcp success # firewall-cmd --reload success |
1 |
# systemctl restart sshd.service |
⑨起動・停止方法
「firewalld」は「systemd」で制御されているので、起動と停止には「systemctl」コマンドを使用
firewalldの起動
1 |
# systemctl start firewalld |
firewalldの停止
1 |
# systemctl stop firewalld |
⑩追加情報
次の通りファイアウォール( firewalld )の動作状況の確認を行うと
1 2 3 4 5 6 7 |
# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since 月 2014-09-** 06:01:06 JST; 5min ago Main PID: 567 (firewalld) [以下省略] WARNING: AllowZoneDrifting is enabled.> |
WARNING: AllowZoneDrifting is enabled.>が表示される場合 firewalld.conf を編集する
「firewalld.conf」のバックアップ
1 |
# cp -p /etc/firewalld/firewalld.conf /etc/firewalld/firewalld.conf.original_bk |
「firewalld.conf」の編集
1 2 3 |
# vi /etc/firewalld/firewalld.conf 最後の行を、AllowZoneDrifting=no に変更 |
1 |
# systemctl restart firewalld |
4.不足パッケージのインストール
RHEL 8 からは、デフォルトでyum が dnf に変更になっています。 yum のままでもOKです。
「ベース」と「その他の開発」を groupinstall でインストールします。
※※ 注意 ※※ yum -y update を先にすると Base のインストールがエラーになりますので注意してください。
つまり、カーネルのバージョンを先に最新バージョンにしないことです。
1 |
# dnf -y groupinstall "Base" "Additional Development" |
5.セキュリティ対策のため停止するサービス
次の不要と思われるサービスを停止します。
atd | 単発的にスケジュール化した コマンド を実行させるデーモン |
auditd | 監査メッセージのログファイルを出力するデーモン |
kdump | システムがクラッシュした時、原因を特定するためのdumpファイルを保存してくれるサービス |
lvm2-monitor | 論理ボリュームマネージャー(LVM) 利用時の障害監視のためのデーモン |
mdmonitor | ソフトウェアRAID 監視サービス |
rngd | ハードウェア を元に乱数を発生させるためのデーモン |
smartd | ハードディクスのS.M.A.R.T.による自己診断機能情報を取得する |
tuned | CPUガバナーを利用して強制的にCPUを最大パフォーマンスで動作させる |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# systemctl stop atd.service # systemctl disable atd.service # systemctl stop auditd.service # systemctl disable auditd.service # systemctl stop kdump.service # systemctl disable kdump.service # systemctl stop lvm2-monitor.service # systemctl disable lvm2-monitor.service # systemctl stop mdmonitor.service # systemctl disable mdmonitor.service # systemctl stop rngd.service # systemctl disable rngd.service # systemctl stop smartd.service # systemctl disable smartd.service # systemctl stop tuned.service # systemctl disable tuned.service # systemctl stop dm-event.socket # systemctl disable dm-event.socket |
6.Windowsからリモート接続
Windowsでの設定
Windowsからリモート接続するための設定を始めます、ターミナルエミュレーターは「Tera Term」を使用します。
Tera Termを起動し、起動画面のキャンセルをした後、Tera Termメニューの「設定」から「TCP/IP」を選択すると、次の画面になりますので赤字で説明の通り入力します。
「TCPポート番号」の箇所は上記「SSHサービスの設定ファイル変更」で設定したポート番号を入力します。最後に「OK」をクリック
再度Tera Termメニューの「ファイル」から「新しい接続」を選択すると上記の画面になるのて゜「OK」をクリックすると、次の画面になる
上の画面で「続行」をクリックすると、次の画面になる
情報が正しければ下図のように正常にログインできるはずです。