(同じ利用者による、間の167版が非表示)
2行目: 2行目:
[[ファイル:simcity.png|thumb|SimCity|200px]]
[[ファイル:simcity.png|thumb|SimCity|200px]]


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


==港の建設/インストール==
<strong>当然ながら</strong>、Debian の[https://debian-beginners-handbook.arpinux.org/bookworm-en/the_beginners_handbook.html 公式の説明書] は一通り読んでおく。
 
==港の準備/インストール==
* SHELL文字化けの恐れがあるので基本的に「英語」でインスト
* SHELL文字化けの恐れがあるので基本的に「英語」でインスト
* ただしキーボードは「Japanese」で「¥/|」が正しく入力されるか確認
* ただしキーボードは「Japanese」で「¥/|」が正しく入力されるか確認
* 少なくとも「ルートパーティション」は別にすることを考慮する。ここには最も基本的なシステムが収められており、もし他のパーティションが壊れたとしてもシステムを起動して補修作業ができるので、システムをゼロから再インストールするといったトラブルを防げる
* 少なくとも「rootパーテーション」は別にすることを考慮する。ここには最も基本的なシステムが収められており、もし他のパーティションが壊れたとしてもシステムを起動して補修作業ができるのでシステムをゼロから再インストするといったトラブルを防げる


==いざ!自分の港へ接続!==
==いざ!自分の港へ接続!==
* 自分の港をすべて把握して、セキュアな港を構築する
* 自分の港をすべて把握して、セキュアな港を構築する
* Debian はインストール時に root と一般ユーザを登録する
* Debian はインストール時に root と一般ユーザを登録する
* sudoコマンドがないので「su -」で root になって操作する。root が馴染み深くなる
* 「su -」で完全 root に切り替えて作業する (root が馴染み深くなる。passwd忘れ防止)
* (旧)[[城管理者のチェックリスト]] / [[Linuxマシンのセットアップ]]
* <code>usermod -aG sudo y</code> でユーザを sudo グループにしても良い
* 旧:[[城管理者のチェックリスト]] / [[Linuxマシンのセットアップ]] も参考


===SSH接続===
===SSH接続===
  [管制室]
  [管制室マシン]
  $ ssh-keygen -t ed25519  秘密鍵(ローカル)と公開鍵(サーバ)のペアを作成
$ cat /proc/sys/kernel/random/entropy_avail
  $ ssh-keygen -t ed25519  // 秘密鍵(ローカル保管)と公開鍵(サーバ保管)のペアを作成
  $ vi ~/.ssh/config
  $ vi ~/.ssh/config
   HOST hoge
   HOST hoge
     HostName moge.vs.sakura.ne.jp
     HostName 192.168.86.171
     Port 55555
     Port 55555
  $ ssh-copy-id hoge    サーバに公開鍵を保存
  $ ssh-copy-id hoge    // サーバに公開鍵を転送
  $ ssh-add  ローカルにパスフレーズを保存
  $ ssh-add  // ローカルにパスフレーズを保存
  $ ssh-add -l
  $ ssh-add -l
  $ ssh hoge
  $ ssh hoge
36行目: 40行目:
  $ lsof -i:55555
  $ lsof -i:55555
  # ls /etc/ssh
  # ls /etc/ssh
  $ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub  フィンガープリントの確認
  $ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub  // フィンガープリントの確認
  # vi /etc/ssh/sshd_config
  # vi /etc/ssh/sshd_config
   PasswordAuthentication no
   PasswordAuthentication no
  $ cat ~/.ssh/authorized_keys
  $ cat ~/.ssh/authorized_keys
# systemctl get-default
# systemctl set-default multi-user.target    // GUIを使わないサーバ環境


* SSHの鍵認証で最も広く使われているのはRSA暗号。でも最近のSSHはRSAよりも「[https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%82%BA%E6%9B%B2%E7%B7%9A%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E7%BD%B2%E5%90%8D%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0#Ed25519 Ed25519]」という暗号化アルゴリズムが強固でパフォーマンスも良く安全面と性能面で最強
* SSHの鍵認証で最も広く使われているのはRSA暗号
* でも最近はRSAよりも「[https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%82%BA%E6%9B%B2%E7%B7%9A%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E7%BD%B2%E5%90%8D%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0#Ed25519 Ed25519]」という暗号化アルゴリズムが強固でパフォーマンスも良く安全面と性能面で最強
* VPS やコンテナはエントロピーが不足しやすいから、新しく鍵を作るときは haveged などでエントロピーを増やしてからがベスト!


===SSHエージェント as systemd===
===SSHエージェントの起動===
毎回 [https://www.server-memo.net/server-setting/ssh/ssh-agent.html ssh-agent] のパスフレーズ入力が面倒なので、サービスとして自動起動させておく。ただし、[https://yura2.hateblo.jp/entry/2015/11/05/crontab%E3%81%A7scp%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8Permission_denied%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86 cronはキーリングにはアクセスできない]らしいのでcronを使って定期バックアップの自動化などをしたい時は expect を使う。
毎回のssh秘密鍵パスフレーズ入力が面倒な場合はssh-agentをサービスとして自動起動させておく。ただしcronはssh-agentのキーチェーンにアクセスできないらしい。ちなみに、秘密鍵パスフレーズはZIPファイルのパスワードみたいに内部的なものなので[https://senooken.jp/post/2020/08/05/4342/ そもそも空設定でも良さそう]


Create /etc/systemd/user/ssh-agent.service.
Create /etc/systemd/user/ssh-agent.service.
60行目: 68行目:
  # 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
$ ssh-keygen -f .ssh/key -p
 
===マシン/シェル環境の確認===
  $ hostnamectl
  $ vi .bash_aliases
  $ vi .bash_aliases
   alias ll='ls -lh --color=auto'
   alias ll='ls -lh --color=auto'
   alias less='less -N'
   alias less='less -N'
  $ . ~/.bash_aliases
  $ . ~/.bash_aliases
  # vi /etc/hostname   ホスト名を変更
  # vi /etc/hostname
  # vi /etcdefault/keyboard  # XKBOPTIONS="ctrl:nocaps"
  # vi /etc/default/keyboard
   XKBOPTIONS="ctrl:nocaps"
# systemctl restart console-setup
$ localectl


* Bash環境は接続元マシンの設定が反映?
* リモートマシンBash環境は接続元マシンの設定が反映?


==港ざっくり把握==
==港ざっくり把握==
大前提として <u>Debian港の[https://www.debian.org/doc/ 説明書]</u>、その上で以下5点を把握すれば港の全体像が掴める。
# 港内マップ:FHS
# 港内の常駐さん:ユニット/ダイモン (35/218名ほど)
# 港内の職員たち:アプリ/コマンド (836名ほど)
# 港内の特別職員たち:派遣アプリ/dpkg (無限)
# 港レポート:港に関する報告ログ


# 港内マップ - 港全体の<u>フロアマップ</u>
===1. 港内マップ(フロアマップ)===
# 港内ユニット/ダイモン - 住み込み<u>常駐部隊</u> (30/218部隊)
[[FHS]] 参照。英語ネイティブみたいに「home/自宅」や「lib/図書館」や「tar-ball/油人形」などを見て<u>生き生きとした映像やそれに伴う感情</u>を味わいながら把握して行く。
# 港内アプリ/コマンド - 港で働く<u>正社員</u> (836名)
# 傭兵アプリ/Debianパッケージ - 港で働く<u>派遣社員</u> (無限)
# 港ログ - 港で働く社員たちからの<u>報告レポート</u>


===1. 場内マップ(フロアマップ)===
===2. 港内の常駐さん(ダイモン/ユニット)===
[[FHS]] 参照。英語ネイティブみたいに「home/自分の家」や「lib/図書館」や「tar-ball/油人形」などを見て<u>生き生きとした映像やそれに伴う感情</u>を味わいながら把握して行く。
A [[daemon]] is <u>a service process that runs in the background and supervises the system or provides functionality to other processes</u>. 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 <u>implemented by [[systemd]](1)</u>. This manual page covers both schemes, and in particular includes recommendations for daemons that shall be included in the systemd init system.


===2. 港内ユニット/ダイモン(常駐部隊)===
$ systemctl -t service [--state=running]
A [[daemon]] is <u>a service process that runs in the background and supervises the system or provides functionality to other processes</u>. 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 <u>implemented by [[systemd]](1)</u>. This manual page covers both schemes, and in particular includes recommendations for daemons that shall be included in the systemd init system.


* Debian11でデフォルトで稼働している[[稼働しているサービス(Debian系)|ユニット]]
* <u>詳しいことは GPT に聞く</u>
* 218個のユニット/部隊が初期登録されているので稼働部隊の採用/不採用を決定
* ユニット(サービス)の起動に関係のあるsystemdソケット・ターゲットについても軽く把握
* セキュリティを考慮して使わないサービスは停止、自動稼働も無効にする
* 「running」は常に戦闘モードな状態。一方「exited」は休んでいる状態


  # systemctl -t service | grep running
===3. 港内の職員たち(コマンド/アプリ)===
  # systemctl stop [service]
  lrwxrwxrwx 1 root root 8 Nov 28 14:35 /sbin -> usr/sbin
# systemctl disable [service]
  lrwxrwxrwx 1 root root 7 Nov 28 14:35 /bin -> usr/bin


* ランレベル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種類のコマンドがある
* Debian11では「sbin - [[システム管理者用コマンド|システム管理者用]](209個)」と「bin - [[一般ユーザ用コマンド|一般ユーザ用]](627個)」の2種類のコマンドがある
* とりあえず、<u>上記2種類を把握すればDebianシステムがデフォルトでできる事のおおよそのイメージがつく</u>
* 「sbin」は一般ユーザからは which で見えない root用コマンド。使うためには sudo か rootになる必要がある
* 「sbin」は一般ユーザからは見えない root用コマンド。rootになる必要がある
* オプション「--help」や「-V」、「man」でコマンドの解説が見れる。必要になったら読めばいい
* オプション「--help」や「-V」、「man」でコマンドの解説が見れる
* 当然ながら全部覚える必要はない。20:80の法則
* ただしiPhoneアプリ等と同じで、<strong>深く理解すべきは全体の2割</strong>、よく利用されるコマンド (100個程)。故に、無意味な深掘りは厳禁。取捨選択が大切
* 以前作成したページ:[[Linuxコマンド]]の内容も参照
* 最後に[[Linuxコマンド]]の内容も統合する


lrwxrwxrwx 1 root root 8 Nov 28 14:35 /sbin -> usr/sbin
===4. 港内のAPT職員たち(dpkg/派遣アプリ)===
lrwxrwxrwx 1 root root 7 Nov 28 14:35 /bin -> usr/bin
* とりま [https://www.debian.org/distrib/packages.en.html 公式の説明] を参照
 
===4. 傭兵ソフト/パッケージ(派遣社員)===
* [https://www.debian.org/distrib/packages 派遣社員たち] はパッケージ管理システム「apt」を使って管理
* 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
* 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
  $ apt list --installed
  $ apt list --installed
  # apt update
  # apt update
  # apt upgrade
  # apt upgrade
  # apt full-upgrade
  # apt full-upgrade   // メジャーアップデート
# dpkg -l | grep '^rc'    // removed, config-file remain.を見る
# dpkg -l | grep '^rc' | awk '{print $2}' | xargs apt purge -y


* 管理パッケージのアップデートは自動化できる
* 一般的なサーバなら apt upgrade は手動推奨
  # apt install cron-apt    ← vi /etc/cron-apt/config(アプデ自動化)
* セキュリティアップデートのみ自動化する
  # timedatectl status
  # apt install unattended-upgrades -y
  # timedatectl set-timezone Asia/Tokyo
  # dpkg-reconfigure unattended-upgrades
# date
  # less /etc/apt/apt.conf.d/50unattended-upgrades


* ユーザがディスクの空き容量を使い切ってしまわないように、ユーザが利用するファイルシステムには独立したパーティションを割り当てる
===5. 港レポート(港に関する報告ログ)===
* 変更されないデータを格納するファイルシステムは、リードオンリーでマウントすることによりファイルの改竄や破壊行為を抑えられる
港の状態を把握するために必要な現地からのフィードバック。
* アドレススキャン(港探索)回避のためにブロードキャスト宛リクエストを無視する。下記の設定ファイルに追記
* journalctl:システム内の警備員が逐一記録するバイナリ形式の日誌
/etc/sysctl.conf
* rsyslog:サービスやアプリが書くテキスト形式の日記
net.ipv4.icmp_echo_ignore_broadcast=1
* journalctl -f とか、tail -f /var/log/apache2/access.log | grep mysite.com とか面白い


===5. 港ログ(社員たちからの報告レポート)===
== 港のセキュリティ==
港の状態を把握するために必要な現地からのフィードバック。
===fail2banの導入===
# fail2ban-client status
# fail2ban-client status sshd
# tail -f /var/log/fail2ban.log
 
* リアルタイムで不審なIPの Ban が監視できる
 
===一般ユーザでのログ監視===
# usermod -aG adm ユーザー名
 
* Debian では、/var/log の多くのログは admグループ(admin) に読み取り権限がある
 
== 港のチューニング==
=== ガシガシRAM利用で機動力UP!===
# systemctl status systemd-sysctl.service
# echo "vm.swappiness = 30" | sudo tee -a /etc/sysctl.conf
# sysctl -p
 
* Debian等のデフォルトは60。サーバマシンなら10がいい
* ただメモリが少ない(1GB~2GB)マシンなら 20~30くらいが無難
 
=== さくらVPS でディスク拡張 ===
* fdisk で手動で拡張。growpart, parted できないし
* 詳しくは GPTアーカイブ「さくら ディスク拡張」参照
 
===Swap領域はファイルベースで簡単柔軟===
* スワップは、GCPとかAWSで主流なswapファイルを利用
* /dev/vda2 にスワップパーティションとか古い
 
# swapoff /swapfile
# rm /swapfile
# fallocate -l 2G /swapfile
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
 
===Journaldログの肥大回避===
 
# vim /etc/systemd/journald.conf
SystemMaxUse=200M
# systemctl restart systemd-journald

2025年5月19日 (月) 13:11時点における最新版

Debian
SimCity

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

当然ながら、Debian の公式の説明書 は一通り読んでおく。

港の準備/インストール

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

いざ!自分の港へ接続!

  • 自分の港をすべて把握して、セキュアな港を構築する
  • Debian はインストール時に root と一般ユーザを登録する
  • 「su -」で完全 root に切り替えて作業する (root が馴染み深くなる。passwd忘れ防止)
  • usermod -aG sudo y でユーザを sudo グループにしても良い
  • 旧:城管理者のチェックリスト / Linuxマシンのセットアップ も参考

SSH接続

[管制室マシン]
$ cat /proc/sys/kernel/random/entropy_avail
$ ssh-keygen -t ed25519   // 秘密鍵(ローカル保管)と公開鍵(サーバ保管)のペアを作成
$ vi ~/.ssh/config
 HOST hoge
    HostName 192.168.86.171
    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
# systemctl get-default
# systemctl set-default multi-user.target    // GUIを使わないサーバ環境
  • SSHの鍵認証で最も広く使われているのはRSA暗号
  • でも最近はRSAよりも「Ed25519」という暗号化アルゴリズムが強固でパフォーマンスも良く安全面と性能面で最強
  • VPS やコンテナはエントロピーが不足しやすいから、新しく鍵を作るときは haveged などでエントロピーを増やしてからがベスト!

SSHエージェントの起動

毎回のssh秘密鍵パスフレーズ入力が面倒な場合はssh-agentをサービスとして自動起動させておく。ただしcronはssh-agentのキーチェーンにアクセスできないらしい。ちなみに、秘密鍵パスフレーズはZIPファイルのパスワードみたいに内部的なものなのでそもそも空設定でも良さそう

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

設定した秘密鍵パスフレーズを削除する場合。

$ ssh-keygen -f .ssh/key -p

マシン/シェル環境の確認

$ hostnamectl
$ vi .bash_aliases
 alias ll='ls -lh --color=auto'
 alias less='less -N'
$ . ~/.bash_aliases
# vi /etc/hostname
# vi /etc/default/keyboard
 XKBOPTIONS="ctrl:nocaps"
# systemctl restart console-setup
$ localectl
  • リモートマシンBash環境は接続元マシンの設定が反映?

港ざっくり把握

  1. 港内マップ:FHS
  2. 港内の常駐さん:ユニット/ダイモン (35/218名ほど)
  3. 港内の職員たち:アプリ/コマンド (836名ほど)
  4. 港内の特別職員たち:派遣アプリ/dpkg (無限)
  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.
$ systemctl -t service [--state=running]
  • 詳しいことは GPT に聞く
  • ユニット(サービス)の起動に関係のあるsystemdソケット・ターゲットについても軽く把握

3. 港内の職員たち(コマンド/アプリ)

lrwxrwxrwx 1 root root 8 Nov 28 14:35 /sbin -> usr/sbin
lrwxrwxrwx 1 root root 7 Nov 28 14:35 /bin -> usr/bin
  • Debian11では「sbin - システム管理者用(209個)」と「bin - 一般ユーザ用(627個)」の2種類のコマンドがある
  • 「sbin」は一般ユーザからは which で見えない root用コマンド。使うためには sudo か rootになる必要がある
  • オプション「--help」や「-V」、「man」でコマンドの解説が見れる。必要になったら読めばいい
  • 当然ながら全部覚える必要はない。20:80の法則
  • 以前作成したページ:Linuxコマンドの内容も参照

4. 港内のAPT職員たち(dpkg/派遣アプリ)

  • とりま 公式の説明 を参照
  • 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
$ apt list --installed
# apt update
# apt upgrade
# apt full-upgrade    // メジャーアップデート
# dpkg -l | grep '^rc'    // removed, config-file remain.を見る
# dpkg -l | grep '^rc' | awk '{print $2}' | xargs apt purge -y
  • 一般的なサーバなら apt upgrade は手動推奨
  • セキュリティアップデートのみ自動化する
# apt install unattended-upgrades -y
# dpkg-reconfigure unattended-upgrades
# less /etc/apt/apt.conf.d/50unattended-upgrades

5. 港レポート(港に関する報告ログ)

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

  • journalctl:システム内の警備員が逐一記録するバイナリ形式の日誌
  • rsyslog:サービスやアプリが書くテキスト形式の日記
  • journalctl -f とか、tail -f /var/log/apache2/access.log | grep mysite.com とか面白い

港のセキュリティ

fail2banの導入

# fail2ban-client status
# fail2ban-client status sshd
# tail -f /var/log/fail2ban.log
  • リアルタイムで不審なIPの Ban が監視できる

一般ユーザでのログ監視

# usermod -aG adm ユーザー名
  • Debian では、/var/log の多くのログは admグループ(admin) に読み取り権限がある

港のチューニング

ガシガシRAM利用で機動力UP!

# systemctl status systemd-sysctl.service
# echo "vm.swappiness = 30" | sudo tee -a /etc/sysctl.conf
# sysctl -p
  • Debian等のデフォルトは60。サーバマシンなら10がいい
  • ただメモリが少ない(1GB~2GB)マシンなら 20~30くらいが無難

さくらVPS でディスク拡張

  • fdisk で手動で拡張。growpart, parted できないし
  • 詳しくは GPTアーカイブ「さくら ディスク拡張」参照

Swap領域はファイルベースで簡単柔軟

  • スワップは、GCPとかAWSで主流なswapファイルを利用
  • /dev/vda2 にスワップパーティションとか古い
# swapoff /swapfile 
# rm /swapfile 
# fallocate -l 2G /swapfile
# chmod 600 /swapfile 
# mkswap /swapfile 
# swapon /swapfile

Journaldログの肥大回避

# vim /etc/systemd/journald.conf
SystemMaxUse=200M
# systemctl restart systemd-journald