리눅스 개인서명(사설) SSL 인증서 생성


1. 개요
개인 인증서를 만들고 인증서를 발급 받아 사용해본다. 브라우저에서  신뢰할 수 없는 사이트로 표시되지만, SSL 보안 기능을 사용할 수 있다.


2. 확인
리눅스 서버에 Openssl 패키지를 설치한다.
[root@localhost ~]# rpm -qa | grep openssl 
openssl-libs-1.0.1e-60.el7_3.1.x86_64 
openssl-1.0.1e-60.el7_3.1.x86_64 
openssl098e-0.9.8e-29.el7.centos.3.x86_64 
openssl-devel-1.0.1e-60.el7_3.1.x86_64 



3. 개인키 생성
[root@localhost ~]# openssl genrsa -des3 -out server.key 2048 
Generating RSA private key, 2048 bit long modulus 
.....+++ 
.......................................................................................................................+++ 
e is 65537 (0x10001) 
Enter pass phrase for server.key: 
Verifying - Enter pass phrase for server.key: 
[root@localhost ~]#


4. 인증요청서 생성
[root@localhost ~]# openssl req -new -key server.key -out server.csr 
Enter pass phrase for server.key:                  ---->  서버 개인키  패스워드 입력
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [XX]:kr 
State or Province Name (full name) []:daejeon 
Locality Name (eg, city) [Default City]:seogu    
Organization Name (eg, company) [Default Company Ltd]:colt357 
Organizational Unit Name (eg, section) []:colt357 
Common Name (eg, your name or your server's hostname) []:web1.com 
Email Address []:admin@web1.com 
  --------->   적당히  자신의 경우게 맞게 입력

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:
An optional company name []:

---------->  그냥 Enter, Enter

서버 인증요청서인 server.csr 파일이 생성되었다.


5. (Optional) 개인키에서 패스워드 제거
- 키에 패스워드가 들어 있으면 아파치 구동시마다 물어본다. 패스워드를 제거하더라도 SSL 암호화 통신 에는 문제가 없으므로 제거하자.

[root@localhost ~]# cp server.key  server.key.origin 
[root@localhost ~]# ls 
anaconda-ks.cfg  server.csr  server.key  server.key.origin 
[root@localhost ~]# openssl rsa -in server.key.origin -out server.key 
Enter pass phrase for server.key.origin:             ---->   개인키 패스워드를 입력
writing RSA key                   -----> 패스워드가 제거된 개인키  파일 server.key 가 생성된다.
[root@localhost ~]# 

 
패스워드가 제거된 파일(server.key)은 원래 파일(server.key.origin)에 비해 용량이 조금 줄었다.


6.  인증서 생성
- 개인키와 인증요청서를 가지고 인증서를 생성해 보자.

[root@localhost ~]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
Signature ok 
subject=/C=kr/ST=daejeon/L=seogu/O=colt357/OU=colt357/CN=web1.com/emailAddress=admin@web1.com 
Getting Private key 
[root@localhost ~]#
 


7. 확인
- 개인키
[root@localhost ~]# head -3 server.key 
-----BEGIN RSA PRIVATE KEY----- 
MIIEowIBAAKCAQEAyyIIj70AxbZmWKeL7vTg0cDouD8U+Fxt5046YFYh6bUXbev0 
tILTBRZBeGJzeL1GJ2NB1nkPQ4uaIPGCghhD/4ttvKFbH09quPLWFZ44Pth0kCwN 


- 사설인증서
[root@localhost ~]# head -3 server.crt 
-----BEGIN CERTIFICATE----- 
MIIDiDCCAnACCQDyRS6tuMObrDANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMC 
a3IxEDAOBgNVBAgMB2RhZWplb24xDjAMBgNVBAcMBXNlb2d1MRAwDgYDVQQKDAdj 
[root@localhost ~]# 



samba는 이기종간의 파일,  CD-ROM, 프린터 등을 공유하기 위해 만들어진 프로그램이다.
samba는 마이크로소프트사와 인텔이 다른 시스템의 디스크나 프린터와 같은 자원을 공유하기 위해 개발한 프로토콜이다. SMB는 tcp/ip 기반의 NetBIOS 프로토콜을 사용한다.

samba는 서버는 크게 2개(smbd, nmbd)의 프로세스로 구성 되어 있다.
대부분의 처리는 smbd에서 한다. 포트 또한 tcp:445 만 열려 있으면 작동한다.  다만, 윈도우즈 사용자의  컴퓨터이름으로 접속할 수 있게 하기 위해서는 nmbd를 사용해야 한다. nmbd는 3개의 포트를 사용한다.  (tcp:139, udp:137,138) 

SAMBA를 사용하는 경우 tcp : 139, 445번과  udp : 137, 138번 포트가 열려있어야 한며, 방화벽설정에도 적용되어야 한다.

1. SAMBA 서버 설치

~]#  yum  -y  install  samba  samba-common  samba-client

