728x90

[1,2교시 - 데이터베이스 보안 구축]

 


 

[3,4,5교시 - 시스템 보안 구축]

/ 그동안 배운거 마무리 정리

/ 양방향 암호화 시스템 : 암호화 한것과 복호화 한것이 같은것
- 대칭키 암호화 기술 :
    > 암호화 키 = 복호화 키, 키가 짧은 편,
    > Data 암호화(기밀성),
    > 비밀키(secret key), 공유키(shared key), 세션키(session key), same key, single key
    > Stream 방식 : 1bit씩 암호화, 주로 하드웨어로 구현
    > RC4, RC2, SEAL, OTPad, vernam, ciph
- 비대칭키 암호화 기술 :
    > 암호화 키 = 복호화 키, 키가 긴편,
    > Key 암호화(기밀성)
    > 개인키 사설키(private key), 공개키(public key)
    > PKI 구조(Public Key InfraStructure)
    > Block 방식 : 8bid, 16bit, 32bit, 64bit... 주로 소프트웨어올 구현
    > DES, TDES, AES, SEED, IDEA, Blowfish

/ 일방향(단방향) 암호화 시스템 : 암호화 한것과 복호화 :  한것이 같지 않은것

728x90
728x90

이사하느라 학원을 못갔다.

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

평가 문제 대비 풀이 진행

 


[3,4,5교시 - 시스템 보안 운영]

/ rsyslog
- rsyslog 는 systemd
- 로컬 로그 + 리모트 로그 수집
- /etc/rsyslog.conf : 어디에 저장할지
- /etc/logrotate.conf : 로그를 용량이 너무 커지지 않게, 매일매일 로그를 백업하는 설정

/ syslog
- syslog 는 initd. /etc/inittab

/ swatch
- 실시간 로그내용 검출, 분석 패키지

/ watch
# watch -n 10 tail /var/log/httpd/access_log : 해당 위치의 로그를 10초마다 갱신해서 봐라

/ DNS
- 설치 : bind bind-chroot
- named
- dns
- NS

/ SNMP
- 설치 : net-snmp net-snmp-utils
- snmpwalk

/ 방화벽
- 지금 firewalld를 쓰고 있는데 사용안함으로 처리하고 iptables를 사용할것임
- 리눅스를 딥하게 쓰는 사람들은 iptables를 더 많이 사용한다.

 


복습

 

/ rsyslog.conf 수정
- /etc/rsyslog.conf 편집
- fromhost-ip부분을 hostname으로 변경한다.


- 아래 이미지의 auth는 로그인과 관련된 부분이다.

- 수정 후 systemctl restart rsyslog를 해준다.

/ 삭제
# rm -rf /var/log/rsyslog/*.*
- rf옵션 : 폴더안의 내용을 지우기

/ 수정된 내용 확인

 

[클라이언트]
/ rsyslog 재시작
# systemctl restart rsyslog

/ rsyslog 설정파일 확인
# vi + /etc/rsyslog.conf

/ 시큐어 이슈를 만들어주기
# systemctl restart sshd



[서버]
/ 로그 확인
# ls -al /var/log/rsyslog/

- 템플릿 부분을
# $template TmplMsg,"/var/log/rsyslog/%hostname%_%fromhost-ip%__messages_%$YEAR%-%$MONTH%-%$DAY%.log"
- 로 하게되면 호스트네임과 from아이피가 같이 나오게 된다.

 


 

 

swatch

/ swatch
- 로그를 분석해주는 솔루션
- 원격서버 로그분석도 가능(rsyslog)
- Simple Log Watcher
- 로컬 로그도 볼 수 있고 원격 로그도 볼 수 있다.
- swatch를 실행한 다음부터 설정한 내용들을 검출할 수 있다. (이전것은 검출이 안된다.)

 

/ 설치 확인
# rpm -qa swatch
# rpm -qa | grep swatch

/ 설치
# yum list swatch
- 위의 명령어를 날리면 못 불러온다.
- 레포지토리 확인
# yum repolist


- 레포를 더 추가해줘야 한다.
# yum -y install epel-release

- 여담 : noarch -> 설치할때 32bit/64bit 상관 안한다.

# yum repolist
- 하면 에러난다.

 

- yum 관련된 파일이 있는 곳으로 이동
# cd /etc/yum.repos.d/

/ 수정
# vi epel.repo

- 위의 내용을
- baseurl앞의 #을 지우고, metalink에 #을 추가한다.

- 이후 다시 yum repolist를 해본다.
- 증설된것을 확인할 수 있다.

- 이제 yum에서 확인할 수 있다.

 

- 설치
# yum -y install swatch perl-File-Tail

 

/ swatch는 설정파일을 만들어야 줘야 한다.
# cd ~
# touch ./.swatchrc : '.swatchrc'파일 만들기
# ls -al

