🛡️

【備忘録】linuxでsudoを安全に使うための設定

2024/02/22に公開

sudoとは

管理者権限でコマンドを実行できる

rootで作業するのに比べて安全

  • 必要なときだけにroot特権を有効にするので致命的な操作ミスが起こりにくい
  • 実行するたびにログが残る
  • rootのパスワードではなくユーザーのパスワードを使う(設定で変更可)

インストール

多くのディストリビューションでは最初から入っている

archlinux
pacman -S sudo

設定方法

  • 設定ファイルは、/etc/sudoers
  • 構文エラーが無いかチェックしてから保存してくれる visudo で編集する

visudoのデフォルトのエディタはviなので、他のエディタで編集したい場合は EDITOR 変数を使う
(コマンドの前で変数定義をするとコマンド実行中だけ有効になる)

bash
# vimを使う場合
# root権限で実行
EDITOR=vim visudo

設定内容

wheelグループに所属するユーザーにsudoを許可

/etc/sudoers
# コメントアウトする
%wheel ALL=(ALL:ALL) ALL

ptyからのみsudoを許可する

仮想端末からの実行のみを許可することでマルウェアなどがバックグラウンドでsudoを使うのを防ぐ

/etc/sudoers
Defaults use_pty

ログをとる

デフォルトではsyslog

/etc/sudoers
Defaults log_input, log_output
Defaults logfile=/var/log/sudo.log
# 溜め込むログの上限
Defaults maxseq = 1000

いろいろ(しなくてもいい設定)

/etc/sudoers
# 一度パスワードを打ったときに記憶しておいてくれる時間
# この時間内はパスワードを聞かれない
Defaults timestamp_timeout=10

# sudoを使うたびに注意を表示する (always, once, neverが設定可能)
# スパイダーマンの叔父さんの格言が出てくる
Defaults lecture="always"

# パスワードを間違うと侮辱する(不要)
Defaults insults

rootアカウントをロックする

Ubuntuなどではデフォルトでrootが無効になっている
rootアカウントを無効にすることでセキュリティが高まる

# ロックする
sudo passwd -l root

# ロックを解除する
sudo passwd -u root

アカウントをロックするときは、/etc/shadow にハッシュ化されて保存されているパスワードの先頭に ! をつけることでパスワードがわからないようにしている

アンロックのときは ! を消すだけ

Discussion