반응형

Map안에 특정 Key를 가진 데이터가 한계씩 존재하는 경우가 존재하면 해당 리스트에서 특정 Key에 해당하는 Map데이터만 뽑아내야하는 경우가 발생하였다. 그래서 다음과 같이 stream().filter()를 이용하여 데이터를 추출하였다.

public static Date getLatestDateByLatestDateList(Long procIdx, List<Map<Long, Date>> latestDateMapList) {
		Stream<Map<Long, Date>> filterLatestDateListStream = latestDateMapList.stream().filter(date -> date.containsKey(procIdx));
		return filterLatestDateListStream.collect(Collectors.toList()).get(0).get(procIdx);
}

위 코드와 같은 경우는 List에 unique하게 데이터가 존재해서 get(0)을 통해서 데이터를 추출했지만, 중복된 데이터일 경우 코드 수정이 필요할 것으로 예상된다.

728x90
반응형

1. 계정 관리

 

(1) root 이외의 UID가 0 금지

- root(UID=0)와 동일한 UID를 가진 계정 존재시 root 권한으로 시스템 접근 가능하므로 주의

- /etc/passwd 파일 내 UID 확인(cat이나 vi 사용)

- UID 변경(OS별 점검파일 위치 및 점검방법)

SOLARIS, Linux, HP-UX usermod -u [UID] [계정명]
리눅스의 경우 500 이상, SOLARIS, HP-UX는 100 이상으로 설정
AIX chuser id=[UID] [계정명]
100이상 설정

 

(2) 패스워드 복잡성 설정

- 부적절한 패스워드 유형 : 사전에 나오는 단어나 이들의 조합, 길이가 너무 짧거나 공백, 키보드 자판의 일련순, 사용자 계정 정보로부터 유추 가능한 단어

- 대소문자/숫자/특수문자 중에서 2가지 종류를 조합했을 때 10자리 이상, 3가지 이상 종류 조합했을 때 8자리 이상 

 

(3) 패스워드 최소 길이 설정(8자 이상)

SOLARIS cat /etc/default/passwd
PASSLENGTH=8
Linux cat /etc/login.defs
PASS_MIN_LEN 8
HP-UX cat /etc/default/security
MIN_PASSWORD_LENGTH=8
AIX cat /etc/security/user
minlen=8

 

(4) 패스워드 최대 사용 기간 설정(90일=12주)

SOLARIS cat /etc/default/passwd
MAXWEEKS=12 (단위 : 주)
Linux cat /etc/login.defs
PASS_MAX_DAYS 90 (단위 : 일)
HP-UX cat /etc/default/security
PASSWORD_MAXDAYS=90 (단위 : 일)
AIX cat /etc/security/user
maxage=12 (단위 : 주)

 

(5) 패스워드 최소 사용 기간 설정(1일 또는 1주)

SOLARIS cat /etc/default/passwd
MINWEEKS=1 (단위 : 주)
Linux cat /etc/login.defs
PASS_MIN_DAYS 1 (단위 : 일)
HP-UX cat /etc/default/security
PASSWORD_MINDAYS=1 (단위 : 일)
AIX cat /etc/security/user
minage=1 (단위 : 주)

 

(6) 패스워드 파일 보호

SOLARIS, Linux /etc/shadow 파일 존재 확인
/etc/passwd 파일 내 두번째 필드가 x 표시인지 확인
HP-UX /tcb 디렉터리 존재 확인
/etc/passwd 파일 내 두번째 필드가 x 표시인지 확인
AIX /etc/security/passwd 파일에 패스워드 암호화하여 저장

 

(7) Session Timeout 설정(600초=10분)

SOLARIS, Linux, HP-UX, AIX #sh, ksh, bash 사용시
cat /etc/profile(.profile)
TMOUT=600 (단위 : 초)
export TMOUT

#csh 사용시
cat /etc/csh.login 또는 cat /etc/csh.csh.rc
set autologout=10 (단위 : 분)

 

 

2. 파일 및 디렉터리 관리

 

(1) root 홈, 패스 디렉터리 권한 및 패스 설정

- root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면 root 계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. "."이 /usr/bin, /bin, /sbin 등의 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정으로 접속한 관리자가 특정 명령을 실행하면 불법적으로 현재 디렉터리에 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있다.

- $PATH 변수를 확인하여 경로 맨 앞 또는 중간에 "."가 포함되어 있는지 확인하여 맨 뒤로 이동 또는 불필요시 삭제

- SHELL에 따라 참조되는 환경설정파일

/bin/sh /etc/profile, $HOME/.profile
/bin/bash /etc/profile, $HOME/.bash_profile
/bin/ksh /etc/profile, $HOME/.profile, $HOME/kshrc
/bin/csh /etc/.login, $HOME/.cshrc. $HOME/.login

 

(2) 파일 및 디렉터리 소유자/소유그룹 설정

- 소유자/소유그룹이 존재하지 않는 파일의 경우, 시스템 자원 낭비가 될 수 있고 관리가 되지 않는 문제 있다.

- find . \( -nouser -o -nogroup \) -exec ls -al {} \; -> 소유자/소유그룹 존재하지 않는 파일/디렉터리 검색

- chown, chgrp으로 소유자/소유그룹 변경 또는 rm -r로 삭제

 

(3) world writable 파일 점검

- world writable 파일이란 모든 사용자(others)에게 쓰기 권한이 부여되어 있는 파일

- 모든 사용자가 접근 및 수정할 수 있는 권한으로 설정된 파일 존재시, 일반 사용자가 실수로 또는 의도적으로 파일 정보를 변경할 수 있기 때문에 시스템 장애나 추가적인 공격에 활용될 수 있는 문제점 있다.

- find [경로] -perm -2 -exec ls -al {} \; -> others에 쓰기 권한 부여된 파일/디렉터리 검색

- 대상 파일/디렉터리를 chmod를 통해 쓰기권한 제거하거나 rm -r로 파일/디렉터리 제거

 

(4) 주요 파일 소유자 및 권한 설정

/etc/passwd 파일 사용자 정보 담고 있는 파일
root 소유의 644 이하의 권한으로 설정
/etc/shadow 파일 사용자의 암호화된 패스워드 정보 담고 있는 파일
root 이외에 접근 못하도록 root 소유의 400 이하의 권한 설정
/etc/hosts 파일  IP와 호스트 이름을 매핑하는데 사용되는 파일
root 소유의 600 이하의 권한을 설정
/etc/(x)inetd.conf 파일 inetd 데몬에 대한 설정파일
root 소유의 600 이하의 권한 설정
/etc/syslog.conf 파일 syslogd 데몬에 대한 설정파일로 주요 로그파일에 대한 설정정보를 가지고 있다.
root 이외의 사용자는 해당 파일 변경할 수 없도록 root 소유의 644 이하의 권한을 설정
/etc/services 파일 서비스 관리(서비스별 포트/프로토콜 정보)정보를 담고 있는 파일
root 소유의 644 이하의 권한을 설정

[출처] https://noredstone.tistory.com/83

728x90

+ Recent posts