♠ How to config SSH for Linux
8. Chroot Manager 사용법
이제 까지는 간단하게 ssh 를 사용하는 법에 대하여 기술해 보았다.
이번에는 ssh2 의 기능 중에서 Chroot 에 대한 부분을 논해 보려고 한다.
일단 ssh2 에서 지원되는 chroot 기능은 sftp 연결에만 적용이 되며,
chroot 설정을 했을 경우 해당 유저는 ssh 연결은 안되고 sftp 연결만
가능하게 된다.
일단 각설하고 chroot 를 사용하는 방법 부터 논해 보도록 하겠다. 일단
chroot 를 사용하기 위해서는 static 으로 컴파일을 해야 한다. static
으로 컴파일이 되어 있는지 확인을 하기 위해서는 서버에 sftp-server2.static
라는 파일이 존재하는지를 확인한다. 있으면 static 으로 된것이며, 없으면
컴파일을 다시해야 할것이다.
Hanterm - ssh2 |
[bbuwoo@oops ssh2]$ ./configure --enable-static
...
[bbuwoo@oops ssh2]$ make
...
[bbuwoo@oops ssh2]$ make install
...
[bbuwoo@oops ssh2]$
|
의 과정으로 compile 을 하도록 한다. 그 후에 ssh-chrootmgr 명령어를 이용하여
다음과 같이 명령을 실행하도록 한다.
Hanterm - ssh2 |
[bbuwoo@oops ssh2]$ ssh-chrootmgr -q user1,user2,user3
[bbuwoo@oops ssh2]$
|
좀더 자세한 전개 과정을 보려면 -v 옵션을 주면 된다. ssh-chrootmgr 에 대해
자세한 것을 알고 싶다면 manpage 를 참고 하도록 한다. 봐봐야 별 기능 없지만.. ^^;
실제로 ssh-chrootmgr 이 행하는 과정은 다음과 같이 수작업으로 해도 된다.
1. 홈 계정에 bin directory 를 생성한다.
2. /usr/bin 에서 ssh-dummy-shell.static 과 sftp-server2.static 을
$HOME/bin 으로 복사를 한다.
3. 아래와 같이 심볼릭 링크를 생성한다:
ln -s sftp-server2.static sftp-server
ln -s ssh-dummy-shell.static ssh-dummy-shell
위의 명령을 실행한 다음 /etc/ssh2/sshd2_config 에서 chroot 설정을 하도록
한다. user 만 막고 싶다면 ChRootUsers 지시자로 유저들을 지정하며, group 은
ChRootGroups 로 지정할수 있다.
Hanterm - cat /etc/ssh2/sshd2_config |
[bbuwoo@oops etc]$ cat /etc/ssh2/sshd2_config
...
ChRootUsers user1,user2,user3
ChRootGroups group1,group2,group3
...
[bbuwoo@bbuwoo etc]$
|
설정 파일을 수정한 후에 sshd 를 재시작을 하도록 한다. 다음 패스워드 파일에서
유저의 shell 을 /bin/ssh-dummy-shell 로 변경을 하도록 한다.
Hanterm - cat /etc/passwd |
[oops@oops etc]$ ssh -l bbuwoo oops
...
user1:x:500:500::/home/user1:/bin/ssh-dummy-shell
...
[bbuwoo@bbuwoo etc]$
|
여기 까지 했다면 이제 sftp 를 이용하여 ChRootUsers 에 지정한 유저로
로그인을 해 보도록 한다. chroot 되어진 것을 확인할수 있을 것이다.
어떻게 보면 ssh2 의 Chroot 기능은 처음 이 옵션을 보았을때의 기대에
부응하지는 못한것 같다. 실제로 필요한 ssh 연결은 지원되지 않고 단순한
sftp 만 연결을 가능하게 하고 chroot 시키기 때문이다. 이 설정이 얼마나
유용하게 사용될지는 모르겠지만 혹시 필요한 사람이 있나 싶어, 또는 이
기능에 환상을 가지는 사람들을 위해 이렇게 문서로 꾸며 보았다.
9. 마무리
이 외에도 ssh client의 option들은 상당히 많이 있다. 하지만 나도 아직
다른 option들을 자세히 들여다 보지 못한 관계로 여기에 올리지는 못하고
있다. 궁금한 사람들은 ssh --help 명령으로 살펴 보거나 man page를
참조하도록 하기 바란다.
>> 이전 : SSH client 사용
|