「2023年最新版【初心者】が自前のLinux環境を準備するまで ~第3章~ SELinux / firewalldの停止」

はじめに

※この記事を始めて読む方へ!!

こちらの記事は6記事に渡るシリーズものの1記事になります。まだ手元に自分のLinux環境がない方は、ぜひ以前の記事も読んでみてください!!

仮想マシンについて:
「2022年最新版【初心者】が自前のLinux環境を準備するまで ~第0章~仮想マシンとは」

仮想化ソフトウェアのインストールについて:
「2022年最新版【初心者】が自前のLinux環境を準備するまで ~第1章~仮想化ソフトウェア(VMware Workstation Player)のインストール」
「2022年最新版【初心者】が自前のLinux環境を準備するまで〜第1章〜仮想化ソフトウェア(VirtualBox)のインストール」

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんにちは。日本ビジネスシステムズ株式会社の2021年度新卒の岩間です。

Big Data Platformをメインにとり扱う部署でLinux/Hadoop基盤の構築を担当しています。

本記事はLinux環境構築のために必要な技術知識と手順を記載した解説記事です。 IT系キャリア志望の方や情報系の学生、あるいはLinuxに馴染みのないエンジニアの方々といった、Linuxを1から始めたい人が自前のLinux環境(OSはCentOSを使用)を準備して、「Webサーバーを構築」できるようになることを目標としています。

ここまでの記事で自分のLinux VMの作成が完了しているかと思います!

今回の記事では今後の作業で必要になってくる、「SELinux / firewalldの停止」という作業についてご紹介します。できるだけ分かりやすく丁寧に解説したいと思っておりますので、ぜひトライしてみてください!

※Webサーバー構築までの解説で1記事で収まらなかったので、章立てにして全部で5回に渡って解説していく予定となっています。

※本シリーズの記事ではVMware Workstation Playerという仮想化ソフトウェアを使用した手順を紹介していきます。

※本記事は初心者の方が自前のLinux環境を構築することを第一目標としているため、各種設定項目についての説明を省略しています。今後それらについての説明記事を書く可能性もありますが、ぜひ皆様の方でも個別に調べてみてください!

SELinux / firewalldとは

SELinuxとは

SELinxとは「Security-Enhanced-Linux」の略で、Linuxのセキュリティ機能を強化するモジュールです。

SELinuxのアクセス制御では各ユーザーや各アプリケーションが「できること」をあらかじめルールで決めておくことで、そのルールに反する操作を全て禁止することができます。

このSELinuxがあることで、仮にLinuxマシンのrootユーザー(最高権限ユーザー)が乗っ取られたとしても、rootユーザーができる操作がルールによって制限されているため、悪意のある操作を禁止することができます。

しかし、実はこのSELinuxは無効化してLinuxを運用しているケースも少なくありません。
というのもSELinuxは米国国家安全保障局(NSA)によって開発された、Linux のセキュリティをより強固なものにするための機能になり、
仕様はとても難解で立ち入ることが難しく、root権限ユーザの操作が制限される関係で意図した形でプログラムが動かなくなったりする事もあります。

この機能は管理者が編集することも可能ですが、難解ゆえにかなりの手間であるため、セキュリティ対策は別途用意しつつこのSELinuxを無効化して運用する場合があります。

本記事でもこのSELinuxを無効化します。(デフォルトで有効になっています)

firewalldとは

先ほどのSELinuxは「侵入された後にアクセスできる範囲を最小限に抑えるための仕組み」でしたが、firewalldはLinuxマシンに対するアクセスを「ルールに則って拒否/許可する事ができるサービス(デーモン)」になります。

例えば、「Linuxマシンの"X"というソフトウェアは、IPアドレスが"A"というマシンからのアクセスのみ受け付ける」というルールを設定しておくことで、仮に"B"というマシンから"X"というマシンにアクセスがあったとしてもfirewalldが阻止してくれます。

このfirewalldですが、第5章で実施予定のwebサーバーへの接続に必要なhttpプロトコルをデフォルトで禁止しています。

httpプロトコルの禁止を解除することも設定可能なのですが、今回は検証と言う事もあるのでfirewalldサービス自体を無効化していきたいと思います。

SELinux / firewalldの停止

ここからは実際に無効化する方法を紹介していきます。手元のLinuxサーバーを起動して、以下の手順をよく読んで実行してみてください。

SELinuxの停止

SELinuxの設定ファイルを開く

以下のコマンドを入力

# vi /etc/selinux/config
設定ファイルの編集モードに入る

キーボードで「i」を入力する

画面左下が「-- INSERT --」に切り替わる

SELinuxの自動起動をオフにするように設定ファイルを書き換える

十字キーでカーソルを移動し、「SELINUX=permissive」を「SELINUX=disabled」に書き換える

設定ファイルの編集を保存し、編集モードを終了する

Escキーを押して画面左下の「-- INSERT --」が消えたことを確認し、「:wq」を入力してEnterキーを押す

設定を反映させるためにLinux VMを再起動する

以下のコマンドを入力

# reboot
SELinuxの起動状態を最終確認する

以下のコマンドを入力

# getenforce

「Disabled」と表示される

firewalldの停止

firewalldの現在の起動状態を確認する

以下のコマンドを入力

# systemctl status firewalld

「Active」の欄に「active (running)」と表示される。⇒firewalldが起動中ということ

firewalldを停止する

以下のコマンドを入力

# systemctl stop firewalld
firewalldの起動状態を再確認する

以下のコマンドを入力

# systemctl status firewalld

「Active」の欄に「inactive (dead)」と表示される。⇒firewalldが停止したということ

firewalldの自動起動状態を確認する

以下のコマンドを入力

# systemctl is-enabled firewalld

「enabled」と表示される

firewalldを恒久的に停止する。⇒自動起動を無効化する

以下のコマンドを入力

# systemctl disable firewalld

以下の内容が表示される

firewalldの自動起動状態を再確認する

以下のコマンドを入力

# systemctl is-enabled firewalld

「disabled」と表示される

※おまけ:SELinuxを一時的に停止したい場合の手順

※さきほど紹介したSELinuxの停止方法は恒久的に停止する方法でしたが、仮に一時的に停止したい方は以下の手順をご参考ください。(再起動が必要ないため、手軽に停止可能です)

SELinuxの現在の起動状態を確認する

以下のコマンドを入力

# getenforce

「Enforcing」と表示される

SELinuxを停止する

以下のコマンドを入力

# setenforce 0
SELinuxの起動状態を再確認する

以下のコマンドを入力

# getenforce

「Permissive」と表示される

さいごに

今回は今後のwebサーバー構築時に備えた準備作業である「SELinux / firewalldの停止」方法について紹介させていただきました。

この記事では初学者の方がとりあえず扱える環境を作り上げるというのを第一の目標としているため、SELinux / firewalldの説明は最小限にとどまっています。

一度環境を構築できた後であったり、余裕ができた時には再度自分でSELinux / firewalldについても調べてみてください!

執筆担当者プロフィール
岩間 義尚

岩間 義尚

2021年度新卒入社後、Hadoopを中心に複数のデータ基盤の開発/運用を経験。 現在はSnowflakeやAzureでのデータエンジニアリングをメインに担当しています。

担当記事一覧