본문으로 바로가기

Day-27 SSH

category Linux 2017. 1. 19. 12:13

ntp서버와 동기화 확인
#ntpq -p

 

ntp 서버와 동기화만 하고싶을때 (클라이언트)
rdate -s time.bora.net

 

OpenSSH
- 보안에 취약한 텔넷을 대체하는 원격 제어 도구
- 네트워크 통신을 암호화하여 자료를 보호하고 강력한 사용자 인증기능을 제공
- TCP 22번 포트 사용

 

대칭 키 알고리즘 (Symmetric Key Encrytion Algorightms)
- 데이터의 암호화와 복호화에 사용되는 키가 동일한 알고리즘
- 이때 사용되는 키를 비밀 키 (Secret Key)라고 한다.
- 대표적으로 DES, 3DES, AED, SEED, RC4 등이 있다.
- 비밀키는 데이터 통신을 사용하는 송신자와 수신자만 공유해야 하며 공개 되어서는 안된다.

 
비대칭 키 알고리즘 (Asymmetric Key Encrytion Algorightms)
- 데이터의 암호화와 복호화에 사용되는 키가 서로 각각 다른 알고리즘이다.
- 즉, 암호화와 복호화에 사용되는 두개의 키가 필요한데, 이 키를 각각 공개 키(Public Key), 개인 키(Private Key)라고 한다.
- 공개 키 알고리즘이라고도 부르며, 대표적으로 RSA, DSA, DSS , Diffe-Hellman 등이 있다.
- 데이터를 공개키로 암호화하면 개인키로 복호화 해야하고, 데이터를 개인키로 암호화하면 공개키로 복호화 해야한다. 
- 공개키는 통신을 위해 누구에게나 공개가 가능하지만, 개인 키는 오직 키 생성자만이 안전하게 보관해야 한다.

 

OpenSSH 패키지에 포함된 프로그램의 종류
- 원격 기능을 지원하는 클라이언트 프로그램
         ssh, scp, sftp, sshfs
- 키 관리 프로그램
         ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen
- 서비스 제공 프로그램
         sshd, sftp-server, ssh-agent

 

1. OpenSSH (Secure SHell)

 

Server-A
(1) #yum install openssh openssh-server openssh-clients openssh-askpass
- OpenSSH 패키지 설치
openssh   : 서버와 클라이언트 모두에 필요한 필수 파일을 포함
openssh-askpass : OpenSSH 인증을 위해 X11에서 패스워드 입력을 지원하는 프로그램
openssh-clients : 서버와의 암호화된 연결을 하기위해 필요한 클라이언트 프로그램
openssh-server  : 서버 설정에 필요한 sshd 데몬을 포함
 
 
(2) #rpm -qa | grep openssh
openssh-5.3p1-118.1.el6_8.x86_64
openssh-server-5.3p1-118.1.el6_8.x86_64
openssh-clients-5.3p1-118.1.el6_8.x86_64
openssh-askpass-5.3p1-118.1.el6_8.x86_64

 

- rpm 명령어를 이용하여 패키지 설치 확인

 

(3) #ls /etc/ssh
- OpenSSH 패키지를 설치하면 설정 파일은 모두 이 디렉토리에 저장된다.

 

파일명                 설명

moduli                 Diffe-Hellman 키 교환에 사용되는 Diffe-Hellmandml 파라미터 값이 저장되어 있으며 안전한 전송 계층 동작을 위한 중요한 파일
*.key.pub             특정 알고리즘으로 암호화 되어있는 공개 키
*.key                    특정 알고리즘으로 암호화 되어있는 개인 키
ssh_config           ssh 클라이언트 설정에 필요한 파일
sshhd_config       ssh 서버 설정에 필요한 파일

 

(4) #ls -l /usr/sbin/sshd 
-rwxr-xr-x. 1 root root 571224 2016-05-12 13:52 /usr/sbin/sshd
- OpenSSH(ssh)데몬 파일 
 
(5) #ls -l /var/log/secure
 -rw------- 1 root root 1479 2017-01-17 09:03 /var/log/secure
- OpenSSH는 인증에 관련된 로그를 해당 파일에 저장하므로 인증 성공 및 실패에  대한 로그 확인 시 해당 파일을 확인 해야한다.
 
2. OpenSSH 서버 시작

(1) #service sshd start
- sshd 데몬 시작

 

(2) #chkconfig --list | grep sshd
- chkconfig 설정 확인
sshd            0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

 

(3) #service sshd status
- sshd 데몬 동작 확인
openssh-daemon (pid  2343)를 실행하고 있습니다.

 

(4) #ssh root@localhost
- 접속 테스트
- ssh [계정명]@[IP ADDR]
- 테스트를 위해서 명령어 ssh를 이용해 root가 localhost(Server-A)접속을 시도하면 연결을 계속 하겠냐는 메시지에 yes를 입력하고

  root 패스워드를 제공하면 접속이 이루어 진다.

- 이때 ssh 서버의 호스트키 (/etc/ssh/ssh_host_rsa_key.pub)가 클라이언트 사용자의 root의 /root/.ssh/know_hosts 파일에 저장되는데,

  이 키는  클라이언트가 서버를 인증하기 위해 사용된다.

 

 

 

(5) #ps -ef | grep sshd
- sshd 서버 데몬 (sshd) 프로세스 동작 확인
root      2268     1      0 15:49   ?        00:00:02 sshd: root@pts/0
root      2343     1      0 15:58   ?        00:00:00 /usr/sbin/sshd
root      2426  2343  0 16:17    ?        00:00:00 sshd: root@pts/1
root      2446  2428  0 16:19 pts/1     00:00:00 grep sshd

 