2. SAMBA 시작 및 종료
samba server는 항상 실행하고 있는 서버 프로그램이다, smb는 systemd로 관리하며 systemctl로 제어할 수 있다.  smb,  nmb 가  있으며,   smb 만으로도 서비스 가능하다.

~]# systemctl  enable  smb  nmb
~]# systemctl  start  smb  nmb

3. SAMBA  사용자 계정 설정
samba 사용자는 시스템 사용자를 이용하며,  smbpasswd -a 명령으로  samba 접속 계정으로 설정할 수 있다.

~]#  useradd  ID
~]#  passwd   ID     ----->   리눅스 사용자 생성
~]#  smbpasswd  -a   ID    ----->   samba 계정 적용
New SMB password:
Retype new SMB password:
Added user ID.

4. SAMBA 설정
samba 설정 파일의 위치는 /etc/samba/smb.conf 이다.

[root@localhost samba]# more smb.conf 
# See smb.conf.example for a more detailed config file or 
# read the smb.conf manpage. 
# Run 'testparm' to verify the config is correct after 
# you modified it. 

[global]     
  //  전역 설정 부분, 여기 아래에 옵션을 넣게 되면 모든 Samba 정보에 설정된다.

workgroup = SAMBA 
  //  윈도우의 workgroup과 일치 시키거나 NT 도메인 이름으로 설정한다. 

server string = Samba Server Version %v 
  //  윈도우 컴퓨터 설명과 유사, 공유시 폴더명 옆에 설명.
  //   %h 호스트명, %L NetBIOS 이름, %v Samba Version 표시


interfaces = lo eth0 192.168.1.2/24  192.168.2.2/24 
  // 두개의 네트워크에 Samba 가 물려있는 경우로 양쪽 네트워크에 대행 브라우징 및 서비스가 가능하다.

hosts allow = 127.   192.168.1.   192.168.2.  // 접근을 허가할 호스트 네임 혹은 ip 주소를 지정
   
log file = /var/log/samba/log.%m   // 서버에 접속한 호스트마다 개별적인 호그 파일을 생성하도록 설정  
max log size = 50

security = user 
  //   서버의 사용자 계정만 사용할 수 있도록 한다.
  //   user = Samba Server에서 계정 및 패스워드를 통한 인증을 거친 사용자에 한하여 공유를 허가
  //   share = 모든 공유 영역에 권한 없이 접근이 가능하도록 설정
  //   server =  공유 영역에 대한 사용 권한은 다른 호스트(NT 패스워드 서버)의 인증 과정을 거친 사용자에 한하여 허가  

passdb backend = tdbsam 
  //  패스워드에 해한 인증 방식.
  //   tdbsam = samba 내장 TDB SAM 형식
  //  ldapsam = LDAP 사용 ( LDAP 라이브러리 필요)
  //  sbmpasswd = smbpasswd 텍스트 파일 인증 형식 

printing = cups 
printcap name = cups 
load printers = yes 
  //  Samba에서 별도의 프린터 설정을 하지 않고, printcap name 에서 설정한 프린트 설정을 불러온다.
cups options = raw 





[homes]      //   사용자  계정을 통해서 자기 홈 경로를 접근 할 수 있다.
comment = Home Directories       //   폴더에 대한 설명
valid users = %S, %D%w%S       //     
browseable = No    //  이 폴더의  표출여부 설정, yes로 하면 접속 권한이 없어도 네트웍의 모든 PC에서 확인 가능.   
read only = No     //  버전 따라 writable 로 표시되기도 한다. 읽고, 쓰기 권한 설정.
inherit acls = Yes 
create mask = 0664   //  생성되는 파일 권한  
directory mask = 0755    //  생성되는 폴더 권한


[printers] 
comment = All Printers 
path = /var/tmp 
printable = Yes 
create mask = 0600 
browseable = No 

[print$] 
comment = Printer Drivers 
path = /var/lib/samba/drivers 
write list = root 
create mask = 0664 
directory mask = 0775


# 여러 사용자가 함께 사용할 수 있는 공유 폴더 설정하기
# "[ ]"  안에 접속할 경로를 설정한다,  만일 "[share]"로  세팅했을 경우, 윈도우에서의 접속은
# "\\server\share" 로 접속할 수 있다. 

[share]
comment = shared Files
path = /data/samba/share   //  실제 파일이 저장될 공간으로 , 설정이 끝나고 폴더를 생성해 주어야 한다.
browseable = yes  //  공유 내역을 브라우징 리스트에 나타나게 할 것인지에 대한 옵션
read only = no
create mask = 0664
diretory mask = 0755
guest ok = yes  //  Anonymous로 접속 간으하게 하려면 아래 주석을 풀어준다. 이때는 read only을 추천한다.




