ssh, sftp의 원격접속과 서버간의 파일전송 scp를 설명하기 위해 하나의 커다란 실습을 진행할 것이다. 

이 실습이 끝나게 되면 위의 3가지를 모두 이해 할 수 있을것이다.

 

<실습>

먼저 서버 ssh, ftp를 활용하기 위한 서버를 만들고 클라이언트 pc를 만들어 총 두 대의 컴퓨터로 실습을 할 것이다. (물론 vmware로 간편하게 실습한다)

그래서 서버와 클라이언트간에 ssh접속으로의 다운로드 업드로, scp를 이용한 다운로드 업로드, sftp를 사용한 다운로드 업로드를 실습해보자.

 

[Server 세팅]

1. 500MB짜리 하드디스크(/dev/sdb2)를 장착한 후, /sshdir에다가 마운트 시킨다.

부팅시 자동 마운트를 위해 /etc/fstab도 이용하자.

2. 계정을 총 3개를 만들것이다.

/sshserver/scp에 abc계정만 UID권한을 조정하여 다운로드, 업로드와 같이 접근을사용가능하게 할 것이다.

/sshserver/sftp ftpuser계정만 GID권한을 조정하여 다운로드, 업로드와 같이 접근을 사용가능하게 할 것이다.

/sshserver/ssh 다른 계정은 건드리지 말고, user계정으로 접속해서 해결해보자.

3. ssh와 su와 같은 보안설정을 해보자. user계정만 su를 사용할 수 있게 하자. (마음대로 사용할 수 없게)

 

 

[Client 세팅]

1. /sshclient/scp/abc_sub의 빈 파일을 만들것

2. /sshclient/sftp/ftpuser_sub의 빈 파일을 만들것

3. /sshclient/ssh/sshuser_sub의 빈 파일을 만들것

 

이렇게 세팅한 후에 클라이언트 pc에서 3가지 방법으로 다운로드 업로드 해보도록 하자.

 

1. 하드디스크 추가와 파일시스템 설정 그리고 마운트를 시켜주자.

하드디스크 추가 후, 파티션 나누기



파일시스템 설정해주기


마운트 포인트를 만들고 마운트 해주기


부팅시 자동으로 마운트하기 위해 fstab파일 설정


2. /sshserver에 디렉토리 만들고 각 파일을 만들어보자.

scp, sftp, ssh각 3개의 디렉토리 생성 후,

scp/abc, sftp/ftpuser, ssh/user라는 빈 파일을 만들어주자.(클라이언트 pc에서 다운로드 해줄 파일들이다)


3. vi/etc/ssh/sshd_config에서 PermitRootLogin을 no로 변경하여 서버에 root권한으로 접근 못하게 막아놓자.


4. 이제부터 계정에게 권한을 조절하여 위의 조건을 맞춰보자.

먼저, user계정만 su를 사용하게 해보자.


여기서 chown .wheel /bin/su는 /bin/su파일의 사용자와 그룹을 wheel로 바꾸겠다는 것이다.

usermod -G wheel user는 user라는 사용자를 wheel의 그룹으로 넣겠다는 것이다.

chmod 4750 /bin/su는 /bin/su파일의 권한을 rwsr-x---로 변경하는 것인데, 이 의미는 파일 소유자 wheel은 rwx가 모두 가능하며, wheel그룹에 속한 사용자들은 읽고 실행이 가능하게 한 것이다.

즉, wheel 그룹안에는 user라는 사용자가 있기 때문에 읽고 쓰기가 가능해진다는 의미이다.

한마디로 user는 su명령어를 사용할 수 있지만, ftpuser와 abc사용자는 su를 사용할 수 없다.

 

5. abc계정만 scp디렉토리의 권한을 UID로 변경해 사용할 수 있게 하고, ftpuser만 sftp디렉토리의 권한을 GID를 변경해 접근 제어를 해보자.

abc계정 제어


ftpuser계정 제어


