29歳でフリーターからITエンジニアに転職を成功させ
31歳でフリーランスエンジニアになった
あざらしです
こんにちは
サーバーを運用しているとこんなことにぶつかることがあります。
「ログイン管理ってしてるの?」「ログインした履歴って残しているの?」「ログインしたらメールが飛ぶようにならないの?」
上の人は監査ログ的な物を欲しがるんですよねー
セキュリティ観点からしても確かに欲しいけど、お金をかけてツールを入れたくないってごねるw
なので、基本的な機能だけで実現させます。
ちなみにこのスクリプトは私が初心者だった頃に作ったスクリプトですので、コードの汚さはご勘弁を。
今更綺麗にはしたくないってのもありますがw
コード
#####login chek###########################
MAIL=Toアドレス
FROM=Fromアドレス
DATA=`date ‘+%Y%m%d%H%M%S’`
Y=`date ‘+%Y’`
m=`date ‘+%m’`
d=`date ‘+%d’`
H=`date ‘+%H’`
M=`date ‘+%M’`
S=`date ‘+%S’`
SECURE=`grep “$H:$M:” /var/log/secure`
IP=`who am i | cut -d ‘(‘ -f 2 | sed -e ‘s/)//g’`
trap ‘echo “ログアウトします” ; exit 1’ 2
# User specific aliases and functions
if [ “$SSH_TTY” != “” ]; then
echo -n “ログイン理由を記載してください。
※未記入は強制ログアウトします。
(終了:Enter削除:Delete)
: “
read ANS
if [ -z $ANS ] ; then
echo “ログアウトします”
exit 0
else
echo -e “[$HOSTNAME] $USER $Y/$m/$d $H:$M:$S From:$IP ログイン目的: $ANS” \
| mail -s “\”$HOSTNAME\” root login” -r “$FROM” “$MAIL”
echo “mailを送信しました。”
fi
else
ANS=`zenity –entry –text=ログイン理由を記載してください`
if [ -z $ANS ] ; then
exit 0
else
echo -e “[$HOSTNAME] $USER $Y/$m/$d $H:$M:$S From:$IP ログイン目的: $ANS” \
| mail -s “\”$HOSTNAME\” root login” -r “$FROM” “$MAIL”
fi
fi
コード説明
# User specific aliases and functions
if [ “$SSH_TTY” != “” ]; then
echo -n “ログイン理由を記載してください。
※未記入は強制ログアウトします。
(終了:Enter削除:Delete)
: “
SSHで接続している場合にのみ実行するようにしている。
これをやっておかないと、GUIでログインした時もスクリプトが動いてしまいます。
ANS=`zenity –entry –text=ログイン理由を記載してください`
if [ -z $ANS ] ; then
exit 0
else
echo -e “[$HOSTNAME] $USER $Y/$m/$d $H:$M:$S From:$IP ログイン目的: $ANS” \
| mail -s “\”$HOSTNAME\” root login” -r “$FROM” “$MAIL”
fi
fi
ログイン理由を記載しないと強制的にログアウトして、ログインしてきたユーザー名を拾ってメールで管理者に送信するようにしている
まとめ
最近は大規模なサーバー管理システムが整っているところがほとんどだからあまりこういったお手製のツールなんかは作らないけど、小規模な企業ならあり得る
私は開発人間ではないので、大した物は作れないですがある程のどスクリプトは書くことができます。
まあ、素人に毛が生えた程度ですがね。
でも、作っているととても楽しくなるのはやっぱり開発をやりたかったのかなーって今では思いますw
コメント