정보보안공부

Linux_리눅스 SAMBA 본문

Linux

Linux_리눅스 SAMBA

Steady_sp 2018. 7. 26. 23:30

리눅스 SAMBA

- 오라클 가상 머신 사용

- CentOS7

- Windows 10

 

<SAMBA>

 

#1 SAMBA

- SMB( Server Message Block )프로토콜 사용

-> SMB + LanManager + NetBIOS = CIFS( Common Internet File System )
- 리눅스 서버에서 원격지의 리눅스 및 윈도우즈를 비롯한 SMB/CIFS 프로토콜을 사용하는 다양한 운영체제의 클라이언트에게 파일 및 프린터 공유 서비스를 제공하는 오픈소스 프로그램

 

[global] : 전체 설정

- security = user : 암호를 통해 해당 사용자만 가능하도록

- security = share : 암호 필요없이 익명사용자 가능하도록 ( 삼바 버전 3 설정 )

- security = user , map to guest = Bad Password : 암호 필요없이 익명사용자 가능하도록 ( 삼바 버전 4 설정 )

-> 익명사용자는 접속시 homes 디렉토리에 접근 할 수없다. 서버에 있는 사용자가 아닌 익명 사용자이기 때문에

- log file = /var/log/samba/log.%m : 로그파일 경로설정

- hosts allow = IP : 설정한 IP 또는 대역에 속하면 접근을 허용한다.

- hosts deny = IP : 설정한 IP 또는 대역에 속하면 접근을 거부한다.

 

[public] : 공유 디렉토리 설정 -> 공유하려는 디렉토리에 대한 설정

- path = /samba : 공유하려는 디렉토리 경로 절대경로 작성

- read only = yes : 읽기전용

- writable = yes : 쓰기전용

- comment = ServerA : 설명

 

[homes] : 홈 디렉토리 설정 -> 리눅스에서 /home/사용자 디렉토리를 설정

- read only = yes : 읽기전용

- writable = yes : 쓰기전용

- browseable = no : homes 디렉토리가 보이지 않도록 설정

- comment = HOME_DIR : 설명

 

**option
 read only : 공유 디렉토리를 읽기만 가능하게 할 것인지를 결정
 writable, write ok : 공유 디렉토리를 쓰기 가능하게 할 것인지를 결정
 valid users : 공유 디렉토리에 로그인할 수 있는 사용자를 결정
 public, guest ok : 다른 사용자들이 이용하게 할 지를 결정
 browseable : 공유 디렉토리의 리스트를 보여줄 지를 결정
 printable : 공유 디렉토리에 스풀 파일을 지정할 것인지를 결정
 path : 공유할 디렉토리의 절대경로를 지정
 comment : 간단한 설명을 적음
 create mask, create mode : 파일을 생성할 때의 모드를 결정. umask값형태로 지정.
 write list : 쓰기가 가능한 특정 사용자를 지정

#2 Server ( Windows ) <-> Client ( Client )

- 서버의 IP : 1.0.0.1

- 클라이언트의 IP : 1.0.0.110

 

==> 윈도우가 리눅스한테 공유폴더를 제공한다.

 

*** Server ( Windows )

공유 폴더 설정
공유 -> 고급 공유 -> 선택한 폴더 공유 (체크)
공유 -> 공유 ( 누구한테 어떤 권한을 공유할건지 설정 ) -> Everyone 추가 -> 읽기
공유 -> 네트워크 및 공유 센터 -> 암호 보호 공유 끄기

 

*** Server ( Windows ) - 공유 폴더 만들기

 

 

*** Server ( Windows ) - 공유 폴더 설정변경 1

 

 

-> 선택한 폴더 공유 체크

 

*** Server ( Windows ) - 공유 폴더 설정변경 2

 

 

-> 읽기만 설정

 

*** Server ( Windows ) - 공유 폴더 설정변경 3

 

 

 

-> 암호 보호 공유 끄기

 

*** Server ( Windows ) - Windows 10 이상인 경우만 설정

 

 

-> Window 10 이상인경우 제어판 -> 프로그램 및 기능에서 삼바와 관련된 설정을 체크해주어야 한다.

 

*** Client ( Linux ) - SAMBA-Client, cifs 설치

 

 

 

*** Client ( Linux ) - Server ( Windows )와 Mount할 디렉토리 확인

smbclient -L <server_ip>

 

 

-> 서버에 마운트 설정할 디렉토리가 공유설정이 되어있는지 확인한다.

 

*** Client ( Linux ) - Server ( Winodws )로 Mount 연결

 

# mount -t cifs \\\\<server_ip>\\<공유 디렉토리> /<mount_point>

 

 

-> 리눅스에서 디렉터리구분자는 \ 를 사용하는데 리눅스 쉘에서는 \(이스케이프시퀀스) 2개가 1개로 인식된다.

