·í±zºÞ²z¤@³¡®a¥Î¹q¸£®É¡A¨Ï¥ÎªÌ¥²¶·¥H root ¨Ï¥ÎªÌ©ÎªÌ¬O³z¹L¤@ºØ setuid µ{¦¡ ¡]¦p sudo ©Î su¡^¨ÓÀò¨ú¦³®Äªº root Åv¤~¯à°õ¦æ¤@¨Ç¨t²ÎªººÞ²z ¤u§@¡C setuid µ{¦¡¥i¥H¨Ï±z¥H¸Óµ{¦¡¾Ö¦³ªÌªº¨Ï¥ÎªÌ ID (UID)¨Ó°õ¦æ¸Óµ{¦¡¡A¦Ó¤£¬O ¥H°õ¦æ¦¹µ{¦¡ªº¨Ï¥ÎªÌ¡C ¦p¦¹ªºµ{¦¡¥H¤@Ó¤p¼gªº s ¼Ð¥Ü¦bªø®æ¦¡¦Cªí ¤¤ªº¾Ö¦³ªÌ³¡¥÷¡A¦p¥H¤Uªº¨Ò¤l©Ò¥Ü¡G
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su |
µM¦Ó¹ï©ó¤@¶¡¤½¥qªº¨t²ÎºÞ²zû¡A¥L¥²¶·¨M©w¤½¥q¤º³¡ªº¨Ï¥ÎªÌ¹ï¥L̪º¾÷¾¹¯à°÷¦³¦h¤ÖªººÞ²z¦s¨úÅv¡C ÂǥѺ٬° pam_console.so ªº¤@Ó PAM ¼Ò²Õ¡A¬Y¨Ç¦æ¬°³q±`¥u«O¯dµ¹ root ¨Ï¥ÎªÌ¡A ¨Ò¦p«·s¶}¾÷¥H¤Î±¾¸ü²¾°£¦¡ªº´CÅéµ¥¤u§@¶È¤¹³\¦b¹êÅé¥D±±¥x²Ä¤@Óµn¤Jªº¨Ï¥ÎªÌ¡]½Ð°Ñ¦Ò Red Hat Enterprise Linux °Ñ¦Ò¤â¥U ¤@®Ñ¤¤ªº Pluggable Authentication Modules (PAM) ³¹¸`¥H¨ú±oÃö©ó pam_console.so ¼Ò²Õªº§ó¦h¸ê°T¡^¡C µM¦Ó¡A¨Ò¦p×§ïºô¸ô³]©w¡B°t¸m¤@Ó·s¥[¤Jªº·Æ¹«©Î ±¾¸üºô¸ô¸Ë¸mµ¥ªº¨ä¥L«n¨t²ÎºÞ²z¤u§@¡A¦b¯Ê¤ÖºÞ²zÅvªº±¡ªp¤U¡A±NµLªk¦s¨ú¾Þ§@¡C ³Ì²×¡A¨t²ÎºÞ²zûÁÙ¬O ±o¨M©wºô¸ô¤º³¡ªº¨Ï¥ÎªÌ¥i¥H¾Ö¦³¦h¤ÖºÞ²z©Êªº¦s¨ú¡C
°²¦p¤½¥q¤º³¡ªº¬Y¨Ç¨Ï¥ÎªÌ¬O¥i«H¿àªº¡A¥BÄÝ©ó¹q¸£²z¸Ñ¯à¤O·¥¨Îªº¤@¸s¡A±z©Î³\¥i¥H¤¹³\¥L֦̾³ root ªº ¦s¨úÅv¡A¤¹³\¨Ï¥ÎªÌªº root ¦s¨úªí¥Ü¨Ò¦p·s¼W¸Ë¸m©Î³]©wºô¸ô¤¶±µ¥¤p¨Æ±¡¥i¥H¥ÑÓ§O¨Ï¥ÎªÌ¨Ó³B²z¡A¥HÅý ¨t²ÎºÞ²zû¨Ó³B²zºô¸ô¦w¥þ©Ê¥H¤Î¨ä¥L«nªº°ÝÃD¡C
¦b¥t¤@¤è±¡Aµ¹¤©Ó§O¨Ï¥ÎªÌ root ¦s¨ú¤]¥i¯à·|¾ÉP¤U¦Cªº°ÝÃDµo¥Í¡G
¿ù»~¦a°t¸m¾÷¾¹³]©w — ¾Ö¦³ root ¦s¨úÅvªº¨Ï¥ÎªÌ¥i¯à·|¿ù»~¦a³]©w¥L̪º¾÷¾¹¡A ©ÎªÌ¬O³y¦¨§óÁVªº±¡ªp¡A¦]¦¹¶}±Ò¤F¦w¥þ©Êªºº|¬}¦Ó¤£ª¾±¡¡C
°õ¦æ«D¦w¥þªºªA°È — ¾Ö¦³ root ¦s¨úÅvªº¨Ï¥ÎªÌ¤]³\·|¦b¥L̪º¾÷¾¹¤W°õ¦æ«D¦w ¥þªºªA°È¡A¦p FTP ©Î Telnet¡A·í¨Ï¥ÎªÌ¦WºÙ»P±K½X¦bºô¸ô¤¤¥H©ú¤å¶Ç¿é®É¡A±N³y¦¨·¥¤jªº·ÀI¡C
¥H root °õ¦æ¹q¤l¶l¥óªþ¥ó — ÁöµM³oºØ±¡ªp«Ü¤Öµo¥Í¡A¥i¬OÁÙ¬O¦³¼vÅT Linux ªº¹q¤l¶l¥ó¯f¬r¡C µM¦Ó¶È¦b¥¦Ì¬O¥Ñ root ¨Ï¥ÎªÌ°õ¦æ®É¤~·|³y¦¨«Â¯Ù¡C
°²¦p¨t²ÎºÞ²zû¥Ñ©ó³o¨Ç©Î¨ä¥Lì¦]¡A¤£·Q¤¹³\¨Ï¥ÎªÌµn¤J¬° root¡Aroot ±K½X¥²¶·«O«ù¾÷±K¡A¦Ó¥B¥²¶·³z¹L ¶}¾÷ºÞ²zµ{¦¡ªº±K½X«OÅ@¨Ó¸T¤î¶i¤J°õ¦æµ¥¯Å¤@©ÎªÌ¬O³æ¤@¨Ï¥ÎªÌ¼Ò¦¡¡]½Ð°Ñ¦Ò ²Ä 4.2.2 ¸` ¥H¨ú±oÃö©ó³oÓ¥DÃDªº§ó¦h¸ê°T¡^¡C
ªí®æ 4-1 Åã¥Ü¥X¤@Ó¨t²ÎºÞ²zû¥i¥H¶i¤@¨B½T©w root µn¤J¤w°±¥Îªº¤èªk¡G
¤èªk | »¡©ú | ®ÄÀ³ | ¨S¦³¼vÅT | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
§ó§ï root shell¡C | ½s¿è /etc/passwd ÀɮסA¨Ã¥B§ó§ï shell ±q /bin/bash ¬° /sbin/nologin¡C |
|
| |||||||||||||||
³z¹L¥ô¦ó¥D±±¥x¸Ë¸m (tty) °±¥Î root ¦s¨ú¡C | ¤@Ӫťժº /etc/securetty ÀÉ®×±N¥i¨¾¤î root µn¤J¨ì¥ô¦ó³s±µ¨ì¹q¸£ªº¸Ë¸m¡C |
|
| |||||||||||||||
°±¥Î root SSH µn¤J¡C | ½s¿è /etc/ssh/sshd_config ÀɮסA¨Ã¥B³]©w PermitRootLogin °Ñ¼Æ¬° no¡C |
|
| |||||||||||||||
¨Ï¥Î PAM ¨Ó¨î root ¦s¨úªA°È¡C | ½Ð½s¿è /etc/pam.d/ ¥Ø¿ý¤¤¥Ø¼ÐªA°ÈªºÀɮסA½Ð½T©w pam_listfile.so ¬O»Ýn¥Î©ó»{ÃÒªº¡C ½Ð°Ñ¦Ò ²Ä 4.4.2.4 ¸` ¥H¨ú±o¸Ô²Ó¸ê°T¡C |
|
|
ªí®æ 4-1. °±¥Î root ±b¸¹ªº¤èªk
¦pn¨¾¤î¨Ï¥ÎªÌª½±µµn¤J¬° root¡A¨t²ÎºÞ²zû¥i¥H¦b /etc/passwd Àɮ׳]©w root ±b¸¹ªº shell ¬° /sbin/nologin¡A³o±N¥iÁ×§K³z¹L»Ýn shell ¤§«ü¥O¨Ó¦s¨ú root ±b¸¹¡A¨Ò¦p su »P ssh «ü¥O¡C
![]() | «n |
---|---|
¤£»Ý¨Ï¥Î shell ªºµ{¦¡¡]¦p¹q¤l¶l¥ó¥Î¤áºÝ©Î sudo «ü¥O¡^¡A¤´µM¥i¥H¦s¨ú root ±b¸¹¡C |
¦pn¶i¤@¨B¦a¨î¦s¨ú root ±b¸¹¡A¨t²ÎºÞ²zû¥i¥H½s¿è /etc/securetty ÀɮרӰ±¥Î ¦b¥D±±¥xªº root µn¤J¡C ³oÓÀɮצC¥X root ¨Ï¥ÎªÌ¤¹³\µn¤Jªº©Ò¦³¸Ë¸m¡A°²¦p¦¹ÀÉ®×®Ú¥»¤£¦s¦bªº¸Ü¡Aroot ¨Ï¥ÎªÌ¥i¥H³z¹L¥ô¦ó¨t²Î¤Wªº³q°T¸Ë¸m¶i¦æµn¤J¡A¤£ºÞ¬O³z¹L¥D±±¥x©Î¬O¤@Óì¥Íªººô¸ô¤¶±¡C ³o¼Ë°µ¬O«Ü¦M ÀIªº¡A¦]¬°¨Ï¥ÎªÌ¥i¥H¥H root ¨¥÷ Telnet ¨ì¥Lªº¾÷¾¹¡A¦A±N¥Lªº±K½X¥H©ú¤å¸g¥Ñºô¸ô¶Ç°e¡C ¹w³]±¡ªp¤U¡A Red Hat Enterprise Linux /etc/securetty ÀÉ®×¥u¤¹³\ root ¨Ï¥ÎªÌ¦b¹êÅé³s±µ¨ì¾÷¾¹ªº¥D±±¥xµn¤J¡A¦pn ¨¾¤î root µn¤J¡A½Ð¿é¤J¤U¦C«ü¥O¨Ó²¾°£¦¹Àɮתº¤º®e¡G
echo > /etc/securetty |
![]() | ĵ§i |
---|---|
¤@Ӫťժº /etc/securetty ÀÉ®×µLªkÁ×§K root ¨Ï¥ÎªÌ¨Ï¥Î OpenSSH ®M¸Ë¤u¨ã»·ºÝµn¤J¡A¦]¬°¦b»{ÃÒ¦¨¥\«á¡A¥D±±¥x¤~·|¶}±Ò¡C |
¦pn¨¾¤î³z¹L SSH ¨ó©wªº root µn¤J¡A½Ð½s¿è SSH ¨t²Îµ{¦¡ªº³]©wÀÉ®× (/etc/ssh/sshd_config)¡A §ó§ï¦p¤Uªº³o¤@¦æ¡G
# PermitRootLogin yes |
¬°¦p¤U©Ò¥Ü¡G
PermitRootLogin no |
³z¹L /lib/security/pam_listfile.so ¼Ò²Õ¡APAM ¤¹³\¬Û·í¤jªº¼u©Ê¥Î¨Ó©Úµ´¯S©wªº±b¸¹¡C ³o¨Ï±o¨t²ÎºÞ²zû¥i¥H«ü©w³oÓ¼Ò²Õµ¹¤£¤¹³\µn¤Jªº¨Ï¥ÎªÌ²M³æ¡C ¥H¤U¬°¦b /etc/pam.d/vsftpd PAM ³]©wÀɮפ¤¦p¦ó¨Ï¥Î³oÓ¼Ò²Õ¦b vsftpd FTP ¦øªA¾¹ªº¨Ò¤l¡]°²¦p³oÓ«ü¥O¥u ¦³¤@¦æªº¸Ü¡A¤U¦C¨Ò¤l²Ä¤@¦æ³Ì«áªº \ ²Å¸¹¬O¤£ »Ýnªº¡^¡G
auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed |
³o±N§iª¾ PAM ¼Ò²Õ¨Ó¬d¸ß /etc/vsftpd.ftpusers ÀɮסA¨Ã¥B©Úµ´¥ô¦ó¦C¥Xªº¨Ï¥ÎªÌ ¦s¨ú³oÓªA°È¡A¨t²ÎºÞ²zû¥i¥H;Åܧó³oÓÀɮתº¦WºÙ¡A¦Ó¥B¤]¥i¥H¬°¨C¤@ÓªA°È«O¦s¤@Ó¤£¦Pªº²M³æ¡A©ÎªÌ¬O ¨Ï¥Î¤@Ó¤¤¥¡ªº²M³æ¨Ó©Úµ´¦s¨ú¦hÓªA°È¡C
°²¦p¨t²ÎºÞ²zû·Qn©Úµ´¹ï¦hÓªA°Èªº¦s¨ú¡A¥i¥H¼W¥[Ãþ¦üªº¤@¦æ¨ì PAM ³]©wªA°È¤¤¡A¦p¥Î©ó¹q¤l¶l¥ó¥Î¤áºÝ ªº /etc/pam.d/pop »P /etc/pam.d/imap ÀɮסA©Î¥Î©ó SSH ¥Î¤áºÝªº /etc/pam.d/ssh ÀɮסC
¦p»ÝÃö©ó PAM ªº§ó¦h¸ê°T¡A½Ð°Ñ¦Ò Red Hat Enterprise Linux °Ñ¦Ò¤â¥U ¤@®Ñ¤¤ªº Pluggable Authentication Modules (PAM) ³¹¸`¡C
°£¤F§¹¥þ¦a¨î root ¨Ï¥ÎªÌªº¦s¨ú¥~¡A¨t²ÎºÞ²zû¤]¥i¥H¥u¤¹³\³z¹L setuid µ{¦¡ªº¦s¨ú¡A¦p su ©Î sudo¡C
¦b¿é¤J su «ü¥O«á¡A¨Ï¥ÎªÌ±N·|³Q´£¥Ü¿é¤J root ªº±K½X¡AµM«á¦b»{ÃÒ¦¨¥\«á¡A±N¥i¥H¨ú±o ¤@Ó root ªº shell ´£¥Ü²Å¸¹¡C
¤@¥¹³z¹L su «ü¥Oµn¤J«á¡A¨Ï¥ÎªÌ«K¦¨¬° root ¨Ï¥ÎªÌ¡A¨Ã¥B¾Ö¦³ §¹¥þªº¨t²ÎºÞ²z¦s¨úÅv¡C °£¦¹¤§¥~¡A¤@¥¹¨Ï¥ÎªÌ¨ú±o root µn¤J«á¡A¥LÌÁÙ¥i¥H¨Ï¥Î su «ü¥OÂà´«¦¨¨t²Î¤W¥ô¦óªº¨Ï¥ÎªÌ¡A¦Ó¥B¤£»Ýn¿é¤J¥ô¦óªº±K½X¡C
¦]¬°³oÓµ{¦¡ªº¥\¯à¦p¦¹±j¤j¡A¤½¥q¤¤ªº¨t²ÎºÞ²zû¤]³\·Qn¨î½Ö¥i¥H¦s¨ú¨Ï¥Î³oÓ«ü¥O¡C
³Ì²³æªº¤èªk«K¬O±N¨Ï¥ÎªÌ¥[¤J¨ìºÙ¬° wheel ªº¯S®íºÞ²zªÌ¸s²Õ¡A¦pn¦p¦¹°µ¡A½Ð¥H root ¨¥÷¿é¤J¤U¦C«ü¥O¡G
usermod -G wheel <username> |
¦b¤W¤@Ó«ü¥O¤¤¡A½Ð¥Hèè¼W¥[¨ì wheel ¸s²Õªº¨Ï¥ÎªÌ¦WºÙ¨ú¥N <username>¡C
¦pn¨Ï¥Î ¨Ï¥ÎªÌºÞ²zû¡A½Ð¿ï¾Ü±ªO¤Wªº ¡y¥D¿ï³æ«ö¶s¡z => ¡y¨t²Î³]©w¡z => ¡y¨Ï¥ÎªÌ»P¸s²Õ¡z¡A©ÎªÌ¬O¦b shell ´£¥Ü²Å¸¹¤U¿é¤J redhat-config-users «ü¥O¡C ¿ï¨ú ¡y¨Ï¥ÎªÌ¡z ¼Ðñ¶¡A¦A±q¨Ï¥ÎªÌ²M³æ¤¤¿ï¨ú¨Ï¥ÎªÌ¡AµM«á±q«ö¶s¿ï³æ¤¤ÂI¿ï ¤º®e¡]©ÎªÌ¬O±q¤U©Ô¦¡ ¿ï³æ¤¤¿ï¾Ü ¡yÀɮסz => ¡y¤º®e¡z¡^¡C
µM«á¿ï¾Ü ¡y¸s²Õ¡z ¼Ðñ¶¡A¦AÂI¿ï whell ¸s²Õ¡A¦p ¹Ï§Î 4-2.©Ò¥Ü¡C
¦A¨Ó¡A½Ð¦b¤å¦r½s¿è¾¹¤¤¶}±Ò su ªº PAM ³]©wÀÉ®× (/etc/pam.d/su)¡A µM«á±q¤U¦C³o¤@¦æ¤¤²¾°£
auth required /lib/security/pam_wheel.so use_uid |
¦p¦¹°µªº¸Ü¡A±N¥u·|¤¹³\ºÞ²zªÌ¸s²Õ wheel ªº¦¨û¨Ï¥Î³oÓµ{¦¡¡C
![]() | ½Ðª`·N |
---|---|
¹w³]±¡ªp¤U¡Aroot ¨Ï¥ÎªÌ¤w¸g¬O wheel ¸s²Õªº¦¨û¤§¤@¡C |
sudo «ü¥O´£¨Ñµ¹¤©¨Ï¥ÎªÌºÞ²zÅv¦s¨úªº¥t¤@ºØ¤èªk¡A·í¤@Ó¥i«H¿àªº¨Ï¥ÎªÌ¦b sudo «ü¥O¤§«á¥[¤W¤@ÓºÞ²zªº«ü¥O¡A¸Ó¨Ï¥ÎªÌ±N·|³Q´£¥Ü¿é¤J¥L¦Û¤vªº±K½X¡A»{ÃÒ¦¨¥\«á¡A¦Ó¥B¤]¤¹³\¨Ï¥Î¸Ó«ü¥O¡A ³oÓºÞ²zªº«ü¥O±N·|³Q°õ¦æ¡A¦p¦P¬O¥Ñ root ¨Ï¥ÎªÌ©Ò°õ¦æªº¤@¼Ë¡C
sudo «ü¥Oªº°ò¥»®æ¦¡¦p¤U¡G
sudo <command> |
¦b¥H¤Wªº¨Ò¤l¤¤¡A<command> ¥i¥H¥Ñ³q±`¥u«O¯dµ¹ root ¨Ï¥ÎªÌªº¤@Ó«ü¥O ¨ú¥N¡A¦p mount¡C
![]() | «n |
---|---|
sudo «ü¥Oªº¨Ï¥ÎªÌ¦bÂ÷¶}¥L̪º¾÷¾¹«e¡A¤@©wn°O±o¥ýµn¥X¡A¦]¬°¨Ï¥Î sudo ¨Ï¥ÎªÌ¦b ¤¤ÀÄÁ¤º¥i¥H¦A«×¨Ï¥Î¸Ó«ü¥O¡A¦Ó¤£»Ýn¿é¤J¥ô¦óªº±K½X¡C ±z¥i¥H³z¹L /etc/sudoers ³]©wÀɮרÓ×§ï³oÓ³]©w¡C |
sudo «ü¥O¤¹³\¬Û·í°ªªºÆF¬¡«×¡A¨Ò¦p¡A¥u¦³©ó /etc/sudoers ³]©w Àɮפ¤¦C¥Xªº¨Ï¥ÎªÌ¤~¥i¥H¨Ï¥Î sudo «ü¥O¡A¦Ó¥B«ü¥O¬O¦b¸Ó¨Ï¥ÎªÌªº shell ¤U°õ¦æ¡A¦Ó¤£¬O root ªº shell¡C ³oªí¥Ü¥i¥H§¹¥þ¦a°±¥Î root shell¡A¦p ²Ä 4.4.2.1 ¸` ©Ò¥Ü¡C
sudo «ü¥O¤]´£¨Ñ¤@Ó¼sªxªº½]®Ö¦s©³¡A¨C¤@¦¸¦¨¥\ªºµn¤J³£·|¬ö¿ý¨ì /var/log/messages ÀɮסA¦Ó¥B©Ò°õ¦æªºÀÉ®×»P¸Ó¨Ï¥ÎªÌ¦WºÙ¤]³£·|³Q¬ö¿ý¨ì /var/log/secure Àɮפ¤¡C
sudo «ü¥Oªº¥t¤@ÓÀuÂI¬O¨t²ÎºÞ²zû¥i¥H¨Ì¾Ú¥L̪º»Ý¨D¨Ó¤¹³\¤£¦Pªº¨Ï¥ÎªÌ¨Ï¥Î¯S©w ªº«ü¥O¡C
·Qn½s¿è sudo ³]©wÀÉ®× /etc/sudoers ªº¨t²ÎºÞ²zûÀ³¸Ón¨Ï¥Î visudo «ü¥O¡C
¦pnµ¹¤©¬Y¤H§¹¾ãªººÞ²zªÌÅv¡A½Ð¿é¤J visudo¡A¦A¼W¥[Ãþ¦ü¥H¤Uªº³o¤@¦æ¦b # User privilege specification ³¡¥÷¡G
juan ALL=(ALL) ALL |
³oÓ½d¨Òªí¥Ü¨Ï¥ÎªÌ juan ¥i¥H±q¥ô¦óªº¥D¾÷¨Ï¥Î sudo ¨Ó°õ¦æ¥ô¦óªº«ü¥O¡C
¤U¦Cªº½d¨ÒÅã¥Ü¥X³]©w sudo ®É©Ò¯à°t¸mªº³]©w¡G
%users localhost=/sbin/shutdown -h now |
³oÓ½d¨Òªí¥Ü¥ô¦ó¨Ï¥ÎªÌ¥i¥H°õ¦æ /sbin/shutdown -h now «ü¥O¡A¥un¸Ó«ü¥O¬O±q¥D±±¥x¤¤°õ¦æªº¸Ü¡C
sudoers ªº man page §t¦³³oÓÀÉ®×¥i¥H¨Ï¥Îªº¤@Ó¸Ô²Ó¿ï¶µ²M³æ¡C