6. 이제부터 Client PC를 실습해보자.

먼저 server와 똑같이 3개의 디렉토리 3명의 사용자, 3개의 파일을 만들어주자.


7. 모든 설정이 끝났다.

이제부터 클라이언트 PC에서 업로드와 다운로드를 해보자.

각각 오류가 뜨는데 이유도 같이 알아보자.

① abc계정을 이용한 서버로 부터의 다운로드, 업로드


클라이언트 PC에서 scp디렉토리로 이동 후, scp명령어로 서버로부터 다운로드를 받으려고 했다.

지금 접속되어 있는 계정은 root이다. 192.168.1.10에 /sshserver/scp에 있는 abc파일을 현재 디렉토리로 옮기려고 했지만 디나이 걸렸다. 왜그럴까? 아까 우리가 설정했던... PermitRootLogin no 때문이다. 루트로 접속을 거부했기 때문이다.


자, 이번에는 user라는 계정으로 바꿔서 접근을 시도하였지만 역시 접근하지 못했다. 이유가 무엇일까? 아까 위에서 scp의 파일 권한을 abc계정만 접근할 수 있게 UID를 만져서 바꿔놓았다.

마지막으로 abc계정으로 접근을 시도하여 다운로드 받아보자.


잘 받아온 것을 볼 수 있다.

 

자 이번에는 업로드를 시켜보자.

클라이언트 pc에 있는 /sshclient/scp/abc-sub파일을 서버로 업로드해보자.


권한으로인해 업로드 하지 못했다. 일부러 ftpuser로 보내봤는데 왜 보낼 수 없을까?


서버측으로 옮기려는 scp폴더의 권한을 보면 abc로 되어있고, abc를 제외한 모든 사용자들은 접근하지 못하게 했다. 그래서 보낼 수 없었다.

그 말은 즉슨, abc사용자는 업로드 시킬 수 있다는 것이다.


② ftpuser사용자를 이용해 sftp디렉토리의 파일을 다운로드 업로드 시켜보자.

ftpuser로 서버측에 있는 /sshserver/sftp로 잘 접속이 된다. 물론 다른 계정로 접속이 될 것이다. 하지만 그 이후에, 명령어의 제약이나 접근 제한이 있을것이다. 왜냐? /sshserver/sftp의 소유권은 root이고, 그룹은 ftpuser니까..!

ftpuser로 접속해 get으로 다운로드 하였다.


이번에는 클라이언트 PC에 있는 ftpuser-sub파일을 /sshserver/sftp로 put을 이용해 업로드 시켜주었다.


③ user사용자로 ssh접속을 해서 다운로드, 업로드를 해보자.


접속은 잘 되었지만, server에 있는 ssh파일을 보내려고 했지만 보낼 수 없었다.

왜 그런걸까? 지금 보내려고 하는 곳의 권한을 잘 보면 다음과 같다.


ssh의 소유자와 그룹 모두 root이다.  그렇기 때문에 user는 접근 거부 된것이다.

 

다음과 같이 server측에 있는 root만 접근 거부되었을 뿐, client측의 root계정은 권한이 풀려있기 때문에 root권한으로 다운로드 할 수 있다.


업로드는 클라이언트 PC에서 ssh를 이용하여 server에 접속한 상태이다. 그 상태에서 su -를 이용해 server의 root권한을 얻은 후, 클라이언트 pc에게 보내는 것이다. 업로드 할때는 접속한 sevas계정으로는 할 수 있는 것이 아무것도 없기 때문이다


'OS > Linux' 카테고리의 다른 글

리눅스 - autofs  (0) 2015.12.26
리눅스 - NFS (Network File System)  (0) 2015.12.26
리눅스 - /etc/ssh/sshd_config 파일  (0) 2015.12.26
리눅스 - IP 설정하기  (0) 2015.12.25
리눅스 - configure, make, make install 개념  (0) 2015.12.25
posted by 경원구