서버는 주로 CentOS/Ubuntu 머신에 데몬 형태로 설치되어 서비스를 제공한다. 여기에는 서버 프로그램, 서버 구성파일, 방화벽, SELinux 설정, 사용자 접근조정, 그리고 침입감지 시스템이나 침입예방 시스템 등이 구성되게 되고, AV 파일이나 각종 패치 파일의 업데이트 등이 수행되게 된다.
보통 서버 서비스를 실행시킬 때에는
① 해당 서비스 프로그램 패키지와 필요한 모듈 설치
② 해당 서비스의 각종 구성파일 변경
③ 방화벽 설정과 SELinux 설정 변경
④ 사용자 접근제한 등 부가적인 설정 추가나 변경
⑤ 해당 서비스 실행 및 실행 확인
⑥ 클라이언트 사용자의 접속
⑦ 로그파일 저장, 시스템 모니터링 등 관리작업 수행이 이뤄진다.
Telnet Server
Telnet으로 일단 타겟 UNIX/Linux 머신으로 들어가면
adduser, chown, date, diskinfo, echo, exit, file, finger, userdel, find, grep, gzip, gunzip, jobs, kill, last, ps -ef, passwd, shutdown, top, mail, more, usermod, what, who, whoami, who -r, sort, shutdown -h now, shutdown -r now 등 거의 모든 Linux 명령어를 사용할 수 있다.
SSH Server
평문장 Telnet 연결보다 보안이 강화된 암호화된 SSH 연결을 통해서 서버에 접속할 수 있다. 패스워드 인증보다 인증 키를 사용한 연결도 가능하다.
ssh ubuntu@ubuntu1 cat /etc/passwd | head -3 식으로 실제 연결하지 않고 명령어를 실행해서 정보를 추출할 수 있다.
사용자_명과 패스워드 인증이 아니라 SSH-Key로 인증받을 수 있는데 /etc/ssh/sshd_config 파일에서 일부 설정을 변경해 주어야 한다.
=>parallet ssh(pssh) 도구
SSH 서버에서 SSH 클라이언트 머신들과 연결해서 일괄적으로 어느 작업을 수행할 때 유용한 Parallel SSH(병렬 SSH) 도구가 있다. 여러 호스트들을 대상으로 해서 작업할 때 앞에서 본 Puppet이나 쉘 스크립트를 작성해서 활용할 수도 있지만 이 도구를 사용하면 간편하게 끝낼 수 있다. 개인키/공개키로 상호 연결하기 때문에 매우 보안이 좋은 연결이다. Puppet처럼 한 곳에서 여러 원격 서버를 완벽한 보안에서 동시에 관리할 때 좋다.
pssh를 설치하면 pscp, prsync, 그리고 pslurp 등 도구도 함께 설치된다. pdsh(Parallel Distributed SHell)라는 프로그램도 유용한데 여러 Linux 클라이언트 머신들이 들어있는 Cloud나 BigData Hadoop 환경에서 유용하게 활용될 수 있다.
DNS 서버
kahn.edu와 같은 도메인이 구성되면 가장 먼저 할 일이 DNS 서버를 구축하는 일일 것이다. Windows 서버에서도 도메인을 구축하기 위해서 Active Directory를 설치하면 첫번째로 DNS 서버 패키지를 먼저 설치하게 한다. 도메인이 있어야 도메인 내의 모든 객체를 표현할 수 있는데, kahn.edu 도메인의 회계과에 근무하는 사용자 kim은 kim.accout@kahn.edu 이메일 주소를 가지고, 그가 사용하는 컴퓨터는 kim.accout.kahn.edu라는 호스트_명(FQDN)을 가지게 되며, 이 도메인 내의 HTTP와 FTP 서버는 www.kahn.edu나 ftp.kahn.edu식이 될 것이다.
기본적으로 DNS 서버는 두 가지 일을 하는데
1) 내부에서 외부 도메인의 웹서버 www.naver.com식으로 찾아가는 내부 호스트들에게 www.naver.com 서비스를 제공하는 naver.com 도메인 내의 www 호스트 머신의 IP가 210. 89.164.90이라고 알려주는 역할과
2) 외부에서 조직 도메인 내의 웹 서버 www.kahn.edu로 접속하려는 외부 호스트들에게 kahn.edu 도메인의 웹 서버 www 호스트의 IP가 192.168.100.100라고 알려주는 역할을 수행한다.
도메인 내의 객체를 IP_주소로 변환하는 것을 이름풀이(name resolution)이라고 하는데 '로컬머신의 /etc/hosts(C:\Windows\System32\drivers\etc) 파일 =>로컬 DNS 서버 =>글로벌 DNS 서버' 순서로 이름을 풀어 나아간다. 따라서 해커가 타겟머신의 /etc/hosts 파일에 www.naver.com의 IP_주소를 해커 머신의 IP_주소로 바꿔두면 타겟머신의 사용자가 www.naver.com 해서 찾아가는 것은 해커의 머신을 찾아가는 것이 되게 된다(퓌싱 공격).
해킹에서 로컬 DNS 서버를 해킹하면 해당 도메인 내의 설계도를 얻는 것으로 비유하는데 이 DNS 서버는 프록시 서버와 함께 모든 로컬 머신들이 접속한 웹 도메인과 해당 호스트의 IP 주소 정보를 가지고 있어서 로컬 도메인의 네트워크 상황을 잘 반영하고 있기 때문이다.
그리고 DNS는 DNS 서버끼리 영역전송(zone transfer)할 때에는 TCP를 사용하고, 호스트들이 이 DNS 서버를 찾을 때에는 UDP 프로토콜을 사용하는데 각각 53번 포트를 이용한다. DNS 서버는 이 영역전송에서 해킹에 취약하다.
=>CentOS1을 DNS 서버 겸 웹 서버로 만들고
CentOS2를 FTP 서버로 만든다.
Windows 7을 클라이언트로 둔다.
** DNS 서버는 bind 패키지를 사용하고, named 데몬으로 실행한다.
Web 서버는 apache 패키지를 사용하고, httpd 데몬으로 실행한다.
FTP 서버는 vsFTP 패키지를 사용하고, vsftpd 데몬으로 실행한다.
Web 서버(Apache와 NginX) 설정 및 활용
이번에는 웹 서버(Apache와 Ngin-X)를 구축해보자. UNIX/Linux 계열에서는 전통적으로 Apache 웹 서버를 사용하고 있다. 여기서 Apache 웹 서버 설치와 기본적인 응용을 알아본 다음, 최근에 Linux 웹 시장에서 점유율이 20% 가까이 치솟고 있고 관련된 어플도 계속 개발되고 있는 Ngin-X 웹 서버도 소개 차원에서 설치까지만 해본다.
Virtual Host 구축하기
가상 호스트란 1대의 Apache 웹 서버에 IP_based나 Name_based, Port_based로 가상 머신을 여럿 구축해서 여러 도메인을 하나의 서버에서 운영하거나 하나의 도메인을 여러 서브 도메인을 생성해서 운영시키는 기법이다.
1) IP_based Virtual Host
하나의 서버(NIC 한 개)에 여러 IP 주소를 추가로 부여해서 각각 도메인을 운영시키는 기법이다. 이를 위해서 IP Binding 기법을 사용한다.
2) Name_based Virtual Host
이번에는 하나의 서버에 여러 이름을 부여해서 각각 도메인으로 운영시키는 기법이다. 현재 가장 많이 사용하는 기법이다.
3) Port_based Virtual Host
하나의 IP 주소에 여러 포트를 할당해서 'IP:포트_번호' 별로 각각 도메인을 운영시키는 기법이다.