59行目: 59行目:
  $ ssh-add -L
  $ ssh-add -L
  # loginctl [https://wiki.archlinux.jp/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC#systemd_.E3.81.AE.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E8.87.AA.E5.8B.95.E8.B5.B7.E5.8B.95 enable-linger] username
  # loginctl [https://wiki.archlinux.jp/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC#systemd_.E3.81.AE.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E8.87.AA.E5.8B.95.E8.B5.B7.E5.8B.95 enable-linger] username
===環境設定===
$ cat /etc/debian_version
$ vi .bash_aliases
  alias ll='ls -lh --color=auto'
  alias less='less -N'
$ . ~/.bash_aliases
# vi /etc/hostname  ホスト名を変更
# vi /etcdefault/keyboard  # XKBOPTIONS="ctrl:nocaps"
* Bash環境は接続元マシンの設定が反映?


==港ざっくり把握==
==港ざっくり把握==

2024年2月20日 (火) 11:24時点における版

Debian
SimCity

Debian港の「全体」を理解してまとめておく。聖書やSimcityと同じで Debian港も「全体をしっかり把握」していれば、本質を深く理解でき、情報不足ゆえのつまずきを避ける事ができ、管理運営そのものも最高に楽しくなる。システムを「全て把握」していると何事も最高になる!

港の建設/インストール

  • SHELL文字化けの恐れがあるので基本的に「英語」でインスト
  • ただしキーボードは「Japanese」で「¥/|」が正しく入力されるか確認
  • 少なくとも「ルートパーティション」は別にすることを考慮する。ここには最も基本的なシステムが収められており、もし他のパーティションが壊れたとしてもシステムを起動して補修作業ができるので、システムをゼロから再インストールするといったトラブルを防げる

いざ!自分の港へ接続!

SSH接続

[管制室]
$ ssh-keygen -t ed25519   秘密鍵(ローカル)と公開鍵(サーバ)のペアを作成
$ vi ~/.ssh/config
 HOST hoge
    HostName moge.vs.sakura.ne.jp
    Port 55555
$ ssh-copy-id hoge    サーバに公開鍵を保存
$ ssh-add   ローカルにパスフレーズを保存
$ ssh-add -l
$ ssh hoge
[港マシン]
$ systemctl status sshd
$ ss -tan
# vi /etc/ssh/sshd_config
 Port 55555
# systemctl sshd restart
$ ss -tan
$ lsof -i:55555
# ls /etc/ssh
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub   フィンガープリントの確認
# vi /etc/ssh/sshd_config
 PasswordAuthentication no
$ cat ~/.ssh/authorized_keys
  • SSHの鍵認証で最も広く使われているのはRSA暗号。でも最近のSSHはRSAよりも「Ed25519」という暗号化アルゴリズムが強固でパフォーマンスも良く安全面と性能面で最強

SSHエージェント as systemd

毎回 ssh-agent のパスフレーズ入力が面倒なので、サービスとして自動起動させておく。ただし、cronはキーリングにはアクセスできないらしいのでcronを使って定期バックアップの自動化などをしたい時は expect を使う。

Create /etc/systemd/user/ssh-agent.service. Run the following commands (under your user account, not root) to install the systemd unit and start:

$ systemctl --user enable ssh-agent.service
$ systemctl --user start ssh-agent.service
$ systemctl --user status ssh-agent
$ ps aux | grep ssh-agent

Add the following to ~/.bashrc:

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"

Logout then login, confirm ssh-agent is running:

$ systemctl --user status ssh-agent.service
$ ssh-add
$ ssh-add -L
# loginctl enable-linger username

環境設定

$ cat /etc/debian_version 
$ vi .bash_aliases
 alias ll='ls -lh --color=auto'
 alias less='less -N'
$ . ~/.bash_aliases
# vi /etc/hostname   ホスト名を変更
# vi /etcdefault/keyboard   # XKBOPTIONS="ctrl:nocaps"
  • Bash環境は接続元マシンの設定が反映?

港ざっくり把握

