Time for Security

블로그 이미지
제가 교육을 받으며 이해한 보안 지식을 복습하고, 정리해가는 작은 블로그입니다.
by 하꼬방
  • Total hit
  • Today hit
  • Yesterday hit

'보안 지식 창고'에 해당되는 글 16건

  1. 2017.09.06
    [네트워크 해킹] Sniffing
  2. 2017.09.04
    [Wireshark] 사용자 편의를 위한 설정
  3. 2017.08.29
    [기타] 스위치 환경에서의 스니핑 방법
  4. 2017.08.27
    [패킷 트레이서] 토폴로지 생성 및 연결
  5. 2017.07.31
    [리눅스] vi 옵션 설정 2
  6. 2017.07.30
    [리눅스] 디렉토리 구조
  7. 2017.07.29
    [리눅스] /etc/passwd 및 /etc/shadow 파일
  8. 2017.07.28
    [리눅스] 퍼미션 이해
  9. 2017.07.26
    [리눅스] vi 편집기
  10. 2017.07.25
    [리눅스] 파일 및 디렉토리 검색

 안녕하세요.


 이번 포스팅은 Sniffing에 대한 내용입니다.


 네트워크 해킹의 가장 기본적인 형태라고 볼 수 있는 공격인데요.


 이번 실습에서는 랜카드로 들어오는 모든 신호를 감시해 다른 이의 패킷을 관찰해볼거에요.


 그저 감시하는 공격이기 때문에 수동적인 공격에 속합니다.


 실습으로 들어가기 전에 windows 7은 희생자이며, kali는 공격자입니다.


 그리고 무작정 실습을 진행하고, 따라하기 보다는 상황을 알면 더 이해가 쉽겠죠? 


 이번 Sniffing 공격의 개요를 미리 말씀드리면, 사용자가 사이트에 접속해서 로그인하는 패킷을 wireshark로 잡아 ID와 비밀번호를 알아내는 실습입니다.


 그럼 바로 실습으로 들어가보도록 하겠습니다. 



 우선 kali에서 wireshark를 실행시켜줍니다.


 아까 전에 말씀드렸듯이 kali는 공격자입니다.


 패킷을 훔쳐보기 위해 wireshark를 동작시켜주는거에요.



 wireshark를 실행시킨 후, 인터페이스를 골라 들어가줍니다.


 저는 eth0이네요.



 kali에서 인터넷이 제대로 되고 있다면 이처럼 패킷이 잡힐 겁니다.


 만약 잡히지 않는다면 인터넷 설정을 다시 해주어야해요.



 다음은 windows 7을 실행시켜줍니다.


 물론, windows 7은 회생자입니다.



 제가 다니고 있는 kitri 홈페이지로 접속해보겠습니다.



 로그인을 할 수 있는 화면으로 이동해주세요.



 ID는 kitri, 비밀번호도 kitri로 접속해보겠습니다.



 물론, 존재하지 않는 ID이기 때문에 위와 같은 화면이 나올거에요.


 하지만 실습을 진행하는데는 문제되지 않습니다.


 그 이유는 kitri 홈페이지에서 이 ID가 잘못됐다는 것을 판정하기 위해서는 서버로 우리가 입력한 ID와 비밀번호를 보냈기 때문이죠.


 따라서, 우리는 이 지어낸 ID와 비밀번호의 패킷을 훔쳐볼 수 있게되는 거에요. 



 그럼 다시 kali로 돌아와볼까요?


 kali는 계속해서 Sniffing중이기 때문에 정지 버튼을 눌러 멈춰줍니다.


 실수로 정지 버튼 누르는 사진을 미쳐 찍지 못했는데요.


 좌측 상단의 File 밑에 파란 상어 지느러미의 오른쪽 정사각형 모양이 정지 버튼입니다.



 위에 필터링 창에 http를 입력해줍니다.


 다른 패킷은 볼 필요없이 http 프로토콜만 관찰하면 되기 때문이죠.



 그러고나선 특정 문자열을 검색해줄건데요.


 이 wireshark내에서도 Ctrl + F 가 작동됩니다.


 패킷들에서 찾고 싶은 내용을 빨리 찾을 수 있는 기능이에요.


 제가 찾을 내용은 post 메소드이기 때문에 post라고 입력해줍니다.


 처음에는 String이 아니라 Display Filter로 설정되어 있을텐데요.


 제가 찾을 post 메소드라는 내용은 Info라는 컬럼에 속해있기 때문에 String으로 변환해주는거에요.



 그리고 Find 버튼을 눌러 검색해주다보면 Info쪽에 login과 관련된 내용을 찾아보실 수 있을거에요.


 아마 windows 7에서 별다른 행동없이 바로 kitri 홈페이지로 들어오셔서 로그인을 하셨다면 4~5번 안에 찾으실 수 있을거에요.


 여기까지 잘 따라오셨다면 usrid에 kitri, pwd에 kitri가 입력된 것을 확인하실 수 있을거에요.


 


 길다면 길고, 짧다면 짧은 실습이 끝났는데요.


 몇가지 더 알아보고 마치도록 하겠습니다.


 오늘 한 실습은 http라고 시작되는 사이트에서 밖에 되지 않습니다.


 https라고 시작되는 사이트의 경우 보안이 적용되어 있기 때문에 이와 같은 Sniffing 방법으로는 패킷을 볼 수 없습니다.


 요즘 대부분의 사이트는 https로 바뀌어가는 추세입니다.


 그리고 또 하나, 오늘 실습이 가능하기 위해서는 같은 네트워크에 있는 패킷만 캡쳐하실 수 있습니다.


 서로 다른 네트워크라면 패킷을 캡쳐하실 수 없어요.


 wireshark에서 아무런 설정없이 다른 컴퓨터의 패킷을 볼 수 있었던 이유는 바로 wireshark는 프로그램 실행시 자동으로 promiscuous mode로 전환되기 때문이랍니다.


 여기까지 오늘의 Sniffing 포스팅이었습니다. 


 ※ 실습은 꼭 가상머신에서 진행해주셔야됩니다. 악용의 경우 본 블로그에서는 절대 책임지지 않습니다.

