2016년 8월 11일 목요일

정보보안기사 정리 21 - 리눅스 서버보안

리눅스 서버 보안 - PAM, 리눅스 서버 보호 방법 예, 리눅스 로그파일




1. PAM(Pluggable Authentication Modiles, 장착형 인증 모듈)
- 리눅스 배포판에서 사용자 인증, 응용 프로그램에 대한 인증, 접근 자원, 사용자 권한 등을 선택할 수 있게하는 라이브러리.
- 다양한 인증 서비스 선택가능하고, 기존의 응용프로그램 수정없이 새로운 인증 서비스 모듈을 추가하여 사용할 수 있음.
  프로그램 개발시 별도의 인증모듈 개발안하고 플러그인 방식의 PAM을 사용한다.
- login, FTP 등은 인증 필요시 PAM 라이브러리를 호출하고, PAM 라이브러리는 해당 프로그램의 PAM 설정파일을 보고 설정된 모듈을 수행한 후 결과를 프로그램에게 주면 프로그램에 인증여부를 결정함.
  예: 어플리케이션 인증 요청 → PAM은 /etc/pam.d 폴더에서 해당 어플의 설정을 읽음. 설정에는 어떤 경우에 *.so 모듈을 실행하는지 적혀있음 →
        *.so 모듈을 실행하고 결과를 어플에 반환 → 어플이 인증여부 결정.
- PAM 관련파일 설명
  ① pam.d 폴더에는 PAM 라이브러리를 이용하는 어플리케이션(서비스)의 설정 파일이 있음.
  ② /lib/security/ 폴더에 PAM 라이브러리가 제공하는 인증 모듈들이 위치함.
  ③ /etc/srcurity에는 모듈 실행에 필요한 추가 설정파일들이 있음.
  ④ /etc/pam.d/remote 설정파일에 인증 모듈의 설정내용이 들어있음.
      형식: type control module-path module-arguments (빈칸으로 구분됨)
      예: auth required pam_securetty.so (파라미터는 없음)
      설명: type: PAM 모듈 종류, control: 모듈 실행 후 결과에 따른 PAM 라이브러리 행동 결정,
              module-path: 실제 모듈파일 경로(보통 /lib/security). 확장자는 *.so.
  ⑤ PAM 사용 예1: root 계정의 원격 접속 제한
      터미널 접속시 /etc/securetty 파일에 등록된 터미널이 아니면 root의 접속을 허용하지 않도록 함.
      /etc/pam.d/remote 에 auth required pam_securetty.so 추가
      /etc/securetty 파일에 "pts/~" 터미널 제거. (즉, tty만 남김. tty는 콘솔로 직접 로그인 하는 것. pts는 가상터미널 Telnet, SSH 등으로 원격 접속하는 것)
      /var/log/secure를 통해 pam 모듈의 로그 확인
      * 유닉스/리눅스 시스템별 root 계정 원격 접속 제한 설정이 다름.
      * 취약점 점검: w 명령어를 통해 현재 접속중인 root 사용자 정보 확인 가능
  ⑥ PAM 사용 예2: 계정 잠금 임계값 설정
      암호 입력 실패횟수, 초과시 잠그는 시간 등을 설정
      /etc/pam.d/system-auth 파일에 auth required pam_tally2.so deny=5 unlock_time=120 추가 (5회 입력 실패시 120초 계정 잠금)


2. 리눅스 서버 보안 예
- 사용하지 않는 계정 잠금 또는 삭제: passwd -l xxx, userdel -r xxx
- 계정 잠금 임계값 생성: 일정 횟수 이상 입력시 계정이 잠기도록 함.(PAM에서 설명됨)
- root의 권격 접속 제한 (PAM에서 설명됨)
- 원격 접근 제어: TCP Wrapper 설치를 통해 hosts.allow, hosts.deny로 관리
- Session Timeout 설정: sh 및 ksh에서는 /etc/profile에서 TMOUT=300 export TMOUT 설정 csh에서는 /etc/csh.lgin에서 set TMOUT=300 설정
- 비밀번호 최대 사용기간, 최소 길이 설정 예: /etc/login.defs에서 PASS_MAX_DAYS 90 PASS_MIN_LEN=8 설정
- 주요 디렉터리 및 파일에 일반 사용자의 쓰기 권한 제한(예:chmode 755 xxx). 공유 디렉터리는 sticky bit 설정
- 사용자의 기본 환경파일 접근권한 제한
- umask 설정
- 불필요한 rpc 서비스 제거 및 불필요한 서비스 제거: r계열 명령어는 인증 없이 사용자의 원격 접속 실행이 가능하므로 비활성화시킨다.
  예: finger(네트워크 외부에서 시스템에 등록된 사용자 정보확인 가능), rlogin(인증 없이 관리자의 원격접속 가능하게 함), 
       echo(DoS 공격에 취약함), NFS(네트워크 파일 시스템, 네트워크를 통해 원격에서 로컬 파일 시스템에 접근가능하게 함. 보안상 매우 취약) 등


3. 리눅스 로그 파일
* 정보보안기사 정리 19 - 유닉스 서버보안 글에 유닉스와 리눅스 공통의 로그파일에 대한 정리 있음. 읽을 것.
- secure 로그파일 (리눅스)
  사용자/그룹 생성/삭제 등 사용자 인증에 대한 정보 기록. 서버보안에 중요한 파일.
  원격에서 접속한 내역과 su 명령 수행한 내역 등이 저장
  /var/log/secure
- messages 로그파일 (리눅스)
  리눅스의 가장 기본적인 시스템 로그파일. 시스템 운영에 대한 전반적인 메시지 저장
  데몬들의 실행 내역, 사용자들의 접속정보, Tcpwrapper 접근 제어 정보 등을 저장
  /var/log/messages
- dmesg 로그파일 (리눅스)
  리눅스 부팅시 출력되는 메시지 기록. 부팅시 에러나 조치사항 보려면 이 파일 보면 됨.
  /var/log/dmesg, 텍스트라서 vi로 보든, dmesg 명령어로 볼수 있다.
- boot.log 로그파일 (리눅스)
  부팅시 파일 시스템에 대한 체크, 데몬 실행 상태를 기록하는 것으로 성공/실패 여부 확인 가능
  /var/log/boot.log
- xferlog 로그파일 (리눅스)
  FTP 로그파일. proftpd, vsftpd 데몬의 서비스 내역 기록. 누가 어떤 파일을 업/다운 했는지 기록됨.
  /var/log/xferlog
- cron 로그파일 (리눅스)
  시스템의 정기적인 작업에 대한 로그.
  /var/log/cron


댓글 없음:

댓글 쓰기