본문으로 바로가기

Day-36 FTPS & Samba(미완)

category Linux 2017. 1. 31. 11:59

SSL/TLS 이용한 FTPS 사용

 

SFTP가 VSFTP 자체에 보안을 접목한 것이 아니라 SSH를 이용해 안전한 연결 및 전송을 보호하기 위해 사용된다면,
FTPS는 VSFTP 서버에 SSL/TLS를 직접 적용해 FTP 연결을 암호화 함으로써 안전한 전송을 보장하기 위해 사용되는 프로토콜 이다.

 

VSFTP 서버 기본 설정

 

vim /etc/vsftpd/vsftpd.conf
(1) anonymous_enable=NO
임의의 사용자는 접속을 허용하지 않도록 설정

 

(2) local_enable=YES
로컬 시스템에 계정이 있는 사용자에게만 접속을 허용한다.

 

(3) write_enable=YES

쓰기를 허용할지를 설정, NO 또는 주석처리를 하면 파일이나 디렉토리를 생성할 수 없다.


(4) chroot_local_user=YES

접속한 사용자의 홈디렉토리를 최상위디렉토리로 지정한다

 

// (3),(4) 이 계정 사용자들에게 쓰기 권한을 부여하고 chroot를 적용시킨다.

 

인증서 생성


SSL/TLS 설정에 필요한 키와 인증서를 생성


(5) cd /etc/pki/tls/certs
인증서를 생성하기 위해 디렉토리로 이동한다

 

(6)openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.emp -out vsftpd.pem
명령어 poenssl을 사용해 X.509 형식의 인증서를 생성, 해당 인증서는 1년동안 유효하며,
RSA 알고리즘을 1024비트 크기의 개인 키를 생성하는데, 이 키의 이름과 인증서의 이름이 동일하다.

 

 

 

인증서 생성 시 필요한 정보를 입력
(1) 국가 이름
(2) 지역 이름
(3) 도시 이름
(4) 회사의 이름
(5) 호스트의 이름
(6) 이메일 주소를 입력

 

vsftpd.epm : 개인키 파일
vsftpd.pem : 인증서 파일


vsfpd.conf 파일에 SSL 설정


vim /etc/vsftpd/vsftpd.conf


(1)rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
인증서의 경로를 입력


(2)rsa_private_key_file=/etc/pki/tls/certs/vsftpd.epm
개인키의 경로를 입력


(3)ssl_enable=YES
SSL사용을 활성화


(4)allow_anon_ssl=NO
익명사용자는 SSL사용을 제한


(5)force_local_data_ssl=YES
모든 사용자가 데이터를 주고받을 때 안전한 SSL 기반 연결을 사용


(6)force_local_logins_ssl=YES
모든 계정 사용자가 패스워드 전송시 안전한 SSL 기반 연결을 사용


(7)ssl_tlsv1=YES
프로토콜 TLSv1 기반은 열결 허용


(8)ssl_sslv2=NO
프로토콜 TLSv2 기반은 열결 차단


(9)ssl_sslv3=NO
프로토콜 TLSv3 기반은 열결 차단


(10)ssl_ciphers=HIGH
암호화된 SSL 연결을 위해 VSFTPD가 사용할 암호를 선택하는데, 그 키의 길이가 128비트보다 큰 암호일 경우 HIGH,

이하일 경우 MEDIUM이나 LOW를 사용한다.


(11) #service vsftpd restart
변경된 설정 적용

----------------------------------------------------------------------------------------------------------

Client-Windows에서 ftps 테스트

file zilla

알수없는 인증서 ....

----------------------------------------------------------------------------------------------------------

 

Samba

 

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

 

- 마이크로소프트가 개발한 SMB(Server Message Block)프로토콜을 사용하는데,
이 프로토콜은 윈도우와 다른 시스템간의 파일 및 프린터 공유를 위해 개발되어 사용중이고,
현재는 CIFS(Common Internet File System)이라는 이름으로 불리고 있다.

 

- 최신 Samba는 윈도우 서버의 AD(Active Directory)의 DC(Domain Controller) 및 멤버 서버로서의 기능도 제공하고 있다.

 

- Samba 서버의 대표적인 기능
 리눅스/유닉스, 윈도우 클라이언트에 디렉터리 및 프린터 서비스 제공
 윈도우 도메인에서의 Login을 통한 인증 제공
 윈도우 NT 스타일의 PDC(Primary Domain Controller)및 BDC(Backup Domain Controller)의 역할 제공
 윈도우 WINS(윈도우 Internet Name Service)이름 제공 서비스 제공
 
