[CentOS 6.5] SSH,TELNET, FTP 설치 및 운용

by 조쉬 posted Mar 11, 2017
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

SSH? TELNET? FTP?


1. 시큐어 셸(Secure Shell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용프로그램 또는 그 프로토콜을 가리킵니다. 기존의 rsh, rlogin, 텔넷등을 대체하기 위해 설계되었으며, 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공합니다. 암호화 기법을 사용하기 때문에, 통신이 노출 되더라도 암호화된 문자로 보이기 때문에 보안상으로 안전한 프로토콜 입니다. DEFAULT PORT = 22번 사용


2. 텔넷(TELNET) 은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜로, 위에 나온 SSH와 비슷한 역할을 하지만 SSH에 비해 상대적으로 보안이 취약합니다. SSH와 TELNET의 가장 큰차이는 데이터 전송 방식에 있는데 Telnet은 Byte 스트림 형식으로 데이터를 주고 받지만, SSH는 암호화하여 데이터를 주고 받는 차이가 있습니다. DEFAULT PORT = 23번 사용


3. 파일 전송 프로토콜(Fire Transfer Protocol, FTP)은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기위한 프로토콜 입니다. FTP는 서버의 파일을 바꾸거나 지울 수 있기 때문에 전송하기 앞서 사용자 이름과 암호를 묻는 인증 과정이 필요하며, FTP에서는 암호가 암호화 되지 않아 위험하기 때문에, 보안은 더욱 철저하게 하려면 SFTP, SCP 등 다른 방법을 사용하여 파일을 전송합니다. 




  SSH 설치 


CentOS 는 기본적으로 SSH 포트와 패키지가 설치되어 있습니다. grep 명령어로 확인 해보겠습니다.

*grep 왼편에 | 는 파이프라는 명칭으로 엔터키위에 \키 입니다.

openssh가 설치되어 있습니다.

[root@localhost ~] # rpm -qa | grep openssh-*

openssh-5.3p1-104.e16_6.1.x86_64

openssh-clients-5.3p1-104.e16_6.1.x86_64

openssh-askpass-5.3p1-104.e16_6.1.x86_64

openssh-server-5.3p1-104.e16_6.1.x86_64




다음은 22번포트 방화벽이 열려 있는지 확인합니다.

[root@localhost ~] # vim /etc/sysconfig/iptables




iptables 를 열면 아래 빨간 부분에 22번 포트가 열려 있음을 확인 할 수 있습니다.

다른 포트번호를 열어야 할 때 이 방화벽에 같은 방법으로 추가만 시켜주시면 됩니다.


# Ferewall cll configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT






chkconfig 을 사용하여 sshd on을 해주어 부팅 될때마다 데몬이 실행되게 하였습니다.

service 명령어로 sshd를 재시작 해줍니다.

[root@localhost ~] # chkconfig --level 2345  sshd on

[root@localhost ~] # service sshd start

[root@localhost ~] # service sshd restart

Stopping sshd:                                                                    [  OK  ]

Stopping sshd:                                                                    [  OK  ]





  Virtual Box 포트포워딩


Virtual Box 에 설치된 CentOS 에 외부에서 SSH를 통해 접속 하기 위해선 Virtual Box에서 네트워크 설정, 

즉 포트포워딩 설정을 해주어야 합니다.



먼저 현재 사용하는 가상머신을 오른쪽 클릭하고 설정 부분으로 들어갑니다.






네트워크 -> 어댑터 1 탭에 포트포워딩을 선택 합니다.





가장 오른쪽에 + 부분을 클릭하여 새룰을 추가 합니다. 현재 SSH 접속을 해야하니 이름은 SSH로 작성 하였고, 

포트번호는 22번 입니다.





호스트 IP 부분입니다. 자신의 Windows CMD 창을 열고 ipconfig 으로 자신의 IP를 찾아 써주면 됩니다.

각자의 인터넷 환경이 다르니 화면이 다를 수 있습니다.  

C:\Users\USER>ipconfig


Windows IP 구성

(...중략)


무선 LAN 어댑터 무선 네트워크 연결 4:


연결별 DNS 접미사. . . . :

링크-로컬 IPv6 주소 . . . . : fe80::bd00:876c:38b2:a427%17

IPv4 주소 . . . . . . . . . : 192.168.xxx.xx

서브넷 마스크 . . . . . . . : 255.255.255.0

기본 게이트웨이 . . . . . . : 192.168.150.1




게스트 IP 부분입니다. 리눅스 콘솔창에서 ifconfig (IP가 아닌 IF 입니다) 명령어를 입력

inet addr 부분에 아이피를 게스트 IP부분에 넣어주시면 됩니다.

[root@localhost ~] # ifconfig


eth0   Link encap:Ethernet  HWaddr 08:00:27:FA:AC:82

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fefa:ac82/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:624 errors:0 dropped:0 overruns:0 frame:0

          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:54876 (53.5 KiB)  TX bytes:44260 (43.2 KiB)




  SSH 접속


먼저 SSH를 이용한 외부 접속을 하려면 외부 접속을 위한 프로그램이 필요 합니다. 가장 흔히 쓰이는 putty 입니다.

https://bitbucket.org/daybreaker/iputty/downloads

putty 한글버전 URL 입니다. 접속하여서 다운드 받아 줍니다.





다운로드 받은 putty 파일 압축을 해제 한후 putty 프로그램을 실행 합니다.





putty가 켜지면 접속을 위한 정보를 작성 해야 합니다. 게스트 ip 작성, SSH 선택, 세션이름 작성 후 save, 

open을 눌러 SSH 연결을 합니다.





SSH로 처음 접속하면 호스트키가 맞지 않거나 없다면서 PuTTY Security Alert 이라는 잠재적인 보안 위반 경고 메시지가 뜹니다. '예' 버튼을 눌러 호스트키를 갱신시킵니다.





접속이 완료된 모습입니다.






  TELNET 설치 및 접속


TELNET 설치를 위해서는 rpm 또는 yum으로 설치가 가능합니다. 여기서는 yum을 이용해 

간단하게 설치하는 방법을 사용 합니다.

[root@localhost ~] # yum -y install telnet-server



....

Complete!




설치가 완료되었으면 vim 편집기를 이용해 설정파일을 수정해 준다.

[root@localhost ~] # vim /etc/xinetd.d/telnet




disable=yes 부분을 no로 수정 후 :wq 저장 후 종료 합니다. 

* telnet은 TCP를 이용하기 때문에 소켓 타입은 stream 

# default: on

# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags                    = REUSE
        socket_type        = stream
        wait                     = no
        user                    = root
        server                 = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable               = no
}




