লগ ফর্ম্যাট সম্পর্কে 2016-10-31 আপগ্রেড করুন
সঠিক ইনস্টলেশন জন্য কিছু স্ক্রিপ্ট
ব্যবহারকারীর ব্যবহারে এক্সপেনশন সহ কী দ্বারা এসএসএস সংযোগগুলি ট্র্যাক / লগ করার জন্য একটি সম্পূর্ণ ব্যবহারযোগ্য পদ্ধতি রয়েছে।
ভূমিকা
@ কালেবের অ্যানোভার ছাড়াও, আমি সেখানে কিছু ছোট কৌশল ভাগ করতে চাই:
নোটা: আমি দেবিয়ান 6.0 এ কাজ করছি ।
সার্ভার ইনস্টলেশন
এসএসএইচডি লগ স্তর
প্রথমে সার্ভার কনফিগারেশনে পর্যাপ্ত লগিং স্তর রয়েছে তা নিশ্চিত করে:
রুট হিসাবে, এটি সেট করবে এবং সক্রিয় ভার্বোস লগইন:
sed '/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{s/^/# /;h;s/$/\nLogLevel VERBOSE/};${p;g;/./!{iLogLevel VERBOSE'$'\n;};D}' -i /etc/ssh/sshd_config
লেখা যেতে পারে:
sed '
/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{
s/^/# /;
h;
s/$/\nLogLevel VERBOSE/
};
${
p;
g;
/./!{
iLogLevel VERBOSE
};
D
}' -i /etc/ssh/sshd_config
বা একটি উপলিপি স্ক্রিপ্টে :
#!/bin/sed -f
/^[^#]*LogLevel.*\(QUIET\|FATAL\|ERROR\|INFO\)/{
s/^/# /;
h;
s/$/\nLogLevel VERBOSE/
};
${
p;
g;
/./!{
iLogLevel VERBOSE
};
D
}
যা এই হিসাবে চালানো যেতে পারে:
patchSshdConfigLogLevel.sed -i /etc/ssh/sshd_config
এটি সক্রিয় করার চেয়ে :
service ssh restart
সিসলগ: আঙুলের ছাপ ব্যবহারকারীর পাঠযোগ্য making
এখন ব্যবহারকারী পঠনযোগ্য ফাইলে আঙুলের ছাপ নিন:
echo ':msg, regex, "Found matching .* key:" -/var/log/sshdusers.log' \
> /etc/rsyslog.d/ssh_key_user.conf
echo ':msg, regex, "Accepted publickey for" -/var/log/sshdusers.log' \
>> /etc/rsyslog.d/ssh_key_user.conf
service rsyslog restart
sshdusers.log
এরপরে নতুন ফাইল তৈরি হয়েছে (এবং কোনও কিছু রয়েছে) তা নিশ্চিত করতে ssh থেকে লগইন করতে (পুনরায়) চেষ্টা করুন
chmod 644 /var/log/sshdusers.log
ব্যবহার
এটি বর্তমান সেশনের ফিঙ্গারপ্রিন্ট মুদ্রণ করবে:
sed -ne "/sshd.$PPID.:.*matching .SA key/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
sed -ne "/sshd.\($(($(ps ho ppid $PPID)))\|$PPID\).:.*\(Accepted publickey\|matching .SA key\)/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
জন্য প্লাগ-ইন .bashrc
এবং অবশেষে, আপনার বা ব্যবহারকারীর শেষে কিছুটা অ্যাড-অন রয়েছে :/etc/bash.bashrc
.bashrc
ssh_oPwd=$OLDPWD
ssh_oUmask=$(umask)
umask 077
ssh_tempdir=$(mktemp -d /tmp/ssh-id-XXXXXXX)
cd $ssh_tempdir || exit 1
ssh_crtFp=$(
sed -ne "/sshd.\($(($(ps ho ppid $PPID)))\|$PPID\).:.*\(Accepted publickey\|matching .SA key\)/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
)
for ((ssh_i=1;ssh_i<=$(wc -l <$HOME/.ssh/authorized_keys);ssh_i++));do
export ssh_line="$(sed -ne ${ssh_i}p <$HOME/.ssh/authorized_keys)"
echo "$ssh_line" >tempKey
export ssh_lFp=($(ssh-keygen -l -f tempKey))
if [ "${ssh_lFp[1]}" == "$ssh_crtFp" ] ;then
export SSH_KEY_USER=${ssh_line##* }
break
fi
done
cd $OLDPWD
OLDPWD=$ssh_oPwd
rm -fR $ssh_tempdir
umask $ssh_oUmask
unset ssh_lFp ssh_line ssh_i ssh_crtFp ssh_tempdir ssh_oUmask ssh_oPwd
সুতরাং এসএসএইচ থেকে পুনরায় লগইন করার পরে, আপনি দেখতে পাবেন:
set | grep ^SSH
SSH_CLIENT='192.168.1.31 43734 22'
SSH_CONNECTION='192.168.1.31 43734 192.168.1.2 22'
SSH_KEY_USER=user@mydesk
SSH_TTY=/dev/pts/2
নোটা কিছু ইনস্টলেশনে, অনুমোদিত কী ফাইলটি হয়ত আলাদাভাবে নামকরণ করে, যেমন $HOME/.ssh/authorized_keys2
...