-> 마운트설정을 할 디렉토리 /smb_window를 만든다.

-> 1.0.0.1 서버에 /samba 디렉토리와 마운트를 연결후 확인한다.

 

 

*** Server ( Windows ) - 마운트 설정된 공유디렉토리안에 파일만들기

 

 

 

-> 마운트 설정된 공유 디렉토리안에 파일을 만들고 클라이언트 ( 리눅스 )에서 만든 파일과 내용을 볼 수 있는지 확인해본다.

 

*** Client ( Linux ) - Windows에서 공유 디렉토리에 만든 파일 확인해보기

 

 

-> 클라이언트 ( 리눅스 )에서 서버 ( Winodws )의 파일과 파일의 내용 모두 확인가능하다.

-> 클라이언트 ( 리눅스 )에서 서버 ( Winodws )의 공유디렉토리 안에서 파일을 만들 수 없다. Server ( Windows )에서 읽기만 부여했기 때문에 

 

#2 Server ( Linux ) <-> Client ( Windows )

- 서버의 IP : 1.0.0.100

- 클라이언트의 IP : 1.0.0.1

 

==> 리눅스가 윈도우한테 공유폴더를 제공한다.

 

*** Server ( Linux ) - SAMBA 설치

 

 

** 3버전 4버전 차이가있다. ( 3버전은 yum으로 설치가안된다. 사이트가서 소스파일 다운 )

 

*** Server ( Linux ) - [global] 설정 -> 전체설정

# vi /etc/samba/smb.conf

 

[global] : 전체 설정

-> /etc/samba/smb.conf 파일을 지우고 위와같이 수정하였다.

-> workgroup = WORKGROUP 설정 , security = user 설정을 한다.

-> 윈도우에서 인증레벨을 통해 사용하도록

 

*** Client ( Windows ) - workgroup 확인

 

 

*** Server ( Linux ) - [public] 설정 -> 공유 디렉토리 설정

# vi /etc/samba/smb.conf

 

[public] : 공유 디렉토리 설정

 

 

-> /samba 디렉토리를 공유 읽기 전용으로 설정

 

*** Server ( Linux ) - 서비스 시작

 

 

-> 공유 디렉토리를 만들고 서비스를 시작한다.

-> samba 서비스가 사용하는 포트번호 445, 139번은 알아두면 좋다. 11회 보안기사 시험에 나왔었다.

 

*** Server ( Linux ) - 방화벽 설정

 

 

-> 방화벽 설정에 samba서비스를 영구적으로 추가한다. 추가되면 해당 서비스로 접근시 방화벽이 허용된다.

 

*** Server ( Linux ) - selinux 설정

/etc/sysconfig/selinux

 

 

-> SELINUX=disabled 설정후 재부팅 reboot을 해주어야 적용이 된다.

 

*** Server ( Linux ) - samba 패스워드 설정

smbpasswd -a <user> : user의 samba패스워드 추가

smbpasswd -x <user> : user의 samba패스워드 삭제

 

 

-> smbpasswd 전에 사용자는 미리 등록되어 있어야한다.

-> smbpasswd -a 를 이용해 samba패스워드 추가

 

*** Client ( Windows ) - Server ( Linux )로 접근

-> Windows에서 Server ( Linux ) 로 공유 디렉토리 접근

 

 

-> Server IP인 1.0.0.100을 \\1.0.0.100을 이용해 서버에 접근한다.

 

 

-> Server에서 smbpasswd로 user1사용자에게 만든 비밀번호 1234를 입력해 접근한다.

 

 

-> 서버에 접근하면 public이라 표시되어있다. public 디렉토리로 접근하는것이 서버에 /samba 디렉토리에 접근하는 것이다.

 

*** Client ( Windows ) - Server 디렉토리 /samba에서 파일만들어보기

 

-> Windows에서 Server ( Linux ) 로 공유 디렉토리 접근후에 파일을 만들면 Server에서 설정할 때 읽기권한만 가능하게 설정되어 있으므로 쓰기권한인 파일을 만들 수 없다.

 

*** Server ( Linux ) - Server 설정추가하기 log file , [homes]

[global] : 전체 설정

[public] : 공유 디렉토리 설정 -> 공유하려는 디렉토리 /samba 를 설정한다.

[homes] : 홈 디렉토리 설정 -> 리눅스에서 /home/사용자 디렉토리를 설정한다.

 

 

-> log file : 삼바 서버에 접속하는 호스트의 접속 로그에 대한 기록을 저장하는 파일을 지정한다.

-> max log size : 로그 파일의 최대 크기를 KB단위로 제한두려고 할 때 사용되는 옵션이다. 제한을 두었을 경우에 이를 초과하게 되면 .old 확장자를 가진 파일로 저장되고 새로운 파일이 생성된다. 0으로 설정한다면 파일의 크기에 제한을 두지 않는다.

 

