티스토리 뷰

CentOS 강좌 PART 2. 1 SSH Server 구축과 운영

[OpenSSH 소개 ]

CentOS를 설치하면 기본 OpenSSH가 설치되어 있다. OpenSSH(Secure Shell)은 일반적으로 사용하는 원격 접속 프로그램인 Telnet 을 대체하는 가장 범용적인 어플리케이션이다.
Telnet에 비해 연결성을 암호화 함에 따라 내용과 패스워드 등이 암호화 되어, 비교적 안전하게 접속 관리할 수 있다.


[SSH 구동 확인] 

SSH는 기본 설치되어 있기 때문에 정상적 구동을 확인만 하면 된다.
[root@centos151 whchoi]# rpm -qa | awk '/ssh/'
openssh-server-7.4p1-16.el7.x86_64
libssh2-1.4.3-12.el7.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
[root@centos151 whchoi]# yum list installed | grep ssh
libssh2.x86_64                       1.4.3-12.el7                   @anaconda   
openssh.x86_64                       7.4p1-16.el7                   @anaconda   
openssh-clients.x86_64               7.4p1-16.el7                   @anaconda   
openssh-server.x86_64                7.4p1-16.el7                   @anaconda   

# RPM 패키지 설치 여부 또는 yum 설치 여부를 통해 opensshd가 정상적으로 설치되어 있는지 확인한다.

[root@centos151 whchoi]# service sshd status
Redirecting to /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-03-16 03:59:46 KST; 3 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
Main PID: 6302 (sshd)
   CGroup: /system.slice/sshd.service
           └─6302 /usr/sbin/sshd -D

# sshd 데몬이 정상적으로 구동되는지 확인한다.
# 현재 접속자 정보 및 데몬 상태등을 조회해 볼 수 있다.


[SSH 보안 강화를 위한 설정]

SSH 기본 설정은 /etc/ssh/sshd_config에 존재한다. 보안을 강화하기 위해서 아래와 같이 수정하거나 추가할 수 있다.
[root@centos151 whchoi]# vim /etc/ssh/sshd_config
# 루트 로그인 비활성화 (기본값 활성화)
PermitRootLogin no

# 사용자 접속 제한 (기본값 제한없음.)
AllowUsers whchoi01 whchoi02

# 사용자 접속 제한시 IP 연동
AllowUsers whchoi@172.16.0.11

# SSH Protocol v2 허용 (기본 1,2 허용)
Protocol 2

# Port 번호 변경 (기본 22)
Port 20022

# 포트 변경 이후 firewall-cmd 를 통해 변경된 포트를 적용하여, SSH 서비스가 접속이 원할하도록 구성 변경한다.
# firewall-cmd —add-port 20022/tcp
# firewall-cmd --add-port 20022/tcp --permanent
# firewall-cmd —reload

# 퍼블릭 기반의 인증 (기본 패스워드)
PubkeyAuthentication yes
PasswordAuthentication no

# 접속 시도 횟수 (기본 6)
MaxAuthTries 3

# 로그인 대기 시간 (기본 120)
LoginGraceTime 30


[SSH Key 기반의 접속과 관리 요약]

SSH Key 기반을 통해 원격 접속을 진행하게 되면, 비대칭 RSA기반 암호화 키 기반의 인증을 진행하게 되므로 보안을 강화할 수 있으며 패스워드를 입력할 필요가 없기 때문에 훨씬 안전하고 편리한 접속이 가능하다.

 
SSH Key 기반 접속은 그림과 같은 프로세스로 진행된다.

0. 사전에 SSH Client Side에서 생성된 Public Key를 SSH Server에 복제한다.
     SSH Server는 authorized_key 에 해당 키를 복사해 둔다.
1.SSH Client에서 SSH Server에 접속하며, Public Key 를 요청한다.
2.SSH Server는 SSH Client 의 Public Key를 검색하고, Key가 있으면 Private Key를 요청한다.
3.SSH Client는 자신의 Private Key를 검색하며, 최초에 Key 생성시 Passpharse (패스구문)을 설정하였으면 이에 대해 요청한다.
4.Private Key를 정상적으로 찾고 결과를 수행했음을 SSH Server에게 알린다.
5.SSH Server는 접속을 수락한다.

