반응형

리눅스 서버 취약점 보안

취약점 점검항목: 6. 관리자 계정에 대한 로그인 성공/실패 기록 설정

 

 

취약점 점검기준

  - 양호기준: 로그인 기록을 설정할 경우 안전합니다.
  - 취약기준: 로그인 기록을 설정하지 않을 경우 취약합니다.

 

 

취약점 점검방법

  - sudo 권한이 있는 아이디 쉘 접속 후 루트 권한을 얻어서 작업하시길 바랍니다.
    $sudo su -

 

  - LINUX: /var/log/wtmp 파일이 존재할 경우 안전합니다.

    #ls -alL /var/log/wtmp

/var/log/wtmp 조회


  - HP-UX, AIX: /var/adm/wtmp 파일이 존재할 경우 안전합니다.
    #ls -alL /var/adm/wtmp

  - SunOS: /var/adm/wtmpx 파일이 존재할 경우 안전합니다.
    #ls -alL /var/adm/wtmpx

 

※ wtmp 파일 방법은 바이너리로 저장되어 있어 cat으로 읽을 수 없습니다. last 명령어로 조회할 수 있습니다.

    #last

last 로그인 기록 조회

 

 

 

 

취약점 조치방법

  - loginlog 파일 생성 후, 관리자에게 읽기/쓰기권한을 부여해줌
    #touch /var/log/wtmp
    #chown root:utmp /var/log/wtmp
    #chmod 600 /var/log/wtmp

 

※ 소유자(root)외에 그룹과 사용자 계정에서도 last를 사용하고 싶으신 경우 chmod 644 /var/log/wtmp 로 설정

 

 

리눅스(유닉스) 취약점 점검 전체보기

 

'리눅스(유닉스) 취약점 점검' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

리눅스 서버 취약점 보안

취약점 점검항목: 5. /etc/hosts 600 권한 설정

 

 

취약점 점검기준

  - 양호기준: /etc/hosts 파일의 소유자가 root이고, 권한이 600인 경우 양호합니다.
  - 취약기준: /etc/hosts 파일의 소유자가 root가 아니거나, 권한이 600이 아닌 경우 취약합니다.

   ※ 서버 이용에 필수적으로 644권한이 필요한 경우 예외적으로 인정하기도 합니다.

 

 

취약점 점검방법

  - sudo 권한이 있는 아이디 쉘 접속 후 루트 권한을 얻어서 작업하시길 바랍니다.
    $sudo su -

 

  - ls -al /etc/hosts 명령어로 파일의 소유가 root이고 권한이 600인지 확인 합니다.

    #ls -al /etc/hosts

ls -l /etc/hosts

 

 

 

 

취약점 조치방법

   - /etc/hosts/의 소유자를 root로 변경합니다.

    #chown root /etc/hosts

   - /etc/hosts/의 권한을 600으로 변경합니다.

    #chmod 600 /etc/hosts

 

 

리눅스(유닉스) 취약점 점검 전체보기

 

'리눅스(유닉스) 취약점 점검' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

리눅스 서버 취약점 보안

취약점 점검항목: 4. 로그인 실패 횟수 제한

 

 

취약점 점검기준

  - 양호기준: 계정 잠금 임계값이 5이하의 값으로 설정되어 있는 경우 양호합니다.
  - 취약기준: 계정 잠금 임계값이 설정되어 있지 않거나, 6이상의 값으로 설정되어 있는 경우 취약합니다.

 

 

취약점 점검 및 조치방법

  - sudo 권한이 있는 아이디 쉘 접속 후 루트 권한을 얻어서 작업하시길 바랍니다.
    $sudo su -

 

  - SSH 로그인 실패 횟수 설정 확인: /etc/ssh/sshd_config 파일에 MaxAuthTries 5 이하로 설정합니다.

    #vi /etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

 

  - 리눅스(방법1) O/S: /etc/login.defs 파일에 LOGIN_RETRIES 5 이하 설정합니다.

    #vi /etc/login.defs

   ※ 내용이 많아서 보기 어려운 경우 | grep LOGIN_RETRIES 로 확인합니다.

    #cat /etc/login.defs | grep LOGIN_RETRIES

