정보보안공부
Linux_리눅스 SAMBA 본문
리눅스 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 |