(6) #lsof -i tcp:22 (#yum -y install lsof) 
- SSH데몬이 사용하는 22번 포트를 명령어 lsof로 확인


COMMAND  PID USER   FD TYPE DEVICE SIZE/OFF NODE NAME
sshd            2268 root    3r  IPv4  13848      0t0  TCP 100 .100.100.110:ssh->100.100.100.1:49831 (ESTABLISHED)

                                                                                     (100.100.100.1은 일종의 VM의 게이트웨이로 생각하자)
sshd            2343 root    3u  IPv4  14149      0t0  TCP *:ssh (LISTEN)
sshd            2343 root    4u  IPv6  14151       0t0  TCP *:ssh (LISTEN)
ssh              2425 root    3r  IPv6  14358      0t0  TCP localhost:53717->localhost:ssh (ESTABLISHED)
sshd            2426 root    3r  IPv6  14359      0t0  TCP localhost:ssh->localhost:53717 (ESTABLISHED)

 

(7) #netstat -natlp | grep sshd
- netstat 명령어를 이용하여 sshd 데몬의 포트와 PID 확인 
tcp        0      0 0.0.0.0:22                   0.0.0.0:*                     LISTEN              2343/sshd          
tcp        0     80 100.100.100.110:22    100.100.100.1:49831    ESTABLISHED   2268/sshd          
tcp        0      0 :::22                           :::*                             LISTEN              2343/sshd          
tcp        0      0 ::1:22                         ::1:53717                     ESTABLISHED   2426/sshd 

 
3. OpenSSH 방화벽 설정

(1) #vi /etc/sysconfig/iptables
- 기본 적으로 ssh(22번)접속이 허용 되어 있다.

 

 

 
4. OpenSSH 서버 인증 설정
- SSH서버는 기본적으로 서버 접속 시 사용자의 정보를 요구하는 인증을 사용

 

OpenSSH서버가 제공하는 대표적인 인증 방법
- 패스워드 기반 인증
- 공개 키 기반 인증
- 호스트 기반 인증 - 사용자가 아닌 호스트 기반 인증은 안전하지 않다.
- kerberos 기반 인증 - 사용자 인증 서비스 
 
패스워드 기반 인증
- SSH서버가 제공하는 기본 인증 방법으로서 Telnet, FTP와 같이 시스템에
  존재하는 사용자와 /etc/shadow 파일에 저장된 패스워드를 이용하여 접속하는 방법
 
(1) #vi /etc/ssh/sshd_config  
         13번라인 포트 번호   13 #Port 22
         42 #PermitRootLogin yes  -->  42 PermitRootLogin no
         - root로 접속을 허용하지 않음(보안을 위해 root는 최소한의 개입이 요구된다.)
         64 #PasswordAuthentication yes -> 64 PasswordAuthentication yes
         - 패스워드 인증 허용
         65 #PermitEmptyPasswords no -> 65 PermitEmptyPasswords no
         - 패스워드 없이 인증을 시도할 경우 이를 허용하지 않음
 
(2) #service sshd restart
- 설정 적용을 위해 sshd 재시작

 

(3) #useradd ssh-user1
 #passwd ssh-user1  PW : 123
- SSH 접속용 계정 생성

 
Client-Linux

 

(1) #yum -y install openssh-clients 
  -SSH 클라이언트 프로그램 설치
 #rpm -qa | grep openssh-clients
  openssh-clients-5.3p1-118.1.el6_8.x86_64
  - 클라이언트 프로그램 설치 확인
 
(2) ssh [계정명]@[IP ADDR] 
 - 접속 테스트
 - #ssh ssh-user1@100.100.100.110
 

 

동일한 네트워크에 위치한 PC에서
Server-B에 SSH Server, CLinet 패키지를 모두 설정하여
암호 기반으로 접속할 수 있도록 설정

 

계정 : test1
암호 : 123123

 

양쪽 모두 서로의 서버에 접속이 가능한 지 확인 
 
VMware Server-B (Bridge) 설정
IP DHCP 받아온 후 동일한 네트워크에 위치한PC와 IP교환하여 진행

#ifconfig
IP ADDR : 192.168.3.X 
 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp

 

#IPADDR=100.100.100.120
#NETMASK=255.255.255.0
#GATEWAY=100.100.100.2
#DNS1=8.8.8.8
#DNS2=8.8.4.4 
 


1. 서버에 있는 파일을 Local로 복사할때
scp [계정명]@[아이피]:/[파일경로] [파일이복사될 경로]  
scp root@100.100.100.120:/practice/test /home

 

2. local 파일을 서버에게 전달할때
scp /home/scp_test root@100.100.100.120/practice/ 
 
    PC 1                        PC 2
생성할 파일  /home/testABC     /practice/test123 
 PC1이 PC2의 파일을 복사해 올때
#scp [계정명]@[아이피]:/practice/test123 /home
PC2가 PC1의 파일을 복사해 올때
#scp [계정명]@[아이피]:/practice/testABC /practice/

 

PC1이 PC2에게 파일을 전달할때
#scp /home/testABC [계정명]@[아이피]:/home/ 
PC2가 PC1에게 파일을 전달할때
#scp /practice/test123 [계정명]@[아이피]:/practice/ 
 
              /home/                          /practice/
PC1     testABC test123            test123
PC2    testABC                          test123 testABC

'Linux' 카테고리의 다른 글

Day-29 DHCP  (0) 2017.01.22
Day-28 공개키 기반 인증  (0) 2017.01.20
Day-26 NTP  (0) 2017.01.19
Day-25 Telnet, VNC, SSH  (0) 2017.01.18
Day-24 Network 관리 3  (0) 2017.01.18