AND

 안녕하세요!


 이번 포스팅에서는 wireshark라는 프로그램을 좀 더 편리하게 사용하기 위한 간단한 설정 방법을 소개해드리도록 하겠습니다.


 지금까지 있는 그대로의 wireshark를 사용하셨다면 이번 포스팅으로 좀 더 편하게 사용하실 수 있게 되실거에요.


 그럼 바로 시작해보도록 할까요? 

 


 우선 첫번째로 할 일은 위의 사진처럼 'View' 탭에서 'Time Display Format' 부분의 'Date and Time of Day'와 'Seconds'에 체크해주시는 거에요.


 이렇게 체크를 해주시면 wireshark에서 패킷을 보실때 시간이 확실하게 초 단위까지 표시된답니다.


 특정 패킷이 언제 들어왔나 확인할 때 굉장히 유용한 기능입니다. 



 다음은 'Edit' 탭에서 'Preferences'를 선택해주세요.



 그러고 난 뒤, 위의 화면처럼 'Columns'를 선택해주세요.


 눈치채신 분들도 계시겠지만 이 부분은 wireshark에서 패킷 분석을 할 때 보이는 항목들의 종류입니다.


 새로운 컬럼을 생성하려면 하단의 + 표시를 눌러주시면 됩니다.



 새롭게 생성해주시고, 'Number'라고 되어 있는 부분을 더블클릭 해주시게 되면 어떤 항목을 표시할 것인지 선택하는 창이 나옵니다.


 캡처를 하려 했으나 이상하게도 창이 계속 꺼져 캡쳐하지는 못했지만 아마 다들 잘 하실 수 있을거에요. 


 여기서 출발지 포트를 보다 쉽게 보기 위해 Src port (unresolved)를 선택해줍니다.


 참고로 resolved 옵션과 unresolved 옵션이 있는데, resolved는 포트 번호를 풀어서 써주는 기능이에요.


 예를 들어 80번이면 http로 나오게 됩니다.


 하지만 패킷에 따라 번호를 다른 것으로 바꿀수도 있고, 알아보기에 더 불편할 수도 있으므로 unresolved 옵션을 사용해줍니다.



 위와 같은 방식으로 도착지 포트도 추가해줍니다.


 보시면 저는 출발지 포트는 title을 sport로, 도착지 포트는 dport로 설정해주었습니다.


 title은 패킷 분석시에 컬럼의 이름으로 보여지는 부분입니다.


 자신이 알아볼 수 있도록 설정해주시면 됩니다.


 여기까지 해주신 다음 자리를 이동시켜줘야 알아보기 편해요.


 위에서 부터 차례대로 놓여지기 때문에 지금의 상황이라면 출발지와 도착지 포트만 맨 끝에 나오게 되어 더 불편할 수 있어요.



 위의 화면처럼 출발지 포트는 출발지 주소 다음에, 도착지 포트는 도착지 주소 다음에 위치해주시는 게 가장 최고의 선택입니다. 



 한 가지 설정을 더 해줄건데요.


 GET 메소드를 사용해주는 패킷으로 이동해 'Host'부분을 우클릭해줍니다.


 여러 보기가 보이실텐데요.


 그 중에서 'Apply as Column'을 눌러주면 컬럼에 host가 추가돼요.



 'Edit' 탭의 'Preferences'를 눌러 컬럼을 확인해보시면 host가 추가됨을 보실 수 있습니다.



 이처럼 설정해주시면 위의 화면처럼 더 알아보기 쉽고 깔끔해진 wireshark를 만나보실 수 있을거에요.




 여기까지 wireshark의 간단한 설정이었습니다.


 wireshark를 이용하다보면 정말 많은 패킷을 보게 되는데요.


 오늘과 같은 설정으로 더 빠르고, 편하게 패킷 분석을 하실 수 있을거에요. 


AND

 안녕하세요.


 이번 포스팅에서는 같은 네트워크에 있는 컴퓨터들끼리 어떻게 스니핑을 할 수 있게되는 지를 살펴볼거에요.


 다시 말해, 스위치 환경에서 스니핑을 하기 위한 방법이라고 볼 수 있겠네요.


 몇 가지 방법이 있는데 하나씩 살펴보도록 하겠습니다. 


 첫번째는 스위치를 허브로 교체 해주는 것 입니다.


 허브 환경에서는 스위치와 달리 모든 패킷을 엿 볼수 있기 때문인데요.


 더 자세히 말씀드리면, 스니핑을 하고 싶은 호스트 일부를 별도의 허브로 구성해주는 것 입니다.


 포스팅에서는 스위치 환경에서라고 했으니 약간 변칙적인 방법일 수도 있겠네요. 


 두번째는 포트 미러링 입니다.


 포트 미러링이란 네트워크 스위치에서 포트를 통과하는 패킷을 감시하기 위해 패킷들을 다른 스위치 포트로 복사하는 방법을 말하는데요.


 보통은 네트워크 진단, 오류 수정 혹은 공격을 차단하는 데 사용하는 방법입니다.


 그렇기 때문에 이 포트 미러링을 이용해 스위치의 특정 포트를 지정한다면 전체 포트의 통신을 볼 수 있게 됩니다.


 세번째는 허빙아웃 입니다.


 이 방법은 스위치가 방금 전의 방법인 포트 미러링이라는 기능을 제공해 주지 않을 때 가장 유용한 방법인데요.


 스위치로 구성된 네트워크 안의 연결들을 해제하고, 허브를 연결해주는 방법입니다.


 이렇게 될 경우 같은 브로드캐스트 도메인에 위치하기 때문에 통신하는 모든 트래픽을 수집할 수 있게 됩니다.


 네번째는 ARP Spoofing 입니다.


 네트워크 공격의 일종인데요.


 잘못된 MAC 정보를 지속적으로 전송해 공격자의 MAC주소가 스위치의 MAC주소라고 착각하게 만드는 공격입니다.


 공격자가 중간에서 패킷을 몰래 훔쳐 본다고 이해하면 될 것 같습니다.


 이 ARP Spoofing은 제가 직접 만든 실습 자료가 있는데요. 


 나중에 시간이 되면 올려보도록 하겠습니다.




 여기까지 스위치 환경에서의 스니핑 방법이었습니다.


 오늘 소개해드린 방법 이외에도 탭장비를 이용한 스니핑, ICMP Redirect, Switch Jamming 등의 방법이 있답니다.

'보안 지식 창고 > [기타]' 카테고리의 다른 글

