[25] vnc(1)

|


 2014.12.10



[복습1]


수엽용 VMware 압축 새로 1개 더 풀기


기존 서버

/tmp/testfile

root 권한 막혀있음

samadal 계정


새 서버

/test/ssh /test/scp /test/sftp

root 권한 막기

samadal 계정 삭제

test 계정 생성


새 서버에 기존 서버의 testfile 을 각각 디렉터리에 넣기.



*

single 모드로 루트 진입

inittab 으로 GUI 진입, ip설정

samadal 삭제, test 생성

root가 ssh 접근 못하도록 생성

putty 통해 test로 접속

su - 통해 root 로 로그인하여 /test/ssh /test/scp /test/sftp 생성

권한문제 해결 위해 # chmod -R o+r /test/




[ Client 가 받아오기 ]


1) ssh

[test@samadal ~]$ ssh samadal@192.168.1.135

[samadal@samadal ~]$ scp /tmp/testfile test@192.168.1.136:/test/ssh

[samadal@samadal ~]$ logout


2) scp

[test@samadal ~]$ scp samadal@192.168.1.135:/tmp/testfile /test/scp/


3) sftp

[test@samadal ~]$ cd /test/sftp

[test@samadal sftp]$ sftp samadal@192.168.1.135

sftp> cd /tmp

sftp> get testfile

   (= sftp> get testfile /test/sftp) - 윈도우는 수신측 경로 지정이 안되지만 여긴 된다.


=> Server 에서 주는 것도 비슷.




[복습2]


ssh 관련 모든 설정 초기화

samadal 관련 모든 정보 삭제 후 아래와 같이 samadal 계정 생성


-작업-

$HOME : /export/home

shell : ksh

skel : /skelsam

uid : 1200

gid : samg(1200)

comment : tiger

auto creating directory : public_html

auto creating file : jal_jom_haeyo


위와 같이 설정한 후 samadal 계정이 정상 로그인 되는지 확인


# vi /etc/ssh/sshd_conf


Root 로그인 관련 사항 주석처리

배너 사항 주석 처리 (<= /backup/ 에 백업해 둔것을 복사해도 됨)

새로운 putty 창으로 root로 로그인


samadal 계정 삭제

# userdel -r samadal


새로운 skelsam 디렉터리 생성, 복사, 추가 파일 생성

# mkdir /skelsam

# cp /etc/skel/.* /skelsam

# cp -r /etc/skel/.gnome2 /etc/skel/.mozilla /skelsam

# mkdir /skelsam/public_html

# touch /skelsam/jal_jom_haeyo


samadal home 디렉터리 생성 및 samq 그룹을 1200 GID 로 생성

# mkdir -p /export/home

# groupadd -g 1200 samg


대망의 useradd

# useradd -d /export/home/samadal -s bin/ksh -m -k /skelsam -u 1200 -g samg -c tiger samadal

# passwd samadal





1. vnc


vnc : Virtual Network Computing 의 약자로서 리모트에 있는 시스템에 원격으로 접속하여 관리할 수 있는 프로그램

원래 AT&T의 프로젝트였지만 지금은 http://www.realvnc.co 에서 개발이 진행되고 있음

오픈 소스인 VNC는 윈도우 기반의 터미널 서비스와 유사한 기능을 가진 프로그램이지만 플랫폼을 가리지 않는다는 특징이 있다.




1) vnc 특징 및 장점


설치가 간편하며 특별한 설정 없이 이용 가능

원격 접속이 아닌 내 앞에 시스템이 있는 것과 같은 해상도 제공

대부분의 운영체제에서 사용이 가능




2) vnc 설치


dvd 마운트


# rpm -ivh tigervnc-1.1.0-16.el6.i686.rpm

        클라이언트용

# rpm -ivh tigervnc-server-1.1.0-16.el6.i686.rpm

        서버용




3) vcn 설정


# vncserver

최초 실행 시 패스워드 설정

vncserver 실행 때마다 섹션번호가 1개씩 늘어난다.


# ll /root/.vnc/

합계 16

-rw------- 1 root root    8 2014-12-10 21:02 passwd

