- 시스템 보안 구현하기2023년 12월 01일 17시 59분 42초에 업로드 된 글입니다.작성자: 채이_E
시스템 접근 통제 구현
원격 서비스
- 물리적으로 떨어져 있는 컴퓨터를 로컬 컴퓨터처럼 이용할 수 있게 하는 서비스
- 네트워크 연결을 통해 공유 컴퓨터의 자원을 이용할 수 있게 함
- 용도
> 초기 : 네트워크를 통한 컴퓨터의 자원을 공유하기 위한 방식으로 사용됨
> 현재 : 고객 지원, 원격 관리, 원격 제어의 목적으로 많이 사용됨
데몬 (Daemon)
- 시스템에 관련된 작업을 수행하는 Background Process를 통칭하는 용어
- 부팅 단계부터 지정된 데몬이 동작하여 서비스의 요청이 없을 때는 유휴 상태를 유지함
> 기본적인 시스템 자원을 소모하게 됨
Standalone 방식
- 각 서비스 Daemon이 항상 Standby 하고 있다가 서비스 요청이 오면 바로 작동 됨
- 자주 사용되는 Service에 사용
Super Daemon 방식
- Super Daemon 이 다른 Daemon들을 관리하는 형태
- Super Daemon만 Standby 하고 있다가 서비스 요청이 들어오면 해당 서비스 Daemon을 작동 시킴
- 자주 사용하지 않는 Service에 사용
xinetd 서비스
- inetd + tcpd에 추가된 보안기능을 수행하는 네트워크 슈퍼 데몬
- 확장 기능
> 각 서비스 별 환경설정 파일을 별도로 제공함 -> /etc/xinetd/서비스 명
> 서비스에 대한 접근 통제 -> TCP Wrapper 기능이 내장되어 있음
> Timeout, 접속 시간 기록
> 접속 시도 횟수 기록
> 로그 크기 제한 및 다양한 로그 제어 기능
Telnet
- TCP Port 23을 이용함
- 로그론을 통해 부여된 권한으로 원격 컴퓨터의 특정 프로그램 및 데이터를 이용함
- 기본적으로 평문 통신을 수행하므로 보안이 약한 서비스 -> 권장하지 않음
- Telnet Data 전송 방식
- Linux Telnet Server 패키지 설치 : #yum -y install telnet-server
- 환경 설정 파일 : /etc/xinetd.d/telnet
- 기본 환경 설정
> 서비스 활성화 -> disable = no
> 나머지 환경설정은 정책에 따라 구성함
> Telnet은 보안이 취약하기 때문에 root 계정 로그인을 금지하고 있음
ㄴ 해제 -> 허용 터미널 목록 파일을 삭제 또는 접근에 사용하는 터미널을 추가함
ㄴ #mv /etc/securetty /etc/securetty.bak
ㄴ #vim /etc/securetty -> pts/번호 추가
- 서비스 재시작 : #service xinetd restart
TCP Wrapper 선택적 접근통제
- /etc/hosts.allow -> 접근을 허가할 호스트 목록 파일
- /etc/hosts.deny -> 접근을 거부할 호스트 목록 파일
- 예제
> 모든 호스트에게 모든 서비스 거부
ㄴ (/etc/hosts.deny) ALL : ALL
> 172.16.10.30에게 모든 서비스 허용
ㄴ (/etc/hosts.allow) ALL : 172.16.10.30
> 172.16.10.10과 172.16.10.30에게 sshd 서비스만 허용
ㄴ (/etc/hosts.allow) sshd : 172.16.10.10,172.16.10.30
> 172.16.10.0/24 네트워크 대역에 모든 서비스 허용
ㄴ (/etc/hosts.allow) ALL : 172.16.10.0/255.255.255.0
ㄴ (/etc/hosts.allow) ALL : 172.16.10.
> 172.16.10.0/24 네트워크 대역에서 172.16.10.10을 제외하고 sshd 서비스만 거부
ㄴ (/etc/hosts.deny) sshd : 172.16.10.0/255.255.255.0 EXCEPT 172.16.10.10
암호학
- 암호에 관련된 일련의 기술
- 정보를 보호하기 위한 언어학적 및 수학적 방법론을 다루는 학문
- 암호학 용어
> 평문 : 정보(데이터)를 가지고 있는 원본
> 암호문 : 내용을 제3자가 판독할 수 없는 글자 / 숫자 / 부호 등으로 변경시킨 것
> 암호화 : 평문을 암호문으로 변경하는 것
> 복호화 : 암호문을 평문으로 변경하는 것
- 암호화의 기본 요소
> 평문
> 알고리즘 : 평문을 암호화, 암호문을 복호화 할 때 사용하는 일련의 순차적인 계산 절차
> 키 : 암호화의 임의성을 추가하기 위한 임의의 값
- 현대 암호화 기능
> 기밀성 보장 : 허가된 대상에게만 정보를 제공하는 것 -> 비밀 보장
> 부인 방지 : 정보를 송 / 수신한 대상을 확인함
> 인증 : 사용자 인증, 메시지 인증
- 현대 암호화의 종류
방향 종류 의미 단 방향 Hash 암호화만 수행됨 양 방향 대칭 암호화 / 복호화에 사용되는 키가 동일함 비대칭 암호화 / 복호화에 사용되는 키가 한 쌍으로 다른 키가 사용됨 Hybrid 키 교환은 비대칭 암호화, 데이터 전달은 대칭 암호화를 사용하는 방식 - 현대 암호화 강도 결정 요소 = key
> key의 길이
> key의 무작위성
> key의 복잡도
> key의 비밀성
인증서
- 공개키 동기화 과정에 발생할 수 있는 MITM 공격 취약점을 해결하기 위해 도입됨
- 공개키를 신뢰할 수 있는 제 3자(인증기관)의 서명으로 확인하는 증명서
> 전자서명
- 인증서의 기능
> 기밀성 : 허가되지 않은 대상에게 정보 노출을 막음
> 인증 : 정보의 소유주를 확인
> 무결성 : 정보의 변경 여부를 보장함
> 부인 방지 : 정보를 송 / 수신 받았음을 보장함
SSH
- telnet처럼 클라이언트와 서버와의 세션을 생성함
> shell 연결 뿐만 아니라 다양한 Application이 상위 계층에 존재할 수 있음
> 보안 세션을 제공하여 인증 및 데이터의 기밀성, 무결성을 보장함
- TCP Port 22 이용
- SSH 기본 동작 방식
- SSH Server 설정 파일 -> /etc/ssh/sshd_config
리눅스 방화벽
iptables
- iptables 실행 : #service iptables start
- Tables
> iptables를 통해 패킷을 제어할 기능
filter - 정책에 일치하는 패킷을 target으로 전달하여 action을 수행함
- 주로 패킷의 허용 / 거부 할 때 사용함
- target -> ACCEPT, REJECT, DROP, LOG, 사용자 정의 chain ...nat - 정책에 일치하는 패킷의 주소를 변화하는 동작을 수행함
- target -> SNAT, DNAT, MASQUERADE, REDIRECT ...mangle - 정책에 일치하는 패킷의 필드 값을 변경함
- 주로 데이터 전송 경로 변경, 우선순위 값 변경 등에 사용됨
- target -> MARK, ACCEPT, TOS ...- Table 조회 명령어
> filter Table (기본값) : #iptables -L
> nat Table : #iptables -t nat -L
> mangle Table : #iptables -t mangle -L
Chain
filter Table INPUT 목적지가 호스트인 패킷에 대한 필터링 OUTPUT 출발지가 호스트인 데이터에 대한 필터링 FORWARD 호스트를 경유하는 데이터에 대한 필터링(라우터 용도) nat Table PREROUTING targer -> DNAT
외부에서 내부로 향하는 데이터의 주소 변조
패킷의 목적지 주소를 변환OUTPUT 로컬에서 생성된 데이터를 내보내기 직전에 변환 수행
패킷의 목적지 주소를 변환`POSTROUTING target -> SNAT, MASQUERADE
내부에서 외부로 향하는 데이터의 주소 변환
패킷의 출발지 주소를 변환mangle Table INPUT 목적지가 호스트인 패킷 변경 OUTPUT 출발지가 호스트인 패킷 변경 FORWARD 호스트를 경유하는 패킷 변경 PREROUTING 패킷이 라우팅 되기 전에 변경 POSTROUTING 패킷이 라우팅 된 후에 변경 - iptables 명령어
> #iptables [-t 테이블 이름] <Command> [Chain 이름] [parameters 옵션] [-m 확장 모듈] [모듈 옵션] [target]
[target 옵션]
댓글