*** Client ( Windows ) - Server에 접속한뒤 Server에서 설정사항이 어떻게 적용됬는지 확인

-> Server에서 설정사항을 변경한뒤 Client는 Server와 계속 연결되어있기 때문에 해당 폴더를 닫는다고 연결이 끊기지 않는다.

-> Winodws cmd창에서 net use /delete 를 이용해 해당 연결을 끊어야한다.

 

net use : 연결정보 확인

net use /delete \\<ip> : 해당 아이피와 연결 취소

net use /delete * : 연결한 모든 아이피와 연결 취소

 

 

-> *는 모든 연결을 의미한다. 연결되어있는게 하나밖에 없엇 *로 사용했다.

-> 연결을 끊은뒤 몇초 대기후 다시 연결했을때 로그인창이 다시 떠야한다. 안뜬다면 좀더 대기후 진행한다.

 

 

 

-> homes 설정을 하면 접속한 사용자의 home 디렉토리인 user1이 보인다. Server설정에서 browseable = yes를 했기때문에 homes 디렉토리가 추가로 보인다.

 

 

-> Server ( 리눅스 ) 에서 cd /home/사용자 와 같은 상황이다.

 

*** Server ( Linux ) - Server에서 쓰기 권한을 부여해도 /samba 디렉토리 other권한에 쓰기 권한이 있어야 파일을 만들 수 있다.

-> Server 설정 ( /etc/samba/smb.conf ) 에 쓰기권한을 부여했어도 클라이언트는 /samba 디렉토리에 접근해서 파일을 작성하기 때문에 /samba 디렉토리 other권한으로 w권한이 있어야한다. setfacl 을 이용해 해당 사용자만 /samba 디렉토리에 접근하도록 제한한다.

 

 

-> user1 사용자만 /samba 디렉토리에 other권한으로 rwx 권한 설정

 

*** Client ( Windows ) - Client에서 public ( /samba ) 디렉토리에서 파일 만들어보기

 

 

-> public ( /samba ) 디렉토리에 파일이 성공적으로 만들어진다.

 

*** Server ( Linux ) 에서 Client ( Windows ) 에서 만든 파일 Hello.txt 파일 확인해보기

 

 

-> 공유디렉토리인 /samba 디렉토리안에 Hello.txt 파일이 있는것을 확인 할 수 있다.

 

*** Server ( Linux ) - hosts allow / hosts deny 설정

 

 

-> hosts deny로 지정한 호스트는 접근이 불가능하다.

 

 

-> Windows( 1.0.0.1 ) 에서 접근시 접근불가

/etc/samba/smb.conf

 

 

-> hosts allow와 hosts deny를 동시에 사용할 수 있다.

-> 1.0.0. 은 해당 1.0.0. 대역을 의미한다. 1.0.0.0~255 까지

-> Windows ( 1.0.0.1 )에서 접근가능하다.

 

*** Server ( Linux ) - map to guest 설정

-> 익명 사용자로 접근할 수 있는 설정이다.

-> 삼바 3 에서는 security = share 설정이였으나, 삼바 4부터 security = user 설정에 옵션들을 추가해서 사용한다.

 

/etc/samba/smb.conf

 

 

-> 설정사항을 저장하면 systemctl restart smb를 이용해 samba서비스를 재시작해주어야 변경사항이 저장이 된다.

 

*** Client ( Winodws ) 에서 1.0.0.100에 접속

-> guest사용자로 비밀번호 없이 접속할 수 있다. guest만 입력하고 확인

-> 접속한뒤 public 디렉토리안에 파일작성할 권한이없다. 서버에서 /samba 디렉토리에 other권한으로 읽기권한이 있어야하기 떄문에 Server에서 공유디렉토리에 설정하는 sticky bit 설정을 해주어야 파일을 만들 수 있다.

 

 

*** Server ( Linux ) - /samba 디렉토리에 sticky bit 설정

 

 

-> sticky bit 설정을 이용해 chmod 1777로 해당디렉토리에 설정한다.

 

*** Client ( Windows ) - guest파일을 만들고 안에 내용작성해보기

 

 

-> 파일작성이 가능하다.

 

*** Server ( Linux ) - Client에서 만든 guet파일 확인해보기

 

 

-> guest로 접속해서 만든 파일의 소유자와 소유그룹은 nobody로 되어있다.

'Linux' 카테고리의 다른 글

Linux_리눅스 FTP 보안 설정  (0) 2018.08.01
Linux_리눅스 FTP  (0) 2018.07.31
Linux_리눅스 NFS  (0) 2018.07.24
Linux_리눅스 방화벽(firewall)  (0) 2018.07.23
Linux_리눅스 sudo  (0) 2018.07.22
Comments