[기타] VMnet 개념  (0) 2017.07.19
AND

 안녕하세요!


 정말 오랜만의 보안 지식 창고 포스팅 이네요!


 요즘 머릿 속으로만 정리하는 데도 벅차 포스팅이 없었습니다...


 좀 더 부지런하게 작업해야겠어요!


 오늘은 패킷 트레이서 라는 프로그램의 기초 설정을 해보려고 합니다.


 그럼 여느 때 처럼 시작해볼까요? 



 위는 패킷 트레이서를 처음 실행했을 시에 나오는 화면입니다.


 하얀 도화지 위에 그 무엇도 없는 상태입니다.


 이 시간에는 컴퓨터를 스위치에 연결시키고, 라우터에 까지 연결시키는 과정을 진행할 것 입니다. 



 그러면 컴퓨터를 먼저 가져와 볼까요? 


 좌측 맨 밑에를 보시면 컴퓨터 모양이 보이실 텐데요.


 그 컴퓨터를 누르면 가운데 여러 종류의 장비들이 생겼을 거에요.


 그 중에서 데스크탑처럼 생긴 PC를 끌어와 화면에 올려줍니다.


 드래그 하셔두 되고, 데스크 탑을 클릭하시고 나서 빈 화면에 다시 클릭을 하셔도 됩니다.



 한대만 있으면 재미없을 것 같으니 두 대를 놓아보겠습니다. 


 방법은 동일해요!



 다음은 스위치를 가져와 보겠습니다.


 좌측 하단에서 컴퓨터를 고르셨을 때 처럼 그 위 쪽 두번째 칸에 보시면 사각 박스가 있을 거에요.


 그 그림이 스위치 탭입니다.


 스위치 탭을 눌러주시고, 처음에 보이는 2950 스위치를 화면으로 가져와 주세요. 



 다음은 라우터입니다.


 스위치 전 탭이 라우터입니다.


 마찬가지로 첫 번째에 있는 1841 라우터를 가져옵니다.


 스위치도 라우터도 여러 종류가 있는데요.


 뒤로 갈수록 더 많은 포트 혹은 시리얼을 설정할 수 있는 큰 장비라고 생각하시면 됩니다.



 도화지도 큰데, 간격을 조금 벌려보겠습니다.


 드래그 앤 드롭으로 간격을 벌리실 수 있습니다.


 이 부분은 개인의 취향 차이입니다.



 이렇게 놓여있는 장비들은 무선 장비들이 아니에요.


 따라서 이제부터는 각각 어울리는 선을 연결시켜 줄겁니다.


 좌측 하단에 컴퓨터, 스위치, 라우터 탭을 선택하셨던 부분을 보면 번개 표시가 있어요.


 그 번개 표시가 각종 선을 보여주는 탭입니다.


 그 선 탭을 누르시고, 세번 째 보이시는 까만선을 선택해주세요.


 이 선은 Copper Straight-Through로 다이렉트 선입니다.


 서로 다른 장치를 연결할 때 주로 사용합니다.


 그 선을 클릭하시고, 첫 번째 PC를 눌러주세요.


 그럼 두가지 보기가 나올텐데요.


 밑의 FastEthernet0를 선택해주시면 됩니다.



 다음은 스위치를 클릭해주세요.


 어떤 부분과 연결해주어도 상관없지만 나중에 간편한 설정을 위해 FastEthernet0/1을 선택해줍니다.


 앞에서 부터 차례대로 선택해주는 것이 헷갈림을 방지할 수 있답니다.



 우측 PC도 마찬가지로 설정을 해볼까요?



 이번에는 FastEthernet0/2에 연결해줍니다.


 FastEthernet0/1이 없는 이유는 무엇일까요?


 당연히, 아까 첫 번째 PC가 연결되어 있기 때문이죠! 



 다음은 스위치에서 라우터로의 연결입니다.


 FastEthernet0/3을 선택해줍니다.


 0/1과 0/2가 없는 이유는 마찬가지랍니다.



 라우터를 눌러주시고 FastEthernet0/0을 선택해줍니다.


 FastEthernet0/1이 다시 생겨있는 이유는 무엇일까요?


 아까 전의 FastEthernet0/1은 스위치의 번호였기 때문입니다.


 지금은 아까와는 다른 장치를 만지고 있는거에요. 



 위의 화면처럼 보이면 연결 성공입니다.


 제 화면에는 어떤 장치인지 글씨가 써져있는 것을 보실 수 있는데요.


 우측에 있는 메모지 모양을 선택하시면 메모를 할 수 있어요.


 원래는 컴퓨터나 스위치, 라우터라고 써주지 않지만 저는 편의를 위해 적어 놓았습니다. 


 실제로는 포트나 IP대역을 메모해놓는데 사용됩니다.



 한가지 선을 더 연결해 볼텐데요.


 콘솔용 선입니다.


 두 번째 보이시는 하늘색 선이 바로 콘솔용 선입니다.


 이 하늘색 선을 눌러주시고, PC를 선택 후 RS 232를 선택해주세요



 다음은 라우터를 눌러주시고, Console를 선택하시면 됩니다.



 이 처럼 보이면 연결 성공입니다. 


 이 선을 연결해주는 이유는 라우터를 PC로 설정해주기 위함이에요.


 CCNA 시험에서 이와 같은 실습 문제가 나오는데, 라우터를 직접 건들여 설정을 해주게 되면 실격이라고 하네요. 


 따라서, 라우터는 앞으로 PC로 설정해줄거에요.


 네트워크와는 전혀 관련없는 오로지 라우터를 설정해주기 위한 선입니다.


 가끔 영화 보시면 서버실에 들어가 가져온 노트북과 서버 컴퓨터를 선으로 연결하는 장면을 보셨을 텐데요.


 그 선이라고 생각하시면 이해가 조금 더 수월하실 거에요.



 다음은 라우터를 설정해줄건데요.


 그 전에 헷갈리지 않게 IP를 미리 적어둘게요.


 화면에 보이는 IP로 설정을 해줄겁니다.


 바로바로 설정을 해주면 헷갈릴 확률이 매우 높아요.


 지금은 딸랑 4개의 장비이지만 나중에는 갯수가 굉장히 많아지기 때문이죠.


 위 화면에서는 제가 급한 마음에? 실수를 했는데요. 


 라우터 밑에 적은 192.168.0.1은 게이트웨이 주소, 각 PC에 적은 것은 그들의 IP인데, 당연히 대역이 서로 다를 수 없겠죠?


 마지막 화면에서는 수정을 해주었지만 여기서 미리 정정한다면 PC 두 대의 IP를 192.168.0.101과 192.168.0.102로 수정하겠습니다.



 그리고 라우터를 클릭해주세요.


 위와 같은 화면이 보일텐데요.



 실제 장비의 모습을 옮겨 놓은 것입니다.


 기계 사진에서 우측에 보이는 전원 버튼을 눌러줍니다.


 포트를 달 수 있는 장치를 넣기 위함인데요.


 전원이 들어온채로 장치를 넣을 수는 없겠죠?


 PC를 켠 채로 그래픽카드를 교체할 수는 없으니 말이죠.


 작은 프로그램이지만 꽤나 현실적으로 만들어진 부분입니다.


 처음에는 신기했지만 나중에는 너무 현실적이라 약간 짜증이 나는 부분이기도 해요.


 전원을 꺼주시고 좌측MODULES에서 WIC-2T를 선택해 위에 보이시는 화면처럼 꽃아주세요.


 저는 커버까지 장착했는데요.


 WIC-Cover를 눌러 화면처럼 꽃아주시면 됩니다.


 굳이 필요없는 부분이긴 합니다.


 어때요? 엄청 현실적이죠? 



 다음에는 처음처럼 라우터의 전원 스위치를 눌러 다시 켜줍니다.


 위의 화면처럼 보여야 라우터를 제대로 만들어준거에요.



 다음은 좌측의 PC를 눌러줍니다.


 저처럼 하셨다면 좌측이지만 만약 콘솔 선을 다른 PC와 연결하셨다면 그 PC를 선택해주세요.


 그러면 위와 같은 파란색 창이 뜰거에요.



 Terminal을 눌러주세요.


 리눅스에서처럼 터미널을 실행시키는 도구입니다.


 여기서는 따로 설정할 필요없이 OK를 눌러주시면 돼요!



 저희가 처음부터 라우터를 설정해줄 것이기 때문에 no를 입력하시고 Enter를 눌러줍니다.


 착각하시면 안되는 게 지금 이 터미널은 라우터의 터미널입니다.


 PC를 누르고 터미널을 들어왔다고 PC의 터미널이 아니에요.


 궁금하신 분은 콘솔 선이 연결되지 않은 PC를 누르시고, 마찬가지로 Terminal을 눌러보세요.


 아무것도 작동되지 않는 빈 화면을 보실 수 있을거에요.


 만약 제대로 라우터와 연결된 PC를 눌렀는데도 빈 화면이라면 라우터의 전원을 켰는 지 다시 한번 확인해주세요.



 정상적으로 설정이 되었다면 위와 같은 화면이 보여야 합니다.


 어때요? 제 말대로 Router라고 쓰여있죠?



 위의 화면 처럼 따라서 입력해주시면 됩니다.


 어떤 의미인지 간단히 알아보면서 진행해보겠습니다.


 enable : 프리빌리지 모드로 들어가는 명령어입니다.


 configure terminal : 글로벌 컨피그레이션 모드로 들어가는 명령어입니다.


 hostname R1 : 라우터의 이름을 설정하는 명령어입니다.


 저는 R1이라고 했지만 다른 이름으로 하셔도 무방합니다.


 no ip domain-lookup : 혹시 잘못된 명령어를 입력했을 때 도메인에 질의하지 않도록 하는 명령어입니다.


 이 명령어는 무슨 말인 지 잘 모르실 수도 있는데요.


 굉장히 중요한 명령어입니다.


 한 순간의 실수로 인해 쓸데없는 시간 낭비를 막아주기 때문이에요.


 이 명령어를 사용하지 않고, 있지도 않은 명령어를 입력하였을 경우에는 그 명령어를 확인하기 위해 도메인에 질의를 하고 있기 때문에 기다려줘야해요.


 기다려봤자 어차피 없는 명령어기 때문에 결과는 아무것도 없습니다.



 line console 0 : 기본 터미널로 들어가는 명령어입니다.


 exec-timeout 0 0 : 세션 시간을 무제한으로 설정하는 명령어입니다.


 만약 시간을 정해줄 경우, 실습에서 불편할 수 있어요.


 나중 나중에 섬세한 설정을 할 경우에는 시간을 정해줘야 합니다.


 logging synchronus : 명령어와 로그를 분리하는 명령어입니다.


 이 명령어를 사용하지 않을 경우에는 가끔 내가 친 명령어의 로그들이 늦게 뜨는 경우가 있는 데 그럴 경우 다음 치고 있는 명령어와 겹칠 수가 있어요.


 이 명령어도 굉장히 필요한 명령어입니다.


 exit : 한 단계 바깥으로 나가주는 명령어입니다.


 여기서는 기본 터미널로 들어온 상태이니 기본 터미널에서 나가지겠네요.



 제가 계속 지저분하게 아래로 명령어를 이어서 쓰고 있는데요.


 이 터미널에서는 clear, cls 등 화면을 지워주는 명령어가 존재하지 않습니다.


 껏다켜도 마찬가지로 지워져있지 않습니다.


 이 부분은 양해 부탁 드리겠습니다...


 enable password cisco : 비밀번호를 cisco로 설정해줍니다.


 enable secret ccna : 비밀번호를 ccna로 설정해줍니다.


 이 둘의 차이는 환경설정에서 비번이 노출되고, 노출되지 않음입니다.


 노출되지 않는 쪽은 secret입니다.


 암호화가 되어 보입니다.


 따라서, 당연히 enable password 라는 명령어는 사용하지 않습니다.



 line vty 0 4 : 텔넷 접근을 설정해주는 명령어입니다.


 여기서는 0번에서 4번까지를 사용해준다고 설정하였습니다.


 password cisco : 텔넷 비밀번호를 설정해주는 명령어입니다.


 간단하고 편리하게 cisco로 설정했습니다.


 login : 텔넷에 로그인하는 명령어입니다.


 exit이란 명령어는 이제 따로 설명하지 않겠습니다.


 아예 바깥으로 나가야 하기 때문에 여기서는 두 번 사용하였습니다.



 show running-config : RAM에 저장되어 있는 정보를 확인하는 명령어입니다.


 여기서 보시면 아까 설정했던 비밀번호들이 보여요.


 secret으로 설정된 부분은 암호화가 되어있는 것을 확인하실 수 있습니다.



 copy run startup : 지금까지 설정했던 정보를 나중에 파일을 불러왔을 때도 저장되어 있도록 해주는 명령어입니다.


 위와 같은 화면이 나올때까지 Enter를 눌러주세요.


 그리고 exit이란 명령어로 글로벌 컨피그레이션 모드로 나와주세요.



 이제 본격적으로 설정을 해줘 볼게요.


 그 전에 여기서부터는 아까 처음에 말씀드린대로 잘 못 메모한 PC의 ip 대역을 수정하였습니다.


 interface fastEthernet 0/0


 ip address 192.168.0.1 255.255.255.0 : 게이트웨이를 설정하는 명령어입니다.


 아까 가설을 할 때 라우터에 연결한 부분이 0/0이었던 것 기억하시나요?


 그 포트의 게이트웨이를 192.168.0.1로 설정해주는 부분입니다.


 뒤의 255.255.255.0은 서브넷 마스크입니다.


 설정을 하실 때 항상 서브넷 마스크를 입력해주어야 명령어가 정상 작동합니다.


 그리고 화면을 보시면


 in

 interface fa

 interface fastEthernet 0/0


 이처럼 되어있는 것을 보실 수 있는데요.


 리눅스에서 처럼 존재하는 명령어라면 tab 키로 불러올 수 있습니다.


 다만 위처럼 계단 형식으로 써지게 됩니다.


 처음에는 굉장히 거슬리는 부분이지만 나중에는 신경쓰지 않게되니 걱정하지 않으셔도 돼요!


 여태까지 입력했던 명령어도 tab으로 전부 빠르게 입력할 수 있습니다.


 다만 clear가 먹히지 않는 관계로, 가독성을 높이기 위해 전 여태까지 사용하지 않았습니다.


 여기까지 되셨다면 no shutdown 명령어를 입력하고 exit으로 나와주시면 됩니다.


 라우터는 기본적으로 받아온 패킷을 shutdown 시켜버리는 데요.


 이렇게 되면 지금까지 입력한 정보가 사라지게 됩니다.


 그렇기 때문에 반드시 써줘야하는 명령어입니다.


 전부 되셨다면 x표를 눌러 나와주세요.


 제대로 따라 하셨다면 저장이 제대로 되어있으니 걱정하실 필요없이 x표를 눌러 나와주세요.



 밖에 화면에서 ip configuration을 눌러줍니다.


 위처럼 입력해주세요.


 ip address는 이 PC의 ip 주소를 의미합니다.


 Default Gateway는 전의 화면에서 설정하셨던 게이트웨이 주소를 입력해주시면 됩니다.


 확인이나 OK 버튼이 없는 특이한 구조인데요.


 그냥 x표를 눌러주시면 자동으로 저장이됩니다.



 마찬가지로 또 다른 PC를 눌러주셔서 위와 같이 설정해줍니다.


 당연히 같은 라우터로 나가기 때문에 게이트웨이 주소는 같겠죠?



 제대로 연결 설정이 되었나 확인해보겠습니다.


 Command Prompt를 눌러주세요.



 우리에게 익숙한 cmd 창이 보일거에요.


 지금은 우측 PC이니 좌측 PC에게 Ping을 보내보겠습니다.


 명령어는 윈도우 cmd에서와 동일합니다.


 제대로 패킷이 보내지는 것을 확인할 수 있죠? 



 게이트웨이로도 한 번 Ping을 보내보았습니다.


 지금까지 제대로 따라하셨다면 위처럼 제대로 패킷이 보내져야해요.


 잘하셨을 거라고 생각합니다.




 여기까지 패킷 트레이서에서 간단한 토폴로지 생성 및 연결이었습니다.


 간단한 포스팅이라고 생각하고 시작했는데... 꽤나 많은 작업이었던 것 같습니다.


 중간에 있었던 명령어들은 암기를 해주시는 게 좋아요.


 아마 몇 번 따라하시다보면 금방 이해되고 외우실 수 있을거에요.


 다음에 또 다른 포스팅으로 찾아뵙겠습니다.


 감사합니다. 