# vi ./.swatchrc
- 아래 내용으로 작성한다.

watchfor /Accepted password/
echo

watchfor /Accepted password | session opened/
echo

watchfor /password check failed| failed password/
echo

- /root/.swatchrc파일을 바라보고 설정파일을 적용한다.
- 바라보는 로그위치는 /var/log/secure이다.
# swatch -c /root/.swatchrc -t /var/log/secure



/ 테스트
- 새 터미널 탭을 연다.

- 서버에서 ssh 접근 실패를 해본다.

- 실시간으로 확인이 가능하다.

- ssh 성공했을때도 실시간으로 나오는지 확인해보자.

 

- cat으로  /var/log/secure을 좀 더 자세히 들여다보자
# cat  /var/log/secure
- 연결이 끊어진것도 추적하도록 해보자.

# vi ./.swatchrc
- 아래의 내용을 제일 밑에 추가해준다.
- 한줄로 쭉 적어도 상관은 없다. (지금 한줄로 쭉 적으면 너무 보기 힘들어서 여러줄에 걸쳐서 표시한다.)


- 이제 다음 터미널 탭에서 ssh를 나가면 closed된 로그를 확인할 수 있다.

 

/ 이제 클라이언트의 로그를 바라보도록 한번 해보자
- /var/log/rsyslog에 있는 클라이언트의 secure로그를 바라보도록 한다.

# swatch -c ./.swatchrc -t /var/log/rsyslog/192.168.111.132_secure_2022-06-21.log

- 이제 클라이언트에서 ssh 실패도 해보고 성공도 해보고 ssh 나가기도 해보자.



- 내용 또 추가
# vi ./.swatchrc
- 일반적이지 않지만 한번 넣어본다.

 

# swatch -c ./.swatchrc -t /var/log/secure

- 새 터미널에서 한번 로그파일에 내용을 추가해보자.

- 근데 이게 로컬에서는 되는데 원격에서는 안된다.

 

/ 확인해보기
# swatch -c ./.swatchrc -t /var/log/rsyslog/192.168.111.132_messages_2022-06-21.log
- 이후 클라이언트에서 'echo "haha" > /var/log/messages'를 해도 서버에서 확인이 안된다.

- 서버에서 확인 안됨

 

- 클라이언트에서 logger를 쓰면 서버에서 확인이 되도록 할 수 있다.

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

시험문제 풀이 조금 해주다가 끝났다..

교수님께 수업시간에 다른 학생들이 너무 힘들어하니 설명 좀 쉽게 잘 해달라고 했는데
각자 구글링 하고 모르는게 있으면 질문하면 되지 왜 나보고 다른 사람들 대변하면서 그러냐고 하시며 혼났다..

이게 혼날일인가...?

잘 모르겠다.

네트워크랑 시스템도 보안 구축이지만 기초부터 잘 알려주시는데 왜 그러시는지..

구축 보안이므로 구축할때부터 보안을 신경써야 하는 과정으로 수업이 진행되면 되지 않았나 생각해본다.

 


[3,4,5교시 - 시스템 보안 구축]

/ bandit 풀이

메모

/ 찾기 find
- byte 검색 : -size 33c (33바이트 검색)
- 소유자 검색 옵션 : -user
- 소유그룹 검색 옵션 : -group

/ 0> /dev/null
- 기본

/ 1> /dev/null
- STDOUT(standard output)
- 에러내용만 보이게 되고 찾는 내용을 null 장치로 보내도록

/ 2> /dev/null
- STRERR(standard error)
- 에러를 null장치로 보내고, 찾는 내용만 보이게 됩니다.

/ base64 디코딩
# cat ./data.txt | base64 -d
# cat ./data.txt | base64 --decode
# base64 -d ./data.txt

/ 압축
- xz > bzip2 > gzip2 > zip > compress > tar 순으로 압축률이 좋다.
- tar, compress는 용량압축을 하지 않는다.
- 한개 파일에 대해서만 용량을 줄일 수 있다.
- 압축 해제
    > xz -d 파일명
    > unxz 파일명
    > bzip2 -d 파일명
    > gunzip -d 파일명
    > zip -d 파일명
    > unzip 파일명

- file.tar.xz
    > 1. unxz, xz -d
    > 2. tar -xvf
    > tar -Jxvf : 1,2번을 한번에 한다.

- file.tar.bz2
    > 1. bunzip2, bzip2 -d
    > 2. tar -xvf
    > tar -jxvf : 1,2번을 한번에 한다.

- file.tar.gz
    > 1. gunzip, gzip -d
    > 2. tar -xvf
    > tar -zxvf : 1,2번을 한번에 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