-rw-r--r-- 1 root root 2776 2014-12-10 21:03 samadal.madalgyo:1.log

                                                                                                   ---- ---

                                                                                           섹션번호 로그기록

-rw-r--r-- 1 root root    6 2014-12-10 21:03 samadal.madalgyo:1.pid

                                                                                                      ---

                                                                                 실행되는 프로그램의 PID 정보

-rwxr-xr-x 1 root root  654 2014-12-10 21:03 xstartup

=> 환경설정 실행 파일



# vncpasswd

패스워드 분실 시 사용



원격접속 - GUI 환경에서..

# vncviewer 192.168.1.142:2

                 => 접속하려는ip:최근의 섹션번호




[문제]


윈도우에서 VNC-Viewer 으로 접속하려 했으나 실패, 그 원인 해결하시오



접속할 섹션번호가 사용할 프로그램의 PID를 안 후 그에 해당하는 포트를 열어줘야 한다.

# cat /root/.vnc/*.pid 에서 접속할 섹션번호의 PID 확인


# netstal -lntup | grep vnc

위 명령어로 vnc 에서 사용하는 프로그램의 포트 확인 후


# system-config-firewall

여기 접속하여 해당 포트들을 열어주면 된다. 5900번대와 6000번대, 2개가 발견 되지만 지금은 일단 5900번대만 열어도 된다.


하지만 깜빡거리면서 안된다..?

일단 Xvnc 관련 것 죽이고 디렉터리 재생성 위해 지운다.

# killall -9 Xvnc

# rm -rf /root/.vnc/


vncserver의 설정파일을 연 뒤 18, 19를 복사해서 아래처럼 해본다.


# vi /etc/sysconfig/vncservers

     18 # VNCSERVERS="2:myusername"

     19 # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

     20

     21 VNCSERVERS="1:root"

     22 VNCSERVERARGS[1]="-geometry 800x600"


# /etc/rc.d/init.d/vncserver restart


실패한다면 아래 명령어 통해 패스워드 설정.


# vncpasswd

# rm -rf /tmp/.X*

통해서 해결되기도 함. 해결 완료 후에는 항상 리스타트(# /etc/rc.d/init.d/vncserver restart) 해야함

자세한 기타 설정은 다음 시간에 계속.




And


[24] openSSH, system-config-firewall, scp, sftp

|


- 2014.12.09




1. openSSH


시스템을 침입하거나 네트워크를 통해 전송되는 패킷을 가로채는(Sniffing) 기술은 날로 증가하고 있으며 그 발전속도 또한 매우 빠르다.

리모트 시스템에 접속 시 편리함을 이유로 rlogin, rsh, telnet과 같은 프로그램을 많이 이용한다. 하지만 이러한 프로그램들은 데이터 전송시 평문으로 데이터들이 전송된다는 큰 단점이 있다. 이러한 문제점을 보완하기 위한 서비스가 SSH(Secrue Shell)이다.



1) SSH (Secure Shell)


SSH 서비스는 패킷이 암호화 되어 전송되기 때문에 Telnet과 같은 비 암호화 프로그램들을 대체하여 사용할 수 있으며, 또 패킷을 암호화시켜 전송하기 때문에 제 3자에 의해서 패킷이 도청(Sniffing)된다고 하더라도 암호화된 패킷을 해독할 수 있는 해독키가 없으므로 내용을 파악 하는 것은 매우 어렵다.




[실습]


DVD1 마운트 하여 openssh* PKG 설치

-> 설치되어 있음, CentOS 는 기본적으로 SSH 를 사용한다.


ssh 설정 파일 백업 후 진행

# cp /etc/ssh/sshd_config /backup/


# vi /etc/ssh/sshd_config

     12

     13 #Port 22

     14 #AddressFamily any

     15 #ListenAddress 0.0.0.0


13번 주석 삭제 후 포트 번호 바꾸면 SSH 접속 포트 변경 가능.


# /etc/rc.d/init.d/sshd restart

sshd 를 정지 중:                                           [  OK  ]

sshd (을)를 시작 중:                                       [  OK  ]


# netstat -lntup | grep sshd

