728x90

SAMBA

 

/ SAMBA
- 리눅스 운용체제간 파일, 자원 공유 : nfs (rpc)
- 리눅스 - Windows 자원 공유 : samba, smb(cifs)
- Servr Message Block
- 근거리네트워크에서 자원을 공유하게 하는 서비스
- cifs : Common Internet Files System (윈도우가 끼게 될때)
- nfs와 smb의 차이점을 검색해보자.
- 공유되는 자원이 리눅스 환경일 경우 삼바를 많이 쓴다.

/ 전체적인 실습플로우
- 리눅스 서버에 삼바서버 설치
- 삼바서버에 특정 공간 공유
- 리눅스 클라이언트에서 삼바 영역에 접근할 수 있도록 설정
- 호스트pc에서도 삼바 영역을 접근할 수 있도록 설정

 

/ 설치
- 설치 전 확인
# rpm -qa | grep samba
- yum에 설치할 수 있는 패키지가 있는지 확인
- 아래 명령줄을 확인해보면 samba는 확인가능하지만 'system-config-samba'는 보이지 않는다.
- 'system-config-samba'는 wget으로 가져와야 한다.
# yum list samba system-config-samba

- samba 설치
# yum -y install samba
# yum -y localinstall system-config-samba*

* system-config-samba는 그래픽컬하게 해주는 패키지라 cli환경에서는 안될 수 있다.

/ samba 서비스 포트
- 139/tcp : Netbios 세션 서비스
- 445/tcp : SMB     ; 랜섬웨어(워너크라이)
- 137/udp : Netbios 이름 확인
- 138/udp : Netbios 데이터그램 서비스

* Netbios : Network basic input output service

 

/ 설치 확인 및 활성화
# rpm -qa | grep smb
# systemctl start smb
# systemctl enable smb
# systemctl status smb

/ ps -ef 및 netstat확인
# ps -ef | grep smb
# netstat -antup | grep smbd


/ 설정파일 찾기
- rpm qc로 보이지 않아서 find로 찾아야 한다.
# find / -name smb*


/ testparm
- 설정파일 수정 후 유효성 확인할때 쓰이는 명령어

/ gui환경이므로 'system-config-samba'를 이용해 설정을 할것이다.
# system-config-samba

- 그 전에 설정할것이 있다.
- 공유시킬 디렉토리가 필요하다.
# mkdir /share

- 권한 확인
# ls -ld /share

- other유저가 파일을 업로드 할 수 있어야 하기때문에 권한이 7이어야 한다.
# chmod o+w /share
# chmod 757 /share

- 다시 'system-config-samba'를 실행하고 '서버 설정'에 들어간다.

 

- 작업그룹은 나중에 뭐가 잘 안되면 윈도우랑 맞춰야할 경우가 생길 수 있다.
- 미등록된 사용자 계정을 centos로 설정한다.

 

- 이번에는 Samba사용자를 설정한다.



- Unix사용자명은 centos로 선택한다.
- Windows 사용자명과 비밀번호를 적당히 넣는다.

 

/ 공유할 폴더 지정
- 파일 > 공유 추가를 클릭한다.

- 아까 만든 '/share'를 지정한다.

- 접근탭에서는 디렉토리에 접근할 수 있는 권한을 설정할 수 있다.
- 실습이므로 모든 사용자에게 부여한다.


- 모두 확인하고 나오면 결과를 목록에서 확인할 수 있다.

 

/ 서비스 재시작
- 설정파일을 건드렸으므로 서비스를 재시작한다.
# systemctl restart smb

/ /etc/samba 디렉토리 확인
# cd /etc/samba
# ls -al

- 없었던 smbusers가 생겼다. 확인해보자

- 이제 설정파일을 확인한다.
- 설정을 하기전 파일과 비교해보자.
# vi smb.conf


/ testparm명령어를 한번 써보기
# testparm
- share부분이 conf파일에서는 4줄이었는데 testparm으로 확인하면 2줄만 나온다.

 

/ smb 계정에 대해 패스워드를 설정하기
# smbpasswd -a centos

 

/ smb 계정 생성
- 일단 일반 계정 생성
# useradd testuser
# cat /etc/passwd | grep testuser
# passwd testuser
# cat /etc/shadow | grep testuser

- smb 사용자 패스워드 설정
# smbpasswd -a testuser

- gui화면에서 확인가능하다.

 

/ 방화벽 설정
- config에서 설정하거나

- cli로도 등록할 수 있다.
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --permanent --add-port=139/tcp
# firewall-cmd --permanent --add-port=445/tcp
# firewall-cmd --permanent --add-port=138/udp
# firewall-cmd --permanent --add-port=137/udp
# firewall-cmd --reload
# firewall-cmd --list-all