리눅스(데미안) 로그인 실패 횟수 설정값 확인

 

  - 리눅스(방법2) O/S: /etc/pam.d/system-auth, /etc/pam.d/password-auth 파일에 아래와 같이 설정합니다.

    #vi /etc/pam.d/system-auth (콘솔 통한 로그인 실패 횟수 설정값 확인하기)

    #vi /etc/pam.d/password-auth (X-Window, ssh 통한 로그인 실패 횟수 설정값 확인하기)

    pam_tally.so 인 경우

    auth       required     pam_tally.so deny=5 unlock_time=120 no_magic_root

    account   required    pam_tally.so no_magic_root reset

    pam_tally2.so 인 경우

    auth       required     pam_tally2.so deny=5 unlock_time=120 no_magic_root

    account   required    pam_tally2.so no_magic_root reset

    pam_faillock.so 인 경우

    auth        required         pam_faillock.so preauth silent audit deny=5 unlock_time=120

    auth        [default=die]   pam_faillock.so authfail audit deny=5 unlock_time=120

    account   required         pam_faillock.so

 

   ※ 옵션설명
    no_magic_root : root에게는 패스워드 잠금 설정을 적용하지 않음
    deny=5 : 5회 입력 실패 시 패스워드 잠금
    unlock_time=120 : 계정 잠김 후 마지막 계정 실패 시간부터 설정된 시간(120초)가 지나면 자동 계정잠김 해제
    reset : 접속 시도 성공시 실패한 횟수 초기화

 

 

 

  - HP-UX:  /tcb/files/auth/system/default 파일을 연 후 아래와 같이 수정 또는, 신규 삽입 합니다.

    #vi /tcb/files/auth/system/default
    (수정 전) u_maxtries# 
    (수정 후) u_maxtries#5 
   ※ HP-UX 서버에 계정 잠금 정책 설정을 위해서는 HP-UX 서버가 Trusted Mode로 동작하고 있어야하므로 Trusted Mode로 전환한 후 잠금 정책 적용 

 

  - AIX: /etc/security/user 파일을 연 후 아래와 같이 수정 또는, 신규 삽입 합니다.

    #vi /etc/security/user
    (수정 전) loginretries = 0
    (수정 후) loginretries = 5

  - SunOS 8 이하 버전: /etc/default/login 파일을 연 후 아래와 같이 수정 또는, 신규 삽입 합니다.

   #vi /etc/default/login
   (수정 전) #RETRIES=2
   (수정 후) RETRIES=5

 

  - SunOS 9 이상 버전: /etc/security/policy.conf 파일을 연 후 아래와 같이 수정 또는, 신규 삽입 합니다.

   #vi /etc/security/policy.conf
   (수정 전) #LOCK_AFTER_RETRIES=NO
   (수정 후) LOCK_AFTER_RETRIES=YES

 

 

※ 로그인 실패 횟수 제한 방법은 O/S마다 다르고, 같은 O/S라도 버전마다 다르고, 같은 버전이라도 pam에 따라 다릅니다. 설정 후 정상 잠김이 작동하는지 테스트를 해봐야 하며 정상 잠기지 않을 시 다른 방법을 찾아보시기 바랍니다.

 

 

리눅스(유닉스) 취약점 점검 전체보기

 

'리눅스(유닉스) 취약점 점검' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

리눅스 서버 취약점 보안

취약점 점검항목: 3. 디폴트 시스템 계정 제거

 

 

취약점 점검기준

  - 양호기준: 불필요한 계정이 존재하지 않는 경우 양호합니다.
  - 취약기준: 불필요한 계정이 존재하는 경우 취약합니다.

 

 

취약점 점검방법
  - sudo 권한이 있는 아이디 쉘 접속 후 루트 권한을 얻어서 작업하시길 바랍니다.
    $sudo su -

 

  - #cat /etc/passwd 명령어로 불필요한 기본 계정이 존재하는 지 확인합니다.

    #cat /etc/passwd

리눅스 계정 확인 #cat /etc/passwd

  - 기본차단 계정 목록

    adm: 시스템 관리자를 위한 별도의 계정 입니다.

    lp: 로컬 프린터 서버 계정입니다.

    sync: 원격지 서버 동기화 계정입니다.

    shutdown: 시스템 종료 계정입니다.

    halt: 강제 시스템 종료 계정입니다.

    news: 뉴스그룹 서버용 계정입니다 (nntp를 사용하는 경우가 아니면 불필요합니다)

    uucp: 유닉스 시스템과 파일 복사를 위한 프로토콜 계정입니다.

    operator: 특수 목적용 계정으로, 시스템 백업 등 여러사용자가 시스템을 공통 관리하기 위해 사용되는 계정입니다.

    games: X11(X윈도우) 화면에서 게임을 할 때 사용하는 계정입니다.

    gopher: www(웹) 서비스가 나오기전 서비스입니다. gopher 사이트에 접속해 웹서핑을 하는데 사용하는 계정입니다.

    nfsnobody NFS(Network File System)을 이용할 수 있는 기본 계정입니다.

    squid: 프록시서버 계정입니다.

 

  ※ 기본차단 계정 중 사용이 불가피한 경우는 예외로 계정을 살려둡니다.

     기본차단 계정 목록 외 불필요한 계정 또한 삭제 합니다.

 

  - 90일 동안 로그인 하지 않은 계정이 있는지 확인하는 명령어를 입력합니다.

    #lastlog -b 90

