관리 메뉴

IT창고

리눅스, 윈도우 서버 접근제한(ACL) 설정 본문

보안/Security

리눅스, 윈도우 서버 접근제한(ACL) 설정

방구석여포 2018. 8. 16. 01:43

리눅스와 윈도우의 접근제한에 대해 알아보겠습니다.

접근제한은 해당 시스템에 계정을 만들어두고 시스템에서 자신의 계정이 권한이 할당된 폴더에 접근이나 파일생성을 정할수있습니다. 윈도우와 리눅스의 폴더 접근 및 권한을 부여하는 방법에 대해 알아보도록 합니다.


위의 사진 기준으로 폴더를 만들어 계정에 권한을 부여할 것이며 조건은 아래와 같습니다.

1. Administrator, ceo 계정은 모든 폴더에 접근이 가능하며 읽고 쓰기 권한이있습니다.

2. a, c는 해당 폴더의 관리자 계정입니다.

3. 관리자 계정은 모든 폴더의 읽기가 가능합니다. 단 해당 폴더에 존재하는 일반계정은 본인 소속팀 폴더의 읽기, 쓰기 권한만 가집니다.

4. a계정은 sales, main폴더에 쓰기권한도 같이 부여합니다.

5. codegsk 폴더를 임의로 회사폴더라고 부르겠습니다.

6. security, sales, main 폴더들 전체를 부서폴더라고 부르겠습니다.

위와 같은 조건으로 윈도우와 리눅스 시스템의 권한을 부여할 예정입니다.


윈도우 서버의 접근제한부터 알아보겠습니다. 실습할 OS는 윈도우 서버 2008 R2입니다.

먼저 윈도우 서버에 컴퓨터 관리에 로컬 사용자 및 그룹에 보면 계정을 생성할수있는 곳이 있습니다. 이곳에서 테스트에 사용할 해당 계정들을 만들어둡니다.


그룹에 가서 새로운 그룹을 만들어줍니다. 해당 그룹에는 테스트용 계정과 Administrator계정도 포함합니다.


시스템에서 계정과 그룹을 만들었다면 이제 사용할 회사폴더를 바탕화면에 만들어두었습니다. 폴더에 오른쪽 버튼을 눌러 해당 속성에 들어가서 공유 부분이 있습니다. 고급공유를 클릭하고 선택한 폴더 공유를 체크합니다. 주석 아래에있는 권한을 누르면 해당 폴더의 사용권한을 설정할수있습니다. 저는 방금 만든 그룹을 추가하여 모든 권한을 부여합니다. 여기서 모든 권한을 부여하는 이유는 조금 뒤에 알수있습니다.


회사폴더 안에 부서폴더를 만들고 폴더에서 속성에 보안에 편집을 클릭하면 사용자설정을 할수있는데 필요없는 administrators그룹을 제거하려하면 부모로부터 사용권한을 상속받아 제거할수없다고 나옵니다.


속성에 보안에서 고급을 눌러주면 고급 보안설정이 나옵니다. 사용권한변경을 클릭하고 부모로 부터 상속가능권한포함을 체크해제하고 administrators그룹만 제거해줍니다. 제대로 부모상속을 제거하면 SYSTEM의 사용권한에 연하게 체크된 부분이 진하게 바뀝니다.


부모상속을 제거했다면 이제는 제거가 되며 해당 폴더에 계정들을 편집에서 등록하고 권한을 부여합니다. 그룹 또는 사용자이름 가장 위에 SYSTEM이라는 사용자가 있습니다. SYSTEM은 접속할권한이 없는 계정이며 윈도우 커널의 권한을 가지기 때문에 administrator보다 높은 권한을 가지고 있습니다.


이제 맨 위의 사진과 같이 권한을 부여해주면 됩니다. 모두 정상적으로 부여했기에 윈도우7 PC에서 테스트를 해보겠습니다.

테스트는 윈도우7에서 해당 윈도우 서버의 IP를 입력하여 접속할수있습니다. 한번 세션이 연결되면 폴더를 닫는다고 바로 연결이 끊어지지 않습니다. cmd에서 net use /del *로 연결을 강제로 끊을수있으며 끊고나서 바로 접속하면 안되고 15초 정도 기다린 후에 접속해야 정상적인 인증창이 나오게 됩니다.



권한이 적은 b계정으로 접속해보도록 하겠습니다.


b계정이 sales폴더에 접근하려하면 권한이 없기 때문에 접근이 안됩니다. b계정은 security폴더만 접근이 가능하며 해당 폴더에 읽고 쓰기가 가능합니다. ceo나 administrator계정으로 접속하게 된다면 모든 폴더에 쓰기와 읽기 권한이 있기 때문에 모든 폴더에서 작업이 가능합니다. 윈도우 서버에는 권한에 수정이 추가로 존재합니다. 수정 권한이 없이 쓰기와 읽기권한만 있다면 파일생성과 내용변경은 가능하지만 파일이름을 못바꾸고 삭제가 불가능합니다. 수정 권한이있어야만 파일이나 폴더의 이름변경과 삭제가 가능합니다. 리눅스는 쓰기권한에 윈도우의 쓰기와 수정권한을 같이 가지고 있습니다.