/ 삼바서버 상태 확인
# smbstatus


/ 자체적으로 smb서버 접속 확인
- '-L'옵션은 실제로 접속하는 것이 아니라 정보만 확인할 수 있는 옵션이다.
- 접속하기 전에 먼저 정보를 확인한다.
# smbclient -L 192.168.111.101 -U centos

 

/ 리눅스 클라이언트에서 접속확인을 해본다.


/ smb 서버에 파일하나 만들어주기
- 서버에 들어오면 여기가 로컬인지 서버인지 헷갈릴 수 있어서 확인용 파일을 하나 만들어준다.

 

/ smb서버 접속하기
- 서버에서 자체적으로 접속해본다.
# smbclient //localhost/share -U centos

- 서버 상태를 확인한다.


- 이번엔 리눅스 클라이언트에서 접속해본다.
# smbclient //localhost/share -U testuser

- 서버 상태를 확인해본다.


/ 윈도우에서 smb서버 접속
- cmd창에서 'start \\192.168.111.101\share'로 접근하면 계정정보를 입력하고 접속할 수 있다.

- 서버 상태 확인


- netstat확인
# netstat -antup | grep smbd

- 포트로 확인하는 법
# netstat -ant | egrep "139|445"

 

/ smbclient
- 리눅스
    > smbclient -L 서버IP|이름 -U 계정이름
    > smbclient //서버IP|공유이름 -U 계정이름
- 윈도우
    > \\서버IP|공유이름
    > 입력창이 뜨면 id와 pw입력

 

/ 클라이언트쪽에 smb서버와 연결되는 디렉토리 생성
- 계속 접속하고 끊고 그러면 귀찮으니깐 생성한다.
- 클라이언트에 만드는 디렉토리에는 권한작업을 따로 하지 않아도 된다.
# mkdir /smbshare
# mount -t cifs //192.168.111.101/share /smbshare -o username=testuser

- 마운트 명령으로 확인해본다.
# mount -l | grep smbshare
# mount -l | grep ^//192

- 서버에서 smbstatus를 확인해본다.

 

/ fstab등록
- 클라이언트가 접속을 끊으면 정보가 사라지는데 이것을 방지한다.
- 클라이언트가 접속하는 정보를 유지하는 방법이다.
# vi /etc/fstab

- 이때 컴퓨터를 부팅할때 계정정보를 묻게 된다.
- 해서 계정정보를 아래와같이 적어놓을 수 있다.

- 근데 위 방법도 비밀번호가 노출이 된다.
- 더 보완을 하는 방법은 아래와 같다.
# touch .smbcredentials
# vi .smbcredentials

- 이 파일을 fstab에 적용한다.

 - 윈도우에서는 홈>빠른연결 >네트워크 드라이브 연결에 설정한다.

- '마침'을 누르면 계정정보를 입력하는 창이 나타나고 계정정보를 입력하면 컴퓨터를 껏다켜도 계속 연결되게 된다.

* 크리덴셜 스터핑 (Credential stuffing) : 확보한 정보로 다른 인증시스템들에게 다 대입해보는 것

 

/ umount 시키기
- 클라이언트 서버에서 언마운트해본다.
# umount /smbshare

 

/ samba서버를 특정 이름으로 접속하고 싶은 경우
# vi /etc/hosts

- 호스트이름에 지정한 이름으로 접속을 확인해본다.
# smbclient -L linuxsamba -U testuser

 

/ 로그 확인
- 별로그가 안남아서 따로 설정을 해줘야 한다.

# vi /etc/samba/smb.conf

log file = /var/log/samba/log.%m
log level = 3
vfs objects = full_audit

# Audit settings
full_audit: prefix = %u|%I|%m|%S
full_audit:failure = connect
full_audit:success = connect mkdir rmdir open read pread write pwrite rename unlink
full_audit:facility = local5
full_audit: priority = notice

 

- 서비스를 재시작한다.
# systemctl restart smb

-
#vi /etc/rsyslog.conf
- rsyslog.conf의 RULES쪽에도 추가해준다.

- rsyslog 재시작
# systemctl restart rsyslog

- 로그 폴더에 다시 가서 확인해본다.
# cd /var/log/samba
# cat log.192.168.111.128 

 

/ 윈도우 net use
- 한번에 여러 접속을 하고 있으면 에러가 나는 경우가 있다.
- 이 경우 net use의 정보를 삭제하면 된다.
# net use
# net use \\192.168.111.101\share /d

 

 

728x90

+ Recent posts