インストール直後の状態でサーバとして外部に公開するのはセキュリティー的に危険なので、最低限のセキュリティー対策を施す。
セキュリティホールが発見されるたびにアップデートファイルが公開される。サーバ管理者は常に情報を収集し、パッケージを最新の状態に保たなければならない。
(1) インストールされているパッケージを調べる
インストールされているパッケージを調べるには、次のコマンドを実行する。
$ rpm -qa なお、特定のパッケージについて調べるには、次のコマンドを実行する。(例、openssl)
$ rpm -q openssh (2) アップデートファイルをダウンロードする
Red Hat Linux 7.2J セキュリティアドバイス(http://www.jp.redhat.com/support/errata/rh72-errata-security.html)を参照し、上記パッケージに対応するアップデートファイルがあれば、ダウンロードし、任意の場所(/usr/local/srcなど)に転送する。(3) パッケージをアップデートする
例えばインストールされているopensshパッケージのバージョンがopenssh-2.9p2-5で、上記サイトからopenssh-2.9p2-12.i386.rpmをダウンロードした場合、次のようにアップデートを行う。
$ rpm -Uvh openssh-2.9p2-12.i386.rpm 通常のパッケージならこれでアップデートが正常に行われるが、他のパッケージと依存関係にあるパッケージをアップデートした場合、エラーになってアップデートが失敗する。例えばopensshはopenssh-clientsと依存関係にあるため、失敗する。
この場合、openssh-clientのアップデートパッケージも同時にアップデートすると、正常に行われる。
$ rpm -Uvh openssh-2.9p2-12.i386.rpm openssh-clients-2.9p2-12.i386.rpm
wheelグループに所属するユーザのみsuコマンドが使えるようにする。
/etc/login.defsを開き、以下の行を追加する。
# vi /etc/login.defs
SU_WHEEL_ONLY yes←追加
wheelグループに所属する(suコマンドを使ってrootになれる)ユーザを作成する。
# useradd -g users -G wheel hogeuser
# passwdhogeuser
ログアウト時に.bash_historyファイルを削除するよう設定する。
# vi /etc/skel/.bash_logout
rm -f $HOME/.bash_history←追加同様に、各ユーザの
.bash_logoutも修正する。
インストール時に登録されている不要なユーザ・グループを削除する。
不要なユーザとホームディレクトリの削除
# userdel ftp
# userdel gopher
# userdel news
# userdel mail
# userdel games
# userdel uucp
# userdel lp
# rm -rf /var/spool/mail
# rm -rf /usr/games不要なグループの削除
# groupdel news
# groupdel mail
# groupdel games
# groupdel uucp
# groupdel lp
私にとって以下のサービスは不要なので停止・削除を行う。
《cannaserver》
# /etc/rc.d/init.d/canna stop ←停止
# rpm -e Canna←削除
# rm -rf /var/lib/canna←ライブラリの削除
他のユーザに見られてまずい各種ファイルのアクセス権を変更する。
# chmod 600 /etc/lilo.conf
# chmod 600 /etc/inittab
# chmod 600 /etc/fstab
# chmod -R 700 /etc/rc.d
# chmod 700 /bin/rpm
その他の対策を紹介する。
(1)最小パスワード長の変更
最小パスワード長を5文字から8文字に変更する。
# vi /etc/login.defs
#PASS_MIN_LEN 5
PASS_MIN_LEN 8(2)不要なPATHの削除
/usr/X11R6/binへのパスを無効にする。
# vi /etc/profile
#if ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; then←コメントアウト
#PATH="$PATH:/usr/X11R6/bin"
#fi(3)自動ログアウトの設定
ログイン後、任意の秒数間何もしなかった場合、自動的にログアウトするよう設定する。
# vi /etc/profile
TMOUT=18000←追加(4)Ctrl+Alt+Delを無効にする
キーボードからのCtrl+Alt+DelによるREBOOTを無効にする。
# vi /etc/inittab
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now←コメントアウト現在のランレベルのまま、再度inittabを読む込ませる。
# /sbin/init q