본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

SAMBA server / day 21

by 알거음슴 2021. 4. 23.

CIFS (windows <->windows)

NFS 처럼 네트워크를 통해 원격지 컴퓨터상의 파일이나 서비스를 이용할 수 잇는 프로토콜 windows 진영에서 개발하고 있으며 CIFS 를 모방한 오픈소스 진영의 SMB도 있다.

 * CIFS = SMB + NetBIOS

 

SAMBA (linux <-> windows)

samba 는 smb 프로토콜을 오픈소스 형태로 개발된 프로그램 이름이다. 가장 큰 특징은 이기종간의 분산파일 시스템을 지원한다. 즉 유닉스/리눅스 파티션과 윈도우와 공유 등 서로의 자원을 이기종간 공유하여 사용할 수 있다. 대표적으로 활용되는건 가정용 NAS 는 모두 linux로 구현되어있으나 windows 에서도 이용가능한 그런점에서 samba가 이용된다고 볼수 있다.

 

SAMBA server

 패키지: samba, samba-clinet, cifs-utils

 데몬 & 포트 & 프로토콜: smbd,  137/udp 138/udp 139/tpc 445/tcp

 주 설정 파일: /etc/samba/smb.conf

 하위 설정 파일: /etc/samba/*

 스크립트: smb.services

 

주 설정 파일 (/etc/samba/smb.conf)

 samba 파일의 설정파일들

* /etc/samba/smb.conf : 주설정파일, smb.example 파일에 자세하게 내용이 규정되어있다.

* /etc/samba/lmhosts : /etc/host와 유사함, samba에 IP 주소 매핑파일

* /var/log/samba/log.* : samba logfile

/etc/samba/smb.comf 의 주요 지시자
[전역설정]
  workgroup = MYGROUP
윈도우의 작업그룹처럼 공유그룹을 지정한다, windows와 liunx를 같은 그룹으로 맞춰준다.
  server string = Samba Server Version %v
윈도우에서 확인할 때 사용하는 smaba server 이름을 지정. %v의 경우 버전정보인데 표시를 안하는게좋다.
  interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
NIC 카드와 지정된 영역대에서만 접속할 수 있게끔 허용하는 기능. ( 인트라넷에서 좋음 )
  hosts allow = 127. 192.168.12. 192.168.13.
host allow/deny : 허용할 호스트 및 거부할 호스트를 지정할 수 있다. 대역으로 지정할 수도 있다. allow를 사용할 경우 반드시 본인도 지정해둬야 서비스에 문제가 없다. 이 부분엔 IP 및 network 대역, 장치의 이름등이 올 수 있다.

[서버별 독립 옵션]
  security = user
보안관련 옵션, client가 samba server 접속 시 인증레벨을 부여한다. 5가지의 모드가 있다.
user : samba server 접속 시 windows로그인 ID passwd 와 동일하게 samba server 접속 시 ID passwd를 입력해야한다. (기본설정)
ADS : ADS 서버가 있어야 가능, ID와 passwd를 ADS 에게 유효여부 확인 방식
share : samba server 접속 시 ID 와 Passwd를 입력하지 않고 접속가능 
server : 윈도우NT 서버 있어야 가능, ID와 passwd를 다른 samba 서버와 유효여부 확인 방식
domain : 윈도우 서버가 있어야 가능, ID와 passwd를 domain 에게 유효여부 확인 방식

[공유 설정]
  [mydata]
공유 서버의 이름.
  comment = shared-files in mydata directory 
설명 간단한 코맨트로 서버 설명 가능.
  path = /home/user01/private
공유 디렉토리 위치 지정
  read only = no
공유 디렉토리를 읽기만 가능하도록 지정
  writable = yes
공유 디렉토리를 쓰기 허용을 가능하도록 지정 (write ok = yes 으로 지정도 가능)
  valide user = user01 user02 user03
공유 디렉토리 접근 사용자 목록 지정, 만약 이 옵션이 생략되면 모든 사용자가 접근할 수 있다.
  public = no
사용자의 허가여부 no 설정하면 다른 사용자들은 이용할 수 없고 등록된 사용자만 이용이 가능
  browseable = no
이용 가능한 공유 목록을 보여줄 것인가를 지어하는 옵션, no 지정하면 목록을 보여주지 않는다. 접속은 가능
  printable = no
서비스로 지정된 디렉토리에 스풀 파일을 지정할 것인가를 지정하는 옵션, 프린터 공유 디렉토리가 아니므로 대부분 no로 설정
  create mask = 0765
create mode 같은 옵션으로 파일을 생성할 때 사용되는 mask 값(rwx)

 

SAMBA server 절차

 1) 패키지 설치 ( yum install samba samba-client cifs-utils )

samba : 서버 패키지

samba-client : 클라이언트 패키지

cifs-utils : 마운트 패키지

 2) 서버 설정 ( vi /etc/samba/smb.comf )

 3) 서비스 기동 ( systemctl enable --now smb )

 4) 방화벽 등록 ( firewall-cmd --permanent --add-service=smb )

 

SAMBA 관련 CMD

 smbclient

공유 자원 확인 및 공유 자원 디렉토리 접근할때 사용 (FTP와 비슷한 형식 및 내부 명령어 비슷)

smbclient -L : 로컬에 공유된걸 확인

smbclient -N : 암호없이 검색이 가능한경우 (-U 암호 있이 검색이 가능한경우)

smbclient -L [IP or hostname] : 상대에게 공유된 자원 확인

smbclient //192.168.0.250/share : 공유 자원에 접속

 * smbclient //192.168.10.202/share -U soldesk 형식으로 접속

 smbstatus

samba server 연결 상태를 보여준다.

 testparm

서버 설정 파일(/etc/samba/smb.conf)의 문법점검 명령어 점검 결과도 출력한다.

testparm -s -v : 즉시 (-s)문법점검을 하며 결과를 자세히(-v)보여준다.

 mount.cifs

CIFS 마운트 하기 위한 패키지 (mount -t cifs 와 동일하다.) 기본적으로 mount CMD 와 유사함.

 * 주요 포맷

mount -t cifs //172.16.6.X/samba_share /mnt/server -o username=soldesk

mount.cifs 172.16.6.X:samba_share /mnt/server -o user=soldesk

 

 

[참고] NFS vs CIFS/SMB

 * 공유절차

  NFS server SAMBA server
공유자원 생성 mkdir -p /share mkdir -p /share
공유설정 vi /etc/exports
/share    *(rw)






systemctl restart nfs-server
vi /etc/samba/smb.conf
 security = user
 hosts allow = 127. 172.16.
 [public]
 path = /share
 writable = yes
 valid users = test1

systemctl restart smb
공유확인 showmount -e [IP] smbclient -L [IP] -N

 * 마운트 절차

  NFS server SAMBA server
공유 자원 확인 showmount -e [IP] smbclient -L [IP] -N
마운트 작업 mkdir /p
mount -t nfs -o timeo=10,intr \
 172.16.6.2XX:/share /p
vi /etc/fstab

mkdir /p
mount -t cifs -o username=soldesk \
//172.16.6.2XX/public /p
vi /etc/fstab

마운트 확인 df -h df -h

 

[참고] SAMBA 활용

 1) usr/share 디렉토리 공유

-> 윈도우에서 리눅스 문서를 보기 위해서

 2) 개발자가 소스 폴더(EX: /source)를 공유하는 경우

-> 개발 환경은 LINUX 이지만 LINUX VI 편집기 사용이 불편한 경우

-> LINUX 서버에 소스 공유를 걸고

-> 윈도우에서 툴(Edit Plus, Ultra Editor)을 통해 개발한다.

 3) "L4/DNS --- WEB1/WEB2/WEB3 --- NFS/SAMBA" 구조

 4) File Server(Windows File Server or Linux File Server)

-> 윈도우 서버의 폴더를 공유하여 파일들을 공유하는 경우 바이러스(프로그램) 배포의 원인이 될 수 있다.

-> 리눅스 서버의 폴더를 공유하여 파일들을 공유하는 경우 바이러스(프로그램)가 정상 동작하지 않는다.

 5) Disk(Resource) 공간 제공

-> Windows Server(100G) + 5TB(공간 필요) <------ Linux(SAMBA)

 6) Windows(Printer) -------> Linux Server

# lp /etc/passwd

 

 

[실습] 기본 samba 서버 구축

[실습] windows 공유폴더를 linux에 에 마운트하기.

[실습] linux 공유폴더를 windows에 마운트하기.

[실습] linux 공유폴더를 linux에 마운트하기.

 

 

 

 

 

 

 

 

'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글

NTP server / day 22  (0) 2021.04.26
Log server / day 21  (0) 2021.04.23
NFS server / day 20  (0) 2021.04.22
Mail / day 19  (0) 2021.04.21
FTP server / day18  (0) 2021.04.20