본문 바로가기

Linux/기타

Telnet & OpenSSH & VNC

서버는 크게 두가지 유형으로 실행되며 openssh 는 두 가지 방식 모두 가능하다. 1. Standalone 방식 - openssh 2. xinetd 방식 - openssh , telnet OpenSSH 와 telnet 의 차이점 o telnet 인증방식 : IP/PW 인증 데이터 전송방식 : client와 server 간에 data를 평문(plaintext) 으로 전송한다. 평문 전송의 단점 : 네트워크상에서 암호화 통신이 안되므로 네트워크 공격기법인 스니핑에 쉽게 노출될 수 있다. 보안상 취약하기 때문에 현재는 거의 사용되지 않는다. o openssh 인증방식 : IP/PW 인증, 공개키 인증 데이터 전송방식 : client와 server 간에 data를 암호문(ciphertext) 으로 전송한다. 암호문 전송의 장점 : 네트워크상에서 암호화 통신을 하므로 네트워크 공격기법인 스니핑 공격에 안전하다. 때문에 현재 거의 모든 서버가 ssh를 사용한다. ============================================================== TELNET-LAB> xinetd 데몬을 이용한 telnet 서버 설치하기. -- 설치순서 -- 1. telnet-server 패키지를 설치 2. telnet server 데몬을 실행하기 위한 설정파일을 수정 3. xinetd 재시작 4. telnet 사용자 생성 5. telnet 으로 접속 6. 보안문제점 확인 -- 설치순서 -- 1. telnet-server 패키지를 설치 # rpm -qa | grep telnet # yum search telnet # yum -y install telnet-server - 만약 yum 으로 설치가 안되면 아래 DVD를 이용해서 설치한다. - DVD를 넣고 마운트한 후에 xinetd, telnet-server 를 설치한다. # mount -t iso9660 -o ro /dev/cdrom /media/ # rpm -Uvh /media/CentOS/xinetd-2.3.14-16.el5.i386.rpm # rpm -Uvh /media/CentOS/telnet-server-0.17-39.el5.i386.rpm 2. telnet server 데몬을 실행하기 위한 설정파일 수정 - xinetd 데몬의 설정파일이 /etc/xinetd.conf 인데 그 안에 - includedir 지시자를 이용해서 /etc/xinetd.d 파일들을 몽땅 설정파일로 - 읽어들인다. # cd /etc/xinetd.d/ # vi telnet -- telnet -- service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no <-- yes를 no 로 수정!!! } -- telnet -- 3. xinetd 재시작 # /etc/init.d/xinetd restart # netstat -nltp | grep 23 <-- 23번 포트 (telnet) 확인 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 2161/xinetd # iptables -I INPUT -p tcp --dport 23 -j ACCEPT -m comment --comment "telnet-server" # iptables -nL 4. telnet 사용자 생성 # useradd linuxtest # passwd --stdin linuxtest 12345 5. telnet 으로 접속 # telnet localhost Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. CentOS release 5.8 (Final) Kernel 2.6.18-308.el5 on an i686 login: linuxtest Password: [linuxtest@localhost ~]$ id uid=501(linuxtest) gid=501(linuxtest) groups=501(linuxtest) 6. 보안문제점 확인 - telnet (암호통신이 안되므로 IP/PW가 노출된다.) pts/0# tcpdump -i lo -w telnet.pcap pts/1# telnet localhost Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. CentOS release 5.9 (Final) Kernel 2.6.18-348.el5 on an i686 login: linuxtest Password: Last login: Tue Jun 16 09:41:22 from localhost.localdomain [linuxtest@fw ~]$ wireshark 로 telnet.pcap 파일을 오픈해서 분석한다. !!! IP/PW 찾아볼 것 !!! - ssh (암호통신이 되므로 IP/PW가 노출이 안된다.) pts/0# tcpdump -i lo -w ssh.pcap pts/1# ssh linuxtest@localhost linuxtest@localhost's password: Last login: Tue Jun 16 09:43:06 2015 from localhost.localdomain [linuxtest@fw ~]$ wireshark 로 ssh.pcap 파일을 오픈해서 분석한다. !!! IP/PW 찾아볼 것 !!! ============================================================== ============================================================== SSH 서버의 문제가 있을때 확인해봐야 하는 것들 !!! 서버 : sshd를 설치하고 접속이 안되면 여러 상황이 있을 수 있지만 아래 !!! 내용들을 확인하는 것이 중요하다. !!! !!! 1. 방화벽에 의해서 IP or Port가 블럭되었는지 확인한다. ( iptables -nvL ) !!! 2. 데몬이 안뜰 수도 있다. ( netstat -nltp | grep ssh ) !!! 3. 서버의 포트가 일치하지 않을 수 있으므로 포트를 확인한다. ( netstat -nltp | grep ssh ) ============================================================== ============================================================== OPENSSH-LAB> standalone 데몬을 이용한 OpenSSH 서버 설치하기. 공식사이트 : http://www.openssl.org 5280670 Jun 12 15:30:51 2015 openssl-1.0.2c.tar.gz (MD5) (SHA1) (PGP sign) [LATEST] ################## ## openssl 설치 ## ################## - openssl 로 인증서를 생성한다. -- 설치 순서 -- 1. 관련 패키지/라이브러리 설치 2. openssl 소스 다운로드 3. openssl 압축해제 4. openssl 환경설정 5. openssl 컴파일 6. openssl 설치 7. openssl 세팅 및 확인 -- 설치 순서 -- 1. 관련 패키지/라이브러리 설치 - zlib-devel 패키지와 개발툴이 없다면 설치한다. # rpm -qa | grep zlib zlib-1.2.3-7.el5 zlib-devel-1.2.3-7.el5 # gcc # make # yum -y groupinstall "development tools" # yum -y install zlib-devel 2. openssl 소스다운로드 - 다운로드 받은 서버파일을 무결성을 체크한다. - md5sum 의 결과가 공식홈페이지에서 제공되는 md5 해쉬값과 다르면 - 파일이 변조된 것이므로 서버에서 설치하면 안된다. # mkdir openssh; cd openssh # wget http://openssl.org/source/openssl-1.0.2c.tar.gz # md5sum openssl-1.0.2c.tar.gz 3. openssl 압축해제 # tar xzf openssl-1.0.2c.tar.gz # cd openssl-1.0.2c.tar.gz 4. openssl 환경설정 # ./config \ --prefix=/usr/local/openssl \ --openssldir=/usr/local/openssl \ threads zlib shared 5. openssl 컴파일 # make # make test 6. openssl 설치 # make install 7. openssl 세팅 및 확인 # strings /etc/ld.so.cache | grep openssl libgnutls-openssl.so.13 /usr/lib/libgnutls-openssl.so.13 # vi /etc/ld.so.conf -- /etc/ld.so.conf -- /usr/local/openssl/lib/ -- /etc/ld.so.conf -- # ldconfig # strings /etc/ld.so.cache | grep openssl /usr/local/openssl/lib/libssl.so.1.0.0 /usr/local/openssl/lib/libssl.so libgnutls-openssl.so.13 /usr/lib/libgnutls-openssl.so.13 /usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/local/openssl/lib/libcrypto.so - openssl 버전 확인하기 # openssl OpenSSL> version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 OpenSSL> quit # /usr/local/openssl/bin/openssl OpenSSL> version OpenSSL> OpenSSL 1.0.2c 12 Jun 2015 OpenSSL> quit # openssl version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 # /usr/local/openssl/bin/openssl version OpenSSL 1.0.2c 12 Jun 2015 # PATH=/usr/local/openssl/bin:$PATH # openssl version OpenSSL 1.0.2c 12 Jun 2015 ################## ## openssh 설치 ## ################## !!! 항상 소스설치는 ./configure --help 와 README, INSTALL 참고해서 볼 것 !!! 공식사이트 : http://www.openssh.com OpenSSH 6.8 released March 18, 2015 최신버전 : openssh-6.8p1.tar.gz -- 설치 순서 -- 1. 이전 ssh 버전정보를 확인/삭제 2. 관련 라이브러리 설치 3. openssh 소스 다운로드 4. openssh 압축해제 5. openssh 환경설정 6. openssh 컴파일 7. openssh 설치 8. openssh 세팅 9. openssh 데몬 시작 10. openssh 접속테스트 -- 설치 순서 -- 1. 이전 ssh 버전정보를 확인/삭제 # rpm -qa | grep openssh openssh-4.3p2-82.el5 openssh-server-4.3p2-82.el5 openssh-clients-4.3p2-82.el5 # rpm -ql openssh openssh-server openssh-clients - 데몬종료 - 접속을 유지하면서 패키지가 삭제된다. - *** 주의 : rpm -e openssh openssh-server openssh-clients *** # /etc/init.d/sshd stop # yum -y remove `rpm -qa|grep openssh` - OpenSSH 의 설정디렉토리 (수동삭제) - 설정파일 디렉토리는 삭제가 안되므로 수동으로 삭제한다. # rm -rf /etc/ssh 2. 관련 라이브러리 설치 - rpm -qa | grep pam으로 검색해서 없으면 설치한다. # rpm -qa | grep pam # yum -y install pam-devel 3. openssh 소스 다운로드 - 여기서는 생략 # wget http://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-6.8p1.tar.gz 4. openssh 압축해제 # tar xzf openssh-6.8p1.tar.gz # cd openssh-6.8p1 5. openssh 환경설정 - 자신의 입맛에 맞게 환경을 설정한다. # vi version.h <-- 버전을 보안상 숨기고 싶다면 아래 파일을 수정한다 -- version.h -- #define SSH_VERSION "OpenSSH_6.8" -- version.h -- # ./configure \ --prefix=/usr/local/openssh \ --with-ssl-dir=/usr/local/openssl \ --with-privsep-user=sshd \ --with-zlib \ --with-tcp-wrappers \ --with-pam \ --with-md5-passwords : : checking OpenSSL header version... 1000203f (OpenSSL 1.0.2c 12 Jun 2015) checking OpenSSL library version... 1000203f (OpenSSL 1.0.2c 12 Jun 2015) : : OpenSSH has been configured with the following options: User binaries: /usr/local/openssh/bin System binaries: /usr/local/openssh/sbin Configuration files: /usr/local/openssh/etc Askpass program: /usr/local/openssh/libexec/ssh-askpass Manual pages: /usr/local/openssh/share/man/manX PID file: /var/run Privilege separation chroot path: /var/empty sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh/bin Manpage format: doc PAM support: yes OSF SIA support: no KerberosV support: no SELinux support: no Smartcard support: S/KEY support: no MD5 password support: yes libedit support: no Solaris process contract support: no Solaris project support: no IP address in $DISPLAY hack: no Translate v4 in v6 hack: yes BSD Auth support: no Random number source: OpenSSL internal ONLY Privsep sandbox style: rlimit Host: i686-pc-linux-gnu Compiler: gcc Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -std=gnu99 -fPIE Preprocessor flags: -I/usr/local/openssl/include Linker flags: -L/usr/local/openssl/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-all -pie Libraries: -lresolv -lcrypto -lrt -ldl -lutil -lz -lnsl -lcrypt +for sshd: -lpam PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail. Example PAM control files can be found in the contrib/ subdirectory 6. openssh 컴파일 - 소스를 컴파일한다. # make 7. openssh 설치 - 시스템에 설치한다. # make install 8. openssh 세팅 - openssh 의 소스 디렉토리에는 사용자가 자신의 시스템에 설정할 수 있도록 - 샘플 파일들을 contrib 디렉토리에 제공한다. # cd contrib/redhat # cp sshd.init /etc/init.d/sshd # cp sshd.pam /etc/pam.d/sshd # chkconfig --add sshd # chkconfig --list sshd sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ~~~~~~ # vi /etc/man.config - openssh 소스를 설치하면 관련 도움말 정보를 /usr/local/openssh/share/man/ - 디렉토리에 제공한다. 그러므로 man 페이지에서 이 디렉토리의 파일들을 - 오픈하기 위해서는 manpath 를 지정해야 한다. # ls /usr/local/openssh/share/man/ man1 man5 man8 -- /etc/man.config -- : : MANPATH /usr/local/openssh/share/man -- /etc/man.config -- - 실행파일들을 PATH가 지정된 디렉토리로 심볼릭 링크를 건다. # ln -s /usr/local/openssh/bin/* /usr/bin # ln -s /usr/local/openssh/libexec/* /usr/sbin # ln -s /usr/local/openssh/sbin/* /usr/sbin - 설정디렉토리를 심볼릭 링크를 건다. # ln -s /usr/local/openssh/etc /etc/ssh 9. openssh 데몬 시작 # /etc/init.d/sshd start 10. openssh 접속테스트 # nc localhost 22 SSH-2.0-OpenSSH_6.8 <-- 버전이 6.8의 버전이 나오면 성공 ==============================================================



'Linux > 기타' 카테고리의 다른 글

ssh 로 접속을 했더니 Warning 메세지가 나온다면 ?  (0) 2015.06.16
OpenSSH를 xinetd 서버로 구동하기  (0) 2015.06.16
vpopmail + cdb 설치  (0) 2015.06.15
ucspi-tcp 설치하기  (0) 2015.06.12
네임서버 세팅하기  (0) 2015.06.11