다음은 SSH 설정때와 동일하게 방화벽에 포트를 열어 주어야 합니다.

[root@localhost ~] # vim /etc/sysconfig/iptables




TELNET의 기본 포트는 23번 입니다. 22번 포트와 동일하게 23번 포트도 열어 줍니다.


# Ferewall cll configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT






23번 포트를 추가 시켰으니 iptables를 재시작 해 줍니다.

[root@localhost ~] # service iptables restart


iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter         [  OK  ]

iptables: 방화벽 규칙을 지웁니다:                                   [  OK  ]

iptables: 모듈을 언로드하는 중:                                       [  OK  ]

iptables: 방화벽 규칙 적용 중:                                         [  OK  ]




역시 SSH와 동일하게 Virtual Box에서 포트포워딩을 합니다.




다시 설정이 필요한 부분이 있는데 TELNET은 root 계정으로 접속이 불가능 하기 때문에 설정 변경을 통해 

root 접속을 가능하게 할 수 있습니다. root 계정이 접속이 가능하게 되면 보안에 취약하기 때문에 연습용이 아닐때는

잘 생각을 해야 하는 부분입니다.

[root@localhost ~] # vim /etc/securetty




설정 파일 가장 하단에 pts/0 부터 pts/9 까지 차례로 추가 시켜준 후 :wq 저장 후 종료 합니다.

[.....생략]

tty7

tty8

tty9

tty10

tty11

pts/0

pts/1

[....생략]

pts/9

d




모든 설치가 끝나고 telnet을 서비스에 등록 AND 실행 시켜 줍니다.

[root@localhost ~] # chkconfig --level 2345 telnt on

[root@localhost ~] # /etc/init.d/xinetd restart 또는 start





putty에 접속해서 이번엔 접속 방법을 Telent 포트번호 23번으로 텔넷을 통한 접속을 하겠습니다.





텔넷으로 접속 완료.







  윈도우7 TELNET 접속


putty 같은 별도의 외부 접속 프로그램 없이 윈도우 자체에 내장된 기능으로 TELNET을 사용 할 수가 있습니다.




제어판 -> 프로그램 제거 선택





Windows 기능 사용/ 사용 안함 선택





