আমি কীভাবে ব্যবহারকারীর বাশ কমান্ড লগ করতে পারি?


10

আমি একটি ডেবিয়ান ইচ সার্ভার চালিয়ে যাচ্ছি যেখানে ব্যবহারকারীরা এসএসএসের মাধ্যমে একটি ক্রুট জেলে লগ ইন করবেন (আশা করি)। তারা যেভাবে মুছে ফেলতে পারে না বা আটকাতে পারে না সেভাবে লগ করা কার্যকর আদেশগুলি কীভাবে থাকতে পারি?


এই প্রশ্নটি দেখুন সার্ভারফল্ট
হাইয়ালকি

উত্তর:


11

স্নুপি ইনস্টল করুন । আপনি যদি কেবলমাত্র একজন ব্যবহারকারীকে লগ করতে চান তবে কিছু সিসলগ ফিল্টারিং ফু করুন।


আমি প্রতিটি ব্যবহারকারীর লগ করতে চাই।
ম্যালফিস্ট

তারপরে এটি ইনস্টল করুন, এটি "কেবলমাত্র কাজ করবে" (টিএম)
সিয়ান

আমি কি এটি /var/log/auth.log ছাড়াও কোথাও লগ ইন করতে সেট করতে পারি?
ম্যালফিস্ট

এটি সিসলগে যায়, তাই আপনি এখান থেকে যে কোনও জায়গায় ফিল্টার করতে পারেন। আমি কেবল কখনও সিসলগ-এনজি দিয়ে কিছু করেছি, তাই নিয়মিত সিসলগের সাথে ফিল্টার সম্পর্কে আমার ধারণা নেই আমি ভীত।
সিয়ান

4

আমি কোনও প্যাচ বা একটি বিশেষ এক্সিকিউটেবল সরঞ্জাম ব্যবহার না করে সমস্ত 'বাশ' কমান্ড / বিল্টিনগুলিকে কোনও টেক্সট-ফাইল বা 'সিসলগ' সার্ভারে লগ করার জন্য একটি পদ্ধতি লিখেছিলাম।

এটি মোতায়েন করা খুব সহজ, কারণ এটি একটি সাধারণ শেলসক্রিপ্ট যা 'বাশ' এর সূচনাতে একবার কল করা দরকার। (উদাহরণস্বরূপ .bashrc থেকে এটি কেবল 'উত্স') এটি ব্যাশ DEBUG ট্র্যাপগুলি ব্যবহার করার ধারণার উপর ভিত্তি করে। Superuser.com এ এই পোস্টটি দেখুন

declare -rx HISTCONTROL=""                                  #does not ignore spaces or duplicates
declare -rx HISTIGNORE=""                                   #does not ignore patterns
declare -rx AUDIT_LOGINUSER="$(who -mu | awk '{print $1}')"
declare -rx AUDIT_LOGINPID="$(who -mu | awk '{print $6}')"
declare -rx AUDIT_USER="$USER"                              #defined by pam during su/sudo
declare -rx AUDIT_PID="$$"
declare -rx AUDIT_TTY="$(who -mu | awk '{print $2}')"
declare -rx AUDIT_SSH="$([ -n "$SSH_CONNECTION" ] && echo "$SSH_CONNECTION" | awk '{print $1":"$2"->"$3":"$4}')"
declare -rx AUDIT_STR="[audit $AUDIT_LOGINUSER/$AUDIT_LOGINPID as $AUDIT_USER/$AUDIT_PID on $AUDIT_TTY/$AUDIT_SSH]"
set +o functrace                                            #disable trap DEBUG inherited in functions, command substitutions or subshells, normally the default setting already
shopt -s extglob                                            #enable extended pattern matching operators
function audit_DEBUG() {
  if [ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]               #avoid logging unexecuted commands after 'ctrl-c or 'empty+enter'
  then
    local AUDIT_CMD="$(history 1)"                          #current history command
    if ! logger -p user.info -t "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])[^0-9])*( )}"
    then
      echo error "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])[^0-9])*( )}"
    fi
  fi
}
function audit_EXIT() {
  local AUDIT_STATUS="$?"
  logger -p user.info -t "$AUDIT_STR" "#=== bash session ended. ==="
  exit "$AUDIT_STATUS"
}
declare -fr +t audit_DEBUG
declare -fr +t audit_EXIT
logger -p user.info -t "$AUDIT_STR" "#=== New bash session started. ===" #audit the session openning
#when a bash command is executed it launches first the audit_DEBUG(),
#then the trap DEBUG is disabled to avoid a useless rerun of audit_DEBUG() during the execution of pipes-commands;
#at the end, when the prompt is displayed, re-enable the trap DEBUG
declare -rx PROMPT_COMMAND="trap 'audit_DEBUG; trap DEBUG' DEBUG"
declare -rx BASH_COMMAND                                    #current command executed by user or a trap
declare -rx SHELLOPT                                        #shell options, like functrace
trap audit_EXIT EXIT  

বিশদে এখানে বর্ণিত পদ্ধতিটি দেখুন: http://blog.pPointoftware.ch/index.php/howto-bash-audit-command-logger

চিয়ার্স ফ্রাঙ্কোইস শিউচার


2

আপনি ttyrpld চেষ্টা করতে পারেন । এটি আপনার চাওয়ার চেয়েও বেশি কারণ এটি সম্পূর্ণ tty লগ করবে।
আমি নিজে এটি ব্যবহার করি নি তবে এটি যেভাবে কাজ করছে (কর্নেলের মাধ্যমে) সেই ব্যবহারকারীর লগগুলি পরিবর্তন করতে পারে না।


শীতল, আমি এটি পরীক্ষা করে দেখুন। এটি যদি সবকিছু দিয়ে সুন্দর করে খেলে তবে আমার যা প্রয়োজন তা হ'ল। কেবলমাত্র তা নিশ্চিত করার জন্য আমি এটির লগ ফাইলগুলি কেবলমাত্র
সংযোজনে

স্নোপি ব্যবহার করে সিয়ান উত্তরটি আপনি যা খুঁজছেন ঠিক তার মতোই বলে মনে হচ্ছে।
ব্যধি 18


-1

আপনি সিস্টেম অডিটিং সক্ষম করতে পারেন।


1
এবং কিভাবে এটি করতে পারে?
রোরি

নিরীক্ষণের জন্য ম্যান পৃষ্ঠাগুলি দিয়ে শুরু করুন এবং সেখান থেকে যান। এটি বেস ডেবিয়ান ইনস্টলের অংশ নাও হতে পারে তবে অডিট সুবিধাটি একটি লিনাক্স কার্নেল উপাদান, সুতরাং ব্যবহারকারীল্যান্ড সরঞ্জামগুলি কোনও বিতরণে ইনস্টল করে ব্যবহার করা যেতে পারে।
জেফ ফ্রেটজ

-3

বাশ একটি নির্দিষ্ট আকারের কমান্ডের ইতিহাস রাখে। আপনি প্রশাসক সেই আকারটি সেট করতে পারবেন এবং সহজেই কোনও স্ক্রিপ্ট লিখতে পারেন যা ক্রোনটির মাধ্যমে ব্যবহারকারী হিসাবে সেই ইতিহাসটি নিয়ে আসে।


1
.বাশ_ইস্টিরিটি সুরক্ষার জন্য নয়, সুবিধার্থে। এর বেশ কয়েকটি কারণ রয়েছে, এটি ব্যবহারকারী-সম্পাদনযোগ্য (বা কমপক্ষে সংযোজনযোগ্য) হ'ল না।
ম্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.