Samba 데몬 종류

 

-SMBD (Server Message Block Daemon)
리눅스 및 윈도우 클라이언트에게 파일 공유 및 프린터 서비스를 제공을 위해 SMB/CIFS 프로토콜을 사용하는 서버 데몬이다.

 

SMB/CIFS 프로토콜은 인증, 무결성, 기밀성을 제공하는 마이크로소프트의 LanManager 보안 프로토콜과도 호환되기 때문에
윈도우 워크그룹과 같은 Client 에게도 서비스 제공이 가능하다.

 

Samba 패키지에 포함되어 있으며, TCP 139번과 455번을 통해 Client에게 데이터를 제공한다.

 

-NMBD (NetBIOS Name Server Daemon)
윈도우 기반의 시스템에서 SMB/CIFS프로토콜을 통해 요청한 Netbios 이름 서비스에 대해 응답하는 Samba 서버 데몬이다.

 

-WINBINDD(Winbind Daemon)
서버와 클라이언트 간 통신을 위해 사용되는 마이크로소프트의 RPC와 리눅스의 인증 모듈 PAM, 그리고 NSS(Name Server Switch)를
이용해 윈도우 서버 시스템에 저장된 사용자 및 그룹 정보를 리눅스 시스템에 가져와서 윈도우 서버 사용자들이 리눅스
시스템에 존재하는 사용자인 것처럼 인식 시키기 위해 사용되는 데몬이다.


Samba 서버 설치


(1) yum -y install samba samba-client samba-common samba-winbind

 

samba : 윈도우 시스템과의 작업에 필요한 모든 서버와 클라이언트 소프트웨어 제공

 

samba-client : smbclient와 같은 커맨드라인 기반 클라이언트 프로그램 제공

 

sabma-common : Samba서버와 윈도우 클라이언트에 필요한 파일제공

 

samba-winbind : 리눅스의 Samba 서버가 윈도우 도메인의 멤버가 되는데 필요한 구성 요소 및 윈도우 사용자와 그룹을 리눅스에서 사용하도록 지원

 

(2) rpm -qa | grep samba
명령어 rpm을 사용해 패키지 설치를 확인한다.
4개의 패키지 이외에도 의존 관계에 있는 라이브러리 패키지도 함께 설치된 것을 확인 할 수 있다.

 

(3) ls -l /etc/samba
Samba 주 설정 파일 확인

 

(4) ls -l /etc/log/samba
Samba 로그가 저장되는 디렉토리 확인

 

(5) ls -l /usr/sbin/{smbd,nmbd}
Samba 서버를 사용하기 위한 두개의 데몬 확인

 

(6) service smb start
Samba smb 데몬 시작

 

(7) service smb status
Samba smb 데몬 상태 확인

 

(8) chkconfig smb on
부팅후 자동으로 시작하도록 설정

 

(9) chkconfig --list smb
chkconfig 등록 확인

 

(10) service nmb start
Samba nmb 데몬 시작

 

(11) service nmb status
Samba nmb 데몬 상태 확인

 

(12) chkconfig nmb on
부팅후 자동으로 시작하도록 설정

 

(13) chkconfig --list nmb
chkconfig 등록 확인

 

 

Samba 서비스 시작

 

(1) ps -ef | grep smbd
 smbd 프로세스 확인

 

(2) ps -ef | grep nmbd
 nmbd 프로세스 확인

 

(3) smbclient -L localhost
samba 클라이언트 프로그램 smbclient를 이용해 samba 서버 작동 유무를 확인하기 위해
로컬 호스트로 접속해 패스워드 없이 Enter키 입력. samba서버의 이름 및 버전, Workgroup 정보 등을 알 수 있다.

 

(4) nmblookup [HOSTNAME]

 

ex) [root@Sever-A ~]# nmblookup Server-A
querying Server-A on 100.100.100.255
100.100.100.110 Server-A<00>

 

 

 

samba 서버의 NetBIOS 이름으로 IP주소를 조회하는 프로그램 nmblookup으로 Samba 서버의 NetBIOS
이름을 조회하면 [HOSTNAME]서버가 현재 사용하는 IP주소를 알 수 있다.

 

NetBIOS
- (Network Basic Input/Output System)
LAN 환경에서 윈도우 컴퓨터들이 통신 할 때 사용하는 통신 서비스이며,
운영체제를 설치할 때 지정하는 컴퓨터 이름을 NetBIOS 이름이라 한다.
각 컴퓨터에는 고유한 NetBIOS를 지정해 네트워크사으이 다른 컴퓨터의 NetBIOS 이름과 중복되지 않아야 한다.

 