/ 데이터베이스 취약점 분석
- 모의 해킹을 실시한다.
    > 데이터베이스 서비스 프로세스의 여부 점검
    > 데이터베이스의 패스워드를 브루트포스, 딕셔너리 어택 등 패스워드 크래킹 기법을 통해 안전하지 못한 데이터베이스 패스워드를 추출여부 점검
    > 버퍼 오버플로어 공격에 대한 데이터베이스 서비스 오동작 여부 점검
    > DoS공격에 대한 데이터베이스 다운이나 서비스 불가 여부 점검
- 내부 보안감사를 실시한다.
    > 패스워드를 포함하는 데이터베이스 사용자 계정 정보
    > 모든 프로파일과 각 프로파일의 지원 정보
    > 데이터베이스 사용자의 다른 역활에 부여된 역활 정보
    > 데이터베이스 내의 모든 역활에 대한 상세 정보
    > 데이터베이스 사용자의 다른 역활에 대한 상세 정보
    > 데이터베이스 사용자의 다른 역활에 부여된 시스템 역활 정보
    > 데이터베이스 사용자에게 부여된 시스템 권한 정보
    > 데이터베이스 프로세스와 세션 정보

/ 데이터베이스 취약점 체크리스트를 점검한다.

 

/ 오라클 현재 접속한 SESSION  정보 조회

select sid, serial# from v$session where audsid = sys_context('USERENV','SESSIONID');

 

/ 시스템 리소스 사용현황 조회

select * from v$resource_limit where
resource_name in ('processes','sessions','transactions');

 

/ 현재 실행중인 세션이 날리는 쿼리를 조회

SELECT
  a.sid,       -- SID
  a.serial#,   -- 시리얼번호
  a.status,    -- 상태정보
  a.process,   -- 프로세스정보
  a.username,  -- 유저
  a.osuser,    -- 접속자의 OS 사용자 정보
  b.sql_text,  -- sql
  c.program    -- 접속 프로그램
FROM
  v$session a,
  v$sqlarea b,
  v$process c
WHERE
  a.sql_hash_value=b.hash_value
  AND a.sql_address=b.address
  AND a.paddr=c.addr
  AND a.status='ACTIVE';

 

 


[3,4,5교시 - 시스템 보안 구축]

 오늘은 rsyslog 복습 실습을 진행했다.


/ bandit 풀기 메모(bandit5)
- find 경로 -size +숫자
- find 경로 -size 숫자
- find 경로 -size -숫자
- find 경로 -size 1033c : bytes로 검색
- find 경로 -size 1033b : 블록
- find 경로 -size 1033w : 워드
- find 경로 -size 1033k : 키로바이트
- find 경로 -size 1033M : 메가바이트
- find 경로 -size 1033G : 기가바이트

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

/ 보안 데이터베이스의 테스트 및 점검
- 데이터베이스 접근제어 보안적용을 시험한다.
    > 로그인 제어
    > SQL 통제
    > 로깅(감사)
    > 경보
    > SQL 마스킹
    > 모니터링
    > 보안 정책 관리
    > 보고서
    > 장애 대응
    > 로그 관리
- 패킷 손실 시험을 실시한다.
- Long SQL 시험
- 성능 시험

- 데이터베이스 작업결재 보안 적용을 시험한다.
- 시험 항목
    > 결재 시스템
    > 작업 결재 통제
    > 로깅(감사)
    > 모니터링
    > 보안 정책 관리
    > 보고서
    > 로그 관리

- 데이터베이스 취약점 분석
- 모의 해킹 실시
- 내부 보안감사 실시

- 데이터베이스 취약점 체크리스트 점검

 

더보기

Q. 데이터베이스 작업결재 테스트 항목 중 보안 정책 관리에 대한 사항으로 옳지 않은 것은 무엇인가?
1) 장기 미사용 정책, 미사용 사용자를 식별할 수 있는 기능이 있는지 여부
2) 감사 정보에 대하여 백업 및 복구가 가능한지 여부 
3) 작업결재 정책에 대한 변경 이력을 관리하는지 여부
4) 작업결재 정책에 대한 백업 및 복구가 가능한지 여부

답 : 2번
해설 : 2번은 로그관리에 대한 내용이다.

 

 

 


[3,4,5교시 - 시스템 보안 구축]

잠깐 log

/ /var/log의 하위 파일 및 폴더
- boot.log: 부팅이 되면서 데몬들이 잘 올라왔나 기록
- dmesg
    > 리눅스 부팅 메시지, 리눅스 부팅 로그
    > 부팅시 드라이버 오류 등을 확인할 수 있다.
    > 커널 관련된 로그도 기록된다.