tcp        0      0    0.0.0.0:2222                0.0.0.0:*                   LISTEN      2739/sshd

tcp        0      0    :::2222                            :::*                        LISTEN      2739/sshd


2222번으로 바뀐것 확인. 하지만 푸티로 다시 접속이 되지 않는다. 바로 방화벽에서 막고 있기 때문.



네트워크 신호는 아래의 단계를 거쳐(아래에서 위로) 접속된다.

우리는 port 까진 설정 했지만 방화벽은 아직 열지 않은 것이다.


OS(방화벽)

port

IP

MAC

전기


# system-config-firewall


사용자 설정 - 다음 - 다음 - eth0 꺼주고 다시 이전으로 들어와

2222 포트, tcp 프로토콜 추가 한 뒤 종료한다.


# vi /etc/ssh/sshd_config

     13 Port 2222

     14 #AddressFamily any

     15 #ListenAddress 0.0.0.0

     16 ListenAddress 192.168.1.134

     17 #ListenAddress ::


15번 줄을 16번 줄에 백업 시킨 후 현재 서버의 ip를 입력한다.

그리고 CentOS의 ip를 변경 후 변경된 ip로 putty를 접속하면 실패한다.

ListenAddress 는 접속하는 클라이언트의 ip 가 아니라 서버의 ip 이다.

시스템에 여러 ip가 존재 할 경우 서비스할 특정 ip를 지정하는 기능이다.


     21 # activation of protocol 1

     22 Protocol 2


22번 줄의 SSH 서비스 시 이용할 버전을 선택하는 것으로 보안상의 이유로 Protocol2 을 사용한다.


     30 # Lifetime and size of ephemeral version 1 server key

     31 #KeyRegenerationInterval 1h

     32 #ServerKeyBits 1024


31번 줄 : 자동으로 생성된 키의 유효시간 지정

32번 줄 : 서버의 암호키 생성시 사용하는 bit 수 지정, 최소값은 512.


     42 #LoginGraceTime 2m

     43 #PermitRootLogin yes

     44 PermitRootLogin no

     45 #StrictModes yes


42번 줄 : 로그인 안하고 대기중인 시간

43번 줄 : (44번으로 백업 해놓음) 루트 권한 접속 금지

=> 루트의 다이렉트 접속 금지, 서버 구축 시 2번째로 해야 할 보안 사항. (1번째는 grub 암호 설정)

이렇게 되면 일반 사용자로 로그인, su - 로 관리자 권한 얻어야 한다.


     45 #StrictModes yes

     46 #MaxAuthTries 6

     47 #MaxSessions 10


46번 줄 : 시도 6번


    130 # no default banner path

    131 #Banner none

    132


131번 줄 : 배너 설정. ex) /ban/a 처럼 디렉터리 형식으로 문서 파일을 지정한다.




[ssh 접속 방법]


1) ssh servier_ip

        접속 되어 있는 계정으로 접속

2) ssh -l 계정명 server_ip

        3) 과 같음

3) ssh 계정명@server_ip


기본적으로 Windows 에서는 기본적으로 SSH를 제공하지 않는다.

따라서 무료인 PuTTY 나 유료인 SecureCRT 를 많이 쓴다.





2. scp


scp(Secure Copy) : 원격지의 데이터 복사하기


scp [-op] [s] [s] ... [t]


ex) p155

host:10, /tmp/A

host:20, /test/B


1) # scp 192.168.1.10:/tmp/A /test/

=> # scp samadal@192.168.1.10:/tmp/A /test/


2) # scp /tmp/A 192.168.1.20:/test/

=> # scp /tmp/A samadal@192.168.1.20:/test/



1) 의 경우는 root(나)가 samadal 계정으로 접속하여 복사해오는 것. 성공

=> download의 개념

# scp samadal@192.168.1.10:/tmp/A /test/

         rwx------                   rwxrwxrwt  rwxr-xr-x

             1                                            2   43


2) 의 경우는 samadal 정으로 로그인된 것으로 /test/ 에다 /tmp/A 를 복사하는 것.