리눅스 90일 동안 미접속 계정 확인 #lastlog -b 90

  ※ 90일 이상 로그인 하지 않은 계정 중 사용이 불가피한 경우는 예외로 계정을 살려둡니다.

 

 

 

 

취약점 조치 방법

  - userdel 명령으로 불필요한 사용자 계정을 삭제 합니다.

    #userdel (계정명)

 

예) test계정을 삭제하는 경우

    #userdel test

 

PS: 리눅스 OS가 AIX의 경우는 명령어가 다릅니다.

  - rmuser 명령으로 불필요한 사용자 계정을 삭제 합니다.

    #rmuser (계정명)

 

예) test계정을 삭제하는 경우

    #rmuser test

 

 

리눅스(유닉스) 취약점 점검 전체보기

 

'리눅스(유닉스) 취약점 점검' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

라즈베리파이4 스마트폰 앱으로 외부에서 원격 접속하기

1편에서는 같은 공유기에 접속된 스마트폰에서 라즈베리파이를 원격 접속하는 방법을 배우봤습니다.

 

2편에서는 같은 공유기가 아닌 다른 네트워크에서 공유기까지 찾아 들어오는 방법을 배워봅니다.

그리고 외부에서 PC나 스마트폰으로 공유기 특정 포트로 접속을 하면 라즈베리파이의 특정 포트로 연결 시켜주는 포트포워딩에 대해 배우겠습니다.

 

 

먼저 외부에서 내 공유기까지 들어오기 위해서는 내 공유기에 할당된 IP 정보를 알아야 합니다.

라즈베리파이에서 웹브라우저를 실행시킵니다.

또는, 같은 공유기에 연결되어 있는 PC나 스마트폰에서 웹 브라우저를 실행시킵니다.

그후 네이버에 접속하여 "내 아이피" 라는 검색어로 검색하면 내 공유기에 할당된 아이피를 확인 할 수 있습니다.

네이버 "내 아이피" 검색

 

 

라즈베리파이의 ssh와 xrdp로 원격접속 하기 위해서는 ssh접속 포트와 xrdp 접속포트를 알아야 합니다.

처음 설치후 특별히 변경하지 않았다면 ssh의 기본포트는 22이고, xrdp의 기본포는 3389입니다.

 

이제 우리는 네이버에서 알아낸 공유기IP로 특정 포트를 통해 접속하면 공유기에서는 그 포트를 통해 들어온 사용자를 라즈베리파이의 22번 포트와 3389포트로 연결 시켜주는 포트포워딩을 설정해줘야 합니다.

 

iptime 공유기를 기준으로 설명드리겠습니다.

먼저 iptime 공유기의 설정페이지에 접속하신 후 고급설정 - NAT/라우터 관리 - 포트포워드 설정까지 들어갑니다.

포트포워드 설정

 

 

 

빈칸 4곳을 아래와 같이 채워줍니다.

포트포워딩 설정 값 입력

1. ssh 포트포워딩

규칙이름 : ssh (원하시는 이름)

내부IP주소 : 라즈베리파이에 할당된 아이피 192.168.0.xxx 입력

외부포트 : 11922 (임의 숫자)

내부포트 : 22

적용을 클릭 합니다.

 

2. xrdp 포트포워딩

규칙이름: xrdp (원하시는 이름)

내부IP주소 : 위와 같음

외부포트 : 33389 (임의 숫자)

내부포트 : 3389

적용을 클릭 합니다.

 

※ 외부포트는 임의 숫자 아무거나 넣어도 됩니다. 보안이 강화된 회사망에서는 알려진 특정 포트를 방화벽에서 막는 경우가 있으니 10000번 이상의 임의 숫자를 넣어주시기 바랍니다. 저는 ssh는 11922로, xrdp는 33389로 설정하였습니다.

 

 

이제 공유기의 포트포워딩이 끝났습니다.

회사 PC나 와이파이에 접속하지 않은 스마트폰에서 ssh와 xrdp를 연결하셔도 접속이 되실 겁니다.

 

접속 방법은 호스트 주소에는 네이버 검색에나 알게된 공유기 IP를 넣어주시고

ssh접속일 경우 포트포워딩에서 설정한 임의 외부포트 숫자를 넣어주시기 바랍니다. (위에서는 11922로 설정)

xrdp로 GUI 원격접속일 경우도 위에서 설정한 임의 외부포트 숫자를 넣어주시면 됩니다. (위에서는 33389로 설정)

통신사 4G 통신으로 라즈베리파이 xrdp 원격 접속

 

 

다음편으로는 라즈베리파이가 재부팅되더라도 내부IP주소가 변하지 않도록 특정 아이피를 고정하는 방법과

공유기가 재부팅되어 공유기IP가 변경되어도 특정 DNS 주소로 항상 공유기에 접속할 수 있는 DDNS에 대해서 배워보겠습니다.

 

 

라즈베리파이 전체보기

 

'라즈베리파이' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형