- glusterfs(GFS) : 서버 여러개를 묶는것
- messages : 해당 운영체제가 돌고 있는 온갖 정보를 기록
- samba : 리눅스 서버와 윈도우 서버간의 디렉토리 자원을 공유(nfs는 리눅스들 끼리)
- secure : 보안인증/권한에 대한 기록

- btmp : cat으로 읽을 수 없다. Data파일, 바이너리 파일이기 때문, 명령어로 읽어야 한다.
    > 명령어 : lastb, 로그인 실패 이력
- lastlog : cat으로 읽을 수 없다. Data파일, 바이너리 파일이기 때문, 명령어로 읽어야 한다.
    > 명령어 : lastlog, 마지막 로그인 기록
    > lastlog -t 7 : 7일동안 로그인한 기록을 보여줘
- wtmp : cat으로 읽을 수 없다. Data파일, 바이너리 파일이기 때문, 명령어로 읽어야 한다.
    > 명령어 : last, 로그인/로그아웃/리부팅 기록, 옵션으로 '-n 숫자'를 하면 최근 몇건의 행적을 알 수 있다.
* /var/run/utmp : cat으로 읽을 수 없다. Data파일, 바이너리 파일이기 때문, 명령어로 읽어야 한다.
    > 명령어 : who, w, finger, 현재 로그인 이력

* 각 명령어와, 결과화면, 사용방법, 파일이 어디에 있는지 등등을 잘 알고 있어야 한다.

/ pts
- Pseudo terminal Server

/ 히스토리 파일(history)
- /root/.bash_history에 있다.
- 바로 저장을 하진 않고 메모리에 저장했다가 나중에 반영된다.
- 'history -a'를 하면 메모리에 있던 내용이 .bash_history에 저장된다.

/ 어카운트의 프로세스와 관련된 로그
- /var/account/pacct
- 활성화를 시켜줘야 파일에 로그가 쌓인다.
- 활성화 명령어 : accton /var/account/pacct
- pacct도 Data파일이라 읽는 명령어가 따로 있다.
- 읽는 명령어 : lastcomm, acctcom(centos에서는 되지 않는다..)

/ sulog
- 위치 : /var/log/sulog
- 먼저 활성화를 시켜야 파일이 있다.
- 활성화 시키기
# vi /etc/login.defs
- 아래 이미지는 중요한 부분

- 맨 밑에 내용을 적을것이다.
# SULOG_FILE /var/log/sulog
- 확인

- /etc/rsyslog.conf을 수정해준다.
# vim /etc/rsyslog.conf
- RULE 쪽에 수정해준다.
- info 이상 레벨일때 저장하도록 세팅한다.

- 작업 후 'systemctl restart rsyslog'를 해준다.
- 확인 (sulog가 생겼다.)

- 테스트
# su - centos 했다가 #exit
- cat /var/log/sulog

* 여담 : Ctrl+f - 한페이지 앞으로 / Ctrl+b - 한페이지 뒤로


다시 rsyslog

 

/ rsyslog.conf 수정
# vi /etc/rsyslog.conf
- ModLoad immark부분의 #지우기

- 수정 후 systemctl restart rsyslog
참고 링크

/ 잠시 RULES 부분설명
- 작성 규칙
    > 점(.)으로 구분되어 있다.
    > 점(.)앞에는 파실리티(facility)라고 한다. 서비스, 메시지의 종류이다.  ex) mail.none에서 mail / authpriv.*에서 authpriv
    > auth : 사용자 인증(로그인)
    > authpriv : 인증(보안, 승인, 권한)
    > 파실리티 중에 local은 0~7까지 있다.
    > 점(.)뒤에는 로그 우선순위의 이름이 들어간다. (*은 모든 로그를 다 포함한다는 뜻이다.)
    > *.info 라면 info레벨 부터 쌓으라는 말이다.
    > mail.none이라면 쌓지 말라는 뜻이다.
    > 따라서 *.info;mail.none;authpriv.none;cron.none는 모든것에 대해 info이상 다 쌓되, mail/authprivcron는 제외라는 뜻
    > omusermsg : 사용자에게 보내는 메시지

/ local 로그가 기록되는 레벨
- local0 : 로그를 작성하지 않음
- local1 : FATAL
- local2 : ERROR
- local3 : WARN
- local4 : INFO
- local5 : DEBUG
- local6 : TRACE
- local7 : ALL

/ 로그의 우선순위
- 5,6,7은 일상적인 레벨이다.
- 3,4는 그냥 오류, 경고
- 0,1,2는 뭔가 심각함


