システム全体のファイルにセットユーザーID(SUID)、セットグループID(SGID)が不要にセットされていないかfindコマンドで一斉にチェックする方法についてです。
セットユーザーID(SUID)、セットグループID(SGID)とは?
セットユーザーIDが設定されているファイルは、実行するユーザーではなくそのファイルの所有者(セットグループIDの場合はグループ)の権限で実行されます。
suやsudoコマンドは、他のユーザーとしてコマンドを実行するので所有者がrootでセットユーザーIDが設定されています。
確認方法
下記findコマンドでセットユーザーID、セットグループIDが設定されているファイルをピックアップ出来ます。
# find PART -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
“PART”の部分には調査対象のパーティションを記述します。
※”-xdev”オプション
他のファイルシステム上のディレクトリは検索しない。このオプションを指定しないと、”/”を検索した場合、他のマウントされている他のファイルシステムも検索してしまう。
変更方法
下記コマンドを実行します。
# chmod -s file
●セットユーザーID/セットグループIDが不要かも知れないファイル
※参考資料
NSA(National Security Agency)の『Guide to the Secure Configuration of Red Hat Enterprise Linux 5』の2.2.3.4
・/sbin/mount.nfs、/sbin/umount.nfs
NFSを使用していなければ不要
・/sbin/mount.nfs4、/sbin/umount.nfs4
NFSv4を使用していなければ不要
・/sbin/netreport
ユーザーがインターフェースを修正しないなら不要
・/usr/bin/chage
ユーザーがexiry情報を表示しないなら不要
・/usr/bin/chfn
ユーザーがfinger情報を変更しないなら不要
・/usr/bin/chsh
ユーザーがシェルを変更しないなら不要
・/usr/bin/crontab
ユーザーがcronを使用しないなら不要
・/usr/bin/lockfile
procmailを使用しないなら不要
・/usr/bin/rcp
rshは非推奨で不要
・/usr/bin/rlogin
rshは非推奨で不要
・/usr/bin/rsh
rshは非推奨で不要
・/usr/bin/wall
コンソールメッセージングを使用しないなら不要
・/usr/bin/write
コンソールメッセージングを使用しないなら不要
・/usr/bin/Xorg
X11を使用しないなら不要
・/usr/kerberos/bin/ksu
Kerberosを使用しないなら不要
・/usr/libexec/openssh/ssh-keysign
sshdがホストベース認証を使用しないなら不要
・/usr/lib/squid/pam
squidを使用しないなら不要
・/usr/lib/squid/ncsa
squidを使用しないなら不要
・/usr/lib/vte/gnome-pty-helper
X11を使用しないなら不要
・/usr/sbin/ccreds
PAM auth cachingを使用しないなら不要
・/usr/sbin/suexec
apacheを使用しないなら不要
・/usr/sbin/userhelper
・/usr/sbin/userisdnctl
ISDNを使用しないなら不要
・/usr/sbin/usernetctl
ユーザーがインターフェースを変更しないなら不要