이 경우에는 이미 /test/A 가 있기 때문에 덮어쓸 때에 /test/A 파일을 덮어 쓸 권한이 없어 실패.

하지만 chmod 646 /test/A 처리를 한 뒤면 samadal 계정도 해당 파일에 대한 w 권한이 있기 때문에 성공한다.

만약 /test/A 파일이 존재하지 않았다면 /test/ 디렉터리에 o+w 권한이 필요.

=> upload의 개념

# scp /tmp/A samadal@192.168.1.20:/test/

        rwxrwxrwt      rwx------                 rwxr-xr-x

            1                    2                                   43





3. sftp


sftp : Secure FTP

일반적인 FTP 서비스는 암호화된 통신을 하지 않으므로 서비스 이용 시 안정성을 보장 받지 못한다.

sftp 서비스는 SSH 서비스와 함께 동작하는 서비스로, 데이터 전송 시 암호화된 데이터로 안정성을 보장받을 수 있다.



[명령어]


1) sftp server_ip  : 현재 자신의 계정으로 접속

2) sftp 계정명@servier_ip



[사용법]


1) 작업하려는 디렉터리로 이동

2) put, get 으로 업로드 및 다운로드 진행

3) 종료는 quit, exit, Ctrl+Z 등 다양한 방법으로 가능




[문제]


(host:10)

/tmp/testfile 을 아래 3개의 디렉터리명의 방법으로 각각 복사.


(host:20)

1) /test/ssh/

2) /test/sftp/

3) /test/scp/



# chmod -R o+w /test/


1)

# ssh samadal@192.168.1.134

[samadal@samadal ~]$ scp samadal@192.168.1.134:/tmp/testfile /test/ssh/


2)

# cd /tmp/

# sftp samadal@192.168.1.134

sftp> cd /test/sftp

sftp> put testfile


3)

# scp /tmp/testfile samadal@192.168.1.134:/test/scp




'Study > CentOS' 카테고리의 다른 글

[26] vnc(2), vnc with ssh, ftp  (0) 2015.03.28
[25] vnc(1)  (0) 2015.03.28
[23] xinetd, telnet, krb5-telnet  (0) 2015.03.28
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig  (0) 2015.03.28
[21] 이론 - ip, subnetmask, prefix  (0) 2015.03.28
And


[23] xinetd, telnet, krb5-telnet

|


- 2014.12.08




1. xinetd


inet 서비스 데몬은 네트워크 슈퍼 데몬이라고 부른다. 이 방식은 inet 서버가 네트워크 관련 작업을 대리하도록 한다.

즉 네트워크 접속이 정상적으로 이루어진 뒤에는, 실제 서비스를 하는 프로그램에게 넘겨준다.

ex) 놀이공원 관객 수를 조절하는 매표소 역할



1) 장점


개발자의 경우 inet 규격에 맞게만 프로그래밍을 하면 socket 네트워크에 관련된 부분은 만들지 않아도 된다.

일반 사용자의 경우 관리하기 편하고 서비스를 사용하지 않을 때는 자원을 아낄 수 있다.



2) 단점


inet 서비스가 특정 서버 프로그램 대신 네트워크 접속을 만들고 나중에 프로그램을 실행시켜주기 때문에 약간의 시간차가 발생할 수 있다.


* inet은 취약점이 많아 현재 사용되지 않고 있으며 이 후 확장된 버전인 xinetd를 사용한다.



3) 서비스 설정


# service [데몬명] start/stop/restart

=> Linux  전용 명령어


# /etc/rc.d/init.d/데몬명 start/stop/restart

= Linux, Unix, Solaris 호환 명령어




* 데몬

원본 서비스를 구동시키기 위해 중간에서 활동하는 역할





2. telnet


[실습]


dvd1 vmware 넣고 dvd1을 마운트 한다.

Packages 에서 telnet* PKG 설치


# mkdir /dvd1/

# mount /dev/sr0 /dvd1

mount: block device /dev/sr0 is write-protected, mounting read-only

# cd /dvd1/Packages/

# ll |grep telnet

-r--r--r-- 2 root root    58120 2014-07-10 17:29 telnet-0.17-48.el6.i686.rpm