大前提として Debian港の説明書、その上で以下5点を把握すれば港の全体像が掴める。

  1. 港内マップ - 港全体のフロアマップ
  2. 港内ユニット/ダイモン - 住み込み常駐部隊 (30/218部隊)
  3. 港内アプリ/コマンド - 港で働く正社員 (836名)
  4. 傭兵アプリ/Debianパッケージ - 港で働く派遣社員 (無限)
  5. 港ログ - 港で働く社員たちからの報告レポート

1. 場内マップ(フロアマップ)

FHS 参照。英語ネイティブみたいに「home/自分の家」や「lib/図書館」や「tar-ball/油人形」などを見て生き生きとした映像やそれに伴う感情を味わいながら把握して行く。

2. 港内ユニット/ダイモン(常駐部隊)

A daemon is a service process that runs in the background and supervises the system or provides functionality to other processes. Traditionally, daemons are implemented following a scheme originating in SysV Unix. Modern daemons should follow a simpler yet more powerful scheme (here called "new-style" daemons), as implemented by systemd(1). This manual page covers both schemes, and in particular includes recommendations for daemons that shall be included in the systemd init system.

  • Debian11でデフォルトで稼働しているユニット
  • 218個のユニット/部隊が初期登録されているので稼働部隊の採用/不採用を決定
  • セキュリティを考慮して使わないサービスは停止、自動稼働も無効にする
  • 「running」は常に戦闘モードな状態。一方「exited」は休んでいる状態
# systemctl -t service | grep running
# systemctl stop [service]
# systemctl disable [service]
  • ランレベル3(CUIモード)で自動起動するサービスを確認して停止、自動起動をオフにする
# chkconfig --list | grep 3:on
# service auditd stop
# service netfs stop
auditd(コマンド監視), ip6tables(IP6利用), netfs(NFSクライアント), postfix(SMTPサーバ利用)
  • メールサーバなど、ユーザアカウントは必要だけどシェルログインは不要なユーザは、ログインシェルを「/sbin/nologin」か「/bin/false」にする
#useradd -s /sbin/nologin march
#usermod -s /sbin/nologin march

3. 港内コマンド/アプリ(正社員)

  • Debian11では「sbin - システム管理者用(209個)」と「bin - 一般ユーザ用(627個)」の2種類のコマンドがある
  • とりあえず、上記2種類を把握すればDebianシステムがデフォルトでできる事のおおよそのイメージがつく
  • 「sbin」は一般ユーザからは見えない root用コマンド。rootになる必要がある
  • オプション「--help」や「-V」、「man」でコマンドの解説が見れる
  • ただしiPhoneアプリ等と同じで、深く理解すべきは全体の2割、よく利用されるコマンド (100個程)。故に、無意味な深掘りは厳禁。取捨選択が大切
  • 最後にLinuxコマンドの内容も統合する
lrwxrwxrwx 1 root root 8 Nov 28 14:35 /sbin -> usr/sbin
lrwxrwxrwx 1 root root 7 Nov 28 14:35 /bin -> usr/bin

4. 傭兵ソフト/パッケージ(派遣社員)

  • 派遣社員たち はパッケージ管理システム「apt」を使って管理
  • 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
$ apt list --installed
# apt update
# apt upgrade
# apt full-upgrade
  • 管理パッケージのアップデートは自動化できる
# apt install cron-apt    ← vi /etc/cron-apt/config(アプデ自動化)
# timedatectl status
# timedatectl set-timezone Asia/Tokyo
# date
  • ユーザがディスクの空き容量を使い切ってしまわないように、ユーザが利用するファイルシステムには独立したパーティションを割り当てる
  • 変更されないデータを格納するファイルシステムは、リードオンリーでマウントすることによりファイルの改竄や破壊行為を抑えられる
  • アドレススキャン(港探索)回避のためにブロードキャスト宛リクエストを無視する。下記の設定ファイルに追記
/etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcast=1

5. 港ログ(社員たちからの報告レポート)

港の状態を把握するために必要な現地からのフィードバック。