포트 확인하기

 

(1) lsof -i udp:137
lsof를 통해 포트 137번을 확인하면 nmbd 데몬이 Netbios 이름 등록과 삭제에 사용하는 Netbios 이름 서비스가 작동 중임을 확인할 수 있다.

 

(2) lsof -i udp:138
lsof를 통해 포트 138번을 확인하면 nmbd 데몬이 Netbios 이름에 Datagram과 브로드캐스트를 주고받기 위해 사용하는 Netbios Datagram

서비스가 작동중임을 확인 할 수 있다.

 

(3) lsof -i tcp:139
lsof를 통해 포트 139번을 확인하면 smbd 데몬이 Netbios 세션 연결에 사용하는 Netbios 세션 서비스가 작동 중임을 확인할 수 있다.

 

(4) lsof -i tcp:445
lsof를 통해 포트 445번을 확인하면 smbd 데몬이 액티브 디렉토리 접근과 인증에 사용되는 microsoft-ds 서비스가 작동 중임을 확인할 수 잇다.

 

 

 


Samba 서버의 종류
Stand-alone 서버
도메인 멤버 및 도메인 컨트롤러 서버

 

Samba Stand-alone 서버 설정
워크그룹 서버나 네트워크 환경에서 멤버로 사용되는 서버를 의미

 

가장 많이 상용되는 Samba 서버의 역할이라고 할 수 있다.

 

일반적으로 클라이언트에게 디렉토리 및 프린터 공유를 제공하는 역할을 하는 Samba 서버를 의미한다.


Samba 서버 설정


전역 섹션 설정
Samba 설정 파일은 세 개의 섹션으로 나누어져 있다.

 

[global] - Samba 서버 전체에 적용되는 환경을 설정하는 섹션

 

[homes] 사용자들의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션

 

[printers] 프린터에 대한 권한을 설정하는 섹션

 

(1) vi /etc/samba/smb.conf
Samba 서버 주 설정 파일 수정

 

(2) :52
글로벌 설정을 의미하는 섹션으로 이동

 

(3) :74
Samba 서버가 속한 워크 그룹을 의미하며, 해당 그룹에 속한 클라이언트만이 서버에 접근이 가능하며, 공유 그룹을 의미한다.
(workgroup=MYGROUP)

 

Samba 서버 설정 [global]

 

75 server string = Samba Server Version %v
-Samba 서버를 설명하기 위해 사용되는 라인

 

77 netbios name = MYSERVER
   netbios name = [HOSTNAME]
-Samba서버의 Netbios 이름을 의미하는데, 기본은 DNS설정한 이름이 사용, 해당이름은 윈도우와 Samba 정보에서 보여주는 Samba서버의 이름

 

 79 ;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
 여러 인터페이스가 있는 경우 지정하여 설정 가능
 IP주소 뿐만 아니라 인터페이스 이름도 가능
 
 80 ;       hosts allow = 127. 192.168.12. 192.168.13.
 접근제어 목록으로서 Samba 서버접속이 가능한 네트워크 주소를 지정

 

 [Global]
 workgroup = Window의 작업 그룹 이름
 server string = Windows 네트워크에 보이는 컴퓨터 설명 생략가능
 netbios name = Windows Network에 참가하는 컴퓨터 이름
 hosts allow = 삼바서버에 접속할 클라이언트 IP
 
 [공유이름]
 comment = 공유디렉토리 설명(생략가능)
 path = 공유할 디렉토리 절대 경로(절대경로)
 read only = 디렉토리 읽기 쓰기 여부 yes는 읽기 전용  no는 읽기 쓰기
 guest ok = 게스트 사용자도 사용하게 할지 여부

 

 

 

 

 89         log file = /var/log/samba/log.%m
 로그 파일의 위치 및 이름을 지정, %m은 클라이언트의 NetBIOS이름을 의미
 91         max log size = 50
 로그파일의 크기를 지정, 단위는 킬로바이트(kb)
101         security = user
  Samba 서버 실행되는 모드를 의미, 모드는 사용자 레벨과 공유레발이 있다.
  Samba 서버 접속 시 사용자 정보와 패스워드가 필요하다는 의미
