12
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu Server 16.04構築時のオススメ環境設定

Last updated at Posted at 2017-02-17

はじめに

自分用にメモしていましたが、改めて「構築時のオススメ環境設定をまとめておこう」という記事です。
オススメと言いつつ、最低限必要な設定のような気もします。。

前提条件

本記事は下記環境を前提とします。
(前提以外の環境でも出来る内容だとは思いますが。。)

  • Ubuntu Server 16.04
  • DMZなど外部に晒される環境のサーバである
  • ソフトウェアの選択で最小限構成である「Standard System Utilities」のみを選択している
  • 日本語インストーラでインストールしてしまった

最後のはデフォルト設定でインストールしていれば防げたような気もしますが、
インストールし直しが面倒だったので、対策を打ちました。

オススメ設定一覧

オススメ設定リストを示します。
自宅サーバをセキュアに運用したいのであれば、必要な設定だと思います。

  • tty日本語文字化け対応(*1)
  • ssh有効化
  • sshポート番号変更
  • ssh鍵認証設定
  • ファイアウォール(ufw)の設定
  • ウィルススキャンソフトのインストール(*2)

*(1)は前提条件にも記載した通り、日本語インストーラでインストールしてしまったからかもしれません。
後で言語パックを設定した方は不要かもしれませんので、参考まで。

*(2)はお好みで。デスクトップPCであれば必要かもしれませんが、サーバではそれほど重要ではないかもしれません。

設定手順

準備

sudo apt-get updateにて、aptを最新状態にしておきます。

・・・それだけです。

tty日本語文字化け対応(*1)

サーバ側コンソールで、日本語メッセージが文字化けします。
具体的には下記のような表示が・・・
◆ ◆ ◆ ◆ ◆ ◆ ◆ ・・・・

そこで.bashrcに次のcase文を記述します

case $TERM in
    linux) LANG=c;;
    *) LANG=ja_JP.UTF-8;;
esac

こうすると、サーバ側コンソールでログインした時はLANG=Cとなり英語表示になるため、文字化けしなくなります。
リモート接続側は日本語表示のままですので、ご安心を。

ssh有効化&sshポート番号変更

サーバなので、通常はリモートから接続して作業するでしょう。
なので、ssh接続ができるようにしておきます。

$ sudo apt-get install openssh-server
$ sudo service ssh status

ただ、このままだとデフォルトポート:22を使用することになります。
これでは攻撃を受け放題なので、ポート番号を変更しておきましょう。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
$ sudo vi /etc/ssh/sshd_config

ポート番号は未使用のポートに変更します。(任意のポート番号)
PermitRootLoginはrootユーザでのログインを許可するかどうか。です。
こちらも許可しない=noにしておきましょう。

  • Port 22 -> Port xxxxx
  • PermitRootLogin yes -> PermitRootLogin no

設定が完了したら、サービスを再起動して反映して完了です。

$ sudo service ssh restart

ssh鍵認証設定

sshはパスワード認証ではなく、鍵認証にしてさらにセキュアにしておくと良いと思います。
まずは鍵ファイルの生成からです。
ここでは鍵ファイルは/home/user_name/.sshに配置するものとします。
パスフレーズは設定しておくと尚セキュアですが、ここでは簡略化します。

サーバ側
$ ssh-keygen -t rsa
※パスフレーズは空のままEnter
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

次はサーバに接続するクライアント側の設定です。
クライアント側にサーバの秘密鍵を転送しておきます。
sshのポート番号は先ほど変更しているので、「-P」オプションで指定して実行してください。

クライアント側
$ scp -P xxxxx user_name@xxx.xxx.xxx.xxx:/home/user_name/.ssh/id_rsa ~/.ssh/id_rsa.hostname

これで、クライアント側からパスワード入力なしにssh接続できれば完了です。
接続確認後はパスワードでのログインを制限しておきましょう。

サーバ側
$ sudo vi /etc/ssh/sshd_config

PasswordAuthentication yes -> PasswordAuthentication no

$ sudo service ssh restart

ファイアウォール(ufw)の設定

サーバへのアクセス制御はもちろんファイアウォールです。
ubuntuではufwという簡単に設定できるコマンドがありますので、これを利用します。
インストールされていない場合はsudo apt-get install -y ufwでインストールしましょう。

基本はポート番号の制御です。
ここでは、念のため22番ポートにアクセスが出来ないようにし、sshで使用するポート番号へのアクセスを許可します。
これは内部ネットワークからのアクセスに制限しておきましょう。
大抵はWebサーバとして構築していると思いますので、80番、443番ポートはあけておきましょう。

/bin/bash
$ sudo service ufw status
● ufw.service - Uncomplicated firewall
   Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
   Active: active (exited) since yyyyMMdd HHmmss; Xmin ago
$ sudo ufw status verbose
状態: 非アクティブ
※ufw自体は動作している(active)が、無効化(disable)された状態であることを確認する。
$ sudo ufw deny 22
$ sudo ufw limit from 192.168.xxx.xxx/24 to any port xxxxx
$ sudo ufw allow 80
$ sudo ufw allow 443

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
※これでファイアウォールが有効化されました。

$ sudo ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
新しいプロファイル: skip

To                         Action      From
--                         ------      ----
22                         DENY IN     Anywhere                  
xxxxx                      LIMIT IN    192.168.xxx.xxx/24                  
80                         ALLOW IN    Anywhere                  
443                        ALLOW IN    Anywhere

※このような表示になればOKです。

実際に稼働されているかは/var/log/ufw.logにて確認できるので、確認してみてください。

ウィルススキャンソフトのインストール(*2)

自分はSophosのAntivirus for Linuxを選択しましたが、無償版のメジャーどころだとClamAVでしょうか。
Sophosにしたい!という方は、下記記事をどうぞ。
Ubuntu Server 16.04にSophos Antivirus for Linuxをインストールする

終わりに

サーバを公開してから/var/log/syslogを覗くと、早速たくさんの方の訪問(攻撃目的)を確認できると思います。
なるべくセキュアに運用するのが得策だと思いますので、参考にしてみてください。

尚、手順は自環境のみの確認ですので、記載内容に誤りがあればコメントください。
よろしくお願いいたします。

12
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?