AND

 안녕하세요.


 오늘의 포스팅은 vi 옵션에 관한 내용입니다.


 매번 그때 그때마다 설정하기 귀찮으셨다면 오늘부터는 편안해지실거에요.


 바로 시작해보도록 하겠습니다. 


 vi 옵션을 설정해주는 파일은 vimrc입니다.


 아래의 사진처럼 똑같이 경로를 입력해주세요.



 숨겨진 파일이므로 꼭 .을 입력해주도록 합니다. 


 위와 같이 입력해 vi 로 들어오셨다면 다시 아래와 같은 내용을 입력합니다.


 각각 어떤 기능을 하는 지 설명해드리겠습니다.


 1 syntax on : 흑백인 소스에 색이 입혀집니다.


 2 set nu : vi에서 라인을 출력합니다.


 3 set ts=4 : 텝 사이즈를 4로 고정합니다.


 4 set sw=4 : 쉬프트 넓이를 4로 고정합니다.


 5 set ai : 자동 들여쓰기를 합니다.


 6 set cindent : c언어의 문법으로 봅니다.


 7 set smartindent : 검색시 대소문자를 구별하지 않습니다.


 8 set hlsearch : 검색시 검색한 패턴을 표시합니다.


 9 filetype on : 파일 타입을 확인합니다.


 이제 vi를 몇 번 써보셔서 알겠지만 위의 설정은 거의 표본이 되는 설정입니다.


 처음부터 설정되어 있다면 굉장히 편리합니다.


 한번 확인해 볼까요?



 passwd 파일을 vi 편집기로 열어봅시다.



 별다른 설정없이도 처음부터 보기 편하게 설정이 되어있음을 확인할 수 있습니다.




 여기까지 vi 옵션 설정이었습니다.


 무심코 지나갈 수 있는 부분이지만 섬세히 설정해준다면 더욱 편안한 리눅스를 경험할 수 있답니다. 

