SSH(Secure SHell)란?
SSH는 Secure SHell의 줄임말로 보안이 강화된 서버 원격 접속 및 제어 도구입니다. 기존에는 리눅스 사용자(Clinet)가 물리적으로 떨어진 리눅스 서버를 사용하기 위해서는 원격접속 도구인 텔넷(Telnet)을 사용했습니다. 

서버를 관리하면서 항상 서버 컴퓨터 옆에서 관리를 할 수는 없는 노릇입니다. 서버 관리자도 사람이기에 휴가도 가야하고, 출장도 갈 수 있으며, 혹은 멀리 떨어진 고객사의 서버에 긴급하게 접근해야 하는 경우도 있을 수 있기 때문입니다.


그러나 텔넷의 치명적인 단점은 텔넷 클라이언트를 통해 서버를 조작할 때 주고 받는 데이터가 암호화 되지 않는다는 점이었고, 이는 악의적인 해커(크래커)들이 통신중인 패킷을 가로채는 패킷 스니핑의 대상이 되기에 충분한 조건이 되었습니다. 서버에는 기업의 큰 자산이 되는 매우 중요한 데이터들이 저장되는 곳이기에 더이상 텔넷은 원격 관리 툴로 이용될 수 없었습니다.



그래서 등장한 것이 SSH입니다. SSH는 텔넷과 마찬가지로 원격지에서 서버에 접속하고 관리할 수 있는 도구이지만 통신을 할때 암호화된 상태로 데이터를 주고 받으므로 보안에 더욱 뛰어나다고 할 수 있습니다.


본격적으로 SSH 서버 설치 방법을 알아보도록 하겠습니다. 포스팅 아래의 순서대로 쭉 따라가면 되고, RHEL(대표적으로 CentOS) 계열 리눅스와 데비안 계열(대표적으로 우분투) 리눅스를 기준으로 설명해 두었습니다.




SSH 서버 설치 되어있는지 확인
자신의 리눅스 서버에 SSH 서버가 설치되어 있는지 확인합니다. CentOS7의 경우는 기본적으로 SSH서버가 설치됩니다.


RHEL(RedHat, CentOS)
패키지가 설치되어 있는지 확인합니다.
root@centosa:~# rpm -qa | grep openssh-server                                                    
cs

 


혹시 모르니 ssh 서버 데몬인 sshd가 동작중인지도 확인합니다.
root@centosa:~# systemctl status sshd                                                            
cs


Ubuntu(우분투)
패키지가 설치되어 있는지 확인합니다.
root@ubuntua:~# dpkg --get-selections | grep ssh                                                
cs

혹시 모르니 ssh 서버 데몬인 sshd가 동작중인지도 확인합니다.
root@ubuntua:~# service ssh status                                                                
cs


 



 

SSH 서버 설치
SSH 서버가 아직 설치되지 않았다면 설치합니다.
RHEL(RedHat, CentOS)
yum으로 openssh-server를 설치합니다.
root@centosa:~# yum -y install openssh-server                                            
cs


Ubuntu(우분투)
apt-get으로 openssh-server 를 설치합니다.
root@ubuntua:~# apt-get install openssh-server                                                
cs



 

SSH 서버 데몬 시작
기본적으로 설치하면 자동으로 데몬(서비스)가 시작되지만 서비스를 직접 시작하는 경우 다음과 같이 실행합니다.
RHEL(RedHat, CentOS)
service 또는 systemctl 명령어로 서비스 시작
root@centosa:~# systemctl start sshd
root@centosa:~# systemctl enable sshd                                                        
cs


Ubuntu(우분투)
service restart를 통해 ssh 서비스가 안떠있는 경우 시작하고 떠있는 경우에는 그대로 둡니다.
root@ubuntua:~# service ssh restart                                                            
cs



 

SSH 서버데몬(서비스) 잘 동작중인지 확인
이과정은 생략해도 관계없지만 이후에도 SSH 서버가 동작중인지 점검할때 사용할 수 있습니다.

RHEL(RedHat, CentOS)
ssh 서비스가 제대로 작동하는지 확인합니다.
root@centosa:~# service sshd status                                                            
cs

Ubuntu(우분투)
ssh 서비스가 제대로 작동하는지 확인합니다.
root@ubuntua:~# service ssh status                                                        
cs



 

SSH 서버(포트) 동작 여부 확인
네트워크 상태 확인을 통해 SSH 서버 데몬이 사용하는 22번 포트 동작 여부를 확인합니다.

