HOW TO HACK/Basics

해커라면 알아야 할 리눅스 기초-15 : Client DNS

Mr. Rootable 2016. 5. 4. 18:20

# 본 게시글은 작성자 본인의 스터디한 내용을 바탕으로 작성된 글입니다.


# 본 게시글에는 일부 잘못된 정보가 포함되어있을 수 있습니다.


# 이 글을 열람하는 것은 위 사항에 동의하는 것으로 간주합니다.


# 잘못된 정보에 대한 예의바른 태클 및 지적질 적극 환영합니다.



안녕하세요. Mr. Rootable입니다.

마지막 포스팅을 한 4/29 이후 며칠간 뜻하게, 그리고 한편으로는 뜻하지도 않게 포스팅을 할 수가 없었습니다.

뜻하게는 짧은 여행을 계획해서 여행을 떠났었고, 뜻하지 않게는 다시 일상으로 돌아오려니 망할 놈의 풍랑으로 인해 섬에 갇혀 오도가도 못하는 상황이였습니다. 우여곡절 끝에 탔던 비행기 안에서는 또 어찌나 쫄았던지...

어쨌든 제 발로 땅을 밟을 수 있다는 것이 그렇게도 기쁜 일인지 처음 느꼈더랬습니다. ㅋ 

아무튼.. 제 사정은 여기까지만 하고..



이번 포스팅에서는 DNS에 대해 한번 보도록 하죠.


Step 1 : DNS란


DNS는 Domain Name System의 약자입니다.

네트워크상에서 컴퓨터, 장비, 모바일 단말 등등의 각 디바이스들은 IP주소라는 것으로 서로를 식별하고, 통신을 합니다.

IP주소는 IPv4 기준으로 볼 때, 0부터 255까지의 연속된 숫자로 구성된 주소체계로 총 32bit이며, 8bit씩 묶여 Dot(.)으로 구분되어 있습니다. 110.10.8.8과 같은 주소가 바로 IP주소죠.

즉, 네이버나 다음, 구글.. 그 외 모든 웹사이트를 방문하기 위해서는 웹브라우저창에 이 IP주소를 입력하면 됩니다.

그런데, 각 사이트의 IP주소를 따로 메모해놓지 않는 이상 나중에 재방문할때 IP주소를 기억하기가 무진장 어렵습니다. 

그래서 고안해낸 것이 바로 DNS입니다. DNS는 여러 웹사이트들을 사람들이 기억하기 쉬운 문자로 관리되는 주소체계입니다. http://mrrootable.tistory.com 과 같은 주소체계가 바로 DNS의 주소체계이죠.

DNS는 바로 사람들이 웹브라우저에 입력한 문자체계의 주소를 컴퓨터가 식별할 수 있는 IP주소로 변환하여 사용자가 원하는 사이트에 방문할 수 있도록 도와주는 도우미입니다.



 

Step 2 : /etc/hosts


/etc/hosts 파일은 윈도우의 hosts 파일과 같이 리눅스시스템에 있는 도메인네임과 IP주소를 대응해놓은 파일입니다.

DNS가 세상에 등장하기 전에는 이 /etc/hosts 파일을 일일이 수정하는 개노가다 작업을 했다고 합니다.  

호스트들은 DNS서버에 질의를 던지기 전에 기본적으로 로컬에 저장되어있는 이 /etc/hosts 파일을 먼저 읽어서 IP주소를 결정합니다. 바로 이 점을 이용하여 사이버 범죄자들이 개인의 금융정보를 탈취하기 위한 파밍사이트로 사람들을 유도하려고 hosts 파일 변경해놓기도 합니다.


그럼 /etc/hosts 파일을 한번 열어볼까요?


# cat /etc/hosts



보시는바와 같이 제 칼리리눅스의 /etc/hosts 파일은 별다르게 추가하거나, 수정하지 않아 기본내역만 있습니다.

localhost와 kali라는 도메인네임은 각각 127.0.0.1과 127.0.1.1의 IP주소라고 저장되어있네요.

수정된 /etc/hosts 파일의 형식은 예를 들자면 아래와 같을겁니다.


IP주소   (tab)   호스트명   (tab)     alias(별칭)

127.0.0.1        localhost                

127.0.1.1        kali    

192.168.0.99    www.tistory.com     

192.168.0.10    www.naver.com        naver


만일 위의 예처럼 hosts 파일이 구성되어있다면 웹브라우저에 www.tistory.com 주소를 입력하면 192.168.0.99로 서비스를 요청하게되겠죠?

/etc/hosts 파일에 새로운 정보를 추가해보도록 하겠습니다.

지금 제 칼리리눅스에는 아파치를 설치해두었으니 제 블로그 주소인 http://mrrootable.tistory.com로 접속시 제 칼리리눅스의 아파치웹서버 기본페이지로 접속되도록 해보겠습니다.


먼저 아파치 웹서버를 실행해두겠습니다.



아파치가 잘 실행되었는지 확인해보기 위해 웹브라우저를 열고 제 칼리리눅스의 IP주소로 접속해봤습니다.



아파치 기본웹페이지가 뜨는 것으로 보아 잘 실행되었네요~


이제 /etc/hosts 파일에 한 줄을 추가해보겠습니다.

leafpad 같은 편집프로그램이나 vi편집기를 이용해 추가해도 되지만, 저는 다른 방법으로 추가하도록 하겠습니다.


# echo "192.168.0.3\tmrrootable.tistory.com\tmrrootable" >> /etc/hosts



echo는 echo 뒤의 큰따옴표로 묶인 문자열을 터미널화면에 단순 출력하는 명령어이고,

>>는 뒤에 기재된 파일의 끝에 echo로 출력된 문자열을 추가하는 기능을 수행합니다.

\t는 Tab문자를 인식하게 하는 방법입니다.

스크린샷과 같이 잘 추가되었습니다.

이제 칼리리눅스의 웹브라우저의 주소입력창에 mrrootable.tistory.com을 입력하고 연결하면 제 블로그로 들어가야 하지만 아래 스크린샷에서 보시는바와 같이 아파치 기본페이지가 뜹니다.




Step 3 : DNS 서버 설정 확인 (/etc/resolv.conf)


DNS서버 설정 파일은 /etc/resolv.conf 파일입니다.

이 파일은 어떤 도메인의 IP주소를 찾을 때, 어느 DNS서버에 질의를 던질 것인가를 결정하는 파일입니다.

윈도우의 TCP/IP 속성에서 설정하는 DNS서버 주소라고 보시면 됩니다.

파일을 한번 보도록 하죠.


# cat /etc/resolf.conf



이 파일의 형식은 아래와 같습니다.


nameserver    (tab)    IP주소


203.248.252.2과 164.124.101.2가 네임서버로 설정되어있네요.

위의 설정대로라면 먼저 203.248.252.2 네임서버에서 IP주소를 찾고, 만약 없다면 164.124.101.2 네임서버에서 IP주소를 찾습니다. <끝>