AND

 안녕하세요.


 이번 포스팅은 root 디렉토리에서 ls 명령어를 입력할 시 나오는 기본 디렉토리들의 역할에 대해 설명하는 시간입니다. 

 


 위의 사진과 같이 root 디렉토리에는 수 많은 디렉토리가 존재합니다.


 본인이 직접 만들어주시지 않아도 처음부터 있는 기본 디렉토리들입니다.


 bin은 windosw의 system32에 해당하는 폴더로 실행할 수 있는 명령어 저장 디렉토리입니다.


 예를 들면 전에 배웠던 cat, vi, mkdir, touch등을 들 수 있겠습니다.


 boot는 부트로더와 부팅에 필요한 필수적인 파일을 저장합니다.


 이 디렉토리가 손상되면 리눅스가 부팅되지 않습니다.


 dev는 시스템 디바이스 파일들을 저장하는 디렉토리로 시스템에 있는 모든 장치가 파일로 표현됩니다.


 etc는 시스템이나 프로그램의 환경설정 파일들이 저장된 디렉토리로 시스템 관리에서 가장 많이 사용되는 디렉토리입니다.


 home은 계정들의 홈 디렉토리입니다.


 media는 cd-rom, dvd 등과 같은 이동식 디스크들이 마운트 되는 곳입니다.


 lib은 라이브러리 디렉토리로 프로그램이 동작할 때 필요한 공유가 있는 곳입니다.


 mnt는 NFS와 같은 파일 시스템이 임시로 마운트 되는 디렉토리입니다.


 opt는 응용 프로그램을 설치하는 디렉토리입니다.


 한마디로 애드온 소프트웨어 패키지 디렉토리라고 볼 수 있겠습니다.


 proc은 실행중인 프로세스의 정보, CPU, 메모리 등의 시스템 정보를 가지고 있는 디렉토리입니다.


 sbin은 시스템 관리자용 명령어입니다.


 ifconfig, reboot, shutdown, mount 등의 명령어가 이곳에 속하게 됩니다.


 srv는 서비스 디렉토리로 ftp, http, cvs 등의 데이터가 저장되는 디렉토리입니다.


 sys는 리눅스 시스템이 필요로하는 파일이 저장되어 있는 디렉토리입니다.


 tmp는 임시로 파일을 만들고 삭제하는 디렉토리입니다.


 usr은 일반 사용자들을 위한 프로그램이 들어있는 디렉토리입니다.


 var는 수시로 업데이트 되는 파일들이 들어있는 디렉토리입니다.




 정말 간단히 알아보았는데요.


 이중에서 etc, proc, var, usr은 침해사고를 분석하는데 있어서 가장 중요한 디렉토리입니다. 


 처음부터 이 모든 디렉토리에 대해 자세히 알고 넘어가면 지루하기 때문에 이번 포스팅은 여기서 마치도록 하겠습니다.

AND

 안녕하세요.


 이번 포스팅은 리눅스의 패스워드 관련 파일의 내용을 살펴보는 것입니다.


 사용자가 사용하는 패스워드는 파일에 저장되는데요.


 어디에 저장되고 어떤 형태로 저장되는 지 알아봅시다. 



 시스템에 등록된 사용자 정보를 저장하는 파일은 passwd 입니다.


 이 파일은 /etc 밑에 있습니다.


 어떤 형식으로 되어있는 지 한 번 확인해볼까요?


 저번에 배웠던 cat 명령어를 이용해봅시다.



 본인이 처음에 등록하지 않은 사용자 정보도 많이 있을텐데요.


 이들은 프로그램을 운영하는데 있어서 필수적인 요소들입니다.


 저는 test라는 사용자를 따로 만들었었는데, 어떤 내용이 있나 확인해봅시다.


 이 파일엔 최근에 만든 사용자일수록 가장 밑에 있기 때문에 맨 밑을 보시면 됩니다.


 각 필드를 살펴보도록 하겠습니다.

 

필드

설명 

USER

 사용자의 이름을 나타냅니다. 

x

 사용자의 패스워드를 저장하는 필드입니다. 

UID

 시스템에서 사용자를 식별하는 번호입니다. 

GID

 시스템에서 그룹을 식별하는 번호입니다. 

GECOS

 주석 필드입니다. 

HOME

 사용자의 홈 디렉토리를 절대경로로 나타냅니다. 

SHELL

 사용자가 기본으로 사용할 쉘을 나타냅니다. 


 조금 더 자세히 살펴보도록 할까요?


 USER 필드는 시스템에서 유일해야하며 사용자가 로그인할 때 사용합니다.


 x 필드는 본래 사용자의 패스워드가 있었지만 보안상의 이유로 shadow 파일로 옮겨갔습니다.


 조금 후에 살펴보도록 하겠습니다.


 UID 필드에서 0번은 root사용자를 의미하며 1000번 미만은 시스템 사용자 계정으로 예약되어 있고, 일반 사용자는 1000번부터 사용하게 됩니다. GID의 경우도 이와 동일합니다.


 GECOS 필드는 General Electric Comprehensive Operationg의 약자로 사용자 계정에 대한 주석을 기재한는 곳입니다.


 HOME과 SHELL은 위의 설명으로 충분하다고 생각됩니다.


 다음은 위에서 살짝 언급했었던 shadow 파일에 대해 알아보도록 하겠습니다.


 이 파일은 사용자의 패스워드를 해시패스워드 형태로 저장하고 패스워드에 대한 속성을 저장하기 위한 파일입니다.


 전의 passwd 파일은 복호화가 쉬운 암호화 알고리즘을 사용하였기 때문에 변경되었습니다.



 마찬가지로 cat 명령어로 shadow 파일을 살펴보도록 하겠습니다.


 이 파일 역시 etc 밑에 있답니다.



 복잡한 숫자와 영어가 보일텐데요.


 하나씩 필드에 대해 알아보겠습니다.


필드

설명 

USER

 사용자의 이름을 나타냅니다.

HASH

 해시 알고리즘을 사용하여 생성된 패스워드가 저장됩니다. 

LASTCHANGE

 마지막으로 패스워드를 변경한 날짜를 의미합니다. 

MIN

 패스워드 변경 후 최소 사용 기간을 의미합니다. 

MAX

 패스워드 변경 후 최대 사용 기간을 의미합니다. 

WARNING

 만료일이 되기 전 사용자에게 경고 메시지를 출력하는 설정입니다. 

INACTIVE

 패스워드가 만료되고 지정된 기한 안에 패스워드를 변경하지 않으면 사용자 계정이 잠금 상태로 변경됩니다. 

EXPIRE

 사용자 계정의 만료일을 지정합니다. 

BLANK

 예약된 필드로 아직 사용하지 않습니다. 


 이 부분은 정보보안기사 자격증 시험에 상당히 자주 출제되는 부분입니다. 


 시험의 특성상 같은 문제는 내지 않는다고 공표하였지만 형식이 같지만 않을 뿐 돌려서 돌려서 이 내용을 문제로 자주 출제합니다.


 자격증을 준비하시는 분은 꼭 알고 넘어가셨으면 좋겠습니다.




 여기까지 리눅스 패스워드 파일에 관한 포스팅이었습니다.


 다음에는 더욱 더 알찬 내용으로 찾아뵙겠습니다.

'보안 지식 창고 > [리눅스]' 카테고리의 다른 글