해당 Key와 정보들을 ~/.ssh 에 존재하며, 적절한 권한 설정이 요구된다.

[SSH Key 기반의 구성 -STEP 1.  SSH Key 생성과 권한 부여]
[whchoi@centos151 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/whchoi/.ssh/id_rsa):
/home/whchoi/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/whchoi/.ssh/id_rsa.
Your public key has been saved in /home/whchoi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256: whchoi@centos151
The key's randomart image is:
+---[RSA 2048]----+
|   o             |
|  . =            |
| . =             |
|. +. . E         |
| o... . S        |
|oo  . .. o       |
|*o.. + ** .      |
|B+.o= Bo+*       |
|.BBo.+*B=+o      |
+----[SHA256]-----+
# 보안강화를 위해서 passphrase를 구성할 수도 있다.

[whchoi@centos151 ~]$ chmod 700 ~/.ssh
[whchoi@centos151 ~]$ chomd 600 ~/.ssh/id_rsa
[whchoi@centos151 ~]$ chmod 600 ~/.ssh/authorized_keys

# 권한설정을 통해 적절한 권한을 부여한다.



[SSH Key 기반의 구성 -STEP 2  SSH Key 생성과 권한 부여]

[whchoi@centos151 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub whchoi@10.72.78.152
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/whchoi/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

# ssh-copy-id 명령을 통해 SSH Client의 Public Key를 SSH Server의 ~/.ssh/authorized_key 로 복사한다.
# scp로 복제할 경우에는 해당 파일을 직접 지정해야 한다.

[whchoi@centos152 ~]$ more ~/.ssh/authorized_keys
[whchoi@centos152 ~]$ more ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAWRei1ICtheyhUENg5jllABMDlLG6RCe3qOVb+swNH5uBN5j1Mip60UYvnfmHSw4WneNayQD2/aTUG
3HTuh9okyELp6rcQsjP0pqh4zZ/bIllN8tGWY8Ugk9RxbG6ZHYoAAN0zLZSmq4oQxvvFTToGm8K3sQvdnDPfT0v9OdFrEF8ZeSVH01B84nG/oGxsisdmp
y97UeQ5cawYpN5FEtMeTMq1mPABEDhP0h/bXnlW9gSLBhNLZkvau9PbV6uHr4IZdy4+6jPiay4NXuVV6e8fqw7NzpNPD2Lhu9LHCtgBelhZvMRpd4hDUV
QWGOvsAoe01zyQuPEpxirqlayjAMl whchoi@centos151
# 서버에 정상적으로 복제되었는지 확인한다.


[SSH Key 기반의 구성 -STEP 3  SSH 접속 인증 방식 설정]

[whchoi@centos151 ~]$  vim /etc/sshd_config
PasswordAuthentication no

# 패스워드 인증 방식을 disable 한다.
# 만약 설정하지 않으면, 첫번째로 SSH Key 인증 시도 후에 자동으로 패스워드 인증 방식을 찾는다.

[whchoi@centos151 ~]$  service sshd restart
# SSH daemon을 재구동 한다. 



[SSH Key 기반의 구성 -STEP 4 접속 시험]
[whchoi@centos151 ~]$ ssh whchoi@10.72.78.152
Last login: Tue Mar 19 01:18:51 2019 from 10.70.233.41

# 정상적으로 접속되는 것을 확인 할 수 있다.


[SSH Config 기반의 접속 관리]

특정 리눅스 서버 또는 맥 운영체제 기반의 클라이언트를 기반으로 SSH를 접속할 것이라면, SSH Config 설정을 통해서 간편하게 접속을 관리할 수 있다.
SSH Config 파일을 관리하여 다중 접속시 프로파일을 관리 할 수 있다.
아래 예제는 필자의 맥북에서 SSH Config를 구성한 것으로, 이것은 CentOS 리눅스에서도 동일하게 설정하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
~ $ more ~/.ssh/config
Host centos151
        User whchoi
        HostName 10.72.78.151
        Port 22
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
 
Host centos152
        User whchoi
        HostName 10.72.78.152
        Port 22
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
 
Host centos153
        User whchoi
        HostName 10.72.78.152
        Port 22
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
 
Host centrepo
        User whchoi
        HostName 10.72.78.253
        Port 22
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
cs


공지사항