/ 계속 설명
- kern.crit                        @name(호스트이름) : 특정 호스트 pc에 보내라
- kern.crit                         /dev/console : 저 위치에 로그를 남겨라
- kern.info;kern.!err         /dev/console : !는 제외라는 뜻. info위에 다보내고 err위로는 제외해라
- *.*                                  /var/log/messages : 모든 서비스 메시지, 모든 레벨을 기록해라
- *.info;mail.none            /var/log/messages : 모든 서비스의 info레벨위에 다 보내는데 mail관련은 빼라
- *.=info                           /var/log/messages : 모든 서비스의 info만 기록해라
- mail.*;mail.!=info          /var/log/maillog : mail 관련된 메시지 중에서 info수준의 메시지 제외
- mail.!=info,!=debug        /var/log/maillog : info, debug수준의 메시지는 제외하고 기록해라
- *.notice                          @192.168.111.101 : udp로 전달을 해라
- *.notice                          @@192.168.111.101 : tcp로 전달을 해라
- *.notice                          @john.com:514 : udp포트 514로 전달을 해라tcp로 전달을 해라
- mail.*                             ~ : 모든 종류의 로그를 버려라 (~는 틸트로 읽는다.)
- mail.*                             KIM & @192.168.111.101 : KIM이라는 로컬 사용자에게 보내고 그리고 UDP로도 전달을 해라.

더보기

/ 예시 문제 1
- 문제 : 모든 emerg수준의 문제가 발생 /etc/rsyslog.conf 이고 /log/emerg.log에 저장해라
- 답 : *.emerg /log/emerg.log

더보기

/ 예시 문제 2
- 문제 : syslog를 대체하는 시스템 로그 및 커널 메시지 관련 데몬으로 최근 리눅스는 이 로그 데몬을 사용한다. 무엇일까?
- 답 : rsyslog

 

 

 

 

 

 

 

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

-- 테이블 생성
create table case_hp(hp varchar2(16));
commit;

-- 확인
select * from case_hp;

-- 데이터 삽입
insert into case_hp values ('010-1111-1111');
insert into case_hp values ('010-2222-2222');
insert into case_hp values ('010-3333-3333');
insert into case_hp values ('010-444-4444');
commit;

-- substr로 010-****-0000 형태로 표시하기
select hp, substr(hp,1,4)||'****'||substr(hp,-5) as "masking" from case_hp;

 


[3,4,5교시 - 시스템 보안 운영]

rsyslog

- CentOS 5.6 에 syslog라는것이 있었다. 로그관리를 하는 것. initd
    > 이때쓰던 명령어 'service snmpd restart'
    > /etc/syslog.conf
- CentOS 7에서는 rsyslog를 쓴다. systemd
    > 지금쓰는 명령어 'systemctl restart snmpd'
    > /etc/rsyslog.conf
- 로그관리 : 어떤 내용이 어디에 저장될지 정해주는게 rsyslog이다.
- 보통 소규모에서는 로그 서버를 구축하지는 않고, 수천대의 장비를 운영하는 회사에서 로그서버를 구축한다.
- 네트워크 장비, 보안장비 등 장비를 가리지 않는다.
- 로그서버에서 로그 관리를 받는다.

/ 준비
- 101번 : 로그 수집서버
- 클라이언트 : 로그 수집 대상서버
- 실습 
    > Messages : 리눅스 커널 로그 및 기본 로그
    > secure : 원격으로 로그인할때 성공실패여부, su를 할때도 저장된다.

/ 패키지 설치
- 기본으로 설치되어 있다.
# rpm -qa | grep rsyslog

- 더 높은 패키지 버전이 있나 확인
# yum list rsyslog
* 버전정보 : (8.24.0-57)주.부.패치-릴리즈

- 업데이트
# yum -y update rsyslog
* install과 update의 차이점 : install은 이전에 설정했던 설정파일이 다 날라간다.

 

/ /var/log로 이동
#cd /var/log
- 백업관리를 해주는 프로세스 : logrotate(/etc/logrotate.conf)

 

/ 설정파일 확인
# rpm -qc rsyslog

/ /etc/rsyslog.conf 파일 변경
- 크게 3부분으로 나뉘어 진다.
- 모듈, GLOBAL DIRECTIVES, RULES
- ROLES 부분은 시험에 짱 많이 나옴

- 15행, 16행 주석을 푼다.

- $udpServerRun 아래에 아래의 내용을 붙여넣는다.

$template TmplMsg,"/var/log/rsyslog/%fromhost-ip%_messages_%$YEAR%-%$MONTH%-%$DAY%.log"  
$template TmplAuth,"/var/log/rsyslog/%fromhost-ip%_secure_%$YEAR%-%$MONTH%-%$DAY%.log"  

authpriv.* ?TmplAuth 
*.info;mail.none;authpriv.none;cron.none ?TmplMsg

- 파일의 생성되는 형식에 대해 서술하고 있다.

- 로그를 어디에 저장할것인지 서술되고 있다.

