এসএসএইচ লগইন এবং / অথবা লগআউটে চালিত (সিস্টেম) স্ক্রিপ্ট


12

আমি চাইলে আমার ওপেনএসএইচ সার্ভারটি স্ক্রিপ্ট শুরু করুক যখনই কোনও ব্যবহারকারী এসএসএইচ ব্যবহার করে লগ ইন করে, হোস্টের নাম বা আইপি, পাশাপাশি ব্যবহারকারীর নাম পাস করে। অতিরিক্ত হিসাবে আমি এটি একটি স্ক্রিপ্ট চালানো চাই, যখনই একটি সেশন সমাপ্ত হয় (ব্যবহারকারীর নাম পাস করা)। এই স্ক্রিপ্টগুলি ব্যবহারকারীর সেশনে চলবে না, তবে সিস্টেমের প্রশস্ত।

ধারণাটি হ'ল লগইন এবং লগআউট সম্পর্কিত অডিও সতর্কতা দেওয়া, উদাহরণস্বরূপ ব্যবহার করা espeakএবং বাহ্যিক প্রদর্শনে তথ্য প্রদর্শন করা।

আমি দেখেছি যে এখানে একটি pam-scriptsপ্যাকেজ রয়েছে তবে আমি নিশ্চিত নই যে এটি আমার যা করতে চায় তা হয়, না কীভাবে এটি ব্যবহার করতে হয়।

উত্তর:


10

আপনি আপনার এসএসএইচ-ব্যবহারকারীদের যে অনুরোধ করেছেন তার পরিবর্তে (বা তাদের শেল যদি তারা একটি নির্দিষ্ট আদেশ না দেয়) এর পরিবর্তে একটি আদেশ জোর করতে পারেন। ভালো কিছু যে কমান্ড নির্দিষ্ট করে সম্পন্ন করা যেতে পারে ForceCommand /root/ssh-wrapperযে /etc/ssh/sshd_config(এটা ব্যাপার যেখানে স্ক্রিপ্ট না অবস্থিত অথবা এটা কিভাবে নামে এর ঠিক নিশ্চিত এটি সমস্ত ব্যবহারকারীদের এবং এটি sshd কমান্ড কনফিগারেশন ফাইল পয়েন্টে এক্সিকিউটেবল তা নিশ্চিত করুন)। আপনাকে পুনরায় চালু / পুনরায় লোড করা দরকার sshdমূল কমান্ড কাছেই অ্যাক্সেসযোগ্য জোরপূর্বক কমান্ড হিসাবে $SSH_ORIGINAL_COMMAND

আমি এই স্ক্রিপ্টটি একসাথে হ্যাক করেছি:

#! /bin/sh

# add logger options when needed
log="logger -t ssh-wrapper"

