겉바속촉
Unix 서버 2. 파일 및 디렉터리 관리 본문
주요정보통신기반시설_Unix 서버
2. 파일 및 디렉토리 관리
사용환경
UBUNTU : 20.04
2.1 root홈, 패스 디렉터리 권한 및 패스 설정
양호 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되지 않은 경우
취약 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되어 있는 경우
***참고***
환경변수: 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 집합 으로 Path 환경변수는 실행파일을 찾는 경로에 대한 변수임
2.2 파일 및 디렉터리 소유자 설정
양호 : 소유자가 존재하지 않는 파일 및 디렉터리가 존재하지 않는 경우
취약 : 소유자가 존재하지 않는 파일 및 디렉터리가 존재하는 경우
소유자가 존재하지 않는 파일 및 디렉터리는 퇴직자의 자료이거나 관리 소홀로 인해 생긴 파일인 경우 또는 해킹으로 인한 공격자가 만들어 놓은 악의적인 파일인 경우가 있기 때문에 삭제 및 관리해야 합니다.
-nouser : 소유주가 없는 파일 검색(사용자 계정을 삭제했을 경우 사용자가 생성한 파일들을 남기는 경우 존재)
-nogroup : 소유그룹이 없는 파일 검색
소유자가 존재하지 않는 파일이나 디렉터리가 불필요한 경우 rm 명령으로 삭제해주거나
필요한 경우 chown 명령으로 소유자 및 그룹 변경
***시행착오***
가이드에 나온 대로 명령 그대로 쳐서 디렉토리 제거 명령을 파일 제거 명령이랑 동일하게 주었음
- 디렉터리 제거 : rm -r 디렉터리명
- 파일 제거 : rm 파일명
2.3 /etc/passwd 파일 소유자 및 권한 설정
양호 : /etc/passwd 파일의 소유자가 root이고, 권한이 644 이하인 경우
취약 : /etc/passwd 파일의 소유자가 root가 아니거나, 권한이 644 이하가 아닌 경우
관리자(root) 외 사용자가 "/etc/passwd” 파일의 사용자 정보를 변조하여 shell 변경, 사용자 추가/삭제 등 root를 포함한 사용자 권한 획득이 가능할 수 있기 때문에 권한을 변경해주어야합니다.
- 소유자 변경 : #chown root /etc/passwd
- 권한 변경 : #chmod 644 /etc/passwd
***참고***
/etc/passwd: 사용자의 ID, 패스워드, UID, GID, 홈 디렉터리, 쉘 정보를 담고 있는 파일
2.4 /etc/shadow 파일 소유자 및 권한 설정
양호 : /etc/shadow 파일의 소유자가 root이고, 권한이 400 이하인 경우
취약 : /etc/shadow 파일의 소유자가 root가 아니거나, 권한이 400 이하가 아닌 경우
위에 제시된 파일 및 디렉터리의 소유자가 root가 아니거나 파일의 권한이 400이 아닌 경우라면
단계1. “/etc/shadow” 파일의 소유자 및 권한 확인
단계2. “/etc/shadow” 파일의 소유자 및 권한 변경 (소유자 root, 권한 400)
***참고***
/etc/shadow: 시스템에 등록된 모든 계정의 패스워드를 암호화된 형태로 저장 및 관리 하고 있는 파일
shadow파일은 패스워드를 암호화하여 저장하는 파일이며 해당 파일의 암호화된 해쉬값을 복호화하여(크래킹) 비밀번호를 탈취할 수 있음
2.5 /etc/hosts 파일 소유자 및 권한 설정
양호 : /etc/hosts 파일의 소유자가 root이고, 권한이 600인 이하인 경우
취약 : /etc/hosts 파일의 소유자가 root가 아니거나, 권한이 600 이상인 경우
# ls –l /etc/hosts 로 확인
“hosts” 파일의 소유자가 root가 아니거나 파일의 권한이 600이하가 아닌 경우 아 래의 보안설정방법에 따라 설정을 변경함
- 파일 소유자 변경 : #chown root /etc/hosts
- 파일 권한 변경 : #chmod 600 /etc/hosts
***참고***
- /etc/hosts: IP 주소와 호스트네임을 매핑하는 파일. 일반적으로 인터넷 통신 시 주소를 찾기 위해 도메인 네임 서비스(DNS)보다 hosts 파일을 먼저 참조함. hosts 파일은 문 자열 주소로부터 IP 주소를 수신받는 DNS 서버와는 달리, 파일 내에 직접 문자열 주소 와 IP 주소를 매칭하여 기록하며, DNS 서버 접근 이전에 확인하여 해당 문자열 주소가 목록에 존재할 시 그 문자열 주소에 해당하는 IP 주소로 연결함
- 파밍(Pharming): 사용자의 DNS 또는 hosts 파일을 번조함으로써 정상적인 사이트로 오인하여 접속하도록 유도한 뒤 개인정보를 훔치는 새로운 컴퓨터 범죄 수법
2.6 /etc/(x)inetd.conf 파일 소유자 및 권한 설정
양호 : /etc/inetd.conf 파일의 소유자가 root이고, 권한이 600인 경우
취약 : /etc/inetd.conf 파일의 소유자가 root가 아니거나, 권한이 600이 아닌 경우
***참고***
(x)inetd (슈퍼데몬) : 자주 사용하지 않는 서비스가 상시 실행되어 메모리를 점유하는 것을 방지하기 위해 (x)inetd(슈퍼대몬)에 자주 사용하지 않는 서비스를 등록하여 요청 이 있을시에만 해당 서비스를 실행하고 요청이 끝나면 서비스를 종료하는 역할 수행
***시행착오***
아무리 뒤져봐도 안나오길래 구글링했더니 요새는 잘 쓰지않아서 설치해야된다는 것 보고 패...th
2.7 /etc/syslog.conf 파일 소유자 및 권한 설정
양호 : /etc/syslog.conf 파일의 소유자가 root(또는 bin, sys)이고, 권한이 640 이하인 경우
취약 : /etc/syslog.conf 파일의 소유자가 root(또는 bin, sys)가 아니거나, 권한이 640 이하가 아닌 경우
syslog.conf 파일의 설정내용을 참조하여 로그의 저장위치가 노출되며 로그를 기록하지 않도록 설정하거나 대량의 로그를 기록하게 하여 시스템 과부하를 유도할 수 있기 때문에 /etc/syslog.conf 파일의 권한 적절성을 점검하는 것입니다.
***참고***
/etc/syslog.conf : syslogd 데몬 실행시 참조되는 설정파일로 시스템 로그 기록의 종류, 위치 및 Level을 설정할 수 있음
***시행착오***
가이드에 나온 syslog.conf 파일을 찾을래야 찾을 수가 없어서 검색해보니 리눅스가 원래는 로그와 관련된 패키지로 syslog를 사용했지만 rsyslog로 기능을 강화시킨 패키지로 전환이 됐다고합니다 팍쒸............ (╬▔皿▔)╯
2.8 /etc/services 파일 소유자 및 권한 설정
양호 : etc/services 파일의 소유자가 root(또는 bin, sys)이고, 권한이 644 이하 인 경우
취약 : etc/services 파일의 소유자가 root(또는 bin, sys)가 아니거나, 권한이 644 이하가 아닌 경우
아니라면 /etc/services” 파일의 소유자 및 권한 변경 (소유자 root, 권한 644) 시켜주세요
2.9 SUID, SGID, 설정 파일점검
양호 : 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않은 경우
취약 : 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있는 경우
주요 파일에 불필요한 SUID/SGID가 설정된 경우 아래의 보안설정방법에 따라 SUID/SGID를 제거해주어야합니다.
***참고***
※ SUID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유자의 권한을 얻게 됨
※ SGID: 설정된 파일 실행 시, 특정 작업 수행을 위하여 일시적으로 파일 소유 그룹의 권한을 얻게 됨
2.10 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정
양호 : 홈 디렉터리 환경변수 파일 소유자가 root 또는, 해당 계정으로 지정되어 있고,
홈 디렉터리 환경변수 파일에 root와 소유자만 쓰기 권한이 부여 된 경우
취약 : 홈 디렉터리 환경변수 파일 소유자가 root 또는, 해당 계정으로 지정되지 않고,
홈 디렉터리 환경변수 파일에 root와 소유자 외에 쓰기 권한이 부여된 경우
※ 환경변수 파일 종류: “.profile”, “.kshrc”, “.cshrc”, “.bashrc”, “.bash_profile”, “.login", “.exrc”, “.netrc” 등
이걸 한번보도록 할게요
/etc/bash.bashrc --> 환경변수 파일 중 하나겠쥬?
하지만 변경해야되는 경우라면
소유자 변경 방법 : #chown USER이름 FILE이름
일반 사용자 쓰기 권한 제거 방법 : #chmod o-w FILE이름
2.11 world writable 파일 점검
양호 : 시스템 중요 파일에 world writable 파일이 존재하지 않거나, 존재 시 설정 이유를 확인하고 있는 경우
취약 : 시스템 중요 파일에 world writable 파일이 존재하나, 해당 설정 이유를 확인하고 있지 않는 경우
***참고사항***
※ world writable 파일: 파일의 내용을 소유자나 그룹 외 모든 사용자에 대해 쓰기가 허용된 파일
(예 : rwxrwxrwx root root <파일명>)
단계1. world writable 파일 존재 여부 확인
--> #find / -type f -perm –2 –exec ls –l {} \;
--> 다음과 같이 주르르르륵 나와서 당황
단계2. 권한 제거 또는 파일 삭제
권한 제거 : 일반 사용자 쓰기 권한 제거 방법 --> #chmod o-w
파일삭제 : 삭제 방법 --> #rm -rf
2.12 /dev에 존재하지 않는 device 파일 점검
양호 : dev에 대한 파일 점검 후 존재하지 않은 device 파일을 제거한 경우
취약 : dev에 대한 파일 미점검 또는, 존재하지 않은 device 파일을 방치한 경우
***참고***
/dev 디렉터리
- 논리적 장치 파일을 담고 있는 /dev 디렉터리 /devices 디렉터리에 있는 물리적 장치 파일에 대한 심볼릭 링크
예를 들어 rmt0를 rmto로 잘못 입력한 경우 rmto 파일이 새로 생성되는 것과 같이 디바이스 이름 입력 오류 시 root 파일 시스템이 에러를 일으킬 때까지 /dev 디렉터리에 계속해서 파일을 생성함
- /dev 디렉터리 내 불필요한 device 파일이 존재할 시 삭제 권고
#find /dev –type f –exec ls –l {} \;
2.13 $HOME/.rhosts, hosts.equiv 사용 금지
양호 : login, shell, exec 서비스를 사용하지 않거나, 사용 시 아래와 같은 설정이 적용된 경우
1. /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자가 root 또는, 해당 계정인 경우
2. /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한이 600 이하인 경우
3. /etc/hosts.equiv 및 $HOME/.rhosts 파일 설정에 ‘+’ 설정이 없는 경우
취약 : login, shell, exec 서비스를 사용하고, 위와 같은 설정이 적용되지 않은 경우
파일 아무리 찾아도 없음
패TH
2.14 접속 IP 및 포트 제한
양호 : 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정한 경우
취약 : 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정하지 않은 경우
***참고 사항***
[접속 IP 및 포트제한 애플리케이션 종류 예시]
※ TCP Wrapper: 네트워크 서비스에 관련한 트래픽을 제어하고 모니터링 할 수 있는 UNIX 기반의 방화벽 툴
※ IPFilter: 유닉스 계열에서 사용하는 공개형 방화벽 프로그램으로써 Packet Filter로 시스 템 및 네트워크 보안에 아주 강력한 기능을 보유한 프로그램
※ IPtables: 리눅스 커널 방화벽이 제공하는 테이블들과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 응용프로그램
허용할 호스트에 대한 IP 및 포트제한이 적용되지 않은 경우, Telnet, FTP같 은 보안에 취약한 네트워크 서비스를 통하여 불법적인 접근 및 시스템 침해 사고가 발생할 수 있기 때문에 허용한 호스트만 서비스 사용이 가능하게 합니다.
All deny 적용 확인 및 접근 허용 IP 적절성 확인
Step 1) iptables 명령어를 통해 접속할 IP 및 포트 정책 추가
(예) SSH 서비스 제한
#iptables –A INPUT –p tcp –s 192.168.1.0/24 —dport 22 –j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j DROP
Step 2) iptables 설정 저장 #/etc/rc.d/init.d/iptables save
cat /etc/hosts.deny
cat /etc/hosts.allow
Step 1) vi 편집기를 이용하여 “/etc/hosts.deny” 파일 열기 (해당 파일이 없을 경우 새로 생성)
Step 2) 아래와 같이 수정 또는, 신규 삽입 (ALL Deny 설정)
(수정 전) 설정 없음
(수정 후) ALL:ALL
Step 3) vi 편집기를 이용하여 “/etc/hosts.allow” 파일 열기 (해당 파일이 없을 경우 생성)
(수정 전) 설정 없음
(수정 후) sshd : 192.168.0.148, 192.168.0.6 (다른 서비스도 동일한 방식으로 설정)
'IT 일기 (상반기) > 주요정보통신기반시설' 카테고리의 다른 글
Unix 서버 3. 서비스 관리(2) (0) | 2021.10.15 |
---|---|
Unix 서버 3. 서비스 관리(1) (1) | 2021.10.15 |
Unix 서버 1. 계정 관리 (0) | 2021.10.13 |
Unix 서버 (0) | 2021.10.13 |
Windows 서버 5. 보안 관리 (0) | 2021.10.10 |