🛡️
【備忘録】linuxでsudoを安全に使うための設定
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