- authpriv : 인증 권한에 관련된 모든 내용
- authpriv.* ?TmplAuth : 인증관련된 내용은 TmpAuth에 남겨라
- *.info : info보다 상위 개념 내용들
- mail.none : 메일에 관련된 내용은 남기지마라
- authpriv.none: 인증에 관련된 내용은 남기지 마라
- cron.none : 크론과 관련된 내용도 남기지 마
-  ?TmplMsg : 여기에다가.

 

/ 설정파일을 수정하였으니 restart를 한다.
# systemctl restart rsyslog

/ ps -ef 확인
# ps -ef | grep rsyslog

/ netstat 확인
# netstat -antup | grep rsyslog

 

/ 방화벽 열기(514)
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd --reload 
# firewall-cmd --list-all

 

/ cd /var/log로 들어가면 rsyslog폴더가 생겨있다.

 

[클라이언트]

/ rsyslog 설정파일 수정
- 로그 서버의 아이피:포트를 넣는다.
- *.* : 클라이언트의 모든 정보를
- @@ : tcp , @ : udp -> udp로
- 192.168.111.101에 던지겠다.
- 맨 밑에 넣을것이다.
# vi + /etc/rsyslog.conf

- 바로 재시작하려고 하면 재시작이 안된다.(일단 root가 아니면 재시작이 안된다.)

[서버]
/ 로그 파일이 생기는것 확인
# /var/log/rsyslog

- 아직 secure로그는 안 올라왔는데 이유는 client에서 계정과 관련된 액션이 없었기 때문이다.

- 클라이언트에서 centos로 로그인을 하거나 sshd등을 하면 서버쪽에 secure로그가 생성된다.
- 클라이언트

클라이언트

- 서버

서버

 

/ 클라이언트에서 작업하는 내용이 서버 로그에 잘 나오는지 확인해본다.
- 실습용 패키지 설치
# yum -y install mc

- 서버에서 바로 로그가 올라온다.

 

 

728x90
728x90

[1,2교시 - 데이터베이스 구축 보안]

/ 데이터베이스 보안 테스트 계획서 및 케이스 작성

/ 데이터베이스 보안 접근제어 적용 테스트

/ 데이터베이스 보안 작업결재 적용 테스트

/ 결함 관리

 


 

[3,4,5교시 - 시스템 보안 운영]

snmp

- 네트워크 장비의 성능과 핵심 기능의 현 상태, 기능 정보를 수집하고 관리, 저장할 수 있는 프로토콜
- 관리자는 SNMP를 통해 수집한 정보를 바탕으로 네트워크 장비의 현재 기능 상태와 성능 정보, 장애 발생 부분을 확인하고 대처할 수 있다.
- 162/udp 사용
- Agent는 161/udp 사용
- Manager와 Agent간 SNMP 버전이 일치해야 한다.
참고링크2

/ snmp가 설치되어 있는지 확인
# rpm -qa | grep net-snmp

/ ps -ef 확인
# ps -ef | grep snmpd

/ netstat 확인
# netstat -antup | grep snmpd

- udp쪽에는 LISTEN이 붙지 않는다.

 

/ SNMP 통신방식(polling)
- 161/udp
- agent랑 Manager랑 왔다갔다하는것
- 폴링의 반대말의 인터럽트이다. 근데 snmp에서는 폴링의 반대말을 trap으로 사용한다.
- 정기적으로 신호를 주고 받는다.

/ SNMP 통신방식(trap)
- 162/udp
- Event Reporting
- agent가 Manager한테 일방적으로 전달
- 요청이 없어도 이벤트가 발생하면 내용을 전달한다.
- polling때문에 간섭이 생기지 않도록 trap을 이용한다.

/ 신호를 주고 받는 체계
- 4가지 신호체계라고 한다.
- GET : 매니저가 요청을 하면 에이전트의 정보를 긁어오는데 요청을 하는것
- GET Next : 정보를 받아오는 것
- SET : 관리자가 에이전트한테 세팅을 하는것
- Trap : 비정기적인 이슈가 발생했을때 관리자에게 이벤트를 전달하기 위한 신호

/ 설정파일 찾기
# rpm -qc net-snmp

/ 설정파일 수정
# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd_bk.conf : 복사
# vim snmpd.conf
- 크게 4부분으로 나뉘어져 있다.
- 문서구조를 어느정도 파악하는것이 필요하고, 실습에서는 63행을 넘어가지 않으니 유의하자.

 

/먼저 First
- com2sec : snmp 문법 중 일부. 항상 들어가 있어야 한다.
- sec name : 임의의 값. 이름
- source : 대역
- community : 문자열

- 밑에 복사해서 편집한다.
- sec name을 snmpsec준다. 
- source : 192.168.111.0/24로 대역을 준다.
- community : monday로 문자열을 준다.

 

