LoginSignup
13
13

More than 5 years have passed since last update.

【シェルスクリプト】ログイン理由を記載させる!

Last updated at Posted at 2015-11-03

使用意図

監査的な観点から、リモートでサーバにログインする際に、社内ではログイン申請を行ってい、承認を得てからログインするようにしている。ただし、ログイン申請は形式的なもので、綿密なチェックなどを行っておらず、ほとんど意味をなさない。

そのため、事前承認制をやめ、ログイン時に許可されたユーザとログイン理由を明記されたもののみに、ログインするスクリプトを作成した。

なお、コンソール接続には対応できないので、あくまでリモートでつなぐ場合を前提となる。

環境

CentOS 6.5

ただし、他のLinux環境でも使用できることもございますので、検証のうえ、使用してください。

前提条件

.bash_profileにidcheck.shをフルパスで記載すること。
パーミッションはそれぞれ付与しておくこと。
ディレクトリ構成は以下を参照とすること。

ディレクトリ構成

/root/Tools/bin/idcheck.sh
/root/Tools/etc/VAL.txt
/root/Tools/log/idcheck.log

スクリプト

idcheck.sh (ver1.3)


#!bin/bash
#
# idcheck.sh                                       ver.1.0.3  2015.06.15
#
# Author:
#     hogehoge hogehoge
#
# Usage:
#     idcheck.sh
#     You should add this script to ”.bash_profile”.
#
# Description :
#     If you login this server, you shoud write some reasons of login.
# 
# Caution:
# XXXX XXXX XXXX XXXX.
#
#########################################################################

# 変数の読み込み
VAL=/root/Tools/etc/VAL.txt
source ${VAL}

# Ctrl + Cを実施した場合の動作(SIGINTを受信した場合)
trap ' echo You must input your ID number and reasons of login.' 2

# 社員番号を入力
echo $MESSAGE6
read answer

case "$answer" in

# 許可された社員番号
        12345)
        echo $MESSAGE5
        read answer2

                if [ -z $answer2 ]
                then
                        echo $DATETIME $MESSAGE1 | tee -a ${LOG}
                        kill $BADTERM
                        exit 15

                else
                        echo $DATETIME $MESSAGE2 $answer $MESSAGE3 $answer2 | te
e -a ${LOG}
                fi
        ;;

# 上記以外は拒否
        *)
        echo $DATETIME $MESSAGE4 | tee -a ${LOG}
        kill $BADTERM
        exit 10
        ;;
esac

変数ファイル(VAL.txt)

# Variable
BADID=`who -m | awk '{ print $2 }'`
BADTERM=`ps -ef | grep -i $BAEDID | grep -v bash | grep -v grep | awk '{ print $2 }' | head -1`
DATETIME=`date '+%Y%m%d %H:%M:%S'`
LOG=/root/Tools/log/idcheck.log

# OUTPUT Messages
MESSAGE1='ログイン理由がありません。Exitします。'
MESSAGE2='社員番号'
MESSAGE3='理由:'
MESSAGE4='不正な社員番号です。ログインを拒否します。'
MESSAGE5='ログイン理由を書いてください。'
MESSAGE6='社員番号を入力してください。'


今後の課題

・社員番号ファイルを外だしする。
・LDAP連携する。
・Oracleみたいにログインした瞬間にサーバ管理者にメール送信をして、エビデンスを残す。

2016/01/08 追記

GitHub上にスクリプトを置きました。最新版はこちらをご確認ください。
https://github.com/domonjo01/idcheck

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13