RHEL(RedHat, CentOS), Ubuntu(우분투) 공통
추가적으로 SSH 서비스 포트인 tcp 22번 포트가 잘 동작중인지 확인합니다.
root@ubuntua:~# netstat -ntlp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      10920/sshd      
tcp6       0      0 :::22                   :::*                    LISTEN      10920/sshd
cs




 

SSH 포트(Port) 방화벽 설정에 추가
SSH는 설정을 통해 변경하지 않은 이상 기본적으로 TCP Port 22를 사용합니다. 만약 나중에 설정을 통해서 SSH 포트를 변경하는 경우 그에 따른 방화벽 설정을 추가해 주어야 합니다.

RHEL(RedHat, CentOS)
root@centosa:~# firewall-cmd --permanent --zone=public --add-port=22/tcp                    
root@centosa:~# firewall-cmd --reload
root@centosa:~# systemctl restart firewalld.service
cs

Ubuntu(우분투)
root@ubuntua:~# ufw allow 22/tcp                                                            
cs





 

SSH 서버 설정
SSH 서버 설정은 /etc/ssh/sshd_config 파일을 통해 할 수 있습니다. 설정은 RHEL(RedHat, CentOS), Ubuntu(우분투) 모두 공통입니다. 설정을 변경한 후에는 SSH 서버 데몬을 재시작 해주어야 합니다.
root@ubuntua:~# vim /etc/ssh/sshd_config                                                    
cs


기본 사용 포트 변경하기
Port 속성의 값을 변경합니다. 포트를 변경한 후에는 해당 포트에 대한 방화벽 설정을 열어주어야 합니다.
Port 22                                                                                    
cs


root 계정 접속 허용하기
루트 계정 로그인을 허용하려면 yes로 변경합니다.
PermitRootLogin yes                                                                            
cs


접속 허용 대상 설정하기
기본적으로 ListenAddress 설정은 주석처리 되어있고 이경우 기본값을 0.0.0.0으로 모든 네트워크에서의 접속을 허용합니다.
#ListenAddress ::
#ListenAddress 0.0.0.0                                                                        
cs


SSH 프로토콜 설정
SSH 프로토콜 1을 사용할지 2를 사용할지 지정합니다. 1은 보안상 이슈로 사용하지 않고 기본값은 2입니다.
Protocol 2                                                                                    
cs


암호화 방식에 따른 호스트키 지정설정
암호화 방식에 따른 호스트키를 지정합니다. 호스트키는 공개키 인증시 호스트를 구분할때 사용되는 공개키입니다.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key                                                        
cs


권한 분리 설정
권한을 분리할지에 대한 여부입니다. 기본값은 yes입니다.
UsePrivilegeSeparation yes                                                                    
cs


SSH 서버 로그 설정
SSH 서버의 syslog 로그레벨 설정으로 기본은 INFO 레벨입니다.
# Logging
SyslogFacility AUTH
LogLevel INFO                                                                                
cs


그 밖의 설정들
LoginGraceTime 120    #로그인 제한시간입니다. 120초동안 로그인 하지 않으면 세션 연결이 끊어집니다.
StrictModes yes       #로그인을 허용하기 전에 사용자 홈디렉터리에 대한 권한을 ssh 서버 데몬이 확인할지의 여부입니다.
RSAAuthentication yes #SSH 프로토콜 1에서 RSA 인증 사용 여부 옵션 기본값은 yes입니다.
PubkeyAuthentication yes #공개키 인증을 사용하는 옵션입니다.
AuthorizedKeysFile     %h/.ssh/authorized_keys #공개키 인증을 사용할 때 공개키 저장 위치입니다. %h는 사용자 홈디렉터리. 기본으로는 주석처리입니다.
IgnoreRhosts yes      #호스크 기반 인증에 사용하는  rhosts 파일들을 무시할이 여부입니다.
RhostsRSAAuthentication no #rhosts에 지정한 호스트에 대한 인증 여부입니다.
HostbasedAuthentication no #호스트 기반 인증을 허용할지 여부입니다.
PermitEmptyPasswords no    #패스워드 인증에서 비어있는 패스워드를 허용할지 여부입니다.
PasswordAuthentication yes #패스워드 인증을 사용할지 여부입니다.
11Forwarding yes           #X윈도 시스템 포워딩을 허용할지 여부입니다.
cs


설정 변경후 서비스 재시작
root@ubuntua:~# service ssh restart #우분투
root@centosa:~# service sshd restart #CentOS                                                
cs

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,