- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ACL
- LEVIATHAN
- Android
- 프로젝트
- Tkinter
- JSP
- Java
- RaspberryPi
- 쉘 스크립트 if문
- GPIO
- 쉘 스크립트
- API
- nginx
- System
- 리눅스
- Python
- 쉘 스크립트 기초
- 클라우드
- centos docker
- Shell script
- Linux
- 라즈베리파이
- 네트워크
- 안드로이드
- GUI
- 메소드
- 자바
- docker
- 그라파나
- synology
- Today
- Total
IT창고
리눅스 서버 보안2 본문
2018/06/13 - [보안/Security] - 리눅스 서버 보안 1에 이어서 진행합니다.
2.10 사용자, 시스템 시작 파일 및 환경파일 소유자 및 권한설정
환경변수 파일의 접근권한이 잘못 설정되어있을 경우 비인가자는 다양한 방법으로 환경을 변경시켜 침해사고를 발생시킬수있습니다. 그렇기때문에 홈 디렉토리 내의 환경변수 파일에 대한 접근 권한 적정성을 확인해야합니다.
환경변수 파일의 권한 중 타 사용자 쓰기 권한 제거
(“.profile”, “.kshrc”, “.cshrc”, “.bashrc”, “.bash_profile”, “.login", “.exrc”, “.netrc” 등)
/etc/skel/는 홈 디렉토리에 복사되는 파일들이 있는 곳입니다.
상황에 맞게 소유자 변경 chown <user_name> <file_name> 하고 일반 사용자 쓰기 권한 제거 chmod o-w <file_name> 합니다.
2.11 world writable 파일 점검
모든 사용자가 접근 및 수정할수 있는 권한으로 설정된 파일이 존재할 경우 사용자의 실수나 악의적인 행위로 주요 파일 정보가 노출되거나 시스템장애를 일으킬수 있습니다.
먼저 world writable 파일 존재 여부를 확인합니다.
world writable 파일이 존재하면 존재 이유가 있을 경우 넘기고 없다면 일반 사용자 쓰기 권한 제거로 chmod o-w <file_name> 와 파일 삭제 rm -rf <world-writable 파일명>를 합니다.
2.12 /dev에 존재하지 않는 device 파일 점검
디바이스가 존재하지 않거나 이름이 잘못된 파일을 찾아서 삭제합니다.
/dev 디렉토리 안에 장치 파일들이 있습니다. find /dev -type f -exec ls -l {} \; 명령어로 찾아봐도 되지만 직접 ㄷ렉토리에서 찾아보아도 됩니다.
예를 들어 brw-rw----. 1 root disk 7, 0 2018-06-14 00:53 loop0 가 있는데 major, minor number를 가지지 않는 device일 경우 삭제해야 합니다.
b(블록장치파일), c(문자장치파일)는 장치 드라이브로 /dev 디렉토리에는 장치파일만 있어야 합니다.
2.13 HOME/.rhosts, hosts.equiv 사용금지
*‘r’command 를 사용하는 시스템으로 현재에는 거의 사용하지 않는 시스템으로 오래된 시스템에서는 가끔 사용하는 경우가 있습니다. 현재 테스트PC로는 테스트가 불가능하기에 넘어가겠습니다.
*‘r’command는 인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로 rsh(remsh), rlogin, rexec 등이 있습니다.
2.14 접속 IP 및 포트 제한
UNIX 시스템이 제공하는 Telnet, FTP 등 많은 네트워크 서비스를 통한 외부 비인가자의 불법적인 접근이 가능하기 때문에 TCP Wrapper를 이용하여 제한된 IP주소만 접속할수있도록 설정하는 내용입니다.
TCP Wrapper는 xinetd 기반 서비스의 접근을 제어하는 프로그램입니다.
테스트를 위하여 yum -y install tcp_wrappers 명령어로 패키지를 설치했습니다.
보안 양호상태는 /etc/hosts.deny 파일 맨 아래에 ALL:ALL 를 추가하면 됩니다
deny파일에 ALL:ALL을 적용하면 ssh도 사용하지 못하는데 allow파일에 [서비스명]:[IP]로 예를 들어 sshd : 192.168.0.148, 192.168.0.6 를 추가하면 해당 ip는 허용됩니다.
정리
/etc/hosts.deny --> 시스템 접근을 제한할 IP 설정
/etc/hosts.allow --> 시스템 접근을 허용할 IP 설정
not in either --> 모든 접근 허용
2.15 hosts.lpd 파일 소유자 및 권한 설정
host.lpd 파일은 로컬 프린트 서비스를 사용할 수 있는 허가된 호스트 정보를 가지고 있는 파일로 테스트PC에서는 테스트가 불가능하므로 넘어갑니다.
2.16 NIS 서비스 비활성화
2.15와 같은 이유로 넘어갑니다.
2.17 UMASK 설정 관리
시스템에서 새로 생성되는 파일의 접근 권한은 UMASK값에 의해서 정해집니다. UMASK는 기본 허가권을 결정하는데 기준이 되는 값으로 명령프롬프트에서 umask명령어를 입력하면 현재 시스템에 적용된 UMASK를 알수있습니다.
기본적으로 파일기본허가권 -> 666 , 디렉토리 기본 허가권 -> 777 으로 계산해서 허가권을 결정합니다.
ex)
UMASK - 기본허가권 = 결정된 허가권
기본 허가권 666 -> 110 110 110
UMASK 022 -> 000 010 010 -> (보수) 111 101 101
110 110 110
111 101 101 AND
----------------
110 100 100 -> 644
즉 UMASK가 작을수록 폐쇠적인 시스템이 됩니다.
/etc/profile파일에서 umask값을 바꿀수있습니다. 보안 양호상태는 UMASK값이 022이하로 설정된 경우입니다.
2.18 홈 디렉토리 소유자 및 권한 설정
사용자 홈 디렉토리 내 설정파일이 비인가자에 변조되면 정상적인 서비스가 불가능하기 때문에 확인해줘야 합니다.
보안 양호상태는 홈 디렉토리 소유자가 해당 계정이고 일반 사용자 쓰기 권한이 없는 경우입니다.
/etc/passwd 파일에서 홈 디렉토리를 확인합니다.
2.19 홈 디렉토리로 지정한 디렉토리의 존재 관리
사용자 홈 디렉토리는 사용자가 로그인 후 작업을 수행하는 디렉토리로서 홈 디렉토리에 존재하는 사용자 환경설정 파일이 존재합니다.
/etc/passwd 파일로 홈 디렉토리 경로를 파악하고 경로가 없는 일반 사용자 계정은 삭제합니다. 삭제 명령어는 userdel <user_name> 이며 pkck명령어로 디렉토리가 없는 사용자를 파악할수있습니다.
2.20 숨겨진 파일 및 디렉토리 검색 및 제거
불법적으로 생성되거나 숨겨진 의심스러운 파일들의 존재여부를 확인하고 삭제해야 합니다.
홈 디렉토리 뿐만 아니라 모든 디렉토리를 확인해봐야하는 작업입니다.
3. 서비스 관리
3.1 finger 서비스 비활성화
Finger(사용자정보 확인 서비스)는 who 명령어가 현재 사용 중인 사용자들에 대한 간단한 정보만을 보여주는데 finger 명령은 옵션에 따른 시스템에 등록된 사용자뿐만 아니라 네트워크를 통하여 연결되어 있는 다른 시스템에 등록된 사용자들에 대한 자세한 정보를 보여줍니다.
Finger 테스트를 위하여 패키지를 설치합니다. yum -y install finger finger-server
chkconfig 명령어로 확인해보면 xinetd 기반 서비스로 관리되는걸 확인할수있습니다.
/etc/xinetd.d/finger 파일에 들어가면 설정파일인걸 확인할수있는데 disable이 yes상태이면 보안 양호상태 입니다.
finger 테스트
시간 날짜는 리눅스 시스템 상에 등록된 날짜를 기준으로 가져옵니다.
3.2 Anonymous FTP 비활성화
anonymous는 익명 사용자 계정으로 FTP서비스를 이용할 시 내부계정은 ftp계정으로 매핑됩니다.
테스트를 위하여 yum -y install vsftpd 로 패키지를 설치합니다.
/etc/vsftpd/vsftpd.conf 파일에 들어가서 12번쨰줄에 anonymous를 NO로 비활성화 해주면 됩니다.
아예 FTP서비스를 사용하지 않을 경우 /etc/passwd 파일에 ftp 또는, anonymous 계정을 삭제해주어도 됩니다.
ex)
userdel ftp
3.3 r 계열 서비스 비활성화
r계열 서비스는 현재 거의 사용하지 않으며 테스트도 하기 힘들기에 넘어갑니다.
3.4 cron 파일 소유자 및 권한설정
Cron 시스템은 특정 작업을 정해진 시간에 주기적이고 반복적으로 실행하기 위한 데몬과 그 설정들을 뜻하며 cron.deny, cron.allow파일로 명령어로 하여 사용자를 제한할 수 있기 때문에 접근제한이 필요합니다.
cron.deny는 기본적으로 존재하는 파일이며 cron.allow는 관리자가 직접 생성해야 하는 파일입니다.
deny, allow 파일의 소유자 및 권한을 변경합니다. 보안 양화상태는 cron접근제어 파일 소유자가 root이며 640이하의 권한을 가집니다.
ex)
#chown root /etc/cron.allow
#chmod 640 /etc/cron.allow
#chown root /etc/cron.deny
#chmod 640 /etc/cron.deny
Tip
root만 crontab을 사용하기 위한 방법으로 cron.allow , cron.deny 파일을 모두 삭제하면 됩니다.
3.5 Dos 공격에 취약한 서비스 비활성화(중요)
Dos에 취약한 echo, discard, daytime, chargen 서비스는 취약점이 많이 발표된 불필요한 서비스로 서비스사용을 중지해야만 합니다. /etc/xinetd.d/ 디렉토리에 가서 echo, discard, daytime, chargen 파일을 열고 Disable = yes 설정으로 바꿔어줍니다.
(3.6 & 3.7)
3.6 NFS 서비스 비활성화
NFS(Network File System)은 원격 컴퓨터 파일 시스템으로 로컬 시스템에 마운트하여 마치 로컬 파일 시스템처럼 사용할수있는 프로그램 입니다.
이 서비스는 root권한을 획득할수있고 보안사고 위험성이 큰 서비스로 사용하지 않을 경우 비활성화 해야만 합니다.
사용하지 않는다면 kill -9 [PID] 로 데몬 서비스를 중지시킵니다.
또는 /etc/dfs/dfstab의 모든 공유를 제거합니다.
3.7 NFS 접근 통제
NFS를 사용하 경우 접근 제어설정을 해야만 합니다.
테스트를 위하여 yum -y install nfs-utils 명령어로 패키지를 설치하고 service rpcbind start , service nfs start 데몬을 시작합니다.
/etc/exports 파일을 사용하여 설정하는데 기본적인 형식은 [공유디렉토리] [아이피]:[서브넷마스크] [옵션] 입니다.
옵션으로는 no_root_squash 가 있는데 이 옵션은 클라이언트가 사용하는 계정이 서버가 공유한 디렉토리내에서 서버쪽 계정과 동일하게 동작하도록 하는 옵션입니다. 가장 중요한건 everyone으로 시스템 마운트를 하지 않는것입니다.
3.8 automountd 제거
automountd는 클라이언트에서 자동으로 서버에 마운트를 시키고 일정 시간 사용하지 않으면 unmount 시켜 주는 기능을 가지는데 현재 테스트 PC인 리눅스는 해당 사항이 없는 버전입니다.
'보안 > Security' 카테고리의 다른 글
리눅스 iptables 심화 (0) | 2018.06.24 |
---|---|
리눅스 iptables 기초 (0) | 2018.06.17 |
리눅스 서버 보안3 (0) | 2018.06.16 |
리눅스 서버 보안 1 (0) | 2018.06.13 |
테스트 환경구성 (0) | 2018.06.11 |