CentOS7の基本設定 Linuxのインストール後に設定する7つのポイント

2018/01/29 CentOS, Linux, サーバー構築

centos-setting-top2
CentOS7(ここでは7.0~7.4)のインストール完了後に、設定する最低限のポイントを纏めてみました。本記事で紹介した手順は一例で、これ以外にもサーバーを構築するためには複数の手順が必要になります。まずはLinuxの設定について、慣れる意味でも実際に設定を行ってみて、ある程度理解を深めたうえで、ご自身のベストな設定手順や構成を探していく形が良いと思います。
尚、CentOS7のインストール手順については、「CentOS 7 インストール Linuxを始めるにはインストールからがお勧め」で詳細な記事にしていますので、是非、参照してみてください。

スポンサーリンク

1.CentOSの基本的な設定についての概要

CentOSのインストール直後に、最低限これだけは行ったほうが良い設定から実施します。
OS自体に用意されたセキュリティを落とす設定も一部、含まれますが、ここでは利便性を天秤にかけて運用面から、より有用だと思われる手順を記載しています。
インストール後の環境ですが

  • CentOS7.4 (64bit)
  • アプリケーショングループとしてインフラストラクチャサーバーを選択してのインストール
  • IPアドレスについては、初期セットアップ用で設定したDHCP(IPアドレスの動的設定)で自動取得
  • インターネットへ接続できるネットワーク環境である

となります。
※ソフトウェアグループとして、「最小限のインストール」を選択されている場合は、追加でソフトウェアパッケージ(以下、パッケージ)のインストールが必要になります。不足分についてはyumコマンドでインストールを行って下さい。
また一般ユーザーでの実行が可能なコマンドについてはプロンプトとして$、rootユーザーでの実行が必要なコマンドについては#を記載しております。

2.selinuxの無効化

まず、selinuxを無効化します。selinuxはLinuxの監査やセキュリティを向上させる機能ですが、有効になっているとサービスの動作や、設定内容にかなりの制限が出てきます。そのため、基本的には無効にする場合が多いのが実情です。
ウェブサイトを見ながらサーバー構築を行って、思った通りに動作しない場合は、このselinuxが有効化されていることが原因だったりします。その為、インストール後に忘れずに無効化します。

2-1.selinuxの状態を確認

selinuxが有効になっているかの確認は getenforce コマンドで行います。(基本的にデフォルトで有効になっています。)

を実行して

と表示された場合、selinuxは有効化されています。

2-2.selinuxを無効に設定

selinuxを無効にするには/etc/selinux/configファイルを修正します。
修正はviなどのテキストエディターで行います。本記事ではファイルを修正する場合、基本的にviコマンドの利用を前提として記載しております。
設定ファイルをviコマンドで開きます。

ファイルの修正点は

になります。このパラメーターを

に変更して保存します。
この記載を間違えると(例えばスペルミスなど)Linuxが起動しなくなる場合がありますので、スペルミスなどが無いように気を付けて下さいね。※もし起動しなくなった場合はリカバリモードで起動して、ファイルを修正することで起動できるようになります。
ファイルの修正後、サーバーを再起動して、ログインできる状態になったら、再度、getenforceコマンドでselinuxの設定状況を確認します。

を実行して、結果として

と表示されれば、selinuxは正常に無効化されています。これでselinuxの無効化は完了です。

3.bash-completion パッケージの導入

CentOS7系からはサービス管理としてsystemctlというコマンドが用意されています。このコマンドは複数のオプションやサービスを指定する必要がありますが、デフォルトの状態だとtabキーを押した補完が利用できません。これだと不便なので、systemctlでtab補完が利用できるようにbash-completionパッケージをインストールします。

3-1.bash-completionパッケージのインストール

bash-completionパッケージは、パッケージ管理用コマンドであるyumでインストールできます。yumコマンドを以下のように実行します。

実行結果は以下のようになります。

「完了しました!」と表示されれば、パッケージのインストールは完了しています。

3-2.bash-completionパッケージの確認

bash-completionパッケージがインストールされているかを確認するには、以下のようにyumコマンドを実行します。