[리눅스] vi 옵션 설정  (2) 2017.07.31
[리눅스] 디렉토리 구조  (0) 2017.07.30
[리눅스] 퍼미션 이해  (0) 2017.07.28
[리눅스] vi 편집기  (0) 2017.07.26
[리눅스] 파일 및 디렉토리 검색  (0) 2017.07.25
AND

 안녕하세요!


 오늘은 리눅스에서 파일 및 디렉토리의 권한을 줄 때 사용되는 퍼미션에 대해 포스팅하겠습니다.


 리눅스를 공부하다보면 퍼미션은 필수인데요.


 제대로 이해하지 못하거나 잘못이해하고 있는 경우가 많은 것 같아서 포스팅을 하게 되었습니다.


 그럼 바로 시작해보도록 하겠습니다. 



 좌측은 디렉토리의 퍼미션, 우측은 파일의 퍼미션입니다.


 umask가 022인 경우로 예제를 한 번 만들어보았습니다.


 사실 디폴트 umask값이 022이기 때문이기도 합니다.


 모두들 책에서 한 번정도 봤을 법한 그림일거에요.


 777에서 022를 빼서 퍼미션이 755가 되고, 666에서 022를 빼서 644가 되죠.


 이렇게 보면 당연하고, 이해를 전부 한 것 같지만 아래의 예를 보겠습니다.


 

 umask가 055일때 파일의 퍼미션은 어떻게 될까요?


 위에서 이해한대로 666에서 055를 빼주어 611이 될까요?


 답을 먼저 말씀드리면 'No'입니다. 


 왜 그럴까요?


 빼기가 아닌걸까요?


 밑으로 넘어가 이해를 돕도록 해보겠습니다.



 아까 처음에 봤던 예시를 이진수로 바꾸어 보았습니다.


 그리고 한 번 생각해보도록 할게요.


 umask가 왜 umask인지 의미를 생각해보면 이해하기 쉽습니다.


 얼굴에 착용하는 마스크처럼 통과시키고 통과시키지 못하고를 떠올려보시면 간단합니다.


 umask가 1이면 가로막는 것이고, 0이라면 통과시키는 것입니다.


 위의 숫자가 1, 아래의 숫자가 0이라면 그 1은 통과예요.


 위의 숫자가 1, 아래의 숫자가 1이라면 1은 통과하지 못하는 겁니다.


 반대로 위의 숫자가 0이라면 처음부터 통과고 umask고 생각할 필요없이 0입니다.


 조금 이해가 되시나요? 


 한 번 더 다른 표현으로 이해를 해볼게요.


 

 이진수를 읽기, 쓰기, 실행 권한으로 바꾸어 보았습니다.


 위에 w, 즉 읽기 권한이 있는데, umask에서 w로 막고 있습니다.


 이렇게 될 경우 w는 통과하지 못하게 되는거죠.


 r과 x는 umask가 없기 때문에 그대로 밑으로 통과하게 되는 거에요.


 확실히 이해가 되셨겠죠? 


 처음에 풀어보았던 문제를 다시 한 번 풀어볼게요.



 맨 앞의 rw-는 umask값이 없기 때문에 그대로 통과됩니다.


 두번째의 rw-는 umask값이 r과 x입니다.


 r은 막혀서 내려오지 못하고, w는 그대로 통과되죠.


 x는 어떨까요?


 처음부터 없었던 권한이기 때문에 umask값의 유무는 전혀 중요하지 않게 되는거죠.


 세번째는 두번째와 동일해요.


 따라서, 문제의 답은 622였습니다.




 리눅스에 입문하게 되면서 배우는 퍼미션, 그 단원에서 빼기의 의미를 잘 못 생각하시는 분이 의외로 많기 때문에 준비한 포스팅이었습니다.


 책의 저자는 리눅스에 능통한 분들이기 때문에 당연하다고 생각하실 수 있지만 입문자에게는 헷갈릴수 있고, 더 심하면 생각해본적도 없을 수 있습니다.


 여기까지 포스팅을 마치겠습니다. 


AND

 안녕하세요!


 이번 포스팅은 vi 편집기입니다.


 vi 편집기는 윈도우의 메모장 같은 프로그램입니다.


 vi는 visual editor의 약자입니다.


 이번에 배울 vi 편집기는 특히 리눅스를 처음 사용해 보시는 분에게는 완전 낯선 부분입니다.


 메모장처럼 생겨서 메모장이지 않은... 마우스를 사용했던 메모장과는 다르게 오로지 키보드로 사용을 해야하기 때문에 상당히 애먹는 부분입니다.


 하지만 모든 명령어에 익숙하다면 훨씬 더 편하다고 말하더군요.


 저는 아직 거기까지는 모르겠습니다.


 그럼 포스팅을 시작하도록 하겠습니다. 


 먼저 vi를 실행시켜 줍니다.



 실행법은 vi (파일명)입니다.


 여기서 저는 파일명을 test.txt라고 했는데 아무거로나 하셔도 상관없습니다.


 아시리라 믿지만 리눅스에서 . 뒤에 확장자처럼 보이는 것은 확장자가 아닙니다. 


 여러 파일을 분간하기 위해 사용할 뿐입니다.


 저는 텍스트 파일임을 알려주기 위해 눈에 익숙한 .txt를 사용하였습니다.



 그렇게 되면 이런 메모장과 비슷한 화면이 보여집니다.


 이 화면은 현재 커멘드 모드입니다.


 vi에는 총 3가지의 모드가 있는데요.


 그 중 하나입니다.


 여기서 i를 눌러봅니다.



 이 모드는 에디트 모드입니다.


 파일을 수정할 수 있는 모드예요.


 메모장처럼 글씨를 쓸 수 있는 모드라고 생각하시면 됩니다.


 아무 글씨나 써주세요.


 그 이유는 파일을 저장한 후 다시 켯을 때 제대로 저장이 되어 있나 확인해보기 위함입니다. 



 esc를 누른 후, :wq라고 입력해주시면 원래 입력하던 곳이 아닌 맨 밑에 글씨가 써지게 되는데요.


 이 모드가 바로 라스트 라인 모드입니다.


 :wq는 write하고, quit을 한다는 의미입니다.


 저장후 종료라는 말이라고 생각하시면 됩니다.


 더 자세한 명령어는 뒤에서 설명하도록 하겠습니다.



 vi 명령어로 파일을 다시 열어주시면 아까 전 그 내용이 그대로 임을 확인할 수 있답니다.


 아까와 같이 i를 눌러 here을 써줍시다.



 방금 커서가 있던 곳의 앞에서부터 써집니다.


 처음의 상황으로 돌아가 a를 눌러주시고 here을 써줍니다.



 커서의 뒤에 here이 써지는 것을 확인할 수 있어요.


 처음에는 커서 위치도 헷갈리고, i와 a가 복잡하시겠지만 조금 익숙해지시면 능숙하게 다루실 수 있을거에요!


 다시 처음의 상황으로 돌아가 a를 눌러주시고 here을 써보세요.



 커서 밑에 줄에 here이 써지는 것을 확인할 수 있답니다.


 입력할 수 있는 큰 단축키는 이렇게 i, a, o 입니다.


 그 외의 명령어도 한 번 보고 넘어 갈게요.


명령어 

설명 

a

 텍스트 뒤에 커서를 위치시키고 입력을 받습니다. 

A

 텍스트가 위치한 줄의 가장 뒷부분에 커서를 위치시키고 입력을 받습니다. 

i

 텍스트가 앞에 커서를 위치시키고 입력을 받습니다.

I

 텍스트가 위치한 줄의 가장 앞부분에 커서를 위치시키고 입력을 받습니다. 

o

 커서가 위치한 줄의 아래에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. 

O

 커서가 위치한 줄의 위에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. 


 처음부터 전부 외울 필요는 없다고 생각해요.


 하지만 알고 넘어가는 것과 모르고 넘어가는 것은 많이 다르겠죠?


 다음은 커멘드 모드에서 커서를 이동하는 명령어를 살펴보겠습니다.


 이 부분은 정리된 표만으로 충분하다고 생각해 표만 올립니다.


키 조합 

커서 이동 설명 

h, 왼쪽 화살표, 백스페이스 키 

 왼쪽으로 한 칸 이동 

j, 아래쪽 화살표 

 한 줄 아래로 이동 

k, 위쪽 화살표 

 한 줄 위로 이동 

l, 오른쪽 화살표, 스페이스 키 

 오른쪽으로 한 칸 이동 

w 

 한 단어 앞으로 이동 

b 

 한 단어 뒤로 이동 

e 

 현재 단어의 끝으로 이동 

$ 

 한 줄 끝으로 이동 