# find IP address
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`

$log $USER login from $ip
espeak "$USER just logged in from $ip" > /dev/null 2>&1

$log command: ${SSH_ORIGINAL_COMMAND:-shell}
${SSH_ORIGINAL_COMMAND:-shell}

$log $USER logout
espeak "$USER just logged out" > /dev/null 2>&1

এখন যখনই আমি লগইন করি বা লগআউট করি কোনও ভয়েস আমাকে এ সম্পর্কে বলি, এবং লগ এন্ট্রি সিলেগ-এ লেখা হয়। এটি কমান্ড লগ করে। আপনার sshd ব্যবহার "অনুসরণ" করতে আপনি নীচের মতো কিছু ব্যবহার করতে পারেন:

tailf /var/log/syslog | grep ssh-wrapper

দয়া করে নোট করুন যে এই স্ক্রিপ্টটি বেশিরভাগই অনাস্থিত, তাই আপনার নিজের ঝুঁকিতে ব্যবহার করুন! ;-)

পিএস: মনে রাখবেন যে এই স্ক্রিপ্টটি লগ ইন করা ব্যবহারকারী হিসাবে চালিত হয়েছে, তাই আপনি যদি আরও বৈশিষ্ট্য যুক্ত করতে পরিবর্তন করেন তবে আপনি যা চান তা করতে পারবেন না ...


হাই, ব্যবহারকারী যখন এসএসএস ক্লায়েন্টের সাহায্যে উইন্ডোটি বন্ধ করে দিয়েছিল তখন পরিস্থিতি সনাক্ত করার কোনও উপায় আছে কি? আপনার স্ক্রিপ্ট এই পরিস্থিতিতে আবদ্ধ না .. ধন্যবাদ।
দিমিত্রি এসকিন

করা উচিত shell$ {SSH_ORIGINAL_COMMENT: -shell} এর মধ্যে শেল প্রকৃত পাথ, যেমন দিয়ে প্রতিস্থাপিত হবে। / বিন / ব্যাশ? আমি যখন এটি চালানোর চেষ্টা করি তখন এটি অভিযোগ করে যে শেলের মতো কোনও কমান্ড নেই। আসলে, আমার ধারণা, আপনি কী বোঝাতে চেয়েছেন EL শেল? এটি ব্যবহারকারীর নির্দিষ্ট শেল চালানো উচিত।
ইব্রাহিম

1

আমি এই ম্যাচিং ইভেন্টগুলি এর আগে লগ ফাইলে দেখেছি (যা আপনাকে কোনও কিছুর সাথে মিলের ক্ষেত্রে নমনীয়তা দেয়)। এই পৃষ্ঠাটি খারাপভাবে ফর্ম্যাট করা হয়েছে তবে এটি আপনাকে সূচনা করতে সহায়তা করতে পারে: https://help.ubuntu.com/commune/AudibleLogs# স্পন্দনের সাথে খেলুন


আমি মনে করি আপনি / তারা espeakপরিবর্তে এর মানে esound?
জানু

0

( সার্ভারফল্টে একই প্রশ্ন থেকে ক্রস পোস্টের উত্তর দিন )

আপনি যা চান তা করতে কেবল একটি স্ক্রিপ্ট লিখুন এবং তারপরে এটি আটকে রাখুন /etc/profileবা সম্ভবত /etc/bash.bashrcআপনার প্রয়োজনের উপর নির্ভর করে। এই ফাইলগুলিতে পরিবর্তনগুলি সমস্ত ব্যবহারকারীর জন্য প্রযোজ্য। আপনি কীভাবে এই পদ্ধতির সাথে লগআউট সম্পর্কে অবহিত করবেন তা নিশ্চিত নই not

বিকল্পভাবে, এটি করার আরেকটি উপায় হ'ল /var/log/authনতুন (এবং সমাপ্ত) এসএসস সেশনের জন্য একটি সাধারণ ডেমন মনিটরিং করা । এইভাবে এটি লগইন এবং লগআউট উভয়ই বিজ্ঞপ্তি পাঠাতে সক্ষম হবে would


0

আপনি sshrc ব্যবহার করতে পারেন (man sshd, sshrc অনুসন্ধান করুন)

ssh উপস্থিত থাকলে / etc / ssh / sshrc কার্যকর করবে এবং আপনি সেখান থেকে একটি স্ক্রিপ্ট (বা একাধিক স্ক্রিপ্ট কল করতে পারেন) চালাতে পারবেন

আপনি যে কোনও ব্যাশ ভেরিয়েবলকে কল করতে পারেন, $USERআইপি এর মাধ্যমে বা পেতে পারেন

read -d " " ip <<< $SSH_CONNECTION

আপনি যা চান তা পরীক্ষা করতে বা লগ করতে স্ক্রিপ্ট লিখতে পারেন।

লগআউট স্ক্রিপ্ট ... ভাল, আমি এটিই অনুসন্ধান করছি! : ডি


0

আমি প্যাম সেরা বিকল্প মনে করি । এটি সিস্টেম-ব্যাপী এবং ব্যবহারকারীর কনফিগারেশন ফাইলগুলির দ্বারা ওভাররাইড করা যায় না।

আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন। তারা আমার জন্য উবুন্টু 14.04.4 এলটিএসে কাজ করেছিল।

চালান:

$ sudo pico /opt/custom/bin/info-session.sh

এই খালি ফাইলটি সম্পাদনা করুন এবং এই লাইনগুলি যুক্ত করুন:

#!/bin/sh

[ "$PAM_TYPE" = "open_session" ] || exit 0

INFO=$(date +"%Y/%m/%d %T $PAM_USER ($PAM_RHOST) $PAM_SERVICE $PAM_TTY") # You can customize message.

echo "PAM access: $INFO" | write user > /dev/null 2>&1 # See Note 1.

exit 0

এরপরে, স্ক্রিপ্টে সম্পাদনের অনুমতি দিন:

$ sudo chmod ugo+x /opt/custom/bin/info-session.sh

এখন, চালান:

$ sudo pico /etc/pam.d/common-session

ফাইলের শেষে এই লাইনগুলি যুক্ত করুন:

# Modified by user:
session optional pam_exec.so /opt/custom/bin/info-session.sh

কোনও পরিষেবা পুনরায় চালু করার দরকার নেই। নোট করুন যে কোনও ব্যবহারকারী এসএসএইচের পরিবর্তে টার্মিনাল থেকে লগ ইন করলে এই স্ক্রিপ্টটিও চালিত হবে।

দ্রষ্টব্য 1: আপনি espeakবা অন্য যে কোনও প্রক্রিয়া যা আপনার প্রয়োজনের সাথে খাপ খাইয়ে দিতে পারেন (ইমেল, পুশ বিজ্ঞপ্তি, এবং আরও ...)। আপনি যদি ব্যবহার করেন writeএবং ব্যবহারকারী লগ ইন থাকে তবে সে বা সে সরাসরি তাদের টার্মিনালে আউটপুট বার্তাগুলি দেখতে পাবে।

তথ্যসূত্র:
https://blog.stalkr.net/2010/11/login-notifications-pamexec-scriptting.html
https://blog.redbranch.net/2014/06/04/pam_exec-so-execute-commands-on -ব্যবহারকারী লগ - ইন/

সম্পর্কিত:
ssh লগইন সফল হলে আমি কীভাবে একটি ইমেল সতর্কতা সেট আপ করব?
/server/400613/how-can-i-configure-my-server-to-notify-me-whenever-it-is-remotely-accessed-via
/server//questions / 395393 / ইমেল-বিজ্ঞপ্তি-সম্পর্কে-প্রতিটি-SSH-সংযোগ-টু-লিনাক্স-সার্ভার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.