102         passdb backend = tdbsam
  Samba 서버의 사용자 정보를 저장할 데이터 베이스 벡엔드를 의미,
  tdbsam과 ldapsam 두가지가 올 수 있다.
  기본값은 tdbsam으로서 명령어 smbpasswd를 이용해 사용자 및 패스워드 생성가능

103         map to guest = Bad User
계정이 없는 로그인은 모두 guest 계정으로 맴핑하라는 의미이다.
기본값이 아니라 추가해 주어야 한다.

 

 


공유 디렉터리 설정

 

(1) mkdir -p /samba/share
클라이언트에게 직접적으로 제공할 공유 디렉토리 생성

 

(2) chmod -R 777 /samba/share
chmod 명령어를 이용하여 읽기/쓰기/실행의 모든 권한을 허용

 

(3) vim /etc/samba/smb.conf
vi를 이용하여 Samba 서버 주 설정 파일을 수정

 

설정 파일을 열어 Share Definitinos 라인을 찾아 작성

 

[share]
        path = /samba/share           // share라는 섹션을 생성한 다음에 공유할 디렉토리의 경로를 지정
        writable = yes                     // 디렉토리에 대한 읽기 및 쓰기 권한을 부여
        guest ok = yes                     // 공유 디렉토리 접근하는 사용자의 이름과 패스워드가 필요없다는 의미
        guest only = yes                  // 공유 디렉토리로 접근하는 모든 사용자를 guest로 제한
        create mode = 0777           // 공유 디렉토리에서 클라이언트가 생성하는
        directory mode = 0777       // 파일 및 디렉토리에 할당되는 권한을 의미한다,

 

 

 

(4) service smb restart

 

(5) service nmb restart

 

(6) testparm //smb.conf 설정 파일을 테스트하기 위한 명령어
 명령어 입력후 'enter'키 입력해야 결과 출력

 

 

 

 

 

클라이언트 테스트


Client-Linux 
(1) yum -y install samba-client

 

(2) smbclient -L Server-A

Samba 서버(Server-A)가 제공중인 공유 디렉토리를 확인하기 위해 명령어 smbclient에 Server-A를 지정하면
그 결과에서 현재 공유 중인 디렉토리 목록 share를 발견할 수 있다.

 

 


 
(3) cp /etc/passwd /root/ 
테스트 파일을 복사해 root의 홈 디렉토리에 복사한다.

 

(4) smbclient //Server-A/share
- 암호 입력 없이 접속 가능하다
명령어 smbclient에 Samba 서버 이름 Server-A의 공유 디렉토리 share로 사용자 지정 없이 접속을 시도한다.

 

(5) smb: \> put passwd
passwd 파일은 Client-Linux에서 root의 홈 디렉토리에 있는 파일, 즉 /root/passwd를 의미한다

 

(6) smb: \> mkdir test_dir
디렉토리 생성을 테스트 하기 위해 명령어 mkdir를 이용해서 test_dir 디렉토리를 생성
 
- 클라이언트가 파일 및 디렉토리를 생성하면 서버의 디렉토리 내에선 그 소유권자가 nobody로 표시된다. 
 


 
Client-Windows

 

(1)윈도우 시작 메뉴를 검색란에서 실행을 입력해 실행한 다음 Samba 서버의 IP주소와 디렉토리를 입력하고 확인 클릭

\\100.100.100.110\share 

 

 


 
(2) Samba 서버에서 설정한 공유 디렉토리 share로 접근하면 디렉토리에 있는 파일이나 디렉토리를 확인 할 수 있다. 
 


 
공유 디렉토리 인증 설정

 

#vim /etc/samba/smb.conf 
 
[Security]
        path = /samba/sec_share           // 공유 섹션이 실제 어느 디렉토리를 이용하는지 경로 지정
        writable = yes     
        create mode = 0770
        directory mode = 0770
        guest ok = no                             // 인증을 거치지 않는 guest사용자 들은 접속 허용하지 않는다
        valid users = @smbgroup           // 이 디렉토리에 접근 가능한 사용자들은 모두 smbgroup 에 속한 사용자들임을 지정
                                                         // 여기서 @은 그룹이름을 의미, 그룹이 아니고 소수의 사용자들인 경우 @와 그룹이름대신에

          // 그 사용자들의 이름을 여기에 지정한다.

 

'Linux' 카테고리의 다른 글

Day-38 PXE & Kickstart (미완)  (0) 2017.02.02
Day-37 Samba & NFS  (0) 2017.01.31
Day-35 VSFTP (미완)  (0) 2017.01.30
Day-34 FTP  (0) 2017.01.27
Day-33 DNS  (0) 2017.01.26