0(숫자) 

 한 줄의 시작으로 이동 

Enter 키 

 한 줄 아래로 이동 

G 

 파일의 제일 마지막 줄로 이동 

1G 

 파일의 제일 첫 번째 줄로 이동 

:n 

 n번째 줄로 이동 

nG 

 n번째 줄로 이동 

Ctrl + F 

 화면 사이즈만큼 다음 화면으로 이동 

Ctrl + D 

 화면 사이즈의 절반만큼 다음 화면으로 이동 

Ctrl + B 

 화면 사이즈만큼 이전 화면으로 이동 

Ctrl + U 

 화면 사이즈의 절반만큼 이전 화면으로 이동 

Ctrl + L 

 화면 재 갱신 


 w, b, G 정도 암기해두시고 가면 편리할거에요! 



 다음 실습을 위해 몇 글자 더 적었습니다.


 이번엔 삭제에 관련된 명령어입니다.


 마찬가지로 표를 먼저 확인할게요.


명령어 

기능 

R

 ESC 키를 입력할 때 까지 커서가 위치한 부분의 오른쪽부터 텍스트를 대체하여 입력합니다. 기존에 있던 내용은 삭제됩니다. 

C

 텍스트를 입력 후 ESC 키를 입력할 대 까지 커서가 위치한 부분으로부터 줄의 끝 부분까지 삭제되고 입력한 텍스트로 대체됩니다. 

s

 커서가 위치한 부분의 글자를 삭제한 후 입력합니다. 

x

 커서가 위치한 부분의 글자를 삭제합니다. 

dw

 커서가 위치한 부분부터 한 단어를 삭제합니다. 

dd

 커서가 위치한 줄을 삭제합니다. 

D

 커서가 위치한 부분부터 해당 줄의 끝부분까지 삭제합니다. 

:n,nd

 n번째 줄부터 n번째 줄까지 삭제합니다. 


 경험상 dd와 x를 자주 이용해요.


 여기서 R과 C가 설명이 조금 헷갈릴 수 있을 것 같아 화면으로 준비했습니다.


 먼저 R 입니다.


 R은 한마디로 한글에서 insert 키를 눌러 수정 상태가 되었다고 보면 돼요.



 이렇게 line위를 바로 덮어 쓸 수 있답니다.


 다음은 C 입니다.


 C도 R과 비슷한데 커서 뒤의 줄을 전부 삭제 후 입력해주는 명령어입니다.


 아래 화면에서 확인하실 수 있습니다.



 다음은 수정과 관련된 명령어입니다.


명령어

기능 

cw

 커서가 위치한 부분의 단어 끝까지 변경하여 덮어쓰기 합니다. 

r

 커서가 위치한 부분의 글자 하나를 대체합니다. 

J

 커서가 위치한 부분의 아랫줄의 내용을 커서가 위치한 줄로 이동시킵니다. 

xp

 커서가 위치한 부분의 글자와 오른쪽의 글자의 위치를 변경합니다. 

~

 커서가 위치한 부분의 글자의 대소문자를 변경합니다. 

u

 명령어 실행 전으로 되돌립니다. 

U

 커서가 위치한 줄의 모든 변경사항을 변경이전으로 되돌립니다. 

.

 바로 전에 입력한 명령어를 재실행합니다. 


 자주 쓰이는 명령어는 r, u정도 되겠습니다.


 vi에 익숙하지 못한 사용자는 자주 Ctrl + Z 로 되돌아가려고 할텐데요.


 그때마다 화면이 이상하게 개지기 마련입니다.


 u라는 명령어는 Ctrl + Z와 같은 기능이므로 꼭 기억해주세요! 


 다음은 커멘드 모드에서 패턴을 검색하고 변환하는 명령어입니다.


명령어 

기능 

/string

 현재 화면에서 다음 화면 순으로 단어를 검색합니다. 

?string

 현재 화면에서 이전 화면 순으로 단어를 검색합니다. 

n

 단어를 검색한 상태에서 다음 검색 결과를 확인합니다. 

N

 단어를 검색한 상태에서 이진 검색 결과를 확인합니다. 

:%s/(바꿀 단어)/(새 단어)/g

 찾아 바꾸기 입니다. 


 이 중에서 맨 마지막 찾아 바꾸기에 대해 조금 더 알아보도록할게요.


 만약 line을 line/jul로 바꾸고 싶다면


 :%s/line/line/jul/g 일까요?


 정답은 밑에서 확인해보도록 하겠습니다.



 글씨가 깨져 잘 안보이기 때문에 다시 써드리면


 :%s/line/line\/jul/g 입니다.


 C언어에서 특수문자를 출력하고 싶을 때와 상황을 같게 생각하시면 됩니다.


 \라는 문자를 사용하면 그 뒤 문자는 특수 행동을 하지 않습니다.


 아래는 변환 결과 출력 화면입니다.



 다음은 복사 및 붙여넣기 명령이입니다.


 마우스로 클릭이 되지 않다보니 상당히 불편한데요.


 리눅스에서는 보통 줄 단위로 복사를 하게 됩니다.


명령어 

기능 

yy

 한 줄을 복사하여 임시 버퍼 공간에 저장합니다. 

p

 임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣습니다. 

P

 임시 버퍼 공간에 저장된 텍스트를 커서의 윗줄에 붙여 넣습니다. 

:n,n co n

 n번째 줄부터 n번째 줄까지 복사하여 n번째 줄의 아래에 붙여 넣습니다. 

:n,n m n

 n번째 줄부터 n번째 줄까지 잘라내어 n번째 줄의 아래에 붙여 넣습니다. 


 다음은 라스트 라인 모드에서 저장 및 종료하는 명령어입니다.


명령어 

기능 

:w

 수정한 파일을 저장합니다. 

:w (파일명)

 수정한 파일을 다른 이름으로 저장합니다. 

:wq

 수정한 파일을 저장 후 종료합니다. 

:x

 수정한 파일을 디스크에 저장한 후 종료합니다. 

ZZ

 수정한 파일을 디스크에 저장한 후 종료합니다. 

:q!

 수정한 파일을 저장하지 않고 종료합니다. 


 전부 많이 쓰이는 명령어이므로 잘 외워두세요!


 마지막으로 환경 변수 활성화 및 비활성화 명령어입니다.


 라스트 라인 모드에서 실행할 수 있습니다.



먼저 가장 잘 쓰이는 :set nu 입니다.



 화면에 줄 번호를 출력해줍니다.


 매우 편리한 기능이에요!


 다음은 :set list 입니다.



 이 기능은 아래 화면처럼 숨겨진 기호를 표시해줍니다.


 줄의 끝이나 tab 등을 표시해줍니다.



 다음은 :set showmode 입니다.


 이 명령어는 초기에 미리 설정되어 있습니다.


 아까 위에서 보신 에디트 모드로 들어갔을 때 하단에 INSERT가 보이는 것이 이 때문입니다.



 반대로 :set noshowmode를 해주시면 없앨 수 있어요.


 전 아직 왜 없애는 기능이 있는 지 모르겠습니다.


 저 표시가 있어야만 안심하고 vi를 쓸 수 있다고 믿고 있답니다.



 중요한 명령어만 살펴보았지만 표로 한 번 더 정리해보았습니다.


명령어 

기능 

:set nu

 화면에 줄 번호를 출력합니다.

:set nonu

 화면에 줄 번호를 숨깁니다. 

:set ic

 검색시 대소문자를 구분하지 않습니다. 

:set noic

 검색시 대소문자를 구분합니다. 

:set list

 숨겨진 기호들을 표시합니다. 

:set nolist

 숨겨진 기호들을 표시하지 않습니다.

:set showmode

 vi 편집기의 현재 모드를 표시합니다. 

:set noshowmode

 vi 편집기의 현재 모드를 표시하지 않습니다. 

:set

 vi 편집기의 모든 환경변수를 출력합니다. 