# 옵션 설명
# vlid users   -->  공유 영역에 접근 가능한 사용자 혹은 그룹 지정사용자를 여러명 지정할 경우 공백으로 구분하여 지정
#                          그룹명일 경우 @ 그룹명 으로  그룹임을 명시한다.
#  write list  -->  공유 영역에 대한 쓰기 가능한  사용자 혹은 그룹 지정사용자를 여러 명 지정할 경우 공백으로 구분.
#                          그룹명일 경우 @ 그룹명 으로 그룹임을 명시한다.


5. 방화벽 설정
Samba는   tcp 139, 445 포트를 사용한다.

(참고)  삼바서버 포트 번호
netbios-ns         137/udp                       # NETBIOS Name Service 
netbios-dgm     138/udp                       # NETBIOS Datagram Service 
netbios-ssn       139/tcp                         # NETBIOS session service 
microsoft-ds     445/tcp 


6. 삼바 서버  접속 클라이언트
위도우즈에서 다음과 같은 방법으로 접속할 수 있다.

   1) 윈도우즈에서 접속하기

시작 → 실행   ,  \\IP(또는 호스트명)           ,     아이디/비번으로 접속할 수 있다.

   2)  리눅스에서 접속하기

GUI 환경의  리눅스에서는  "파일브라우저" 를  실행하여  "네트워크 찾아보기" 에서  
smb://컴퓨터명/공유이름   
형식으로  접근 할수 있다.

   3) MC(Midnight  Commander)를  이용하여 접속하기  

명령어 창에서 mc를  입력하여 작동한 후 f9 키를 눌러 메뉴에서 "smb 연결"을 선택하여 접근할 수 있다.

  4)  smbclient 를 이용한 smb 서버 접속
samba에서 제공하는 smbclient 명령어를 이용하여  SMB에 접속할 수 있다.
접속한 후  ftp 처럼 동작하며, help 명령어로 사용할 수 있는 명령어를 확인할 수 있다.
 get, put 등의 명령어로 파일을 다운로드 업로드 할 수 있다.

~]# smbclient   //컴퓨터이름/공유명  -U  사용자명
Enter user_id's  password :  패스워드
smb: \> ls 

   5)  linux   SMB   마우트 하기.

~]# mount   -t   cifs    //아이피/공유명     /smb_dir    -o  user=사용자,password=패스워드


RPM 기반 시스템용  패키지  "설치/삭제/업데이트"  도구

기능
명령어
패키지 설치
yum  install  패키지명
패키지 삭제
yum remove  패키지명
패키지 업데이트
yum update   패키지명
패키지 정보확인
yum info  패키지명
패키지 검색
yum  search  패키지명
 패키지 목록보기
(설치된 항목 +  설치가능 항목)
yum  list
설치된 패키지 목록 보기
yum  list  installed

1. 패키지  설치 확인

방법 1.   rpm 

rpm  -q  패키지명
rpm  -qa  | grep  패키지명

방법 2.   yum

yum  list   installed   패키지명
yum  list   installed   |  grep  패키지명

2. YUM  저장소 - repository

base 설정이 있어 바꿀 필요는 없으나, 전송속도 또는  특별한 패키지를 설치하기위해 변경, 추가 할 수 있다.

[root@localhost log]# yum repolist 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: centos.mirror.cdnetworks.com 
 * epel: mirror.premi.st 
 * extras: centos.mirror.cdnetworks.com 
 * ius: mirrors.kernel.org 
 * updates: centos.mirror.cdnetworks.com 
repo id                                    repo name                                                                                   status 
!base/7/x86_64                     CentOS-7 - Base                                                                           9,363 
!epel/x86_64                         Extra Packages for Enterprise Linux 7 - x86_64                       11,904 
!extras/7/x86_64                  CentOS-7 - Extras                                                                            447 
!ius/x86_64                            IUS Community Packages for Enterprise Linux 7 - x86_64          380 
!mariadb                                MariaDB                                                                                            16 
!nginx/x86_64                       nginx repo                                                                                        78 
!updates/7/x86_64               CentOS-7 - Updates                                                                    2,090 
repolist: 24,278

3. yum   epel   저장소 추가

yum  epel (Extra  Packages  Enterprise Linux ) 저장소 추가
엔터프라이즈 리눅스를 위한 추가 패키지

[확인]
 [root@localhost log]# yum repolist
  ~~  repo id 리스트 중   epel  정보 유무 확인.

[설치]
[root@localhost log]# yum install epel-release
~~
Updated: 
  epel-release.noarch 0:7-10                                                                                           

Complete!


+ Recent posts