/ Second
- 이것도 위에꺼 복사해서 써보겠다.
- 퍼스트에서 지정했던 보안이름을 넣어 그룹이름을 지정한다.

- groupName : snmpsecGroup (위에서 지정한 sec name에 Group을 붙임)
- securityName : snmpsec(위에서 지정한 sec name으로 지정)

 

/ Third
- snmp과 관련한 가상의 뷰를 만든다.
- 읽을 수 있는 권한을 주는 가상의 뷰를 만든다.

- name : all (모두 읽기로 권한을 주겠다.)
- subree : .1 (모든것..? 맨위에 값만 사용을 하겠다.)
- mask : 80(그 뒤의 것들은 80으로 덮어버려)

 

/ Finally

- group : snmpsecGroup (위에 지정한 그룹 이름으로 설정)
- read : all (모두 읽기로 함)
- write : none
- notif : none

 

- 전체 코드

####
# First, map the community name "public" into a "security name"

#       sec.name  source          community
com2sec notConfigUser   default                 public
com2sec snmpsec         192.168.111.0/24        monday

####
# Second, map the security name into a group name:

#       groupName      securityModel securityName
group   notConfigGroup  v1              notConfigUser
group   notConfigGroup  v2c             notConfigUser
group   snmpsecGroup    v2c             snmpsec

####
# Third, create a view for us to let the group have rights to:

# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview      included   .1.3.6.1.2.1.1
view    systemview      included   .1.3.6.1.2.1.25.1.1
view    all             included   .1                   80

####
# Finally, grant the group read-only access to the systemview view.

#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup  ""      any       noauth    exact  systemview   none none
access  snmpsecGroup    ""      any       noauth    exact  all          none none

- 수정 후 시스템을 재시작한다.
# systemctl restart snmpd
# systemctl status snmpd


/ 방화벽 열기
# firewall-config
- 런타임을 영구적으로 변경
- 지금 현재 리눅스 버전에서는 서비스가 안보인다.
- 해서 포트로 추가해야 한다.

- 작업 후 옵션에서 파이어월d 다시 불러오기
- firewall-cmd로 하는 코드는 아래와 같다.

firewall-cmd --permanent --add-port=161/udp

firewall-cmd --permanent --add-port=162/udp

firewall-cmd --reload 

firewall-cmd --list-all

 

/ snmp walk
- snmp utils를 설치하면서 같이 설치된 녀석
- 여기에서는 버전1을 사용한다고 했는데 우리는 버전2를 사용해야한다.
- 커뮤니티 스트링이 public으로 되어 있는데 우리는 monday로 지정했었다.

- 사용 명령어
# snmpwalk -v 2c 192.168.111.101 -c monday system
- 버전은 2c를 많이 쓴다. (3은 호환이 안된다.)
- 101 아이피는 111.0/24대역에 포함이 된다.
- 커뮤니티 스트링은 monday로 지정한다.
- 맨끝의 system은 그냥 문법이다.



/ MID, OID
- MID는 뽑아낼 수 있는 정보
- OID : MID에 포함되어 있는 오브젝트 정보, 구별된 개체값

/ 클라이언트에 net-snmp-utils 설치 후 snmpwalk 실행
# yum -y install net-snmp-utils
# snmpwalk -v 2c 192.168.111.101 -c monday system
- 버전을 1이나 3으로 주면 확인이 되지 않는것을 확인할 수 있다.
- 커뮤니티 이름을 monday로 넣지 않으면 확인이 되지 않는다.


- 만약 커뮤니티 스트링을 다른것도 쓰고 싶다면 서버에서 First부분에 항목을 추가해주면 된다.
# vim /etc/snmp/snmpd.conf

- 만약 버전도 특정 버전을 추가하고 싶다면 Second부분에 항목을 추가해주면 된다.
# vim /etc/snmp/snmpd.conf

- conf파일 수정 후 서버를 재시작해준다.

- 이후 커뮤니티 스트링을 추가로 설정했던 것으로 지정하거나 버전도 따로 지정했던것으로 호출하면 확인이 되는것을 확인할 수 있다.

 

/ snmptest프로그램 실습
- 버전을 바꿔가며 테스트 해본다.
- 커뮤니티 스트링을 바꿔가며 테스트해본다.



/ 모니터링 툴(리눅스서버, Windows서버)
- 추후 MRTG(무료), PRTG(유료) 프로그램으로 모니터링을 해볼것이다.
- MRTG : 무료, 트래픽 모니터링, linux/windows
- PRTG : 유료, 사용량, cpu, mem, disk, traffic, ping, port, Windows
- CACTI : 무료, httpd + mysql + php
- Zabbix : 무료, (C/S), httpd+mysql+php
- Nagios : httpd+mysql+php

 

728x90
728x90

/ GNS3 설치