:set all

 vi 편집기의 모든 환경변수를 활성화합니다. 




 여기까지 vi 편집기 명령어에 대한 포스팅이었습니다.


 이 외에도 많은 명령어가 있지만 이정도만 알아두셔도 vi 편집기를 사용하시는 데는 충분할거에요!


 저는 다음에 또 다른 포스팅으로 찾아뵙겠습니다. 

AND

 안녕하세요.


 오늘의 포스팅은 파일 및 디렉토리를 검색하는 방법에 대한 것입니다.


 찾는 파일 및 디렉토리가 어디에 있든 명령어만 확실히 알고 있다면 찾을 수 있답니다.


 그럼 포스팅을 시작하도록 할게요! 



 첫번째 명령어는 grep 입니다.


 어원은 유닉스 ed의 비슷한 기능을 수행하는 g/re/p에서 유래되었다고 합니다.


 global / regular expression / print 에서 각각의 머릿글자를 따 온 것이며 이것은 ed 텍스트 편집기에서 쓰이는 연속적인 지시어라고 하네요. 


 사용법은 grep (옵션) (패턴) (파일명 및 디렉토리명) 입니다.


 위 실습을 보면 /etc/passwd 안에서 root라는 패턴을 찾는 경우입니다.


 이 grep 명령어는 다양한 옵션이 있는데 지금부터 알아보도록 하겠습니다.



 첫번째는 -n입니다.


 이 명령어는 찾은 패턴이 몇번째 줄에 있나 그 라인도 출력해주는 명령어입니다.


 나중에 직접가서 찾기 편하겠죠?



 다음은 -v입니다.


 이것은 검색 패턴을 제외하고 검색하는 명령어에요.


 쓸일이 딱히 없어 보이지만 처음에 검색한 상황에서 무언가를 제외하고 싶을 때 사용하면 상당히 유용하답니다.



 다음은 -l입니다.


 이것은 해당 패턴 라인을 출력해주는 것이 아닌 매칭되는 패턴이 있는 파일 이름을 출력해주는 명령어입니다.


 어디에 내가 원하는 것이 있는 지 찾아보기 편리한 명령어입니다.



 다음은 -c입니다.


 검색 패턴과 매칭된 라인 개수를 출력해주는 명령어입니다.


 너무 많은 검색 결과가 나왔을 때 그 라인 수를 세기에 적합하군요.



 다음은 -w입니다.


 -w를 사용하게 되면 순수 그 단어만 찾게 됩니다.


 예를 들어 위의 실습에서 sh에 관한 패턴을 찾았는데요.


 보시면 bash, shutdown, sshd가 검색되었는데, -w 명령어를 사용하게 되면 이들은 검색되지 않습니다.


 왜냐하면 순전히 sh로만 되어있는 문자열을 검색하기 때문이죠!


 꽤 많은 명령어를 봤기 때문에 표로 한번 정리하고 넘어가볼까요? 


옵션 

설명

-i 

 검색 패턴 대소문자 무시 

-l 

 매칭되는 패턴이 잇는 파일 이름 출력 

-n 

 매칭되는 줄 번호 표시 

-v 

 검색 패턴을 제외하고 검색 

-c 

 검색 패턴과 매칭되는 줄 개수 출력 

-w 

 해당 패턴만 검색 


 그리고 정규표현식을 이용해 패턴을 검색할 수도 있습니다.


 익숙해지기만 하면 굉장히 편리한 표현입니다.


 사실 이 표현을 모른다면 검색 명령어를 쓰기 어렵습니다.


 표로 함께 이해해보겠습니다.

 

메타 문자 

용도 

예제 

결과 

^ 

 줄의 시작 지정 

 ^solaris 

 solaris로 시작하는 줄 

$ 

 줄의 마지막 지정

 solaris$ 

 solaris로 끝나는 줄 

. 

 한 문자 대치

 s...s 

 s로 시작하고, 5개의 아무문자 후, s로 끝남 

* 

 아무것도 없거나 여러 문자 대치 

 [a-z]* 

 소문자로 시작하는 모든 문자 도는 아무것도 없음 

[] 

 패턴 중 한 문자 대치

 [Ss}olaris 

 Solaris 또는 solaris 

[^] 

 패턴 중 제외할 한 문자

 [^a-r]olaris 

 첫 문자가 a에서 r까지 제외하고 s에서 z까지 오는 문자 


 헷갈리신다면 더 자주보고 계속 사용해 익숙해지는 방법밖에 없습니다.



 다음은 egrep입니다.


 기본적으로 grep 명령어와 사용법이 같구요.


 다른 점은 grep 명령어의 기능에 추가로 확장 정규 표현식을 지원한다는 것입니다.


메타 문자 

용도 

예제 

결과 

+ 

 특정 문자 앞에 하나 이상의 문자 있음 

 [a-z]+tion 

 tion 문자 앞에 소문자의 문자 있음 

x|y 

 x 또는 y

 root|admin 

 root 또는 admin 

(abc|def) 

 abc 또는 def (문자열)

 Ha(ve|ing) 

 Have 또는 Having 


 위의 표 메타 문자 정도가 더 추가되었습니다.


 위의 실습에서는 b(a|o)를 사용했기 때문에 ba가 포함되는 혹은 bo가 포함되는 단어가 검색되신 것을 볼 수 있습니다.


 다음은 fgrep입니다.


 이 명령어는 위의 정규표현식 문자를 정규표현식이 아닌 문자 그대로 인식하는 명령어입니다.


 파일 및 디렉토리의 내용에 정규표현식의 문자 패턴을 검색할 때 사용합니다.


 다른 특이점은 없습니다. 



 마지막으로 find 명령어입니다.


 단어 그대로 무언가를 찾을 때 쓰는 find입니다.


 사용법은 find (경로) (조건) (동작) 입니다.


 경로는 검색을 시작할 경로를 지정해줍니다.


 조건은 검색 조건을 지정해주고, 동작은 파일 검색 후 동작을 지정하는 역할을 합니다.


 위의 실습은 root 디렉토리에서 파일이름이 hosts인 파일을 찾는 예시입니다.


 find 명령어의 조건을 표로 정리해보았습니다.

 

조건 

설명 

-name 

 특정 파일 이름 지정 

-type 

 검색할 파일 종류 지정 

-perm 

 특정 권한을 가진 파일 검색 

-user

 특정 사용자가 소유한 파일 검색 

-size [+|-]n 

 파일의 특정 크기 검색 

-atime [+|-]n 

 파일에 접근한 시간 검색 

-mtime [+|-]n 

 파일을 수정한 시간 검색 


 몇가지 참고하실 점을 말씀드리면 특정 파일 이름을 지정시에 당연히 메타문자는 사용 가능합니다.


 그리고 검색할 파일 종류는 d의 경우 directory, f의 경우 file입니다.


 여러 형식을 사용할 수 잇습니다.


 다음은 동작입니다.


 동작

설명

-print 

 터미널에 검색한 파일의 경로와 이름을 표시 

-ls 

 터미널에 검색한 파일의 경로와 이름뿐만 아니라 자세한 정보 표시 

-exec command {} \; 

 검색한 파일에 특정 명령 수행 

-ok command {} \; 

 -exec 결과와 비슷하나, 특정 명령을 대화형으로 진행 




 여기까지 파일 및 디렉토리 검색 방법에 대한 포스팅이었습니다.


 간단한듯 암기해야할 부분이 상당히 많은 부분입니다.


 특히 정규표현식 메타문자는 쉽게 익숙해지지 않는 부분입니다.


 하지만 몇 번 사용해보고 반복적으로 학습하신다면 금새 익숙해진 자신을 볼 수 있을거에요.


 다음 포스팅에서 또 만나도록 해요. 

AND

ARTICLE CATEGORY

전체 (115)
블로그 소개 (1)
KITRI 교육 (95)
보안 지식 창고 (16)
한 잔의 여유 (2)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE