리눅스 강좌 모음란에서 퍼옴
리눅스에서 su 명령어 사용을 특정사용자에게만...
두가지만 손봐주시면 됩니다 .
첫 번째, /etc/group 파일에서 wheel 그룹에 su 명령어를 사용할 사용자를 추가합니다.
아래의 예는 필자가 운영하는 시스템의 경우의 예임.
[root@kebia_1 ]# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: disk:x:6:root lp:x:7:daemon,lp mem:x:8: kmem:x:9: wheel:x:10:root,sspark
두 번째, /etc/pam.d/su 파일에 아래의 빨간색으로 표시된 두줄을 설정해 주시면 됩니다.
[root@kebia_1 ]# cat /etc/pam.d/su #%PAM-1.0 auth sufficient /lib/security/pam_rootok.so auth required /lib/security/pam_wheel.so debug group=wheel # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient /lib/security/pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required /lib/security/pam_wheel.so use_uid auth required /lib/security/pam_stack.so service=system-auth account required /lib/security/pam_stack.so service=system-auth password required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth session optional /lib/security/pam_xauth.so
세 번째로, su명령어의 사용을 허용한 사용자와 허용되지 않은 사용자가 각각 su명령어를 사용했을 때 /var/log/messages에 다음과 같은 로그기록의 차이점이 있다.
먼저, picasso라는 su명령어사용이 허용되어 있지 않은 (정확히는 /etc/group의 wheel그룹사용자가 아닌 경우)사용자가 su명령어를 사용했을 경우의 로그는 다음과 같은 형식으로 남게된다.
Mar 14 16:34:13 kebia_1 sshd[1799]: Accepted password for picasso from 211.220.193.149 port 1035 ssh2 Mar 14 16:34:13 kebia_1 PAM_unix[1799]: (system-auth) session opened for user picasso by (uid=0) Mar 14 16:34:25 kebia_1 PAM-Wheel[1831]: Access denied for 'picasso' to 'root'
다음은 su 명령어 사용이 허용된 sspark이라는 사용자가 su명령어를 사용했을 경우의 messages로그 기록예입니다.
Mar 14 16:34:49 kebia_1 sshd[1835]: Accepted password for sspark from 211.220.193.149 port 1036 ssh2 Mar 14 16:34:49 kebia_1 PAM_unix[1835]: (system-auth) session opened for user sspark by (uid=0) Mar 14 16:34:53 kebia_1 PAM-Wheel[1860]: Access granted to 'sspark' for 'root' Mar 14 16:34:56 kebia_1 PAM_unix[1860]: (system-auth) session opened for user root by sspark(uid=500)
telnet으로 root로그인은 가능하게 하려면
◆ /etc/securetty u u이파일은 root가 로그인가능한 터미널(tty)장치들을 나열해 둔 것이다. tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8
◆ 이 장치명은 가상터미널을 의미하는 것으로 root로 이런 가상터미널을 통한 접속이 허용된다는 것을 뜻한다. ◆ 그리고, uttyp0 ttyp1 ttyp2 ttyp3
◆ 등은 pseudo 터미널을 통해서 root의 접속이 가능함을 뜻하므로 원격지에서 root로 접속을 막으려면 다음설정과 같이 이 pseudo터미널을 모두 주석처리하도록 한다. #ttyp0 #ttyp1 #ttyp2 #ttyp3
◆ 그리고, 이 /etc/securetty파일에 다음과 같은 것을 볼 수도 있을 것이다. ttyS0 ttyS1 ttyS2 ttyS3
◆ 등은 시리얼라인 또는 모뎀을 통한 root의 접속을 허용한다는 것을 뜻한다. ◆ root의 원격지 접속을 막으려면 이 부분도 주석처리하는 것이 현명할 것이다.
◆ 누군가가 어떤형식으로든 접속을 하게되면 /bin/login이라는 프로세스가 실행이되어 접속절차를 밟게되는데, root의 로그인일 경우에는 이 /bin/login이라는 프로세스가 /etc/securetty파일을 참조하여 /etc/securetty파일에 나열되어 있는 터미널로만 접속을 허용하게된다.
◆ 또한 shadow 패스워드시스템(명령어 pwconv)을 설정하여 사용하고 있다면 /etc/securetty파일의 설정이 무의미해진다. ◆ 따라서 shadow패스워드시스템을 설정하여 사용하고 있는 경우엔 (사실 거의 대부분 shadow패스워드를 설정하고 있음) /etc/login.defs에서 root로의 접속가능한 터미널설정을 하도록 한다.
◆ 또한가지 알아야 할 것은 ◆ 원격지접속등을 안전하게 하기위해 ssh등의 프로그램을 통해서 접속을 할 경우에는 이런설정이 무의미해진다는 것을 알아야한다. ◆ 즉, 위에서 말씀드린대로 root로 접속을 막았지만, ssh를 통해서 접속을 할 때에는 이런 설정자체가 무의미해지므로 root로 접속이 허용되게 된다. 참고로 ssh의 설정파일은 /etc/ssh디렉토리에 들어있다.
TCP WRAPER 를 사용하세요. vi /etc/hosts.allow in.telnetd : localhost
vi /etc/hosts.deny in.telnetd : ALL
이렇게 하면 localhost에서 밖에 telnet 접속이 안되지요.. 추가를 하시려면 ,(comma)를 찍고 뒤에 ip등을 적으면 되지요. 예) vi /etc/hosts.allow in.telnetd : localhost, 210.98.136.152, 210.123.122. 이렇게 적으면 - hosts.deny는 위의 상황과 같이.. localhost, 210.98.136.152, 그리고 210.123.122.0 - 210.123.122.255 까지의 ip를 가진 컴퓨터만 접속을 할수가 있답니다. 자세한 사항은 $ man hosts_access 라고 쳐보세요.. 아님 일반 리눅스 책에도 많이 나와있으니까. 참조하시길.. |