- 다 설치해도 되지만 와이어샤크랑 맨밑에 3개 체크 해제하고 설치 진행
- 윈p캡도 설치
- 솔라리스 스탠다드 툴캣에서는 no

 

 

- 이런 화면이 뜬다..

 

- 앞으로는 D드라이브에 워킹스페이스를 잡을것이다.
- 파일 > 뉴 블랭크 디렉토리에서 원하는 디렉토리를 잡는다.(폴더를 미리 만들면 안됨)

- 여기에서는 스위치나 이런 목록이 있어도 장비에 ios가 설치되어 있지 않아서 인터넷에서 ios를 찾아 설치해줘야 한다.

 

- ios목록이 있을때 bin이 압축이 풀리면 BIN이 된다.
- c1700-adventerprisek9-mz.124-8.bin을 test에 놓고 압축을 푼다음
- BIN으로 나온 파일로 대체한다.

 

 

- GNS3의 아래 표시한 것을 클릭해서 추가한다.
- 계속 넥스트 넥스트하다가 wic-2t를 추가한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안 구축]

솔직히 강사님이 수업때 무엇을 말씀하려고 하시는것인지 잘 모르겠따..

모듈교재를 개인적으로 읽으면서 공부를 하고 있다..


[3,4,5교시 - 시스템 보안 운영]

- 저번 시간에 네트워크를 재시작 하면 본딩이 풀리는 문제가 있었다.
- 'systemctl restart network'를 해도 안 풀리도록 설정
- 네트워크 매니저와 충돌이 나서 풀리는 것이다.

/ 설정
# gnome-control-center network
- 를 하면 설정>네트워크가 뜨는데 이것을 사용하지 않도록 설정한다.

# systemctl stop NetworkManager
# systemctl disable NetworkManager


- 이제 'nmcli c', 'nmcli d'명령어가 안된다.

- 이제 network를 재시작 해본다.
- 이제는 본딩이 깨지지 않는다.


- 'cat /proc/net/bonding/bond0'도 확인해본다.
# cat /proc/net/bonding/bond0


- 근데 지금 네트워크 매니저를 죽였기때문에 우측상단의 네트워크 아이콘을 누르면 에러메시지가 나온다.



- 네트워크 설정을 자주 하지 않는, 본딩 서비스가 더 중요한 서버들은 이렇게 설정을 한다.

 

/ 본딩모드

0 : 라운드 로빈 방식
1 : 두개중에 하나만 사용
2 : 맥주소를 xor연산해서 결정
3 : 전방위 다 뿌리는거
4, 5, 6 : 그런게 있구나
- 0,1,2,3와 4,5,6이 다른점은 결함이 발생했을때 견딜 수 있는지가 있는지 : 폴트 톨로런스(Fault tolerant)
- 0,12,,3이 있고 4,5,6이 없음

 


 

SNMP(Simple Network Management Protocol)

- 161/udp, 162/udp
- 모니터링 대상 161/udp polling, trap 162/udp
- 설정 : /etc/snmpd.conf -> 문자열 커뮤니티 스트링
- RO public을 주로 쓰고, RW private는 잘 안쓴다.
- 근데 또 RO도 너무 널리 알려져있어서 임의값으로 변경해서 쓴다.
- snmptester라는 툴을 이용한다.

/ 버전
- v1 : 32bit, 암호화 안됨
- v2 : v2c, 64bit, 초기 암호화있었다가 성능이 떨어져서 기능이 빠졌음, 제일 많이 쓰인다.
- v3 : 64bit, 암호화 기능, 원격 설정, 인증, 기밀성, 무결성, 너무 무거워서 잘 안씀

/ 리눅스에서 nmspd통신이 잘 되는지 확인
- snmpwalk명령어로 확인한다.
- ex) snmpwalk -v 2c -c 문자열 이름 | ip system : 버전 2c

/ snmptester 실행화면
- local ip : 구동하는 쪽 ip, VMware가 돌아가는 호스트 pc
- Device ip : VMware의 서버
- SNMP Version : 버전2부터 c가 붙는다.
- 커뮤니티 : 관리자가 변경할 수 있다.

 

/ 프로세스 이름 및 패키지 이름
- 프로세스 이름 : snmpd
- 패키지 이름 : net-snmp

/ 설치 및 실행
# yum -y install net-snmp, net-snmp-utils
# systemctl start snmpd
# systemctl enable snmpd

 

[여담]
kill 종류
1 SIGHUP
2 SIGINT
3 SIGQUIT
9 SIGKILL
11 SEGV
15 SIGTERM
18 SIGCONT
19 SIGSTOP
20 SIGTSTP

/ 구동된것 확인
# systemctl status snmpd
# ps -ef | grep snmpd

- 포트확인
# netstat -antup | grep snmpd

 

728x90

+ Recent posts