chapter15. Interaction with users

  • 학습목표
    • 파일 리버전 관리
    • 시스템 기능 스케줄
    • 호스트 이름의 부여
    • 문제 예방 방법
    • 원격 사용자에 관련한 문제 해결
    • 원격 관리자의 소재 파악과 접촉방법
  1. 사용자 유형: 여러 유형의 사용자들을 다루는 기술을 사용하면 시스템 인프라의 강점과 약점을 파악할 수 있고 사용자와 관련된 문제를 해결하거나 회피하여 효과적으로 운용이 가능하다.
    1. 초보자: 초급레벨 기술 지원을 받을 수 있도록 하고 튜토리얼이나 FAQ를 만든다.
    2. 파워유저: 일상활동을 시스템에 너무 많이 의존하기 때문에, 현재 시스템에 서비스에 가해지는 변경에 의해서 동요를 심하게 겪을 수도 있다. 시스템에 변경을 가할 필요가 있는 지를 결정하기 위해 그들의 의견을 들어보자
    3. 아는체하는 사용자
    4. 침묵하는 사용자
    5. 악의적인 사용자
  2. 사용자와의 커뮤니케이션: 시스템 관리자는 다음을 포함한 여러가지 다양한 이유로 시스템의 사용자와 커뮤니케이션을 가지게 된다. (시스템 유지보수 작업의 공시, 새 특성이나 제거된 특성에 대한 공시, 사용자 행동에 대한 경고, 실시간 적 문제를 토의, 권리의 포기 및 정책 게시, 컨텍트 정보 게시)
    1. 능동적인 커뮤니케이션 방법: 능동적인 커뮤니케이션 방법은 시스템 관리자가 사용자에게 실시간으로 메시지를 보내고 그 다음에 사용자가 도착한 메시지를 보는 방법이다.
      1. write를 이용한 개별 사용자와의 커뮤니케이션: 유닉스에서 가장 단순한 커뮤니케이션 툴은 write이며, 이것은 다른 사용자의 터미널에 간단한 메시지를 출력하도록 해준다. 사용방법은 write 사용자 [터미널]
      2. wall을 이용한 브로드캐스팅: 시스템에 현재 로그인한 모든 사용자에게 공지를 보내고 싶은 경우라면 wall 명령어를 사용하는 것이 좋다. wall은 write all의 축약으로써 사용자들이 그 시간에 어떤 일을 하고 있더라도 그 일을 가로막고 각 사용자의 터미널에 메시지를 브로드캐스트 해준다.
      3. talk을 이용한 인스턴스 메시징: talk는 양방향 메시징 툴이다. talk는 사용자의 터미널을 두 개의 부분으로 나누어 문자 기반으로 나누어 문자 기반으로 표시된다. talk 사용자[@호스트명]
    2. 수동적인 커뮤니케이션 방법: 게시판이나 신문에 게시하는 것과 유사한 방법.
      1. 배너에 메시지 게시: 사용자가 시스템에 접속하는 초기에 배너 메시지를 표시한다. TCP 래퍼나 혹은 /etc/issue 파일을 이용하여 배너를 표시할 수 있다.
      2. 오늘의 메시지(MOTD)에 메시지 게시: 오늘의 메시지 기능을 사용하여 비상상황이 아닌 새로운 소프트워ㅔ어나 앞으로 있을 유지보수 작업 스케줄 또는 단순한 환영메시지 같은 내용을 공지할 수 있다. /etc/motd 파일에 저장한다.
      3. 뉴스그룹에 메시지 게시: 유즈넷 뉴스 그룹은 공통된 관심사를 가진 사용자들이 그룹을 형성하여 메시지를 게시할 수 있는 스레드 기능을 갖는 포럼이다.
      4. 웹을 통한 메시지 게시
      5. 이메일을 통한 메시지 전송
  3. 문제를 일으키는 사용자 조치:
    1. 자원의 부적절한 사용: 자원의 부적절한 사용은 다음과 같은 내용을 포함한다. 수용가능한 사용정책을 위배하는 시스템 사용, 불법적인 사용, 보안이나 안정성을 위협하는 사용, 남용
    2. 다른 사용자를 괴롭힘: 위협적인 이메일, 커뮤니케이션 재촉, 개인자료 훔쳐봄, 위장
    3. 시스템 공격 착수: 시스템을 해킹하는 것을 불법이며 거의 항상 사용 정책을 위반하는 것이 된다. 시스템 관리자는 해커의 공격에 빠르고 단호하게 대응해야 한다. 해커를 탐지했을 때 즉시 해커가 침입하는데 사용한 계정 접근을 차단해야하며, 실행 중일지도 모르는 세션을 죽여야하고, 증거를 수집해야한다.
    4. 다른 시스템을 공격하기 위해 사용: 관리하는 시스템 중의 한 시스템에서의 사용자가 다른 시스템을 해킹 시도를 하면 시스템 관리자는 그 사람이 해킹 공격에 사용한 시스템의 무결성에 대한 책임을 져야 한다.
  4. 사용자 문제 예방: 시스템 관리자는 사용자가 문제를 일으키지 못하도록 할 수 있는 모든 방법을 실행함으로써 시스템 관리자가 속한 기업의 시간과 돈을 절약하고 잠재적인 데이터의 상실을 피할 수 있게 해야한다.
    1. 사용 정책 강화: 사용 정책에 대해서 제대로 작성을하고 위반에 대한 적합한 강제 조치를 취해야한다.
    2. 보안 침해에 편집증적인 태도: 사용자가 시스템의 보안을 위태롭게 했거나 혹은 다른 시스템을 공격했다는 의심을 가지면 바로 불능 상태로 만들고 프로세스를 죽여야한다. 도한 증거수집도 해야한다.
  5. 원격의 사용자 문제 조치: 원격의 사용자가 일으키는 가장 일반적인 문제의 일부는 다음과 같다.(서비스 거부 공격, 계정 없이 시스템에 코드 실행, 해킹된 계정을 이용하여 해적판 소프트웨어 저장과 유포, 스팸메일 전송을 위한 메일 허브 이용) 원격 사용자 문제를 해결하는 단계는 다음과 같다. (원격의 주소 파악, 시스템 접근을 얻는데 사용한 메커니즘 불능화(계정 불능화, 패치 적용, 원격 주소로부터의 트래픽 거부), 원격 주소의 해당 관리자 파악, 원격 서버의 관리자와 접촉, 로그 증거 확보, 원격 관리자가 응답하지 않는 경우 주소를 담당하는 제공자와 함께 철저히 추적, 문제 사용자를 발견하거나 불능상태가 될때 까지 원격 관리자와 함께 철저히 추적. 일반적인 가이드라인과 실제적 조언은 다음과 같다.
    1. 원격 사이트 주소 파악: 만일 사용자가 시스템에 로그인한 상태라면 몇 개의 단순한 명령어를 사용하여 그 사용자가 시스템에 접속하는데 사용한 시스템의 주소를 알아 낼 수 있다. 또한 사용자가 실제로 로그인하지 않은 상태에서도 네트워크 트래픽이 어디에서 오는지 결정할 수 있는 방법이 있다.
      1. who를 이용한 원격 사용자의 위치 파악: who 명령어는 시스템에 현재 로그인해 있는 사용자 목록을 표시해줄 뿐만 아니라 사용자의 원격 주소와 같은 몇몇 통계를 보여준다. grep 명령어를 이용하여 필터링하면된다. who | grep joeuser
      2. last를 이용한 원격 사용자의 위치파악: last 명령어는 현재의 로그인 상황을 포함하여 시스템의 모든 로그인 활동을 보여준다. last는 로그인 히스토리 기록을 찾는데 가장 먼저 사용할 수 있는 명령어라고 할 수 있다. `last [-num] [사용자명]
      3. Tcpdump와 snoop을 이용한 원격 사용자의 위치 파악: 시스템에 문제를 일으키기 위해서 사용자가 시스템에 꼭 로그인할 필요가 없다. 단순한 원격 서비스 거부 공격이나 혹은 버퍼 오버플로에 취약한 네트워크 서비스의 익스플로잇이 로컬 사용자가 일으킬 수 있는 것과 마찬가지로 시스템에 손상을 가할 수 있다. 그들은 시스템에 로그인을 하진 않았지만 관리자 컴퓨터에 네트워크 트래픽을 계속 보내고 있기 때문에 tcpdump와 snoop 같은 툴을 이용하여 스니핑할 수 있고 원격 주소를 파악할 수 있다. 예를 들어 누군가 Telnet을 이용하여 접속을 계속 시도하면 Telnet의 서비스 포트인 23번 포트를 스니핑함으로써 접속이 어디에서부터 오는 것인가를 알아낸 수 있다. ` tcpdump -n port 23`
    2. IDENT 프로토콜을 이용한 원격 사용자 파악
    3. 원격 사이트의 관리자와 접촉: 원격 접속이 어느 주소에서 시작되었는지 알고 난 후에는 그 정보를 이용하여 해당 네트워크에 대한 접촉방법을 결정하고 그들에게 문제를 알려야 한다. 이런 일을 하는 가장 좋은 방법은 whois를 이용하는 것이다. whois는 정당한 권한을 가진 다양한 소스로부터 공식적인 컨택트 정보를 찾아 준다.
      1. whois를 이용한 도메인 컨택트 인포메이션 찾기: 도메인명을 안다면 그 도메인의 컨택트 정보를 얻기 위해서 whois를 이용해서 interNIC에 질의를 할 수 있다.
      2. whois를 이용한 네트워크 컨택트 정보 찾기
      3. 모든 방법이 실패했을 경우 root에게 이메일 보낸다.