正常にインストールされている場合、コマンドの結果として、以下のように表示されます。

これでbash-completionパッケージの導入は完了です。

4.firewallの停止 (firewalld)とiptablesへの入れ替え

この項目については、個人的な好みが含まれます。それをご理解の上お読みください。iptablesを長く利用してきたユーザーとしては、中々、firewalldに慣れることができません。
そこで手っ取り早く、ここではfirewalldをCentOS6まで利用されていたファイアウォールであるiptablesに入れ替えてしまいます。
CentOS6まではサービスの自動起動を無効に設定するために init.dファイルを利用していましたが、CentOS7からはsystemctlコマンドで設定を行います。本記事ではsystemctlコマンドの詳細な使い方は割愛しております。実際の利用例についてフォーカスして紹介しております。

4-1.firewalldサービスの無効化

firewallをiptablesに入れ替える前に、デフォルトで有効になっているfirewalldを無効化します。
firewalldの無効化は

で行います。

firewalldが無効になっているかを確認するコマンドは以下になります。

サービス名に続いて、状態が表示されます。”disabled”と表示されればfirewalldサービスの自動起動は無効化されています。

4-2.iptablesパッケージのインストール

iptablesはyumコマンドでインストールを行います。(yumコマンドはソフトウェアパッケージを管理するコマンド)
インターネットへ接続できる環境である前提になりますので、その場合はyumコマンドを以下のように実行します。

正常にインストールされた場合、コマンドの出力結果にSuccessful と表示されます。
インストールされたことを確認するには、同じくyumコマンドで

を実行します。
結果として

が表示されれば、iptablesはインストールされています。

5.ネットワークの設定

CentOS 7系では、ネットワーク管理をネットワークマネージャーで行います。ネットワークマネージャーはnmcliというコマンドで操作できます。CentOS6系までのネットワーク関連ファイルを直接編集(/etc/sysconfig/network-interface/ifcfg-eth*ファイル)する方法でも、設定は可能ですが、今後はネットワーク周りの設定をnmcliで行うことが主流になると想定されますので、本記事でもnmcliを利用をします。

5-1.ホスト名の設定

まずはシステムに対して、任意のホスト名を設定します。ホスト名の設定には nmcliを以下のように実行します。ここではホスト名としてwwwを設定します。(実際には、環境に合わせたホスト名を指定してください。)

尚、nmcliコマンドのオプションは、オプションの頭文字だけでも指定が可能です。
例えば

と実行することで同じオプションを指定したことになります。(本記事ではコマンド表記を分かりやすくするため、出来るだけオプションを全て記載する形にしております。)

設定の結果は /etc/hostname ファイルを参照することで確認できます。
catコマンドで /etc/hostnameファイルを参照して

設定値である

が表示されていればホスト名の設定は完了です。
尚、インストール時にホスト名を指定している場合、変更が不要であれば、この手順は不要となります。

5-2.ネットワークインターフェイスへのIPアドレス設定

インストール時のIPアドレスはDHCPに設定されていますので、固定IPに振り直します。IPアドレスの設定についても、ホスト名と同じくnmcliコマンドを使用します。

※参照するDNSサーバーを複数指定する場合は ipv4.dnsのパラメーターを “192.168.241.253 192.168.241.254″という形で、複数DNSサーバーのIPアドレスを””で囲み、半角スペースを入れて保存します。
IPアドレスについても、OSインストール時に指定したものから変更がなければ、本手順は不要です。

5-3.ipv6設定を無効にする。

ipv6の無効化については、任意で行います。
ipv6についての無効化は必要がない場合も多いと思いますが、ここでは手順だけを記載しておきます。

5-3-1.sysctlファイルの設定

viエディタで設定ファイル /etc/sysctl.conf ファイルを変更します。

設定ファイルが開きますので

設定ファイルの一番下に、以下の二行を追加します。

設定を反映するために、再起動を行い、ipv6の無効化は完了です。

6.iptablesでパケットフィルタの設定

グローバルに公開されているサーバーは、secureログ (var/log/secureファイル、認証に関する記録を行うファイル)を参照するとわかりますが、外部からの攻撃(多くはsshやftpを狙った辞書攻撃)に晒されることになります。攻撃を回避するために、最低限のパケットフィルタを設定します。

6-1.iptablesで設定するポリシー

iptablesで初期に設定するポリシーの内容は以下を想定します。

  • サーバーに入ってくるパケットは一部を除いて拒否
    icmpは全て許可する。
    許可するポートはFTP/SSH。
    SSHは管理用のIP(111.8.21.167)からのみ許可する
  • サーバーに転送されるパケットは全て拒否
  • サーバーから外部へ送信されるパケットは全て拒否

設定完了後には、このポリシーをベースにして、許可するポートを追加していきます。
sshについては、固定IPが無い場合、接続時の認証方式を鍵認証に変更して、接続は全てのIPアドレスから許可するように変更することでセキュリティを担保することが可能です。ssh鍵認証の設定方法については、本記事では割愛しております。

6-2.iptablesでのフィルタ設定

iptablesでフィルタを設定するためには、iptablesコマンドを利用します。項目4-1.で記載した条件のフィルタを設定するためには、以下のコマンドを実行します。

6-2-1.転送と送信チェインの設定

まずはサーバーでの転送パケットと、送信パケットを全て拒否します。

6-2-2.ローカルとicmp通信の許可

次にicmpとローカルループバックの通信を全て許可します。

6-2-3.通信を許可するフィルタの設定

それ以外の許可するポートを記載します。
ここでは111.8.21.167/32 からのftp/sshを許可しています。

※111.8.21.167/32のような管理用となる固定IPをお持ちでない場合は、この設定は不要です。
ローカル環境の場合は問題ありません。

6-2-4.受信チェインの拒否設定

最後にサーバーへ入ってくるパケットを全て拒否します。

※この設定を行うと、111.8.21.167/32のような特定のIPから以外、サーバーへ接続できなくなります。
必要については十分、注意してください。

iptablesによるフィルタ設定が完了したら、確認を行います。

コマンドで、設定した内容が一覧で表示できます。本記事ではIPアドレスの名前引きを行わないように
“-n”オプションを付けています。
設定内容としては、下記のように表示されるかと思います。(順番はコマンドの実行順で変化します。)

もし設定を誤った場合や、修正したい場合は適宜、修正を行います。
設定が問題なく完了していれば

で設定した内容を保存します。

7.不要サービスの無効化

サーバーを運用する上で明らかに利用しないサービスは無効化(自動起動の停止)しておきます。
不要なポートのオープンや、サーバーリソースの無駄遣いを防ぐことを目的として行います。本記事では停止するサービスの一例を紹介しますが、実際の環境に合わせて無効化するサービスを選択する必要があります。
サービスの無効化は項目2-1.で紹介した管理用コマンド systemctlを利用します。systemctlにオプションとしてdisableを付与することで、サービスを無効化できます。
ここでは、以下のサービスを無効化します。
※インストールパッケージの状況により、エラーとなる場合があります。(主にサービスがインストールされていないことが
原因です。)

サービスの無効化を完了後に、サーバーの再起動を行います。

8.サーバーの時刻同期を設定する。

サーバーはサービスを提供するという性質から、正確な時間で運用されている必要があります。ここではサーバーの時刻を自動的に合わせるサービスであるchronydを設定していきます。

8-1.chronydサービスの設定

chronydサービスの設定は、/etc/chrony.confファイルで行います。
viエディタで設定ファイルを開きます。

設定ファイルは、デフォルトで時刻同期先のサーバーがいくつか記載してありますので、こちらをコメントアウトしていきます。

設定ファイルのコメントアウト後、参照したい時刻同期用サーバーを同じ形で記載していきます。
因みに最後に記載した、iburstオプションは起動直後に同期先のサーバーに4回連続的に問い合わせを行い、時刻同期が早く行うことが
できるオプションになります。本記事ではインターネット上にあるタイムサーバーである ntp2.jst.mfeed.ad.jp をタイムサーバーとして
指定します。

追記と編集が終わったら、ファイルを保存します。

8-2.chronydサービスの再起動

設定を有効にするためにchronydサービスを再起動します。

でchronydサービスの再起動を行うことが可能です。

8-3.時刻同期の確認

設定した内容が正常に反映、また時刻同期先のサーバーと同期が出来ていることを確認します。
確認用のコマンドは chronyc になります。このコマンドに sources オプションを指定することで
同期の状態を確認することができます。

正常に同期できている場合、同期先のサーバー名に*(アスタリスク)が付きます。
*が付かない場合は

  • 設定ファイルに誤りがある
  • サービスの再起動が出来ていない
  • インターネットへ接続できていない
  • ホストの名前引きに問題がある

などが原因として考えられます。上記の原因を元に調査を行って下さい。

9.まとめ

CentOSインストール後、そのままの状態で利用することはセキュリティ面でもリスクが高い構成になります。今回は最低限の設定のみを紹介してみました。この設定を元に、ご自身やお客様のニーズに合わせてカスタマイズを行っていただけると良いのかなあと思います。
勿論、足りない部分や、もっと良い方法もあると思いますが、最低限の設定ということで了承いただければ幸いです。

システムでお困りのお客様

もし、貴社で、

  • サポート切れのサーバやネットワーク機器の入れ替えをしたいが、どうしたらよいかわからない
  • サーバやネットワークの管理を行う社員がいないため困っている
  • 業務に利用している機器のセキュリティが大丈夫か心配
  • 機器の障害で、業務への影響が発生している
  • 社内の要望に対して、どのようなシステムを導入したらよいか解らない

など、サーバーやネットワーク、セキュリティでお悩みの方、新規のシステム導入を検討中の方。
多くのシステム構築を行い、成功させてきた実績をもつ弊社が、その問題を解決します。
お気軽にお問い合わせ頂き、貴社の問題解決にお役立てください。

お問い合わせ・ご相談はこちらから

Facebookでのご購読が便利です。

Twitter・Feedlyでもご購読できます。

Twitterでフォローする Feedlyでフォローする

関連する情報

centos-install

CentOS 7 インストール Linuxを始めるにはインストールからがお勧め

ここ最近、お客様と会話してみて思うのが、意外とLinux使ってないなーということ。 Linux

linux-output

Linux/Unixで設定ファイルのコメント行「以外」を抜き出したい時

システムの設定書を作成するときに、コメント行以外(先頭に#のついた行)を抜き出したいと思ったこと

win2008-sysprep-top

Windows Server 2008 R2で仮想マシンを初期化、sysprepの実行手順

仮想化環境(ここでは主にVMWare ESXiやマイクロソフトのHyper-Vなどのhyperv

Windows-powershell-cmd-12

Windows Server 2012 R2をより便利に利用する12のコマンド

Windowsを利用している環境だと、GUIに頼ってしまいませんか。WindowsのGUIは直観

activedirectory-first

Windows Server 2012 R2へActive Directoryをインストール・構成する

以前の記事「Windows server 2012 R2を利用する前に始める10の作業」でWin

win2016-ad-top

Windows Server 2016 へ Active Directoryをインストール・構成を行う

以前の記事「Windows Server 2016をインストール 最新OSの導入手順を確認する」

redhat-subscription

redhat networkをRHN ClassicからRed Hat Subscription Management へ変更する

ここ最近のredhat enterprise Linuxを利用されている方なら気づいているかと思

HP-sas-key-install

HP Proliant DLシリーズのgen8にSAS License Keyを投入する

ここ最近のHPサーバを構築していて思うことは、手間がかかるということです。 何かとLicens

win2016-tec11-top

Windows Server 2016のインストール後にお勧めの設定11項目

以前の記事「Windows Server 2016をインストール 最新OSの導入手順を確認する」

Windows_add-dc

Windows Server 2012 R2でActive Directoryにドメインコントローラーを追加する手順

以前の記事「Windows Server 2012 R2へActive Directoryをイン

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • スポンサーリンク