コンテンツにスキップ

サーバー管理の手引き

この記事では、ISEE総合解析研究部内で個人用のサーバーを管理する際に注意すべき事柄をまとめてあります。不明点は事前に十分に調査して解消し、安全にサーバーを運用してください。

なぜサーバ管理を行うか

Linuxはノートパソコンなど個人が普段触る計算機としてはマイナーな部類です。しかし、W3Techsによる2025年の統計結果では、サーバー用途では9割近くがLinuxと報告されています。 (ちなみにスマートフォンのOSであるAndroidもLinuxの一種です。)

Dockerを始めとするコンテナ仮想化技術の隆盛もLinuxサーバ増加の一因かもしれません。現在のコンテナ仮想化ツールの多くはLinuxをベースとしています。Linuxサーバの管理方法を学ぶことは、今後ますます重要になってくると期待出来ます。

自分自身で実態のあるサーバを管理し、設定をいじり倒し、間違えて壊す、といった経験は、サーバ管理能力の効率的な育成には必須な過程だと思っています。共用計算機では迷惑を被る人が多いので経験豊富な人が管理する場合が多いですが、個人サーバならセキュリティ事故にさえ注意すれば、およそ迷惑を被るのは自分自身です。自分の研究という目的のためにサーバを構築・運用する経験は、Linux全般の知識と技能の向上に大きく寄与することでしょう。

セキュリティガイドラインの遵守

サーバの運用にあたっては、一般的なサーバーセキュリティ、名古屋大学情報セキュリティポリシー名古屋大学情報セキュリティガイドラインを遵守してください。計算機のセキュリティ事故は、同一のネットワーク(例: 研究部内、研究所内、名古屋大学内)にある他の計算機に大きく影響する場合があります。普段利用しているノートパソコン等含め、くれぐれも注意して運用してください。

IPアドレスデータベース(IPDB)への登録

IPアドレスデータベース(IPDB)は、名古屋大学情報セキュリティガイドラインに基づいて設置されているデータベースです。所属員が運用する計算機のIPアドレスや機器情報を登録し、悪意ある第三者によるネットワーク接続を防止するために利用されています。研究部のWiFiを使う分には無線LANルータのIPアドレスが代わりに登録されていますが、有線LANでネットワークに接続する場合は必ずIPDBへの登録が必要です。

必須: SSHデーモンの設定(root・パスワードログインの禁止)

Linuxサーバーに外部からアクセスする場合、基本的にはSSHを使うことになると思います。 サーバにSSHで接続するためには sshd (SSHデーモン)をインストールする必要があります (sudo apt install openssh-serverなど)。

基本的には sshd をインストールするとそれでSSH接続が可能なのですが、それで安心せずに、インストールした後に必ず実施してほしい設定が、 (1) 管理者アカウント(root)でのログイン禁止 および (2)パスワードログインの禁止 です。 管理者アカウントでのSSHログインを許可する危険性は明らかかと思います。 パスワードによるログインを許可している場合、パスワードが漏れてしまうと、例えば同じパスワードでそのまま管理者権限まで乗っ取られてしまう可能性まであります。 SSHサーバを立てる際は、必ずパスワードログインを禁止し、公開鍵認証でログインするようにしてください。

具体的な設定はSSHデーモンに依存しますので、以下はUbuntu 24.04 + OpenSSH serverにおける典型的な例を書いておきます。設定ファイルは /etc/ssh/sshd_config です。ssh_config (SSHクライアントの共通設定) でなく sshd_config です。

# SSHD設定の確認(1): 管理者への直接ログイン禁止
$ grep ^PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no
# yes、またはコメントアウトされている(行頭に#がある)場合、管理者への直接ログインが可能な状態です
# エディタで /etc/ssh/sshd_config を編集して設定を変更してください

# SSHD設定の確認(2): パスワードログインの禁止
$ grep ^PasswordAuthentication /etc/ssh/sshd_config
PasswordAuthentication no
# yes、またはコメントアウトされている(行頭に#がある)場合、パスワードログインが可能な状態です
# エディタで /etc/ssh/sshd_config を編集して設定を変更してください

# sshd の再起動
$ sudo systemctl restart ssh

必須: ファイアウォールの有効化

UFWはUbuntuなど多くのLinuxディストリビューションで使用されるファイアウォールツールです。 UFWを利用することで外部からの接続を許可したり、拒否したりするルールを定義出来ます。

# UFWの有効化
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

# SSH接続に必要なポート(既定値: 22)のみ外部に開く
$ sudo ufw allow ssh
Rule added
Rule added (v6)

# 状態の確認
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)

# サーバが起動したときに自動でUFWを起動するための設定
$ sudo systemctl enable ufw

必須: こまめなソフトウェアアップデート

最も有効なセキュリティ対策の一つは、ソフトウェアをこまめに更新することです。 ソフトウェアはナマモノです。日々セキュリティホール(脆弱性)が発見されては塞がれています。 信頼できるソース(例: aptのUbuntu公式リポジトリ)では、最新版をダウンロードすれば脆弱性に対する更新が適用されています。 こまめにアップデート(sudo apt update && sudo apt upgrade)を行いましょう。 また、信頼できないソースをaptリポジトリに登録したり、ダウンロードすることは避けましょう。

禁止: 動的なWebサーバの運用

動的なWebサーバ(例えばWikiやWordpress等のCMS)は、編集する側はブラウザ上で完結出来て楽なのですが、セキュリティホールを生みやすいアプリです。学内ネットワークでの運用は避けてください。

禁止: 学外へのメール送信

学外へのメール送信は禁止されています。サーバからメールを送付する場合、学内のメールサーバ(@nagoya-u.ac.jp@*.nagoya-u.ac.jp)を宛先としてください。

その他に推奨する設定

余裕があれば、以下の設定にも挑戦してみましょう。

  • ソフトウェアアップデートの自動化: unattended-upgradesを使うとソフトウェアアップデートを自動化出来ます。
  • ファイアウォールの強化: iptablesを使うとパケット単位で通信を監視出来ます。
  • ログ管理: logrotateなどを使うとシステムログを日付等をつけてファイルに保存出来ます。
  • システム監視: sysstatによるシステム負荷の収集、サーバによってはベンダ(Dellなど)が提供するツールなどで、システム情報を監視し、悪用を早期に発見することが出来ます。

高性能なGPUサーバと発火事故

近年、GPUの高性能化に伴って電力消費量が非常に大きくなっています。それに関連して、一部の機種では発火事故の報告もあります。高性能なGPUを積んだサーバを購入する際は機種の選定や管理に十分な注意を払ってください。

また、そもそも多くのコンセントは高々15A(1500W)までしか出力することが出来ません。複数のGPUサーバの電力を同一のコンセントから供給すると容易にこの制限を超えてしまう可能性があります。出来る限りタコ足配線は避け、電源周囲の清掃を行い、定格電流規格内の運用を心がけてください。

執筆者募集中

以下の項目について、執筆者を募集しております! 最近やってみた・やりたいという方はぜひ Issue / Pull Request 等お願いします。

  • OSのインストール方法
  • IPDB登録方法・ネットワーク設定
  • UID/GID設定
  • 各種コンパイラのインストール
  • NVIDIA Driverの設定方法
  • NFS設定
  • ストレージのフォーマット

Further Reading