네트워크 관리
웹 관련 서비스
웹의 개요
웹: 인터넷으로 상호연결되어 문서와 정보를 공유하는 서비스
웹 브라우저를 사용/ 하이퍼 텍스트 형식의 웹 문서 탐색/ 하이퍼링크를 참조
하이퍼 텍스트: http, html
하이퍼 링크; URL
웹 문서(HTML)
HTML은 W3C에서 주관하여 관리한다.
정적 HTML 문서: .html 확장자
동적 문서; .php, .jsp, .asp 확장자
(23, )
웹 서버
클라이언트의 요청에 따라 웹 문서를 전달하는 서비스 프로그램
Apache: 오픈소스 웹 서버
IIS: 마이크로소프트 제공 웹 서버, ASP지원, GUI 기반 관리 콘솔 이용
Ngis: 비동기 이벤트 방식, 로드 밸런스, HTTP 캐시, 리버스 프록시 기능 제공
GWS: 구글 웹서버
HTTP 프로토콜
웹 브라우저와 웹 서버가 상호 통신하는데 사용하는 프로토콜, 데이터 요청 및 전송하기 위한 표준 규약
(22)
아파치(APACHE) 웹 서버
오픈소스로 공개되는 대표적인 웹서버/ MPM지원, 프로세스와 쓰레드를 아용해 처리 / prefork와 worker 두 방식으로 클라이언트의 요청을 자식 프로세스들에게 제공
prefork: 하나의 프로세스가 하나의 쓰레드 보유/ 프로세스를 복제후 요청 처리/ 쓰레드간 메모리 공유 x / 1024의 자식프로세스 사용
worker: 프로세스당 여러 쓰레드를 갖고 각 쓰레드가 클라이언트의 요청을 처리/ 초기에 구동할 프로세스의 수를 지정/ 프로세스당 최대 64개의 쓰레드를 가짐, 초과시 새로운 프로세스 생성/ 동접자수가 많은 사이트에 적합
아파치 소스코드:
--prefix=/usr/local/apache: 설치과정중 파일 설치 경로 지정
(22,)
PHP
웹 서비스의 로직을 구현하고 동적 생성하는 스크립트 언어
localhost/phpinfo.php: 자세한 정보 출력
테스트: phpinfo()
(22,)
MySQL
관계형 데이터베이스 관리시스템 / 다양한 프로그래밍 언어를 위한 인터페이스 제공, php-mysql 패키지를 통해 PHP와 연동 가능/ MySQL은 TCP 3306번호로 통신, PHP는 /tmp/mysql.sock파일을 소켓으로 이용해 접속
기본관리 데이터 베이스인 mysql생성 과정: ./mysqld
웹 관련 서비스 컴파일 및 설치 시 고려사항
su명령어 사용. 아파치 웹 서버 설치: httpd -v, rpm -qa | grep httpd로 확인 가능
(22, 23)
아파치 웹 서버의 구조와 세부 설정
1. 아파치 웹 서버의 주요 디렉토리
/usr/local/apache에 관련 파일이 설치됨
주요 디렉토리:
2. 아파치 웹서버 실행 파일 목록
/usr/bin 혹은 /usr/sbin에 관련 실행 파일 저장됨.
주요 실행 파일:
3. 아파치 웹서버 환경 설정 파일/etc/httpd/conf/httpd.conf 파일을 기본으로 사용아파치 웹서버 주요 설정 파일:
httpd.conf를 이용한 아파치 웹서버의 기본 설정:
DocumentRoot "/usr/local/apache/htdocs" 아파치 웹 서버 환경 설정 파일에서 웹 문서가 저장되는 위치를 확인하는 과정
ServerAdmin: 에러발생시 표시되는 질의를 실행하는 이메일 주소 표시ServerName: 도메인명과 포트 번호 설정DirectoryIndex: 파일 접근시 기본으로 반환하는 파일을 지정ServerRoot: Apache가 설치되어있는 디렉토리
인증 관련 서비스
리눅스 인증의 개요
인증(authentication): 시스템을 사용하는 클라이언트가 등록된 사용자인지 확인
인가(authorization): 인가된 클라이언트에게 권한을 부여하는 것
인증방법: /etc/passwd, /etc/shadow에 등록 후, 등록된 정보와 로그인 정보와 비교
NIS(Network Information Service):
sun사가 개발한 서비스/ 호스트, 사용자 명, 사용자 함호등을 검색하고 관리함/ RPC(Remote porcedure call)사용
NIS서버에 등록된 사용자, 그룹 정보등을 네트워크를 이용해 다른 시스템에게 제공하여 여러 호스트들이 동일한 계정 정보 사용
가능/ telnet, samba, ssh
(22, 23)
LDAP(Lightweight Directory Access Protocol):
디렉토리 서비스를 조회하고 수정하는 TCP 기반 응용 프로토콜/ X.500DAP 기반/, 경량화,엔트리 트리 구조
RDBMS에 비해 빠른 검색 속도, 자주 변경시 불리
속성:
- c: country
- st: state
- l: local city
- street: 도로명
- dn: 조직 내 고유 식별자
- cn: 전체 이름
- sn: 성
- dc: 도메인 네임 요소
- givenName: 이름
NIS 서비스 이용하기
(22, 23)
1.NIS 서버 설치와 구성을 위한 사전 작업
NIS는 RPC를 이용하므로 'systemctl start rpcbind' 명령으로 RPC데몬 구동 / 부팅 시 항상 실행: system enable rpcbind
2. NIS 서버 설치
yum -y install ypserv 명령으로 서비스 파일도 설치
서비스 파일:
- ypserv.service: 메인 데몬 구동
- yppasswdd.service: 사용자 패스워드 관리
- ypxfrd.service: 서버와 클라이언트 간의 매핑 속도 높임
3. NIS 도메인명 설정
nisdomainname: 도메인명 설정, 도메인명 확인
(22)
4, NIS 정보 갱신 및 적용
/var/yp 디렉토리로 이동 후 make 실행, 아니면 make -c /var/yp
/var/yp: 기본 디렉토리
NIS 클라이언트 설치와 구성
(23, )
1. NIS 클라이언트 설치
ypbind와 yp-tools 패키지 설치
ypbind: 바인드 정보 관리
yp-tools: NIS 서버와 클라이언트 연결
authconfig 명령을 이용한 클라이언트 설정
SSH를 이용해 client 호스트에 로그온 후 등록
(22, 23)
2. NIS 주요 명령어
nisdomainname: 도메인 이름 설정, 설정한 이름 표시
ypwhich: NIS로 로그인한 후, NIS 서버 조회 / -m옵션으로 맵 정보 출력
ypcat: NIS 서버 구성파일 내용 확인
yptest: NIS 클라이언트에서 동작 및 설정 확인, 도메인명, 맵파일 목록, 사용자 계정 등 정보 출력
yppasswd: NIS 서버에 등록된 사용자의 비번 변경
ypchsh: NIS 서버에 등록된 쉘 변경
ypchfn: NIS 서버에 등록된 사용자 정보 변경
파일 관련 서비스
삼바 서비스
삼바는 GPL 기반 소프트웨어로 리눅스와 윈도우 간 디렉토리, 파일, 프린터, 등을 공유하는데 사용한다.
TCP/IP 기반으로 동작하는 SMB 프로토콜 이용
삼바를 사용하면 상대 호스트의 IP주소 대신 컴퓨터 이름을 사용해 접속할 수 있다: WINS
삼바 서버의 구성 요소
nmbd: UDP 137,138포트 이용해 컴퓨터를 브로드캐스팅 방식으로 검색 후, TCP 139번 포트를 이용해 컴퓨터 이름으로 접속/ WINS를 위한 데몬
smbd: 삼바 프로토콜의 주요 기능 담당/ TCP 445번 포트 이용/ IP주소를 이용한 직접 접속해 삼바 서비스 이용 가능
삼바 서비스 설치와 구성
1. 삼바 관련 패키지 설치
yum -y install 패키지 이름
패키지 이름:
- samba: 삼바 데몬, 관련 라이브러리 및 스크립트 포함하는 핵심 패키지
- samba-common: 삼바 서버 및 클라이언트에서 공통으로 사용하는 설정 및 명령어를 포함한다.
- samba-client: 삼바 클라이언트와 관련 명령어를 포함한다.
2. 삼바 서비스 실행
systemctl -l status <service> 명령어 형식 이용
(22, 23)
3. smb.conf를 이용한 삼바 서비스 설정
Global section과 Share section 영역으로 구분 []기호로 이용해 세부 섹션 구성
Global section
Share section
path: 공유 디렉토리 경로를 지정
host allow: 특정 호스트 접근 허용
workgroup: 공유 그룹명
4. 삼바를 이용할 사용자 등록과 패스워드 설정
/etc/samba/smbusers 설정 파일을 이용해 리눅스 계정과 삼바 이용자명 매핑
smbpasswd [option] [사용자 계정]
option:
- -a: 삼바 사용자 계정 추가 후 패스워드 설정
- -x: 삼바 사용자 계정 제거
- -d: 삼바 사용자 계정 비활성화
- -e: 삼바 사용자 계정 활성화
- -n: 패스워드 제거, 패스워드 없이 로그인 가능
pdbeit [option] [사용자 계정] : 삼바 사용자 목록 및 세부 내용 확인 가능
option:
- -L: 사용자 목록 출력
- -v: 사세한 정보 출력
- -u: 사용자 이름 지정
- -a: 삼바 사용자 계정 추가 후 패스워드 설정
- -r: 삼바 사용자 계정 변경
- -x: 삼바 사용자 계정 제거
삼바 서비스 이용하기
(23)
1. 삼바 서버에 접속
smbclient명령어로 공유 디렉토리 정보를 확인 후 서버에 접속
smbclient [option] [hostname] /접속 후 '?' 명령
option:
- -L: 공유 디렉토리 정보 표시
- -M: ctrl+d와 함께 사용해 메시지 전송
- -U: 사용자 이름 지정
- -p: TCP 포트 번호 지정
호스트 공유 폴더 이름: //172.30.1.12/[공유폴더]/ 혹은 \\\\172.30.1.12\\[공유폴더]\\로 지정
2. SMB 파일 시스템 마운트
mount 명령을 이용해 삼바 공유 디렉토리를 로컬 시스템에 마운트 해 로컬처럼 사용 가능
3. 삼바 관련 기타 명령어
smbstatus: 현재 접속 정보 확인
testparm: 삼바의 설정 정보를 확인
nmblookup: 삼바 서버의 NetBIOS이름으로 IP주소 조회
smbcontrol: 삼바 데몬에게 메시지를 보내 제어
NFS 서비스
NFS는 TCP/IP를 이영해 원격 호스트의 파일 시스템을 로컬호스트에 있는것처럼 마운트하여 사용하는 서비스다.
RPC를 이용해 NFS관련 명령어를 전달하므로 rpcbind 데몬이 필요하다.
주요 패키지
rpcbind: rpcbind, rpcinfo등의 명령어를 포함해 RPC서비스를 위해 사용
nfs-utils: NFS관련 데몬 및 명령어 포함
NFS 서비스 설치와 구성
(22, 23)
1. NFS 서버 설정
/etc/exports파일을 이용해 NFS 서비스 설정
옵션:
- ro: 읽기 전용
- rw: 읽기 및 쓰기
- asysnc: 데이터 변경을 기록할 때 비동기적으로 처리
- sysnc: 기본 설정값, 동기적으로 처리
- secure: 기본 설정값, 포트번호 1024 이하의 요청만 허가
- no_root_squash: root 권한 접근 허용
- root_squash: root 권한 접근 거부
- all_squash: 모든 사용자 권한을 nobody로 매핑
2. NFS 관련 데몬 실행
rpcbind와 nfs데몬을 실행하고 확인
3. NFS 서비스 이용하기
mount -t nfs [NFS 서버] : [대상 디렉토리] [마운트 디렉토리]
/etc/fstab을 이용한 마운트
예시: 192.168.223/var/user-nfs /var/user-local nfs timeo=14,soft,retrans=3 0 0
주요 설정 옵션: 위의 예시를 기준 a b c d e f
a: 192.168.223/var/user-nfs =파일 시스템 장치 명: 파티션 혹은 장치의 위치 지정
b: /var/user-local =마운트 포인트: 어떤 디렉토리로 연결할 지 지정
c: nfs =마운트 시스템 종류: nfs, NTFS, ext3, iso9660 등을 지정
d: timeo=14,soft,retrans=3 =마운트 옵션:
- timeo: 타임아웃 후 첫번째 재전송 요구 시간 지정
- retrans: 타임아웃 후 재전송 요청 회수 지정
- soft: retrans에서 설정한 값 만큼 요청
- hard: 무한 반복 요청
- auto: 부팅 시 자동 마운트로 지정
- re, nouser, exec, Set-UID, quota 추가 지정 가능
e: 0= 덤프: 백업 여부 지정, 0:불가, 1:가능
f: 0= 무결성 검사: fsck에 의한 무결성 검사 우선순위를 지정(0은 하지 않음 처리)
(22, 23)
4. NFS 기타 명령어
rpcinfo: 메모리에 로딩된 RPC기반 서비스 테이블을 관리하는 명령어
exportfs: NFS 서버의 export된 디렉토리 정보, 즉 공유 목록 관리하는 명령어
showmount: export된 정보를 확인하는 명령어
nfsstat: NFS 및 RPC연결에 대한 메모리 통계 정보를 표시하는 명령어
FTP 서비스
FTP는 TCP/IP를 이용해 FTP서버와 클라이언트 간 파일을 전송하기 위한 프로토콜/ 등록된 사용자만 접속 가능하나 익명도 지원하긴 함
vsftpd: 가장 대표적인 FTP프로그램으로 보안을 중요시하며 권한에 로그인 제한
(22, 23)
FTP 서버 설정
/etc/vsftpd/vsftpd.conf 파일을 이용해 vsfpt의 동작환경 설정
anonymous_enable=Yes: 익명 사용자 접속 허용
local_enable= Yes: 로컬,일반 사용자 접근 허용
메일 관련 서비스
메일 서비스는 메일을 인터넷을 통해 주고 받는다.
(22)
메일 서비스 관련 프로토콜
SMTP: 메일 서버간 송수신 뿐 아니라 메일 클라이언트에서 서버로 보낼때 사용/ TCP 25
POP/POP3: 메일 서버에 도착한 메일을 수신하는 프로토콜로, 메일을 가져오면 서버에서 삭제한다/ TCP 110
IMAP: 메일 서버에 도착한 메일을 수신하는 프로토콜로, 메일을 서버에 남겨돴다 나중에 삭제한다/ TCP 143
(22, 23)
메일 서비스 관련 프로그램
MTA(Transfer): SMTP 프로토콜 이용/ sendmail, qmail, postfix
MDA(Delivery): 대리인 역할을 해 가져오거나 전달한다/ procmail
MUA(User): 사용자(클라이언트)가 메일을 수신 발신하는 프로그램/ kmail, evolution, mutt
dovecot: IMAP, POP3서버를 제공하고 손쉽게 관리한다.
메일 관련 서비스 사용하기
(22, 23)
1. sendmail의 주요 설정 파일
/etc/mail로 시작함
- /etc/mail/sendmail.cf: 기본 설정 파일
- /etc/mail/sendmail.mc: 설정을 편리하게 관리하는 보조 파일/ m4유틸리티를 m4 sendmail.mc > sendmail.cf를 생성
- /etc/mail/aliases: 메일 별칭 또는 특정 계정으로 수신한 이메일을 다른 계정으로 전달함, 여러사람에게 전달: include:[파일이름] / 변경된 내용 적용: newaliases
- /etc/mail/access: 메일 서버 접근 제어/ [정책대상] [정책]: [정책대상] = 도메인명, IP, 메일 주소 . [정책]: RELAY, DISCARD, REJECT, OK
- /etc/mail/virtusertable: 가상 메일 계정 전달: ceo@linux.com ihd -> ceo@windows.com kait
- /etc/mail/local-host-names: 메일 수신자를 설정 후 다시 시작하여 적용/ 한줄에 도메인 하니씩 가입
2. /etc/mail/sendmail.cf 파일 설정
3, sendmail 관련 주요 명령어
4. telnet을 이용한 메일 발송
DNS관리 서비스
DNS서비스: 도메인 이름과 IP주소를 상호 변환하는 서비스
DNS 서버: 도메인 관리, 클리이언트 요청에 따라 도메인명과 ip주소를 변환해 응답함 / TCP/53, UDP/53 포트 이용
DNS 서버의 종류:
- Primary name server: Master server라고 부르고, 필수항목이다.
- Secodary name server: Slave sercer라고도 하고, Primary server의 zone파일을 백업한다/ 문제가 생길경우 보조 DNS로 사용가능
- Caching name server: 도메인 관리 없이 resolving역할 만 수행한다. 속도를 향상시킴
DNS 서비스 사용하기
(22, 23)
1. DNS 관련 패키지: bind, bind-libs, bind-utils
데몬: named
서버 프로그램: Bind(ISC가 만듦)
(23)
2./etc.named.conf 파일 설정
주석: /* */, //, #등 모두 사용 가능
구문: options, acl, logging, zone/ 각 구문은 {}로 둘러져 있고 끝날 때 ;를 붙인다.
option:
- directory: zone파일의 저장 디렉토리 저장/ 반드시 있어야함
- dump-file: 정보 갱신시 저장 파일로 사용하는 파일 이름 설정
- forward: forwarders옵션과 함께 사용/ only 또는 first값을 가진다./ only: 도메인 주소에 대한 질의를 다른서버로 넘긴다. /first: 다른서버에서 응답이 없으면 자신이 응답
- forwarders: forward를 처리할 서버 지정, 세미콜론으로 구분
- allow-query: 네임 서버에 질의할 호스트 지정
- allow-transfer: zone파일 내용을 복사할 대상 제한
- recursion: 하위 도메인 검색 허용 여부 지정
logging: bind 네임 서버의 로깅 방식 설정
(22)
acl: 여러 호스트들을 하나의 이름으로 지정해 options 구분의 allow옵션을 사용할 수 있게 된다.
acl "별명" {192.168.2.23; 192.168.4/24};
zone: 도메인을 관리하기 위한 데이터 파일인 zone파일 지정
hint: 루트 도메인 지정
zone ".": 루트 도메인
(22, 23)
zone 파일: 도메인 이름과 IP주소혹은 리소스간 매핑을 포함하고 리소스 레코드로 구성된다. / ;를 이용해 주석가능
리버스 존 파일을 이용해 ip주소에 대한 도메인 정보 조회 제공
리버스 존 설정: Ip주소 마지막을 제외하고 (10.0.2.15)일 경우 2.0.10.in-addr.arpa 형식을 따른다.
zone 파일 구성항목:
- $TTL
- SOA
- 개별 도메인: [도메인 명] [IN] [CLASS] [Record type] [우선순위] [도메인] . (.있어야함)
zone 파일의 주요 레코드 타입:
- A: IPv4주소
- AAAA: IPv6주소
- CNAME: 도메인 이름 별칭
- MX: 메일 서버
- NS: 공식 네임 서버
- PTR: IP주소를 기반으로 도메인 이름 변환(리버스 존 파일에서만 사용됨)
- SOA: DNS 핵심 정보 지정
- TXT: 텍스트 문자열
가상화 관리 서비스
(22, 23)
가상화 특징:
- 공유(sharing): 다수의 가상 자원들이 하나의 동일한 물리적 자원과 연결됨
- 프로비저닝(provisioning): 사용자의 요구사항에 맞게 할당, 배치, 배포
- 단일화(agregation): 여러개의 물리적 자원을 논리적으로 통합해 단순화시킴
- 에뮬레이션(emulation): 물리적인 특징이 다른 장치를 범용적인 모델로 인식해 사용하도록 지원
- 절연(insulation): 가사와 서비스에 문제 발생시 다른 서비스로 전이되지 않게 함
하드웨어 레벨 가상화 방식: VMM(Virtual Machine Monitor)이 하드웨어를 가상머신의 하드웨어와 매핑후 자원사용을 관리함
전가상화(Full Virtualization): CPU의 물리적 가상화 지원 기능을 이용해 하드웨어를 가상화함, OS를 수정없이 사용 가능
반가상화(Para Virtualization): 하이퍼 바이저가 하드웨어 사용을 통제= 높은 성능, OS수정 필요
(22, 23)
호스트 기반 가상화 방식: 호스트 운영체제에 VMM을 설치하고 가상머신을 생성한다.
- KVM: CPU를 전가상화하는 기술/ 오버헤더 거의 없음/ 에뮬레이터인 QEMU를 이용해 다중 가상머신 운영
- Xen: 게스트 운영체제의 커널 일부분을 수정해 사용/ CPU 반가상화로 서버 대비 효유성이 가장 좋음
- VirtualBox: 오라클이 주도해 배포하는 소프트웨어
- Docker: 프로그램과 라이브러리만 이미지로 만들어 프로세스처럼 동작시키는 경향화된 가상화 기술
- Kubernetes: 구글이 만든 컨테이너 관리 프로그램
(23)
가상화 지원 소프트웨어의 디스크 이미지 형식
- VDI: 버츄얼 박스 전용
- VHD: 버츄얼박스, Hyper-V, Xen에서 사용
- VMDK: 버츄얼박수, VMware Player에서 사용
- QCOW2: KVM을 이용해 가상머신 생성시 기본으로 적용
(22, 23)
가상화 관련 명령어:
- vit-top: top와 유사한 형식으로 출력/ 가상 머신만을 대상으로 CPU자원 상태 모니터링 가능
- virsh: 텍스트 기반 콘솔 환경에서 가상머신을 관리해주는 도구
- virt-manager: 가상머신, 호스트 모두의 CPU 사용량을 모니터링하는 GUI 기반 도구
- libvirt: API, 데몬, 라이브러리, 관리 툴들의 모음
- libvirtd: libvirt관리 시스템 데몬/ 원격 도메인의 명령을 전달
- xm: Xen 관리 명령어
기타 서비스
xinetd
(22, 23)
TCP Wrapper
최근에는 standalone 데몬도 사용 가능: ldd명령으로 실행 데몬 라이브러리 확인해서 libwrapso 파일 참조시 사용가능
SSH: 접근제어 가능 서비스
(22, 23)
DHCP: 동적 할당, 자동으로 주소를 할당시키는 서비스 /
BOOTP: 하드디스크가 없는 호스트에게 IP를 부여하는 프로토콜
dhcpd.conf 설정 항목
range: 클라이언트에 할당할 범위 지정
option domain-name: 도메인 이름 지정
option routers: 게이트웨이 주소 지정
(22, 23)
VNC: 다른 컴퓨터에서 가상머신으로 동작하는 시스템에 접속해 사용하는 기능
(22, 23)
NTP: 컴퓨터간 시간을동기화하는 NTP 프로토콜을 이용해 서버와 시간을 동기화한다.
ntpdate: 원격서버와 시간을 동기화함
ntpq: NTP query 명령어/ 서버상태를 출력한다.
server: 기준 서버 지정
keys: 키 지정
dreftfile: 데몬에 의ㅐ 자동으로 생성되는 위치 지정/ 시간을 정확히 유지하는 역할
(22)
PROXY: 클라이언트와 서버 사이에 위치해 요청과 응답 과정에서 데이터를 중계하는 역할을 담당한다./ 접근 제어
SQUID: 리눅스에서 사용하는 일반적인 프록시 서버
네트워크 보안
네트워크 침해 유형 및 특징
1. 스니핑 공격:
한 서브 네트워크 내에서 전송되는 패킷의 내용을 임의로 확인하는 공격
네트워크 무작위 모드와 TCP dump:
네트워크 설정을 무작위 모드로 변경 후 TCP dump 이용 시, 네트워크 내의 모든 패킷을 확인 가능
ifconfig [network interface] promisc 사용 시 무작위 모드로 변경됨 / ifconfig [network interface] -promisc: 일반 모드로 전환
tcpdump: 네트워크 패킷 확인 명령어
대응방안: SSL같은 암호화 통신 방식을 이용
2. 스푸핑 공격:
네트워크 서비스 또는 패킷 정보를 임의로 변경하여 공격에 사용
IP주소, DNS주소, MAC주소 등의 정보를 변조하여 공격 탐지 및 역추적을 어렵게 한다.
IP spoofing: IP의 구거적 취약점 악용하여 IP기반 인증 서비스 무력화
대응 방안: IP기반 인증 최소화, TCP 번호를 랜덤하게 구성한다.
ARP spoofing: IP주소를 MAC주소로 변환하는 ARP프로토콜의 취약점을 악용
IP주소와 MAC주소의 매핑 정보를 네트워크에 브로드캐스트해서 대상 호스트들의 ARP테이블을 변조되도록 함
대응방안: arp -s [IP] [MAC] 명령어로 정적 ARP매핑 정보를 둥록
DNS spoofing: DNS 요청에 위조된 정보를 응답 패킷으로 보내는 공격
패킷 내용에 IP주소를 공격자의 악의적인 IP로 변경하여 접속시킴
(22, 23)
3. DOS(Denial of service), DDOS(Distributed DOS)공격:
DOS 공격은 공격 대상의 시스템 및 네트워크 취약점 등을 공격하여 과부하를 발생시켜 정상적인 서비스를 불가하게 하는 가용성 침해 공격이다.
DOS 공격유형:
- 파괴 공격: 시스템의 한계용량을 초과하는 부하를 발생시켜 장치, 데이터를 파괴한다.
- 시스템 자원 고갈 공격: 반복적인 프로세스 생성, 메모리 할당, 데이터 저장등을 통해 CPU, 메모리, 디스크등의 자원을 고갈시킨다. / i-node고갈: 파일시스템 처리
- 네트워크 자원 고갈 공격: 대용량의 과도한 패킷을 유발하여 네트워크 대역폭을 고갈시킨다.
세부 기법:
- ping of death: ICMP Echo 패킷의 크기(64k)보다 매우 크게 전송하여 시스템에 문제를 일으킨다. 전송된 데이터는 라우팅되는 동안 세분화 되어 전송 및 처리에 과부하를 발생시킨다.
- teardrop attack: IP fragementation에 따라 패킷을 재조합할 때 오프셋을 임의로 변조시켜 재조립 과정에서 과부하 및 crash를 발생시킨다.
- TCP SYN flooding: 3way handshake방식을 악용한 공격. 공격자는 TCP연결시 SYN flag를 대량으로 발송하고 SYN-ACK의 최종응답인 ACK를 전송하지 않는다. TCP연결을 처리하기 위해 계속 자원을 할당해 정상적인 서비스가 불가하다.
- UDP flooding: 대량의 UDP패킷을 전송하여 공격 대상의 자원을 소모시키는 공격. 공격 받은 시스템은 UDP패킷을 처리하기 위해 계속 서비스 및 포트를 점검하게 된다. 공격시 IP주소를 스푸핑하여 응답은 공격자가 받지 않는다.
- Land attack: IP패킷을 보낼 때 발신자, 수신자 IP를 공격 대상의 IP로하여 문제를 일으킨다.
- Smurf attack: 공격자가 공격 대상 IP주소로 위장하고 ICMP request패킷을 브로드캐스트를 통해 다수의 시스템에 전송한다. 수신한 다수의 시스템은 ICMP Echo reply를 공격 대상 IP로 보내면서 부하를 발생시킨다.
- Mail bomb: 동일한 이메일 주소를 대상으로 다량의 메일을 동시에 발송시킨다. 이 공격은 네트워크 자원과 데이터 저장을 위한 디스크 자원도 고갈시킨다.
- NTP 증폭 공격: NTP 서비스의 monlist방식을 악용한 DDOS 공격이다. 공격자의 적은 공격 패킷이 증폭되어 대상에 전송시켜 피해를 증가시킨다.
3.5. DDOS:
디도스 공격은 공격을 위한 agent를 분산된 시스템에 배치한 후 DoS공격을 동시 실행시키는 공격 기법이다.
agent에 명령을 내리는 명령서버를 C&C서버라 한다.
agent가 설치되어 DDoS 공격에 사용되는 호스트를 좀비PC라 하며 좀비PC의 네트워킹을 botnet이라 한다.
공격 도구:
- Stacheldraht: 리눅스 시스템용 디도스 공격의 agent역할을 하는 악성 코드로 smurf 공격에 사용될 수 있다. 통신시 암호화 기능을 지원하며 공격자 확인을 하는 패스워드를 지정할 수 있다.
- TFN: 공격자 시스템과 마스터 시스템간 연결이 평문으로 되어있고, UDP,TCP flooding, ICMP 브로드캐스트 공격이 가능하다.
- TKN 2K: TFN의 발전된 형태로 UDP,TCP,ICMP를 복합적으로 사용하고 포트도 임의 결정되며 암호화를 사용한다, 지정된 TCP포트에 백도어를 실행할 수 있다.
- Trinoo: UDP flooding 디도스 공격을 하는 통합 도구
대응 방안:
- 침입 차단 시스템으로 패킷 및 포트 필터링을 수행
- 침입 탐지 시스템으로 공격 탐지
- 로드 밸런싱을 통한 대용량 트래픽 분산 처리
- 시스템 최신 패치
- 불필요한 서비스 제거 및 포트 닫기
4. 무작위 공격 도구(Brute force attack):
사전 파일을 기반으로 임의의 정보를 무작위로 대입해 인증을 우회하는 공격 기법이다.
root, administrator와 같은 고정 아이드를 사용할 경우 무작위 패스워드 입력에 보안이 취약할 수 있다.
공격 도구: john the ripper
대응 방안: 입력 회수 제한, 해시, salt
5. 기타 해킹 프로그램 및 악성 코드:
prorat: 해킹 대상 시스템에 원격 접속 및 제어할 수 있는 프로그램
Netbus: 네트워크를 통해 윈도우 컴퓨터 시스템을 원격 제어하는 소프트웨어
Back orifice: 윈도우의 TCP/IP 기능을 이용해 시스템끼리 원격 제어
랜섬웨어: 시스템 파일을 암호화하여 금전을 요구함
트로이 목마: 악성코드를 담고있는 정상적인 프로그램으로 가장한 프로그램
웜바이러스: 스스로 실행되는 악성 소프트웨어, 자가 복제에 다른 시스템에 전파됨.
대비 및 대처방안
보안 솔루션을 이용한 대비 및 대처
1. 방화벽
방화벽은 외부로부터 들어오는 악의적인 트래픽을 막고, 허가된 트래픽만 내부 네트워크로 유입하도록 통제하는 하드웨어, 소프트웨어 이다.
방화벽은 패킷도 룰에 따라 통제 가능, 접근제어, 로깅 및 감사 추적, 사용자 및 호스트 인증 기능 제공
방화벽의 종류:
2. 침입 탐지 시스템(IDS: intrusion detection system)
공격을 실시간으로 탐지하는 보안 시스템
IDS 기능: 데이터 수집, 정보 분석, 침입 탐지, 추적 및 보고
IDS 유형: 호스트기반(HIDS), 네트워크기반(NIDS)
오용 탐지: 알려진 공격패턴과 비교해 탐지, 알려지지 않은 공격에 취약
이상 탐지: 이상한 패턴일 경우 공격으로 판단, 정상적인 패턴을 공격으로 인식할 경우도 있음
3. 침입 방지 시스템(IPS: intrusion prevention system)
IPS는 침입 탐지의 수동적인 방어 시스템에서 더 발전해 능동적인 방어와 차단등 사전 공격대응을 중심으로한 보안 시스템
(23)
4. Snort
리눅스에서 사용하는 공개형 IDS 프로그램이다.
Snort 주요기능:
- 패킷 스니퍼: 네트워크 패킷을 읽고 표시한다.
- 패킷 로거: 모니터링한 패킷을 저장 및 로그에 기록
- 네트워크 IDS: 네트워크 패킷을 분석하여 공격 탐지 / Buffer overflow, Port scan등 다양한 공격 탐지
Snort Rule 설정
헤더와 룰 옵션으로 구분된다.
헤더:
- action: 동작 방식
- protocol: 점검 대상 프로토콜
- source IP/Port: 소스 IP 및 포트
- direction: 패킷의 흐름 방향
- dsetination IP/Port: 목표 IP 및 포트
룰 옵션:
- General, Payload, non-payload, post-detection 4가지로 분류
- 이중 Payload 탐지 룰 옵션을 주로 사용한다,
Suricata: OISF가 2010년에 개발한 공개형 IDS 및 IPS/ GPU 기반 가속화
5. iptables
리눅스의 방화벽이라고도 하며 패킷 필터링 정책을 사용해 특정 패킷을 분석하고 접근을 제어한다/ NAT에도 사용/ 넷필터 모듈이용해 네트워크 패킷을 필터링함
itables의 테이블 구조
(22, 23)
itables 사용법
itables [-t 테이블이름] [action] [체인이름] [match 규칙] [-j 타겟]
구성 항목:
- -t: filter, nat, mangle, raw 중 하나를 이름으로 지정/ 기본은 filter= 생략가능
- action: 체인을 대상으로 수행할 명령 지정
- 체인이름: '-t 테이블 이름'으로 지정한 테이블의 체인을 지정 / 체인 이름은 대소문자를 구분
- match 규칙: 패킷을 처리하기 위해 점검할 조건 지정
- -j 타겟: 규칙을 만족할 경우 처리
action 명령:
- -N: 새로운 체인 생성
- -X; INPUT, OUTPUT, FORWARD 제외한 체인 제거
- -L: 체인 목록 표시
- -F: 지정한 체인에 설정된 모든 정책 삭제
- -C: 패킷 테스트
- -P: 체인의 기본 정책 설정
- -Z: 체인 내의 모든 규칙들과 패킷과 바이트 카운트를 0으로 설정
match 규칙:
- -s: 출발 IP
- -d: 도착 IP
- !: 규칙 제외
- -p: 프로토콜 설정
- -i: 입력 네트워크 인터페이스 선택
- -o: 출력 네트워크 인터페이스 선택
- --sport: 소스 포트 설정
- --dport: 타깃 포트 설정
nat 테이블: 사슬명
nftables: 대체 방화벽 소프트웨어
6. firewalld
systemctl stop firewalld: 방화벽 동작 중지
다음 중 웹클라이언트가 접근이 금지된 페이지를 요청했을 때 웹 서버에 기록되는 상태 코드 번호로 알맞은 것은? 403