가장 하단에 텔넷 서버, 텔넷 클라이언트 두가지 모두 체크 해준 후 확인을 눌러 줍니다.





시작 -> cmd 입력 cmd 창으로 진입 합니다.





telnet IP주소 입력으로 텔넷에 접속 할 수 있습니다.





윈도우 7에서 텔넷 접속 완료






  FTP 설치 및 접속


파일질라 또는 FTP 프로그램을 이용한 FTP 설치를 시작 하겠습니다.




vsftpd 를 yum을 이용 설치 합니다.

[root@localhost ~] # yum -y install vsftpd

....

complete !





vsftpd 의 설정 변경을 위해 설정파일을 편집기를 이용하여 열어 줍니다.

[root@localhost ~] # vim /etc/vsftpd/vsftpd.conf




anonymous_enable 부분을 NO로 바꾸어 익명접속을 제한 합니다.

# Example config file /etc/vsftpd/vsftpd.conf

#

# The default compiled in settings are fairly paranoid. This sample file

# loosens things up a bit, to make the ftp daemon more usable.

# Please see vsftpd.conf.5 for all compiled in defaults.

#

# READ THIS: This example file is NOT an exhaustive list of vsftpd options.

# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's

# capabilities.

#

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

anonymous_enable=NO

#

# Uncomment this to allow local users to log in.






ftp도 역시 포트 오픈을 합니다.

[root@localhost ~] # vim /etc/sysconfig/iptables




ftp의 포트 20, 21번 포트를 열어 줍니다.


# Ferewall cll configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT






iptables를 재시작 합니다.

[root@localhost ~] # service iptables restart


iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter         [  OK  ]

iptables: 방화벽 규칙을 지웁니다:                                   [  OK  ]

iptables: 모듈을 언로드하는 중:                                       [  OK  ]

iptables: 방화벽 규칙 적용 중:                                         [  OK  ]




Virtual Box 포트 포워딩 설정





vsftpd 는 기본적으로 root 계정을 사용 할 수 없어 설정 변경을 해주어야 합니다. 연습용으로 사용 할 것이기 때문에 

root 계정 사용을 위해 설정을 변경 하겠습니다. 2개의 파일 모두 바꿔주어야 합니다.

[root@localhost ~] # vim /etc/vsftpd/user_list

[root@localhost ~] # vim /etc/vsftpd/ftpusers




root 부분 앞에 # 주석처리를 해주거나 삭제 하여 root 계정이 접속 할 수 있게 변경 해 줍니다.

:wq 저장 후 종료

user_list 파일

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

#root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody





여기서도 역시 root 계정 앞을 # 주석 처리 해 줍니다.

ftpusers 파일

# Users that are not allowed to login via ftp

#root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody






모든 설치가 끝나고 ftp를 서비스에 등록 AND 실행 시켜 줍니다.

[root@localhost ~] # chkconfig --level 2345 vsftpd on

[root@localhost ~] # service vsftpd start




이제 설치가 완료 되었으니 FTP 프로그램인 파일질라를 설치하겠습니다.

http://filezilla.ko.softonic.com/

파일질라 다운로드 URL로 접속하여 파일질라를 다운로드 -> 인스톨 합니다.






파일질라의 사용법도 크게 어렵지 않습니다. putty 와 같이 IP, 포트 를 맞춰주어 연결합니다.






접속 화면 입니다. 드래그앤드롭으로 간편히 서로 파일을 주고 받을 수 있습니다.






  FTP 접속 오류 발생 시



SELinux 관련 설정 변경

(SELinux 란 미 국가 보안국 (U.S. National Security Agency)리 오픈소스커뮤니티에 릴리즈한 Linux의 보안 강화 버전(코드 포함) )

[root@localhost ~] # getsebool -a | grep ftp


allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off




setsebool 명령어를 이용, 두 부분을 on 으로 바꿔준다.

[root@localhost ~] # setsebool -P allow_ftpd_full_access on

[root@localhost ~]# setsebool -P ftp_home_dir on


[root@localhost ~] # getsebool -a | grep ftp


allow_ftpd_anon_write --> off

allow_ftpd_full_access --> on

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> on

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off




ftp를 재시작 해 준다.

[root@localhost ~] # service vsftpd restart


vsftpd 종료 중:                                                      [  OK  ]

vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]





해결이 안될 시 파일질라 내의 설정을 변경 해 준다. FTP 전송 모드를 능동형으로 변경 후 확인