-r--r--r-- 2 root root    37384 2014-07-10 17:29 telnet-server-0.17-48.el6.i686.rpm


# rpm -ivh xinetd-2.3.14-39.el6_4.i686.rpm

# rpm -ivh telnet-0.17-48.el6.i686.rpm

# rpm -ivh telnet-server-0.17-48.el6.i686.rpm


설치 완료된 것 확인

# rpm -qa |grep telnet

telnet-server-0.17-48.el6.i686

telnet-0.17-48.el6.i686



텔넷 접속 위해 콘솔창 cmd 에서 telnet [linux_ip] 로 접속하려 했으나 23번 포트 거부당함


리눅스 안에 23번 포트 되는지 알아보려 했으나


# netstat -lntup | grep 23

#


아무것도 없다.

슈퍼데몬인 xinetd 서비스 시작 하자.


# /etc/rc.d/init.d/xinetd start

xinetd (을)를 시작 중:                                     [  OK  ]


새로 시작했지만 cmd 콘솔창에서의 접속 실패.

# netstat -lntup | grep xinetd

#


확인 해보니 여전히 xinetd 이 구동중이 아니다.

환경 설정 확인해보자.

보통 관리자용 명령어 및 중요 파일은 /etc/ 에 있으니 확인해보자.


# ll /etc/xinetd.d

합계 52

-rw-------  1 root root 1157 2013-10-08 02:34 chargen-dgram

-rw-------  1 root root 1159 2013-10-08 02:34 chargen-stream

-rw-------  1 root root 1157 2013-10-08 02:34 daytime-dgram

-rw-------  1 root root 1159 2013-10-08 02:34 daytime-stream

-rw-------  1 root root 1157 2013-10-08 02:34 discard-dgram

-rw-------  1 root root 1159 2013-10-08 02:34 discard-stream

-rw-------  1 root root 1148 2013-10-08 02:34 echo-dgram

-rw-------  1 root root 1150 2013-10-08 02:34 echo-stream

-rw-r--r--. 1 root root  332 2014-03-28 19:54 rsync

-rw-------  1 root root 1212 2013-10-08 02:34 tcpmux-server

-rw-r--r--  1 root root  305 2014-05-05 20:22 telnet

-rw-------  1 root root 1149 2013-10-08 02:34 time-dgram

-rw-------  1 root root 1150 2013-10-08 02:34 time-stream


텔넷 관련 문서 있다. 확인해보자.

# vi /etc/xinetd.d/telnet


flags           : 소켓이 작동될 때 사용하는 정보

                = REUSE : 패킷 정보를 재사용하지 않도록 설정

                        (프로그램 종료 후 다시 실행 시 로그인 안됨)

socket_type     : telnet 서비스의 소켓 적용 정보

                = stream : tcp 소켓을 사용 (기본값)

                = dgram : udp 소켓을 사용

wait            : 대기 시간을 제공할 것인지의 여부

                = no : 접속 시 프로세스를 추가하여 제공 (기본값)

                        (여러명 접속 가능)

                = yes : 1개의 프로세스만 제공하여 1개만 연결 가능

                        (한버에 1명만 접속)

user            = root : 서비스를 시작하는 권한자 (기본값)

server          = /usr/sbin/in.telnetd : 서비스를 처리할 프로그램의 위치

                              (실행파일 명)

log_on_failure  += USERID

                : 로그인 실패에 대한 기록에서 USERID 부분을 추가로 기록

disable         = yes : 서비스를 제공하지 않을 것인지 여부 (기본값)

                   = no : 서비스 사용 할 것이다.


마지막 disable 가 yes로 되어 있어서 접속이 안되었다. no 로 변경


# /etc/rc.d/init.d/xinetd restart

xinetd 를 정지 중:                                         [  OK  ]

xinetd (을)를 시작 중:                                     [  OK  ]

# netstat -lntup | grep xinetd

tcp        0      0 :::23                       :::*                        LISTEN      30284/xinetd


작동 되는 것 확인 후 텔넷 접속 했지만 root 로는 접속 실패. samadal 로는 접속 성공

=> 보안이 약하기 때문에 root 접속 막았다고 한다.

