나의 IT일지
서버의 이해와 원격 접속 시스템(Telnet,SSH) 본문
운영체제는 컴퓨터의 자원을 효율적으로 사용하기 위한 환경을 제공하는 시스템 소프트웨어로, 서버 프로그램이 설치되어 있으면 서버가 되며, 클라이언트 프로그램이 설치 되어 있으면 클라이언트가 된다. 이때, 하나의 운영체제에 서버 프로그램과 클라이언트 프로그램이 설치 되어 있으면, 서버이자 클라이언트가 된다.
서버
서버란 네트워크(TCP/IP)를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로, 컴퓨터 프로그램(소프트웨어) 또는 장치(하드웨어)를 의미하지만, 대체적으로 서버는 서버 프로그램이 설치되어 있는 컴퓨터,운영체제를 말한다.
그리고 서버에게 서비스를 제공받는 컴퓨터 시스템이 있는데, 이를 클라이언트라고 하며, 클라이언트가 서비스를 요청하면 서버가 해당 서비스에 대해 요청을 받고 클라이언트에게 서비스를 제공한다.
- web: apache, IIS(windows에서만 사용)
- mail : sendmail, postfix, qmail
- name : BIND
- FTP: vsftpd, proftp, wu_ftp
- telnet: telnet
- SSH : ssh
- DB : MySQL, MariaDB
- etc : NFS, SAMBA ....
위의 리스트는 서버 프로그램을 기능별로 구분한 것으로, 해당 프로그램을 개별적으로 운영체제에 다운로드해야 하며, 설치하면 클라이언트에게 해당 기능을 제공할 수 있다. 예를들면, "apache"웹서버 프로그램을 설치하면, 해당 운영체제는 웹서버가 된다.
유닉스에서 이러한 서버 프로그램(소프트웨어)을 데몬(Daemon)이라고 한다. 데몬이란 서비스의 요청에 대해 응답하기 위해 오랫동안 실행중인 백그라운드 서버 프로세스로, 윈도우에선 서비스라고 한다.
서버 관련 명령어들 |
yum -y install 프로그램 : 프로그램을 설치하는 명령어 systemctl [ start / stop / restart ] [데몬] : 프로그램을 실행, 정지, 재시작하는 명령어 systemctl [ enable / disable] [데몬] : 운영체제를 부팅할 때, 프로그램 활성화, 비활성화 하는 명령어 setenforce [ 0 / 1 ] : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화 / 활성화하는 명령어 |
포트(port)
포트(port)란 IP주소에 진입할 수 있는 정해진 통로로, 서비스나 프로세스, 응용프로토콜을 구분하는 식별자로 사용된다.
포트는 응용프로토콜를 통해 생성된 데이터를 TCP/IP나 UDP/IP에 패킷되어서 전달된다. 이때 TCP와 UDP는 클라이언트 포트, 서버 포트, 전송 방식에 관한 규칙체계이 있으며, IP에는 클라이언트 IP주소, 서버 IP주소에 관한 규칙체계가 담겨져 있다.
포트는 구간별로 3개로 나뉘는데, 서버, 응용프로토콜에서 주로 사용하는 "well-known port(0~1023)", 특별한 용도로 사용하는 "registered port(1024~49151)", 클라이언트가 주로 사용하는 "dynamic port(49152~65535)"가 있다.
tcp를 사용하는 port | udp를 사용하는 port |
ftp : 20(data), 21(control) ssh : 22 telnet : 23 smtp : 25 http : 80 pop3 : 110 IMAP : 143 NNTP : 119 |
DHCP : 67(server), 68(client) TFTP : 69 DNS : 53 SNMP : 161(일반정보), 162(Trap정보) |
프로토콜 : 컴퓨터와 컴퓨터간의 데이터 교환 방식을 정의하는 규칙체계 | |
TCP | UDP |
인증하는 프로토콜 (쌍방향 프로토콜) | 인증하지 않는 프로토콜 (단방향 프로토콜) |
순서적인 전송 순서 | 무작위인 전송 순서 |
데이터 수신 여부 확인 | 데이터 수신 여부 확인하지 않음 |
UDP보단 신뢰성 높지만 속도 느림 | TCP보단 신뢰성 낮지만 속도 빠름 |
원격 접속 서버 프로그램
Telnet Server
Telnet Server는 원격접속 서비스 프로그램, 프로토콜로, 서버 IP로 접속해서 원격으로 관리할 때 사용하는 서비스이다. Telnet은 암호화를 제공하지 않아 보안성에서 취약함을 가지고 있기 때문에, 급한 상황이 아니면 대체적으로 사용하지 않는다.
Telnet 프로그램의 데몬, 환경설정파일
- 서버 파일(데몬) : telnet.socket
- 환경 설정 파일 : /usr/lib/systemd/system/telnet.socket
Telnet 프로그램 설치
- yum -y install telnet-server.x86_64 : 해당 운영체제에 Telnet 서버 프로그램 설치 명령어
- yum -y install telnet : 해당 운영체제에 Telnet 클라이언트 프로그램 설치 명령어
방화벽 해제
"telnet"으로 원격 접속하기 위해선 서버 운영체제의 방화벽을 해제할 필요가 있는데, 방화벽에 telnet 포트가 설정되어 있지 않아서 발생하는 현상이다.
- systemctl stop firewalld : 방화벽을 정지시키는 명령어
- setenforce 0 : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화하는 명령어
방화벽 |
모든 외부의 사용자 계정은 IP주소와 포트를 통해 네트워크로 서버에 접속한다. 그래서 해당 포트를 차단, 허용을 통해서 서버의 보안을 관리한다. 이렇게 포트의 차단, 허용으로 서버의 보안을 관리하는 시스템을 방화벽이라고 한다. |
Telnet을 이용한 원격 접속
방화벽을 해제했으면, telnet 서버 프로그램을 실행해야 한다.
- systemct1 [ start / restart ] telnet.socket : telnet 서버 프로그램을 실행 / 재시작하는 명령어
위의 명령어를 실행하면, telnet이 작동되면서 telnet을 통해 타 컴퓨터의 IP로 해당 컴퓨터에 접근할 수 있게 된다.
- telnet [IP 주소 / 도메인] : telnet를 통해 해당 IP주소 / 도메인에 접속하는 명령어
"telnet"을 통해서 타 IP에 접근이 가능하지만 root 계정으로 접속할려면, 일반 사용자 계정으로 접근한 후에 root 계정으로 로그인 해야 한다.
하지만 "telnet"도 바로 root계정으로 접근하는 방법이 있는데, "/etc/securetty"파일에서 다음내용을 추가하면 된다.
위의 내용은 "telnet"으로 접근할 때, 관리자 포함 사용자 3명까지는 root계정에 접근이 가능하도록 설정한 것이다.
Telnet port 변경
"telnet"의 환경파일인 "/usr/lib/systemd/system/telnet.socket"파일에서 해당 부분을 변경하면 포트를 변경할 수 있다.
그리고 포트를 변경하면 telnet 서버 프로그램을 재시작해야 한다. 하지만 재시작할려고 할 때, 다음과 같은 경고가 뜬다.
이 경고문은 서비스의 설정이 변경되었으니, 데몬에 반영하라는 경고문이다. 따라서 "systemctl daemon-reload"명령어를 통해 데몬에 변경사항을 즉시 반영을 한 뒤, telnet 서버 프로그램을 재시작해야 한다.
변경된 Telnet port로 접근방법
- telnet [IP 주소/ 도메인] [포트] : telnet를 통해 해당 IP주소 / 도메인에 해당 포트로 접속하는 명령어
SSH Server
SSH Server는 Telnet Server와 같은 원격접속 서버 프로그램, 프로토콜로, 타 컴퓨터 IP로 접속해서 원격으로 관리할 때 사용하는 서비스이다.
SSH는 암호화를 지원하기때문에 Telnet보다 보안성이 강하며, 사용할 때 방화벽을 해제하지 않아도 된다. 그리고 타 IP에 접근하면서 root계정으로 로그인이 가능하다.
SSH 프로그램의 데몬, 환경설정파일
- 서버 파일(데몬) : sshd
- 환경 설정 파일 : /etc/ssh/sshd_config
SSH를 이용한 원격 접속
- ssh -l [계정] [IP주소/도메인] : ssh를 통해 계정으로 해당 IP주소 / 도메인에 접속하는 명령어
root 계정 원격로그인 허용/차단
ssh은 root계정의 원격로그인이 기본설정으로 허용되어 있다. 하지만 ssh의 root계정의 원격로그인을 차단할 수 있는데, 환경설정파일(/etc/ssh/sshd_config)에서 해당 부분의 주석(#)을 제거 후, yes를 no로 바꾸면 된다.
해당 설정을 적용하기 위해서, ssh 서버프로그램을 재시작해야 한다.
- systemctl restart sshd : ssh 서버 프로그램을 재시작하는 명령어
ssh port 변경
"ssh"의 환경파일인 "/etc/ssh/sshd_config"파일에서 해당 부분의 주석을 제거하고 내용을 변경하면 포트를 변경할 수 있다.
그리고 포트를 변경하면 ssh 서버 프로그램을 재시작해야 한다.
변경된 SSH서버 port로 접근방법
- ssh -l [계정] [IP 주소/ 도메인] -p [포트] : ssh를 통해 계정으로 해당 IP주소 / 도메인에 해당 포트로 접속하는 명령어
Super Daemon
데몬은 2가지 사용방식이 있는데, 서버 프로그램이 실행 되었을때, 어떤 프로그램으로 실행 되는지에 따라서 "standalone"방식과 "xinetd"방식으로 나뉜다.
"standalone"방식은 디스크에 있는 서버 프로그램을 메모리에서 실행하고 있으며, 클라이언트의 요청을 기다리는 방식으로, 독립방식이라고도 한다. 메모리카드에서 서버 프로세스가 해당 서비스를 관리하기에 요청이 오자마자 처리할 수 있다. 그래서 서비스 제공 속도가 빠르며, 자주사용하는 서비스 방식이다. 해당 방식을 따르는 서버 프로그램은 "/etc/init.d"디렉토리 안의 파일들을 통해 관리된다.
"xinetd"방식은 메모리에 있는 "xinetd"가 클라이언트의 서비스 요청에 맞는 서버 파일을 메모리카드로 가져와서 실행한 뒤, 서비스를 제공하는 방식으로, 슈퍼데몬 방식이라고 한다. 메모리 카드에서 슈퍼데몬인 xinetd 프로세스가 서버프로세스를 대신해서 해당 서비스를 관리하기에 디스크에서 해당 서버 프로그램을 찾아야 한다. 그래서 서비스 제공 속도가 느리며, 가끔 사용하는 서비스 방식이다. 해당 방식을 따르는 서버 프로그램은 "/etc/xinet.d"디렉토리 안의 파일들을 통해 관리된다.
이때, SuperDaemon은 여러 Daemon을 제어하고 클라이언트의 요구와 서비스를 연결시키는 역할을 담당하는 데몬으로, 리눅스에선 "xinetd"가 SuperDaemon역할을 담당한다. SuperDaemon는 메모리의 한정된 공간 때문인데, 사용하는 것인데, SuperDaemon을 사용하지 않으면, 메모리의 공간이 부족해서 서버운영에 필요한 데몬을 사용하지 못하는 경우가 생긴다.
프로그램 설치
- yum -y install xinetd* : xinetd관련 프로그램 전부 설치
스크랩트 생성
기본적으로 "xinetd.conf"파일에 xinetd의 주 설정이 담겨져 있다. 하지만 SuperDaemon의 제어를 받기 위한 서비스는 "/etc/xinetd.d"디렉토리에 스크랩트를 생성해서 개별적으로 설정해야 한다.
- service 서비스명 : service 속성으로 설정하고자하는 서비스명
- flags : flags 사용 여부 (REUSE : 종료 후 일정시간에 재접속시, 재사용)
- socket_type : 연결 형태 설정 (stream = tcp, dgram= udp)
- wait : 스레드 사용 종류(yes = 단일 스레드, no = 다중 스레드)
- user : 데몬 실행 사용자
- server : Super deamon에 의해 관리되는 서버프로그램
- log_on_failure : 로그인 실패시의 기록될 값
- disable : 서비스 비활성화(yes)/ 활성화(no) 여부
SuperDaemon 실행
- systemctl start xinetd : 슈퍼데몬을 활성화하는 명령어
만약 "standalone"방식으로 프로그램이 실행 되어 있을 경우, 해당 데몬을 정지해야 한다.
이때 SuperDaemon이 사용하는 서버 접근 포트는 "/etc/services"로 볼 수 있으며, 여기서 포트 변경도 가능하다.
로그인전 문자 출력 방법
- /etc/issue : 콘솔 접속시 로그인 전 출력데이터 변경
- /etc/issue.net : 원격 접속시 로그인 전 출력 데이터 변경
Putty
putty는 윈도우 운영체제에서 서버에 원격으로 접속하기 위해서 사용하는 프로그램이다.
설치가 완료되면 위와 같은 창이 나타나며, 호스트 IP와 포트, 연결방식을 선택해서 open하면 다음과 같이 서버에 진입할 수 있다.
'운영체제 > Linux - CentOs' 카테고리의 다른 글
파일 전송 시스템(FTP) (0) | 2023.03.26 |
---|---|
파일 공유 시스템(NFS, Samba) (0) | 2023.03.20 |
소유권과 허가권 (0) | 2023.03.13 |
사용자 계정 관리 (1) | 2023.03.12 |
네트워크와 프로세스 (0) | 2023.03.06 |