参考サイト
- https://qiita.com/YGocho/items/bcf5563bdfa971a1c0ef
- https://www.server-world.info/query?os=Ubuntu_18.04&p=download
- http://www.ellinikonblue.com/blosxom/UNIX/20150721SSH.html
- https://qiita.com/kotarella1110/items/f638822d64a43824dfa4
- https://www.yokoweb.net/2016/05/08/ubuntu-16-04-server-japanese/
- https://ytooyama.hatenadiary.jp/entry/2018/07/20/002249
- https://qiita.com/kotarella1110/items/f638822d64a43824dfa4#ufw-%E3%81%AE%E8%A8%AD%E5%AE%9A
1.root のパスワード・sudo 設定
どういうわけか、インストールの最中に root のパスワードを設定するようなシーンは一切なかった。(初期ユーザーは設定したけれども)
sudo su でルートに su 出来るので、不便は感じないと思うが、何がパスワードに設定されてるのかわからないし、「未設定」ということなら、サーバーのセキュリティとしては考えもの。ポート開放されてない環境なんで、外から SSH とかは出来ないはずだが、MBPにマルウェアが感染して、そこからリモートで・・・というのもありえない話じゃないので、パスワードくらいは設定しときたい。
$ sudo su - # passwd Enter new UNIX password: (新パスワード) Retype new UNIX password: (新パスワードをもう一回) passwd: password updated successfully
っていうか、sudo su – を叩いた時点で、何のパスワードも聞いてこないってことは、root のパスワードが未設定だった可能性が高い。
root のパスワードを設定したので、sudo の設定もしておく。触るファイルは Cent OS のときと同じようだが、設定値は若干違うようだ。
# This allows root to su without passwords (normal operation) # auth sufficient pam_rootok.so # これが初期設定なのでコメントアウト auth required pam_wheel.so group=adm # この行のコメントを解除し、"gruop=adm"を追記
2.パッケージの最新化
$ sudo apt update $ sudo apt upgrade
すると、途中で見覚えのあるメッセージが。
Need to get 35.8 MB of archives. After this operation, 1,393 kB disk space will be freed.
・・・これって、Docker で Ubuntu / Debian ベースで開発環境作ってる途中に出てたメッセージじゃないか。
てっきり、ディスク容量が足りてないもんだと思ってたが、よくよく見ると、「このオペレーションの後にXX kB の領域が開放されます」というメッセージで、ディスクが足りない、ってメッセージじゃない。
じゃあ、なんで Docker build のときは”abort”で落ちたたんだ?
まあいい、今は保留としておこう。
3.SSH関係の設定
インストール時に OpenSSH をインストールしたので、すでにMBPから SSH 接続はできているが、追加で root ログインを禁止する設定をしておく。
$ sudo vi /etc/ssh/sshd_config #PermitRootLogin prohibit-password PermitRootLogin no # 追記 $ sudo systemctl restart ssh
あわせて、鍵認証できるように設定もしていく。
3.1.サーバー側で鍵ファイル生成
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): Created directory '/home/ubuntu/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_rsa. Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub. The key fingerprint is: (以下略) $ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
3.2.MBP側に鍵ファイルを転送
・・・と思ったら、すでに id_rsa ファイルが存在している。何の用途で作ったのか、イマイチ思い出せないので、消すのも怖いが、単に複数ファイル作って接続するたびに使い分けるのも面倒。ってか、何の用途か思い出せないものをすぐに使うとも思えないので、先に作ってたファイルの方をリネームしておこう。
気を取り直して、手順再開。
$ scp ubuntu@192.168.xxx.xxx:/home/ubuntu/.ssh/id_rsa ~/.ssh/ $ ssh 192.168.xxx.xxx Enter passphrase for key '/Users/ubuntu/.ssh/id_rsa': (中略) ubuntu@hostname:~$
鍵ファイルで無事にログインできたので、SSH の設定を変更し、パスワード認証も切っておく。
$ sudo vi /etc/ssh/sshd_config #PasswordAuthentication yes PasswordAuthentication no # 追記
4.パッケージの自動アップデート(セキュリティパッチのみ)
Ubuntu (というか Debian 系?)では、”unattended-upgrades” というパッケージで自動アップデートをするらしい。
bionic のサーバーをインストールした段階では、すでにインストールされていて、調べると以下の設定ファイルをいじるらしいが、どうも「重要なセキュリティアップデートを自動的にインストールする」のがデフォルトになっている模様。
$ cat /etc/apt/apt.conf.d/20auto-upgrades APT::Periodic::Update-Package-Lists "1"; # リストの更新間隔。1で毎日。 APT::Periodic::Unattended-Upgrade "1"; # アップデートのインストールを行うかどうか。1で行う。 $ cat /etc/apt/apt.conf.d/50unattended-upgrades // Automatically upgrade packages from these (origin:archive) pairs (略) Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}"; "${distro_id}:${distro_codename}-security"; # 重要なセキュリティアップデートを更新 // Extended Security Maintenance; doesn't necessarily exist for // every release and this system may not have it installed, but if // available, the policy for updates is such that unattended-upgrades // should also install from here by default. "${distro_id}ESM:${distro_codename}"; // "${distro_id}:${distro_codename}-updates"; # 推奨アップデートを更新するならコメントアウト // "${distro_id}:${distro_codename}-proposed"; # プレリリースされたアップデートを更新するならコメントアウト // "${distro_id}:${distro_codename}-backports"; # サポートされていないアップデートを更新するならコメントアウト }; (以下略)
5.日本語化
$ sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc # ibus-mozc は日本語入力システム $ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" $ sudo dpkg-reconfigure tzdata # timezoneもデフォルトはUTCなので設定 -> GUI (と言ってもテキストベースだが) でアジア>東京 と選んで設定していく。
ただ、日本語化しても「本体のコンソール」では日本語は使えないらしいので、下記の設定をして切り替えられるようにしておく。
$ vi ~/.bashrc # 下記を追記 case $TERM in linux) LANG=C ;; *) LANG=ja_JP.UTF-8;; esac
ついでに、man ページも日本語化しておく。
$ sudo apt-get install manpages-ja
6.時刻同期
$ sudo apt-get install chrony $ sudo vi /etc/chrony/chrony.conf $ sudo systemctl restart chrony $ chronyc sources ## 設定したNTPサーバーが反映されていることを確認 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- ntp-b2.nict.go.jp 1 6 17 2 -7623us[-7623us] +/- 30ms ^* ntp1.jst.mfeed.ad.jp 2 6 17 2 -5674us[-7048us] +/- 118ms ^- ntp2.jst.mfeed.ad.jp 2 6 17 2 +20us[ +20us] +/- 98ms
そういえば、Cent OS のインストールや初期設定の手順を調べてると、SELinux / firewalld / NetworkManager をオフにするっていう手順がよく紹介されているが、Ubuntu bionic の場合、そもそも「サーバー」をインストールしても入ってない。
firewalld に関しては ufw が、NetworkManager に関しては、Netplan.io がそれぞれ代わりに入っているようだが、SELinux に関しては代替のものも入っていないようだ。
インストールするときにパッケージを選ぶ画面が出てくるが、そこで選んだパッケージによっては入るのかもしれないが、Open SSH を追加しただけでは入らないようだ。