하지만 텔넷은 패킷 탈취가 쉽기 때문에 사용하지 않는 것이 좋다.

실제 패킷 모니터링 프로그램인 WireShark 를 통해 보면 id 및 pw 전송이 그대로 노출되는 것 확인 가능하다.

이에 리눅스에서 자체적으로 보안을 강화시킨 krb5-telnet 이 있다.

물론 이 역시 보안이 많이 취약하여 사용하지 않길 권하지만 이와 연동되는 프로그램이 많아 한번 설치 해보려 한다.




[실습]


기존에 설치한 telnet* PKG 삭제 후 krb5* PKG 설치


# rpm -e telnet

# rpm -ed telnet-server

경고: /etc/xinetd.d/telnet(이)가 /etc/xinetd.d/telnet.rpmsave(으)로 저장되었습니다

=> 변경 된 환경설정이 있다면 자동으로 백업한다. 필요 없다면 삭제 해도 무방.


역시나 환경설정 들어가서 disable 항목을 변경해줘야 한다.

# vi /etc/xinetd.d/krb5-telnet


재시작 하여 텔넷 접속

# /etc/rc.d/init.d/xinetd restart

xinetd 를 정지 중:                                         [  OK  ]

xinetd (을)를 시작 중:                                     [  OK  ]


이제 cmd 콘솔 창에 들어가서 텔넷 들어가면 된다.




* Tip

일반 사용자로 접속 후 관리자 권한 얻기 위해선 su - 를 입력하여 접속한다.

su 로도 접속 가능하긴 하지만 최초 텔넷 로그인한 계정의 정보를 갖고 root로의 계정 전환으로 진행되기 때문에 정상 작동이 되지 않는다.




[문제]


p147, 148, 149  표 공부 후 다음 조건을 만족하도록 telnet server 구성

- 접근 허용할 주소 : 192.168.x.x

- 접근을 허용할 시간 - AM 09 ~ PM 10

- 총 접속 허용 수 : 100개

- Dos 공격에 대비하여 1초에 2회 이상의 접속 발생 시 60초 동안 새로운 접속 차단

- 접근 허용하지 않을 주소 : 192.168.1.10


# vi /etc/xinetd.conf

     25 #       max_load        = 0

     26         cps             = 2 60      // 변경

     27         instances       = 100     // 변경

     28         per_source      = 10

=> /etc/xinetd.d/krb5-telnet 에 해당 사항을 추가 기재해도 된다.

=> xinetd.conf 를 변경시키면 xinetd와 관련된 모든 프로그램에 적용됨


# vi /etc/xinetd.d/krb5-telnet

     11         log_on_failure  += USERID

     12         disable         = no

     13         only_from       = 192.168.0.0/16    // 추가

                # 192.168.1.0/24 (네트워크 구간)

                # 192.168.1.10/255.255.255.0 (호스트구간)

                # 네트워크 구간, 호스트 구간에 따라 netmask 표시 방법이 다름.

     14         no_access       = 192.168.1.10/255.255.255.0    // 추가

     15         access_times    = 9:00-22:00             // 추가

     16 }


# /etc/rc.d/init.d/xinetd restart





* xinet.conf 설정


# vi /etc/xinet.conf


log_type        = SYSLOG daemon info

                : syslog 데몬에 의해서 /var/log 디렉터리에 로그를 기록

log_on_failure  : login 실패 시 로그에 기록할 정보

                = HOST

log_on_success  = PID : processID          HOST : 호스트정보(Domain or IP)

                DURATION : 접속유지시간       EXIT : 접속 종료 시간

cps             : 접속 횟수의 속도 제한

                = 50 : 초당 연결 제한 수

                  10 : 서비스 이용제한이 걸린 뒤 재시작까지의 인터벌 (단위:초)

instances       = 100 : 최대 서비스 갯수 설정(UNLIMITED : 무제한)

per_source      = 10

                : ip별 가질 수 있는 최고 프로세스 제한수 (UNLIMITED : 무제한)


includedir /etc/xinetd.d : xinetd 로 동작되는 서비스들이 정의된 경로




And