サーバー構築
KVM を使ってサーバーを構築する。 まずは、OS の isoファイル をダウンロードする。 私は、GUI でも操作できるように、Ubuntu Desktop 22.04.2 LTS を使用する。 Ubuntu の isoファイルは、公式サイト(jp.ubuntu.com)からダウンロードできる。
パッケージの更新
Section titled “パッケージの更新”OSのインストールが終わり、起動したら、パッケージを更新する。
sudo apt update # パッケージ一覧を更新sudo apt upgrade # パッケージを更新sudo apt autoremove # 不要なパッケージを削除IPアドレスの設定
Section titled “IPアドレスの設定”Ubuntu Desktopならば、NetworkManager で設定するのがいいため、GUIでの設定か nmcli コマンドで設定する。
Ubuntu Serverならば、netplan で設定するのがいい。
NetworkManager
Section titled “NetworkManager”netplan
Section titled “netplan”netplanでは、 /etc/netplan 配下のyamlファイルに従い、アドレスの設定を行う。
ファイルは辞書順に読み込まれるため、今回は、 /etc/netplan/99-config.yaml という名前で作成する。
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/99-config.yamlcat /etc/netplan/99-config.yaml # 固定IPアドレスを設定する network: ethernets: enp1s0: dhcp4: false dhcp6: false addresses: - 192.168.10.12/24 routes: - to: default via: 192.168.10.1 nameservers: addresses: - 192.168.10.1 version: 2sudo netplan applyssh 設定
Section titled “ssh 設定”ssh でアクセスできるようにして、遠隔で操作できるようにする。
sudo apt install openssh-server # openssh-serverのインストールsudo systemctl status ssh # sshの状態を確認これにより、ユーザー名+ホスト名 もしくは ユーザー名+IPアドレス で ssh による外部からのアクセスができるようになる。
ssh での認証を、公開鍵認証に変更する。
ssh-keygen -t ed25519 -f server # 公開鍵の作成sudo vim /etc/ssh/sshd_config # sshdの設定ファイルを編集> PermitRootLogin no # 管理者権限でログインできないようにする> PubkeyAuthentication yes # 公開鍵認証を有効にする> PasswordAuthentication no # パスワード認証を無効にする
$ sudo systemctl restart sshd # sshデーモンを再起動sudo adduser {ユーザ名} # ユーザ作成sudo gpasswd -a {ユーザ名} sudo # 管理者権限を付与sudo userdel {ユーザ名} # ユーザ削除sudo userdel -r {ユーザ名} # ユーザ削除、ディレクトリもパスワード変更
Section titled “パスワード変更”sudo passwd {ユーザ名} # パスワード変更ユーザ名変更
Section titled “ユーザ名変更”sudo usermod -l {新しいユーザ名} {旧ユーザ名} # ユーザ名変更ユーザの所属グループ変更
Section titled “ユーザの所属グループ変更”sudo groupmod -l {グループ名} {ユーザ名} # 所属グループ変更ホームディレクトリ変更
Section titled “ホームディレクトリ変更”sudo usermod -d {ホームディレクトリのパス} -m {ユーザ名} # ホームディレクトリ変更ex: sudo usermod -d /home/{ユーザ名} -m {ユーザ名}ユーザロック
Section titled “ユーザロック”passwdコマンドを使って、ユーザをロックし、使えなくすることができる。
※ 管理者権限のあるものなら、suコマンドで、ロックされたユーザになることができる。
sudo passwd -l {ユーザ名} # ユーザロックsudo passwd -u {ユーザ名} # ユーザアンロックsuコマンドの制限
Section titled “suコマンドの制限”pam_wheel.so を使う。
pam_wheel.so は、su コマンドを利用できるユーザを、wheel グループに所属するユーザに限定する。
sudo vim /etc/pam.d/su> auth required pam_wheel.so use_uid # コメントアウトを消して、pam_wheel.soを有効にするsudoコマンドの制限
Section titled “sudoコマンドの制限”visudoコマンド または、 /etc/sudoers を編集する。
実行コマンドに応じて、許可を出すこともできる。
sudo vim /etc/sudoers> {ユーザ名} ALL=(ALL) ALL # {ユーザ名}に sudo コマンドの実行を許可する> {ユーザ名} ALL=(ALL) /sbin/iptables # このように書けば、iptablesのみ実行を許可するLinux のシステムログは syslog の設定で /var/log 配下に保存されている。
パケットフィルタリング
Section titled “パケットフィルタリング”Linux に実装されたパケットフィルタリング機能として、iptablesがある。
しかし、これは自由度が高いため、最初は、より設定を簡単化したufwを使うのがいい(実際には、ufwをフロントエンドとして、バックエンドでは、iptablesのコマンドを生成して叩いている)。
sudo ufw status # 状態の確認(active が有効 , inactive が停止)
sudo ufw enable # ufwの起動sudo ufw disable # ufwの停止sudo ufw app list # ufwアプリケーションプロファイルを一覧表示
### プロトコルを記載しない場合 TCP/UDP 両方が設定) ###sudo ufw allow 22/tcp # 22番ポートのTCPのみ許可sudo ufw allow 80 # 80番ポートのTCP・UDPどちらも許可
sudo ufw status numbered # 設定の確認sudo ufw delete 1 # 設定(1番目のルール)の削除sudo ufw reload # 設定の反映