Linux-PAM (შემოკლებით Pluggable ავთენტიფიკაციის მოდულები რომელიც წარმოიშვა Unix-PAM არქიტექტურიდან) არის ბიბლიოთეკების მძლავრი კომპლექტი, რომელიც გამოიყენება მომხმარებლის დინამიური ავტორიზაციისათვის Linux– ის სისტემაში შემავალი პროგრამებისთვის (ან სერვისებისთვის).
ის აერთიანებს მრავალი დაბალი დონის ავტორიზაციის მოდულს მაღალი დონის API- ში, რომელიც უზრუნველყოფს დინამიური ავტორიზაციის მხარდაჭერას პროგრამებისთვის. ეს საშუალებას აძლევს დეველოპერებს დაწერონ პროგრამები, რომლებიც საჭიროებენ ავტორიზაციას, დამოუკიდებელი ავტორიზაციის სისტემისგან დამოუკიდებლად.
ბევრი თანამედროვე Linux დისტრიბუცია მხარს უჭერს Linux-PAM (შემდგომში მოიხსენიება როგორც "PAM”) სტანდარტულად. ამ სტატიაში ჩვენ განვმარტავთ, თუ როგორ უნდა დააკონფიგურიროთ გაფართოებული PAM ში უბუნტუ და CentOS სისტემები.
სანამ მეტს გავაგრძელებდით, გაითვალისწინეთ რომ:
დასაქმება PAM, პროგრამა/პროგრამა უნდა იყოს "PAM იცის“; ის უნდა იყოს დაწერილი და შედგენილი სპეციალურად PAM– ის გამოსაყენებლად. იმის გასარკვევად, არის თუ არა პროგრამა "PAM- იცის”თუ არა, შეამოწმეთ არის თუ არა იგი შედგენილი PAM ბიბლიოთეკასთან გამოყენებით ldd ბრძანება.
მაგალითად sshd:
$ sudo ldd/usr/sbin/sshd | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)
ძირითადი კონფიგურაციის ფაილი PAM არის /etc/pam.conf და /etc/pam.d/ დირექტორია შეიცავს PAM კონფიგურაციის ფაილებს PAM– ის თითოეული პროგრამისთვის/სერვისისთვის. PAM იგნორირებას უკეთებს ფაილს, თუ კატალოგი არსებობს.
ძირითადი კონფიგურაციის ფაილის სინტაქსი ასეთია. ფაილი შედგება ერთ ხაზზე დაწერილი წესების ჩამონათვალისგან (შეგიძლიათ გააფართოვოთ წესები გამოყენებით “\”
გაქცევის ხასიათი) და კომენტარები წინ უსწრებს “#”
აღნიშნავს და ვრცელდება ხაზის მომდევნო ბოლომდე.
თითოეული წესის ფორმატი არის სიმბოლოების სივრცეში გამოყოფილი კოლექცია (პირველი სამი არის შემთხვევის გარეშე). ჩვენ განვმარტავთ ამ ნიშნებს მომდევნო სექციებში.
სერვისის ტიპი კონტროლი-დროშის მოდულის მოდული-არგუმენტები
სად:
თითოეული ფაილის სინტაქსი /etc/pam.d/ მსგავსია ძირითადი ფაილისა და შედგება შემდეგი ფორმის სტრიქონებისგან:
აკრიფეთ კონტროლი-დროშის მოდულის მოდული-არგუმენტები.
ეს არის წესის განსაზღვრის მაგალითი (მოდულ-არგუმენტების გარეშე) ნაპოვნი /etc/pam.d/sshd ფაილი, რომელიც კრძალავს არა-ძირეულ ლოგინებს როდის /etc/nologin არსებობს:
ანგარიში საჭიროა pam_nologin.so.
PAM ავტორიზაციის ამოცანები იყოფა ოთხ დამოუკიდებელ მენეჯმენტის ჯგუფად. ეს ჯგუფები მართავენ ტიპიური მომხმარებლის მოთხოვნის შეზღუდულ სერვისზე სხვადასხვა ასპექტს.
მოდული ასოცირდება მენეჯმენტის ჯგუფის ერთ ტიპთან:
PAM დასატვირთავი ობიექტის ფაილები (მოდულები) უნდა განთავსდეს შემდეგ დირექტორიაში: /lib/security/ ან /lib64/security დამოკიდებულია არქიტექტურაზე.
მხარდაჭერილი საკონტროლო-დროშები არიან:
ზემოაღნიშნულის გარდა არის საკვანძო სიტყვები, არის კიდევ ორი მოქმედი საკონტროლო დროშა:
მაგალითად, ჩვენ დავაკონფიგურირებთ როგორ გამოვიყენოთ PAM გამორთეთ root მომხმარებლის წვდომა სისტემაში SSH– ის საშუალებით და შესვლის პროგრამები. აქ, ჩვენ გვსურს გამორთოთ root მომხმარებლის წვდომა სისტემაზე, ავტორიზაციისა და sshd სერვისებზე წვდომის შეზღუდვით.
ჩვენ შეგვიძლია გამოვიყენოთ /lib/security/pam_listfile.so მოდული, რომელიც გთავაზობთ დიდ მოქნილობას კონკრეტული ანგარიშების პრივილეგიების შეზღუდვაში. გახსენით და შეცვალეთ ფაილი სამიზნე სერვისისთვის /etc/pam.d/ დირექტორია, როგორც ნაჩვენებია.
$ sudo vim /etc/pam.d/sshd. ან $ sudo vim /etc/pam.d/login.
დაამატეთ ეს წესი ორივე ფაილში.
ავტორი მოითხოვს pam_listfile.so \ onerr = წარმატებული პუნქტი = მომხმარებლის გრძნობა = ფაილის უარყოფა =/etc/ssh/უარყოფილი მომხმარებლები.
ნიშნების ახსნა ზემოაღნიშნულ წესში:
შემდეგი, ჩვენ უნდა შევქმნათ ფაილი /etc/ssh/deniedusers და დაამატე სახელი ფესვი მასში:
$ sudo vim/etc/ssh/უარყოფილი მომხმარებლები.
შეინახეთ ცვლილებები და დახურეთ ფაილი, შემდეგ დააყენეთ მასზე საჭირო ნებართვები:
$ sudo chmod 600/etc/ssh/უარყოფილი მომხმარებლები.
ამიერიდან, ზემოაღნიშნული წესი ეუბნება PAM- ს კონსულტაციისთვის /etc/ssh/deniedusers ფაილი და უარი თქვან SSH– ზე წვდომასა და შესვლის სერვისებზე ნებისმიერი ჩამოთვლილი მომხმარებლისთვის.
უფრო რთული PAM წესების დასაწერად შეგიძლიათ გამოიყენოთ მოქმედი საკონტროლო-დროშები შემდეგი ფორმით:
ტიპი [მნიშვნელობა 1 = მოქმედება 1 მნიშვნელობა 2 = მოქმედება 2…] მოდულის მოდული-არგუმენტები.
სად მნიშვნელობა N შეესაბამება დაბრუნების კოდს იმ ფუნქციიდან, რომელიც მოწოდებულია მოდულში, რომლისთვისაც არის განსაზღვრული ხაზი. თქვენ შეგიძლიათ იპოვოთ მხარდაჭერილი მნიშვნელობები ონლაინ რეჟიმში PAM ადმინისტრატორის სახელმძღვანელო. სპეციალური მნიშვნელობა არის ნაგულისხმევი, რაც გულისხმობს ყველა მნიშვნელობას, რომელიც პირდაპირ არ არის ნახსენები.
actionN შეუძლია მიიღოს ერთი შემდეგი ფორმა:
ოთხივე საკვანძო სიტყვადან თითოეული: აუცილებელია; რეკვიზიტი; საკმარისი; და სურვილისამებრ, აქვს ექვივალენტი გამოხატვის თვალსაზრისით [...]
სინტაქსი, რომელიც საშუალებას გაძლევთ დაწეროთ უფრო რთული წესები და ისინი არიან:
ქვემოთ მოცემულია მაგალითი თანამედროვედან CentOS 7 სისტემა. განვიხილოთ ეს წესები /etc/pam.d/postlogin PAM ფაილი:
#%PAM-1.0. # ეს ფაილი ავტომატურად გენერირდება. # მომხმარებლის ცვლილებები განადგურდება შემდეგ ჯერზე, როდესაც autonconfig გაუშვებთ. სესია [წარმატება = 1 ნაგულისხმევი = იგნორირება] pam_succeed_if.so სერვისი! ~ gdm* სერვისი! ~ su* მშვიდი. სესია [ნაგულისხმევი = 1] pam_lastlog.so nowtmp showfailed. სხდომა არჩევითი pam_lastlog.so ჩუმად noupdate showfailed.
აქ არის კონფიგურაციის კიდევ ერთი მაგალითი /etc/pam.d/smartcard-auth PAM ფაილი:
#%PAM-1.0. # ეს ფაილი ავტომატურად გენერირდება. # მომხმარებლის ცვლილებები განადგურდება შემდეგ ჯერზე, როდესაც autonconfig გაუშვებთ. Author საჭირო pam_env.so. author [წარმატება = შესრულებულია იგნორირება = იგნორირება ნაგულისხმევი = სიკვდილი] pam_pkcs11.so nodebug wait_for_card. autor საჭირო pam_deny.so ანგარიში საჭირო pam_unix.so. ანგარიში საკმარისი pam_localuser.so. ანგარიშის საკმარისი pam_succcess_if. ასე uid <1000 ჩუმად. ანგარიში საჭიროა pam_permit.so პაროლი მოთხოვნა pam_pkcs11.so სესია არჩევითი pam_keyinit.so გაუქმება. სესია საჭიროა pam_limits.so. სესია არჩევითი pam_systemd.so. სესია [წარმატება = 1 ნაგულისხმევი = იგნორირება] pam_succeed_if.so სერვისი უხეში წყნარი გამოყენების_საშიში. სესია საჭიროა pam_unix.so.
დამატებითი ინფორმაციისთვის იხილეთ პამ.დ კაცის გვერდი:
$ man pam.d
დაბოლოს, კონფიგურაციის ფაილის სინტაქსისა და ყველა PAM მოდულის ყოვლისმომცველი აღწერა შეგიძლიათ იხილოთ ფაილში დოკუმენტაცია Linux-PAM– ისთვის.
PAM არის მძლავრი მაღალი დონის API, რომელიც საშუალებას აძლევს პროგრამებს, რომლებიც ეყრდნობიან ავტორიზაციას ავთენტური მომხმარებლებისათვის Linux სისტემის სისტემებში. ეს არის ძლიერი, მაგრამ ძალიან რთული გასაგები და გამოყენება.
ამ სტატიაში ჩვენ ავუხსენით, თუ როგორ უნდა მოხდეს PAM– ის მოწინავე ფუნქციების კონფიგურაცია Ubuntu და CentOS– ში. თუ თქვენ გაქვთ რაიმე შეკითხვა ან კომენტარი გასაზიარებლად, გამოიყენეთ უკუკავშირის ფორმა ქვემოთ.