아까 공유권한에서 모든권한을 허용한 이유를 알아보겠습니다.

접근 가능 네트워크로 접근하게 되면 공유권한을 먼저 확인하고 그 다음이 보안권한을 확인합니다. 만약 두 권한이 상충된다면 작은권한을 가진 쪽을 우선하기 때문에 공유권한을 모두 풀어주고 세세한 권한 조정은 보안권한에서 진행하게 됩니다. 보안권한은 고급에 유효 사용권한이 있으며 여기서 더욱 세세한 보안 권한 설정이 가능합니다. 유효권한을 설정하기 위해서는 보안권한을 공유권한때 처럼 모두 풀어주도고 유효 사용권한을 설정하면 됩니다.




리눅스의 접근제한을 알아보도록 하겠습니다. 테스트OS는 CentOS 6.10입니다.

리눅스이 접근제한을 테스트하기 위해서 samba 서버를 구축하도록 하겠습니다.

리눅스 삼바서버는 2017/09/23 - [서버운영/Linux] - 리눅스 Samba(삼바) 서버 설정를 참고로 합니다.


CentOS에서 삼바서버는 yum -y install samba 명령어로 패키지를 다운로드를 받습니다. 테스트 전에 SELinux는 꺼두도록 합니다.

/etc/samba/smb.conf 경로에 있는 파일이 samba서버 주설정 파일입니다. samba서버 설정을 하도록 하겠습니다.


74,75번 줄은 서버 접근시 메세지이며 77, 79번줄에 주석을 풀어줍니다. 79번 줄에 eth0 뒤에 접속해야하는 IP대역을 위와 같이 넣어줍니다. 그리고 80번도 주석을 풀어주고 127. 뒤에 79번 줄처럼 IP대역을 넣어주도록 합니다.


주설정 파일 가장 아래 내용을 자신에 맞게 설정합니다. path에 공유할 디렉토리 경로를 지정하고 계정에 권한을 부여하기 떄문에 public은 no로 설정하고 valid user에 %company는 그룹이름을 넣어주었습니다. writable은 삼바서버에서 공유하는 디렉토리의 쓱권한입니다. 여기까지 설정했다면 삼바서버의 설정은 끝났습니다. 


테스트를 진행하기 전에 iptables에 아래의 설정을 추가합니다.

-A INPUT -p tcp --dport 445 -j ACCEPT

-A INPUT -p tcp --dport 139 -j ACCEPT

-A INPUT -p tcp --dport 135 -j ACCEPT

아니면 service iptables stop으로 테스트를 진행하시면 됩니다.


리눅스 시스템에서 사용할 테스트용 계정을 만들도록 하겠습니다.

groupadd로 그룹을 만들어주고 a,b계정은 이미 만들어져있기에 usermod -G company 'id'명령어로 계정에 그룹을 지정해줄수있습니다. smbpasswd -a 옵션으로 계정에 삼바서버 패스워드를 지정해줍니다. 시스템의 패스워드와는 다르기 때문에 꼭 설정해야합니다. 나머지 만들지 않는 계정은 -G옵션으로 계정을 생성함과 동시에 그룹에 소속시켜줍니다.


리눅스의 디렉토리 권한을 설정하도록 하겠습니다. 

chmod -R 750 /codegsk/ 명령어로 other권한을 없애주고 chown .company /codegsk/ 명령어로 그룹소속을 시켜줍니다.

리눅스의 디렉토리 접근제한 설정은 2018/08/13 - [보안/Security] - 리눅스 디렉토리 접근제한, 윈도우 서버 그룹정책 보안설정 에서 설명한 적이 있습니다. setfacl 명령어로 설정하고 getfacl명령어로 설정을 확인할수있습니다.

계정 설정까지 끝났다면 service smb start로 데몬을 시작하고 윈도우 7 PC에서 테스트를 진행하겠습니다.


이번에는 c계정으로 접속해보도록 하겠습니다.


c계정은 sales폴더만 접속과 읽고 쓰기가 가능하며 다른폴더는 접속이 불가능합니다. 리눅스는 윈도우서버와는 다르게 수정권한이 없어 쓰기 권한에 윈도우서버의 쓰기,수정 권한을 같이 가지고 있습니다.

'보안 > Security' 카테고리의 다른 글

리눅스 디렉토리 접근제한, 윈도우 서버 그룹정책 보안설정  (0) 2018.08.13
리눅스 SELinux 2  (0) 2018.07.03
리눅스 SELinux 1  (0) 2018.07.02
리눅스 서버 보안4  (0) 2018.06.29
리눅스 PAM2  (0) 2018.06.28
Comments