728x90

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

 

 


 

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

/ vsftp가 어디에 있나
# rpm -ql vaftpd | grep /var/ftp

/ pub디렉토리의 권한을 확인
# ls -ld /var/ftp/pub

/ vsftpd의 프로세스 확인
# ps -ef | grep vsftpd

/ vsftpd의 프로세스 확인
# netstat -antp | grep vsftpd

* 보안기사 기출 문제
- 아래의 ftp설명을 보고 괄호를 채워라

FTP는 (능동)모드와 수동모드가 있다. (능동)는 통신 제어를 위한 (21/tcp)포트와 데이터 전송을 위한 (20/tcp)포트를 사용한다. 수동모드에서는 데이터 전송을 위해 서버에서 (1024/tcp)포트 이상을 사용한다.

 

/ 리눅스에 ftp 클라이언트 설치
# yum -y install ftp

/ 리눅스 ftp 실행
# ftp localhost
- 누구로 로그인할지 물으면 차례로 root / password 입력

 

/ 윈도우 cmd에서 ftp 실행
- cmd를 열고 'ftp 아이피'를 입력한다.
# ftp 192.168.111.101
- 사용자와 암호를 입력한다.

- ftp에서 나오려면 'quit'나 'exit'를 입력한다.

* vi에서 해당줄로 이동하기
- 명령하고 숫자를 입력 후 쉬프트+G

/ vsftpd 로그보기
# cat /var/log/xferlog

 

 


 

DNS 이중화

/ 세팅순서
1. 해싱전용 dns 세팅
2. 마스터 세팅
3. 슬레이브 서버 세팅해서 동기화

/ centos/ubuntu 설치 차이점
- centos
    > net-tools, bind-utils
    > bind bind-chroot
    > yum -y install
    > rpm -iVh ... rpm
- ubuntu
    > net-tools, dnsutils
    > bind9
    > apt -y install bind9 or apt-get -y install bind9
    > dpkg -i ... dep

 

- bind-chroot란? : 조사해보기

/ 설치
# yum -y install bind bind-chroot
# systemctl start named
# systemctl enable named
# systemctl status named : 확인


/ 확인
# ps -ef | grep named
# netstat -antup | grep named

 

/ 설정파일 확인 및 설정
# rpm -qc bind
# cp /etc/named.conf /etc/named_bak.conf : 설정파일 백업
# vi /etc/named.conf : 수정

캐싱전용에서는 이것만 하면 된다.

# named-checkconf  : 설정내용에 문제가 있는지 체크
# systemctl restart named

/ 방화벽 열기
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload
# firewall-cmd --list-all

 

/ nslookup
# nslookup
> server 192.168.111.101
> 알고싶은 도메인

- Non-authoritative answer : 윈도우에서의 권한없는 응답과 같다.

 

/ 마스터 DNS 서버 세팅
# vi /etc/named.conf
- 제일 밑에 아래의 내용을 넣는다.

zone "john.com" IN {
        type master;
        file "john.com.db";
        allow-update { any; };
};

 

- 이때 'systemctl restart named'를 하면 에러가 나는데 이것은 'systemctl status named -l'을 하면 알 수 있다.


- 위 설정파일에 적었던 'john.com.db'파일을 'var/named'밑에 만들어주어야 한다.
# vi /var/named/john.com.db
- TTL(time to live) : dns의 ttl은 dns의 정보를 가져와서 기억하고 있는 시간이라는 뜻
- 시간단위를 H로 시간형식으로 표현할 수 도 있고 초로 표현할수도 있다.
- SOA(start of Authority) : 레코드는 해당 도메인에 대해 네임서버가 인증(authoritative)된 자료를 갖고 있음을 의미

$TTL    3H
@       SOA     @       root. (2 1D 1H 1W 1H)



 

 

 

 

 

 

 

 

 

728x90
728x90

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

 

 


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

/ 과목
- 시스템 보안 구축
- 시스템 보안 운영 ~ 6/29
- 정보시스템 진단
- 모의해킹
- 보안 운영관리
- 보안로그 분석
- SW개발 보안 구축
- 애플리케이션 보안 운영 ~2/3

/ FTP
- File Transfer Protocol, tcp 사용
- 20/tcp 데이터전송포트
- 21/tcp 컨트롤 포트
* 22/tcp sshd Openssh-server
* 443/tcp ssl Secure socket Layer https

/ FTP 패키지
- vsFTPd(very secure)
- sFTP : 22/tcp포트를 사용한다. 
- scp : 22/tcp 포트를 사용한다.

/ 버전확인
- 우분투 : cat /etc/issue
- centOS : cat /etc/*release*

 

/ 커널 버전 확인
- cat /proc/version
- uname -r
- uname -a

/ vFTPd 설치
# rpm -qa |  grep vsftpd : 확인
# yum list vsftpd : 확인
# yum -y install vsftpd

- 설치 확인
# yum list installed | grep vsftpd

 

/ vsftpd 실행
# systemctl start vsftpd
# systemctl enable vsftpd
# systemctl status vsftpd : 확인

# ps -ef | grep vsftpd

# netstat -antp | grep vsftpd

- 설정파일 찾기
# rpm -qc vsftpd
- 설정파일 : /etc/vsftpd/vsftpd.conf

- 설치된 패키지의 경로
# rpm -ql vsftpd

/ vsftpd 방화벽 설정
# firewall-cmd --permanent --add-port=20/tcp
# firewall-cmd --permanent --add-port=21/tcp
# firewall-cmd --permanent --add-service=ftp
# firewall-cmd --reload

# firewall-cmd --list-all

- 호스트pc에서 tcping으로 확인
- cmd에서 'tcping 192.168.111.101 21'


/ vsftpd 설정파일
# rpm -qc vsftpd

# ls -al /etc/vsftpd/

- ftpusers :  무엇인지 조사

- user_list : 무엇인지 조사


# vi vsftpd.conf
- anonymous_enable=YES : 익명으로 접근 할 수 있는지 여부(안할때는 주석처리 함)
- local_enable=YES : 무엇인지 조사
- write_enable=YES : 무엇인지 조사
- local_umask=022 : 무엇인지 조사
- anon_upload_enable=YES : 무엇인지 조사
- anon_mkdir_write_enable=YES : 무엇인지 조사
- xferlog_enable=YES : fpt로그 기록 여부
- connect_from_port_20=YES

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode. The vsftpd.conf(5) man page explains
# the behaviour when these options are disabled.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

- 설정파일을 수정 한 수 restart를 한번 해준다.
# systemctl restart vsftpd

/ vsftpd의 설치 위치
# rpm -ql vsftpd


- pub폴더의 권한을 보면 other유저의 권한은 쓰기(r), 실행(x)권한만 있다.
- 해서 쓰기 권한을 줘야만 ftp로 파일을 업로드할 수 있다.


- other유저에 스기 권한을 주기
# chmod o+w pub

- pub폴더의 소유를 root에서 other유저인 ftp로 변경한다.
# chown ftp.ftp pub
# chown ftp:ftp pub


- ftp로 접속했는데 아무파일도 없으면 내가 어디에 있는것인지 잘 모를 수 있으므로 임의의 파일을 만든다.
# ./pub
# touch vsftpd_server


- 임의의 내용 넣어보기
# echo blabla > vsftpd_server : 내용 변경
# echo blabla >> vsftpd_server : 내용 추가

 

/ 파일질라 설치
- https://filezilla-project.org/download.php 접속 후 초록 버튼 말고 밑에 있는 'Show additional download options'클릭

- Windows환경에서 설치 시 FileZilla_3.59.0_win64-setup.exe클릭

- 설치는 그냥 넥스트 넥스트 하면 된다.

 

/ 파일질라 실행
- 익명접속 시 로그인 유형을 '일반'으로 놓고 사용자에 'anonymous'으로 놓으면 된다.


- 확인

- 접속 성공


/ ftp 업로드 시도
- pub파일 안쪽으로는 파일을 업로드하거나 폴더를 생성할 수 있는데, 바깥쪽에는 업로드하거나 파일 생성이 되지 않는다.
- pub폴더 안의 파일이나 폴더 삭제는 되지 않는다.

 

/ vsftpd 로그확인
- 위치 및 파일명 : /var/log/xferlog
# cat /var/log/xferlog

- 파일명 뒤에 a : 전송모드가 아스키 모드였을 때(아스키는 cat으로 읽을 수 있는것, b는 바이너리 모드. 바이너리 모드는 cat으로 읽을 수 없다.)
- '_'(언더바)뒤의 i : input의 i이다. 클라이언트에서 서버측으로 업로드 하였을때
- '_'(언더바)뒤의 o : output의 o이다. 클라이언트에서 다운로드 받았을때
- 그 뒤의 알파벳
    > a : 익명계정
    > g : 패스워드 인증을 거친 익명계정
    > r : 패스워드로 인증된 사용자
- 물음표 : 익명
- 물음표뒤의 ftp : ftp방식
- 그 뒤는 계정이름
- * 뒤의 i or c
    > i : 작업 미완료(Incomplete)
    > c : 작업완료(complete)

/ root 연결 시도
- 계정을 root / password로 입력하고 접속해보기

- 서버에서 설정을 다시 해줘야 한다.
- ftpusers, user_list에서 root를 주석처리 해준다.
# vi /etc/vsftpd/ftpusers
# vi /etc/vsftpd/user_list
# systemctl restart vsftpd

- 파일질라에서 다시 root / password로 접속해본다.

- root계정이기 때문에 업로드/다운로드가 자유롭게된다.

/ 로그확인
* w, who로는 보이지 않는다.
* netstat에서는 접속을 확인할 수 있다.
* ps -ef | grep vsftpd
# cat /var/log/xferlog

 

​/ FTP 모드(능동 vs 수동)
- 능동모드의 주체는 서버이다.
- 수동모드의 주체는 클라이언트다.
- 방화벽이 있을때 수동모드를 쓴다.

 

 

728x90
728x90

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

# select * from dba_data_files;
# select * from V$NLS_PARAMETERS;
# select * from sys.v_$parameter;
# select * from sys.props$;

/ cmd에서 1
# wmic diskdrive get deviceid, model, size

/ cmd에서 2
# wmic logicaldisk get name,size

/ cmd에서 3
# wmic volume get name, capacity

/ cmd에서 4
# PowerShell "Get-WmiObject Win32_DiskDrive | FT DeviceID,@{E={\"{0:N1} GB\" -F($_.Size/1GB)}} -H -A" | FindStr G | Sort

/ cmd에서 5
# PowerShell "Get-WmiObject Win32_LogicalDisk -F DriveType=3 | FT DeviceID,@{E={\"{0:N1} GB\" -F($_.Size/1GB)}} -H -A" | FindStr G

 

 

 


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

net-tools bind-utils

728x90
728x90

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

 


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

/raid1, raid5
- 가상서버에 하드 1기가 싱글로 5개 추가
- 리부팅
# ll /dev/sd*
# fdisk /dev/sdb
- n > 엔터4번 > t > fd > p로 확인 > w로 저장 (/dev/sdb~/dev/sdf까지 진행)
# fdisk -l | grep fd 로 확인
# ll /dev/sd* 로 확인
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
- 뭐라 물어보면 y
# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
# mkfs.ext4 /dev/md1
# mkfs.ext4 /dev/md5
# mkdir /raid1
# mkdir /raid5
# mount /dev/md1 /raid1
# mount /dev/md5 /raid5
# df -h 로 확인

# vi /etc/fstab
- /dev/md1    /raid1    ext4    defaults,nofail    0 0
- /dev/md5    /raid5    ext4    defaults,nofail    0 0     -> 추가 및 저장
# reboot
# blkid

 

* 우분투 계열 설치 : dpkg, apt
* 레드햇 계정의 rpm, yum과 같다.
* 설치할때는 install, 삭제할때는 remove이다.
* 삭제할때 레드햇은 erase, 우분투는 purge(강력)가 있다.

/ SSL
- 시큐어 소켓 레이어 라는 뜻!

/ 프록시 설정
- 서버에서..
# rpm -qa | grep squid
# yum list squid
# yum -y install squid
# systemctl start squid
- 시작이 안될경우 open-ssl을 설치해줘야 한다.
# yum -y install openssl (시작이 안되는 경우)
# systemctl enable squid
# ps -ef | grep squid -> 프로세스가 살아있는지 확인
# netstat -antup | grep squid
# firewall-cmd --permanent --add-port=3128
# firewall-cmd --permanent --add-port=8081
# firewall-config
- 포트 추가 > 영구적 > 옵션 Firewalld불러오기
# firewall-cmd --list-all
# rpm -qc squid -> /etc/squid/squid.conf가 설정파일
# vi /etc/squid/squid.conf
- acl centos7 src 192.168.111.0/24
- http_access allow centos7
- http_port 3128   -> 확인
# systemctl restart squid
# netstat -antp | grep squid

- 클라이언트에서..
# su -
- 파이어폭스를 띄우기 > 편집 > 환경설정 > 고급 > 네트워크 > 설정 클릭 > 프록시 수동 설정 > 192.168.111.101 포트 3128, 모든 프로토콜 선택 > 확인

- 서버에서..
# tail -f /var/log/squid/access.log

- 클라이언트에서..
- 파이어폭스에서 nate.com들어가 보기

- 서버에서..
# netstat -ant | grep 3128 한 화면을 캡쳐
# vi /etc/squid/squid.conf    -> 포트를 변경하러 가기
- 3128포트를 8081포트로 변경
# systemctl restart squid
# netstat -ant | grep 8081
# tail -f /var/log/squid/access.log 걸어놓기

- 클라이언트에서..
- 파이어폭스 새로고침 -> 안되는거 확인
- 안되는거 확인하고 다시 프록시 세팅창에서 포트를 8081로 변경

- 서버에서
# netstat -ant | grep 8081

 

 

 

728x90
728x90

집에서 따로 정리예정..

728x90
728x90

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

/ 오라클 데이터 딕셔너리
- 전용 뷰(view) 접두어 : user_, all_, dba_

/ SQL, PL/SQL 풀네임
- SQL : Structured Query Language
- PL/SQL : Procedural Language

/ 현재 계정의 모든 테이블 목록 쿼리
# select * from tab;

/ 테이블의 데이터 조회 쿼리
- SELECT 가져올항목(모두 가져올 경우 *) FROM 테이블이름 WHERE 조건;
- ex) SELECT * FROM EMPLOYEES WHERE first_name = 'Steven';
- EMPLOYEE테이블에서 first_name이 'Steven'인 데이터를 모두 가져와라

/ 조건절 LIKE
- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE 'St%';
- 'St'로 시작하는 문자열 검색
- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE '%St';
- 'St'로 끝나는 문자열 검색

- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE '%St%';
- 'St'문자열이 들어가는(St로 시작하고 끝나는) 문자열 검색

/ USER_CONSTRAINTS 데이터 딕셔너리
- 제약조건을 위배하면 오류 메시지에 제약 조건명만 출력되는데, 이때 오라클이 부여한 제약 조건명으로는 어떤 제약 조건을 위반했는지 알 수 없다.
- 이때 USER_CONSTRAINTS를 검색하면 확인할 수 있다.
# DESC USER_CONSTRAINTS;
- TABLE_NAME : 테이블명
- CONSTRAINT_NAME : 제약조건명
- CONSTRAINT_TYPE : 기본키/외래키 정보
- R_CONSTRAINT_NAME : 외래키인 경우 PRIMARY KEY를 참조했는지 
- STATUS : 제약조건 활성화 정보
- SEARCH_CONDITION : 검사 제약 조건으로 지정된 조건

/ 특정 테이블에 지정된 제약조건 검색
# SELECT 컬럼명 FROM USER_CONSTRAINTS WHERE TABLE_NAME='테이블명';

/ 테이블 예명(alias)
- 쿼리 작성 시 테이블 이름이 너무 길 경우 예명을 줄 수 있다.
- 사용법 : 테이블 이름 뒤에 예명을 따로 적어준다.
- ex) SELECT * FROM USER_CONSTRAINTS C1 WHERE TABLE_NAME='EMPLOYEES';

/ 수업 때 진행 한 쿼리
- USER_CONSTRAINS : 유저가 소유한 모든 제약 조건을 볼 수 있다.
- USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있다.
- 아래는 EMPLOYEES테이블의 제약조건을 검색하는 쿼리이다.

SELECT
    c2.column_name,         -- 컬럼명
    c1.constraint_name,     -- 제약조건명
    c1.constraint_type,     -- 기본키/외래키 정보
    c1.search_condition,    -- 검사 제약 조건으로 지정된 조건
    c1.r_constraint_name    -- 외래키인 경우 PRIMARY KEY를 참조했는지 
FROM
    user_constraints  c1,
    user_cons_columns c2
WHERE
        c1.constraint_name = c2.constraint_name
    AND c1.table_name = 'EMPLOYEES'
ORDER BY 1;

- 결과

 

/ 실습 문제
- USER_TABLES를 통해 'employees'테이블의 테이블스페이스 및 레코드 건수, 몇 개의 block으로 이루어 졌는지, 평군 row size, 최근 통계정보 생성일자를 조회하시오.
- 참고 : USER_TABLES(사용자가 작성한 테이블 확인하는 뷰), USER_TAB_COLUMNS

select tablespace_name, num_rows, blocks, last_analyzed from user_tables where table_name = 'EMPLOYEES';

- 아래의 쿼리로도 확인가능하다.

SELECT TABLESPACE_NAME, NUM_ROWS, BLOCKS, last_analyzed FROM ALL_TABLES WHERE TABLE_NAME='EMPLOYEES';

- 참고 링크

 

/ 여러 테이블에 작업 할 쿼리를 여러개 만드는 쿼리 예제

SELECT 'DROP TABLE '|| TABLE_NAME || ' CASCADE SONSTRAINTS;' FROM USER_TABLES;

 

/ dba_profiles
- 로그인하는 계정 정보 조회

SELECT RESOURCE_NAME, RESOURCE_TYPE, LIMIT FROM DBA_PROFILES;

- 비밀번호 기한을 제한없음으로 변경

ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME UNLIMITED;

- 결과



​/ DBA_PROFILES 테이블 뷰
- PASSWORD_LIFE_TIME : 비밀번호 유효 기간
- PASSWORD_REUSE_TIME : 암호가 재사용 될 때까지의 날 수
- PASSWORD_REUSE_MAX : 암호가 재사용 될 때까지의 날 수
- PASSWORD_VERIFY_FUNCTION : 비밀번호 복합성 검사를 수행할 PL/SQL
- PASSWORD_LOCK_TIME : 암호가 기간만료되어 계정이 잠겨진 채로 남아 있었던 일수
- PASSWORD_GRACE_TIME : 유예기간
- 참고 링크

/ 프로파일 만들기 실습

CREATE PROFILE KIMYJ limit 
FAILED_LOGIN_ATTEMPTS 5     -- 로그인 실패 횟수
PASSWORD_LOCK_TIME 3        -- 암호가 기간 만료되어 계정이 잠겨진 채로 남아 있었던 날 수
PASSWORD_LIFE_TIME 20       -- 날 수로 표시한 암호의 수명으로 이 기간이 지나면 기간 만료됨
CPU_PER_SESSION 2000        -- 1/100 초 단위로 측정한 총 CPU이용시간
;

- 결과 확인

 


 

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

/ cron.daily
# cd /etc/cron.daily

/ at
- 사용법 : at 옵션 시간
- 사용법 : at 시간 날짜 -f test.sh
- ex) at 1410 21122021 : 2021년 12월 21일 오후2시 10분
- t옵션을 사용하는 경우
# at -t 202112211410 : 2021년 12월 21일 오후2시 10분
- 지금부터 1분후에 실행 : at now+1 minutes

/ at 실습 1
# at -t 202205191800   --2022년 5월 19일 오후6시에 한번 실행
# echo "Hello!"
# mkdir at_test

 

/ at 실습 2
# at now+2 minutes


/ at 생성 목록
# at -l

 

/ at 실행 예정 항목 삭제
# at -d 항목번호

 

/ crontab 실습
- 매월 28일 15시 00분에 user이름 'wednesday'를 만들기
# 0 15 28 * * root useradd wednesday
- '/home'디렉토리 밑에 생긴 'wednesday'디렉토리를 매월 28일 15시 01분에 'wednesday'디렉토리가 '/backup'디렉토리에 백업되도록 하여라
# 1 15 28 * * root cp /home/wednesday /backup
- 매일 새벽3시에 'rdate -s time.bora.net'이 실행되게 하여라
# 0 3 * * * rdate -s time.bora.net
- 매시 1분에 시간별 액션을 실행한다.
# 1 * * * 8 액션
- 매주 월~금 11:59에 백업 스크립트를 실행하게끔한다.
# 59 11 * * 1-5 백업스크립트
- 9시~17시 사이에 매 15분 마다 프로그램 실행된다.
# */15 9-17 * * * 프로그램
- 매월 1~15일 정오와 20~25일 정보, 그리고 17일의 정보에 실행된다.
# 0 12 1-15,20-25,17 * * 프로그램
- 1분마다 시간별 액션을 실행한다.
# * * * * * 액션

/ at 실습
- 현재 시점에서 1분후에 mkdir 명령어를 실행해서 testdir이 만들어지도록
# at now+1 minutes [엔터] mkdir testdir [엔터] 컨트롤+D
- 2022년 5월 19일 오후7시에 testfile이 만들어지도록 하여라
# at -t 202205191900 [엔터] touch testfile [엔터] 컨트롤+D

/ 복습 - dns
- dns가 설치되어 있는지
# rpm -qa | grep bind
- yum 설치가 가능한지
# yum list bind bind-chroot
- 시작, 활성화, 활성여부확인
# systemctl start     named
# systemctl enable named
# systemctl status named
- 53포트를 사용하는 네트워크 인터페이스를 확인하여라
# netstat -antup | grep 53
- dns 설정파일 위치 확인
# rpm -qc bind
- name편집(13, 14, 21번째 줄)
# vi /etc/named.conf
# listen-on port 53 { any; };
# listen-on-v6 port 53 { none; };
# allow-query     { any; };
- 편집 후 conf파일에 문제가 없는지 체크(똑 떨어지면 문제가 없는것)
# named-checkconf
- DNS 서버 재시작
# systemctl restart named
- nslookup, dig 확인
# nslookup www.naver.com 192.168.111.150
# dig @192.168.111.150 www.naver.com
- netstat으로 LISTEN확인
# netstat -antu | grep 53
- 방화벽 설정
- firewall-config > 영구적 > 서비스의 dns체크 > 옵션에서 Firewalld 리로드
- 방화벽 확인
# firewall-cmd --list-all
- 호스트pc에서 nslookup확인
- cmd에서 nslookup www.google.com 192.168.111.150


/ 실습대비 
- CLI 모드 서버 설치 : 최소설치, net-tools와 bind-utils를 설치하여 ifconfig와 nslookup이 실행되도록 한다.
- yum -y install net-tools bind-utils로 설치해준다.

 

 

 

 

728x90
728x90

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

/ 데이터베이스 보안 설계
- 데이터베스 보안 : 내부 및 외부자가 데이터베이스 내에 저장된 조직의 주요 기밀 정보에 불법적으로 접근하는 것을 막는 것
- 보안 설계 : 데이터베이스에 저장된 데이터 보호를 위한 설계에 초점을 맞춘 것
- 보안 위협들은 사용자의 실수나 오용, 내부 사용자의 권한 남용, 비정상적인 접근, 취약점들로부터 시작

/ 주요 위협 요소
- 일반적인 데이터베이스 위협
    > SQL Injection
    > 악성 프로그램 삽입
- 사용자에 대한 식별 및 인증 위협
    > 사전 공격, 무작위 대입공격, 사회 공학적 기법
- 데이터 유출 위협
    > 암호화 되지 않은 데이터
    > 안전성이 확인되지 않은 암호 모듈을 사용하는 경우
- 권한 오남용 위협
    > 허용된 권한보다 더 많이 부여된 접근 권한
    > 악의적인 목적으로 허용된 권한 범위를 벗어나는 경우
- 암호 모듈 오용 위협
    > 안전성이 검증되지 않은 암호 모듈 사용
    > 적합하지 않은 암호 모드 사용
- 암복호화 키 및 마스터 키 노출 위협
    > 데이터 암호화 시 키 노출
- 프로젝트 수행과정에서의 데이터베이스 접근 허용 위협
    > 외부 작업자가 자사의 데이터에 접근할 수 있는 권한을 부여
- 운영과정에서 권한에 대한 관리 소흘로 인한 침해 발생 위협
    > 개발자에게  DBA 권한을 설정함
- 접근통제 우회
    > 디폴트계정 또는 단순 계정 등 계정번호와 비밀번호가 동일할 경우
    > 계정 및 패스워드의 정책 설정이 미흡한 경우
- 데이터베이스 정보의 불법 열람 및 변조/삭제 위협
    > 데이터베이스에 저장된 주요 정보에 대해 암ㅎ화가 미흡한 경우

 

/ 데이터베이스 보안 설계하기
1. 접근제어 설계
    1) 정보 식별(right information)
        - 데이터베이스, 계정, 테이블/뷰, 컬럼
    2) 사용자 식별(right people)
    3) 접근 방법(right form)
    4) 접근 시간(right time)
2. 암호화를 설계
- 데이터베이스에 접속할 수 있는 사용자에 대한 정의
- 데이터베이스에 접속하는 사용자 식별에 대한 방법
- 암호화 대상 컬럼의 범위 정의
- 암호화 컬럼에 대한 복호화 권한 통제 수행
- 암호화 키를 위한 알고리즘과 대상 정의
- 암호화 키 사용에 대한 로깅 수행
    1) 복호화 권한 통제
        - 사용자 식별, 암호화 대상 컬럼, 암호화 컬럼에 대한 복호화 권한 통제, 비인가 사용자에 대한 통제
    2) 암호화 키 및 알고리즘을 이용하여 구현
        - 암호화 키 : 암호화 알고리즘 + 파라미터 키
        - 암호화 방식 : 대칭형(암호화 키와 복호와 키 동일), 비대칭형(암호화 키와 복호화 키 다름)
        - 대칭형 알고리즘 : DES, 3-DES, AES, SEED, ARIA, MASK
        - 비대칭형 알고리즘 : RSA, DSA
3. 작업 결재를 설계
    1) 결재 대상을 정의
        - 사용자 중심, 정보 중심, SQL 중심
    2) 결재자를 정의
    3) 결재 사용자 관리
    4) 결재자 관리
4. 취약점을 분석/설계
    1) 데이터베이스 환경을 적정하게 구축
    2) 계정 관리를 한다.
    3) 패스워드 관리
    4) 권한 관리
    5) 인증 관리
    6) 원격접속 관리
        - 방화벽 구축
        - 기본 서비스 포트 사용 자제
        - 네트워크 트래픽 암호화
        - 데이터베이스 서버가 있는 시스템의 운영체제 강화
        - 보안 패치의 적용

/ 딕셔너리 조회 쿼리
SELECT * FROM DICTIONARY WHERE table_name LIKE 'USER_T%' AND ROWNUM < 10; 

 


 

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

/ 어제 퀴즈 답

예) 분 시 일 월 요일
* * * * * test.sh

-> 1분마다 test.sh를 실행(한 시간에 60번 실행)
# * * * * * test.sh

-> 10분마다 test.sh를 실행(한 시간에 6번 실행)
# */10 * * * * test.sh

-> 매시 15분과 45분에 test.sh를 실행(한 시간에 2번 실행)
# 15,45 * * * * test.sh

-> 매시 30분에 test.sh를 실행(한 시간에 1번, 하루에 24번 실행)
# 30 * * * * test.sh

-> 6시간 간격으로 test.sh를 실행(하루에 4번 실행, 00:30, 06:30, 12:30, 18:30)
# 30 */6 * * * test.sh

-> 매일 새벽 1시 20분에 test.sh를 실행(하루에 한번 실행)
# 20 1 * * * test.sh

-> 매주 월요일 새벽 3시 10분에 test.sh를 실행(일주일에 한번 실행)
# 10 3 * * 1 test.sh

-> 매월 1일 새벽 3시 30분에 test.sh를 실행(1달에 한번 실행)
# 30 3 1 * * test.sh


/ 시험 준비
1. selinux 비활성화
# vi /etc/sysconfig/selinux
# sestatus
#
getenforce

2. httpd설치
yum list httpd
yum -y install httpd
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
# netstat -ant | grep 80
# netstat -ant | egrep '22|80' -- 22,80포트 둘 다 표시

3. 방화벽 열기
# firewall-config
- 영구적 > http 체크 > 옵션에서 firewalld 다시 불러오기
# firewall-cmd --list-all

4. 호스트pc에서 서버의 index페이지 띄우기
# rpm -ql httpd
# vi /var/www/html/index.html
# systemctl restart httpd
- 호스트pc에서 putty_kn.exe 실행
- root / password 접속
# who
# w
# users
# netstat -ant | grep 22
# netstat -antp | grep httpd
# netstat -antp | grep 22
# netstat -ant | grep 22
- 호스트pc에서 웹페이지 새로고침을 여러번하고, 서버에서 netstat을 확인해서 연결상태 확인

728x90
728x90

[1,2교시 - 시스템 보안]

/ squid는 openssql이 설치되어 있어야 한다.
- openssl의 버전이 2k이상이어야 한다고 한다.
- opensslq-주버전.부버전.릴리즈.패치 : 버전 정보

 

/ squid.conf의 cache_dir
- cache_dir ufs [위치] [캐시되는 데이터의 크기] [디렉토리의 갯수] [그 밑에 생기는 디렉토리의 갯수]

 

/ 현재 위치에서 디렉토리 갯수 세기
# ls -l | grep ^d | wc -l

/ squid 방화벽 추가하기
# firewall-config
- 런타임을 영구적 - 포트 탭에서 추가, 3128, tcp , 확인
or 
# firewall-cmd --permanent --add-port=3128/tcp
# firewall-cmd --reload
- 확인
# firewall-cmd --list-all

 

/ 클라이언트 centos에서 ping보내보기
# ping -c 3 192.168.111.101 -- ping을 세번 보낸다.

 

/ 서버의 엑세스 로그 확인
# cat /var/log/squid/access.log
- 아직은 아무것도 한것이 없으니 로그가 쌓인것이 없다.
# tail -f access.log

/ 클라이언트에서 프록시 걸기
- 파이어폭스 실행 > 편집 > 환경설정 > 고급 > 네트워크 > 연결쪽의 설정 클릭
  > 프록시 수동 설정 선택 > 서버의 아이피 및 squid 포트 입력, 모든 프로토콜에 위의 프록시 설정 사용 체크 > 확인

 

/ 이제 서버에서 로그 확인 가능

 

/ 프록시 서버를 중지시켜 보기
# systemctl stop squid


- 클라이언트에서 확인(새로고침)

 

/ 근데 로그를 보니 시간이 사람눈에 익는 형식이 아니다.
- 확인은 따로 여기서 변환을 해본다.
- 로그 맨 앞의 '1652771594' 이런 형식 복사 후 아래 사이트에서 'convert to a date' (gmt +9 설정)
- http://www.4webhelp.net/us/timestamp.php?action=stamp&stamp=1652771467&timezone=9

 

4WebHelp - Online Tools: Unix Timestamp Converter

 

www.4webhelp.net

- 변환하는 또다른 사이트 : https://www.epochconverter.com/

/ 서버의 squid 포트 변경해보기
- 1. 서버의 /etc/squid/squid.conf의 3128포트를 8080으로 변경
- 2. 클라이언트의 파이어폭스의 프록시 설정을 8080포트로 변경
- 3. 서버의 방화벽 포트 열기 'firewall-cmd --permanent --add-port=8080/tcp'

/ 서버에서 세션 확인
# netstat -ant | grep 8080

- 맨끝에 'wc -l'을 붙이면 갯수를 확인할 수 있다.
# netstat -ant | grep 8080 | wc -l

 


/ 크론탭(crontab)
- 예약작업
- cron -> /etc/crontab : 정기적인 예약작업
- at : 1회성 예약작업

/ 크론탭 설치 되어있는지 확인
# rpm -qa cron
# rpm -qa | grep cron
# rpm -qa | grep time

 

/ crontab 설정파일 찾기

 

/ 시험에 잘 나오는것
# crontab -e root : 루트 권한으로 크론탭을 편집하기
# crontab -l : 크론탭 목록
# crontab -r : 삭제
# crontab -i : 삭제전에 프롬프트 

/ 크론탭 구조
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

/ 크론탭 예시
- 15 16 14 * * root rdate -s time.bora.net : 매월 14일 16시 15분 마다 실행
- * * * * * * test.sh : 매분 test.sh
- 15 * * * * test.sh : 매시 15분마다 실행
- 45 5 * * 5 test.sh : 매주 금요일 05시 45분에 test.sh를 실행
- 0,20,40 * * * * test.sh : 매일 매시간 0분, 20분, 40분에 test.sh를 실행
- 0-30 1 * * * test.sh : 매일 1시부터 1시30분까지 매분 test.sh를 실행
- 0,10,20,30,40,50 * * * * test.sh : 매10분마다 test.sh를 실행
- */10 * * * * test.sh : 매10분마다 test.sh를 실행
- 0 */2 * * * test.sh : 매 2시간 마다 test.sh를 실행
- */10 2,3,4 5,6 * * test.sh : 매월 5일~6일마다 2시,3시,4시에 10분마다 test.sh를 실행
- 0 9-18 * * 1-5 test.sh : 주말제외 근무시간에만 매시간 실행

/ 퀴즈
-> 1분마다 test.sh를 실행(한 시간에 60번 실행)


-> 10분마다 test.sh를 실행(한 시간에 6번 실행)


-> 매시 15분과 45분에 test.sh를 실행(한 시간에 2번 실행)


-> 매시 30분에 test.sh를 실행(한 시간에 1번, 하루에 24번 실행)


-> 6시간 간격으로 test.sh를 실행(하루에 4번 실행, 00:30, 06:30, 12:30, 18:30)


-> 매일 새벽 1시 20분에 test.sh를 실행(하루에 한번 실행)


-> 매주 월요일 새벽 3시 10분에 test.sh를 실행(일주일에 한번 실행)


-> 매월 1일 새벽 3시 30분에 test.sh를 실행(1달에 한번 실행)

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

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

데이터베이스 보안 요구사항 정의

[학습내용]
• 데이터베이스 사용 용도 분석
• 사용자 요구사항 분석
• 사용자 요구사항 명세서 작성

1. 데이터베이스 사용 용도 분석은
- 데이터베이스 보안 설계 이전에 가장 먼저 파악하여야 하는 작업이 사용하는 데이터베이스의 사용 용도를 분석하는 일임

2. 사용자 요구사항 분석
- 데이터베이스 사용자 요구사항을 분석하는 과정을 숙지하고 단계별 역할과 산출물을 숙지해야 함
- 사용자 요구사항 도출 → 사용자 요구사항 분석 → 사용자요구사항 기록

3. 사용자 요구사항 명세서 작성
- 데이터베이스 구축을 위하여 요구된 사용자 요구사항을 분석하여 최종적으로 사용자 요구사항 명세서를 작성해야 함
- 사용자 요구사항 분석 → 메타데이터 수집 → 사용자 뷰 자료 수집 → 자료 사전 작성 → 자료량과 패턴 조사 → 사용자 요구사항 명세서 작성

 

데이터베이스 보안 위협 분석

1. 데이터베이스 보안 위협
2. 데이터베이스 보안 목적
3. 데이터베이스 보안 필요성

1. 데이터베이스 보안 위협
- 데이터베이스 보안은 내부 및 외부자가 데이터베이스내에 저장된 조직의 주요 기밀 정보에 불법적으로 접근하는 것을 막는 것임

2. 데이터베이스 보안 목적
- 데이터베이스 보안의 목적은 위협 요소 식별·분석 및 적절한 통제를 통해 불확실한 이벤트의 발생 위험을 감소시키고 수용 가능한 수준(Acceptable Level)으로 최소화하는 것

3. 데이터베이스 보안 필요성
- 권한이 없는 사용자의 부적절한 접근을 막는 동시에 정당한 권한을 갖고 있는 사용자는 정보시스템이 서비스 요구를 거부하지 않도록 보호할 필요가 있음


[데이터베이스 보안 위협]

1. DB 보안 위협 개요

1) 데이터베이스 보안
- 데이터베이스 내에 저장된 조직의 주요 기밀 정보에 내부 및 외부자가 불법적으로 접근하는 것을 막는 것. 
- 데이터베이스에 저장된 데이터를 인가하지 않은 변경·파괴·노출·비일관성 등을 발생시키는 외부 위협들로부터 보호하는 것

2) 데이터베이스 보안 설계
정보보안의 범주에서도 데이터베이스에 저장된 데이터 보호를 위한 설계에 초점을 맞춘 것

3) 데이터베이스의 보안 위협 발생 요인
- 사용자의 실수 및 오용
- 내부 사용자의 권한 남용 및 비정상적인 접근
- 데이터베이스에 대한 알려진 취약점들

2. 일반적인 데이터베이스 위협

1) 악의적 목적을 가진 외부의 비인가 사용자, 
악성 프로그램 삽입
데이터베이스의 중요 정보 유출

2) SQL injection 공격
- 입력 값에 대한 검증 미비로 인한 위협
- 로그인 인증 우회를 통해 데이터베이스 데이터 열람·유출 및 데이터베이스
- 서버에 시스템 명령 실행
- 파일 업로드에 대한 취약점이 존재할 경우 웹 쉘(web shell) 등을 실행하여
- 데이터베이스의 데이터에 접근

3. 케이스별 데이터베이스 위협

1) 사용자에 대한 식별 및 인증 위협
(1) 사용자 식별 및 인증
  - 데이터베이스에 접근하기 위한 가장 기본적인 단계
(2) 보안 위협 요인
  - 취약한 인증 수준
  - 추측하기 쉬운 비밀번호의 사용
(3) 보안 위협 형태
  - 사전 공격(dictionary attack)
  - 무작위 대입 공격(brute force attack)
  - 사회 공학적 기법(social engineering)

2) 데이터 유출 위협
(1) 암호화되지 않은 데이터
  - 네트워크 도청, 파일 백업, 정당한 사용자 및 미인가 사용자에 의한 데이터베이스 검색 등을 통하여 데이터 유출 가능

(2) 암호화된 데이터
  - 안전성이 확인되지 않은 암호 모듈을 사용하는 경우 악의적인 사용자에 의하여 암호문 해독 가능

3) 권한 오남용 위협
(1) 권한 오·남용
  - 데이터베이스의 데이터 접근 권한이 업무 사용을 위해 허용된 권한보다 더  많이 부여
  - 정당한 사용자가 악의적인 목적으로 허용된 범위를 넘어서 인가되지 않은 작업 수행
(2) 시스템의 취약성
  - 시스템의 취약점을 이용하여 불법 권한 상승 및 계정 정보 획득

4) 암호 모듈 오용 위협

  - 데이터베이스의 데이터를 암호화하기 위해 안전성이 검증되지 않은 암호 모듈을 사용하거나, 적합하지 않은 암호 모드를 사용하는 경우
암호문 해독 가능
  - 데이터가 한 블록 이상의 크기를 가지는 경우 블록 암호 알고리즘을 적용하면 사전 공격에 의해 해독 가능
  - 동일 평문에 대하여 동일 암호문이 생성되면 암호문을 통해 암호 키 추측 가능

5) 암·복호화 키 및 마스터 키 노출 위협
(1) 암·복호화 키 안전 관리
  - 데이터 암호화 시 사용되는 키가 노출되면 암호화된 데이터를 복호화 할 수 있기 때문에 키의 안전 관리는 매우 중요
  - 데이터를 암호화하는 경우 키가 인가되지 않은 제3자에게 노출되지 않도록 안전하게 보관 필요

(2) 암·복호화 키 사용법
  - 마스터 키를 통하여 암호화
  - 실제 사용 시점에만 임시로 복호화 하여 사용

(3) 암·복호화 키 노출 시 대처 방안
  - 키 변경
      : 신규 데이터는 변경된 키를 사용하여 암호화
      : 기존 암호문은 마이그레이션 작업을 통하여 신규 암호문으로 변경

6) 프로젝트 수행과정에서의 데이터베이스 접근 허용 위협
  - 프로젝트에 참여한 외부 작업자가 자사의 데이터에 접근할 수 있는 권한을 부여함으로써 데이터 유출이 발생함
  - 프로젝트 목적상 데이터베이스를 사용해야 하는 경우, 보안서약서를 작성하게 하고 추가적인 물리적인 보안 통제를 적용함으로써 정보 유출을 방지하는 절차가 있어야 함

7) 운영과정에서 권한에 대한 관리 소홀로 인한 침해 발생 위협
  - 개발자에게 DBA 권한을 설정함으로써 개발자가 직접 데이터베이스에 접근하여 정보 유출 가능
  - 잘못된 사용자 권한 설정으로 비정상적인 데이터 노출 및 외부 유출 발생

8) 접근 통제 우회 위협
(1) 디폴트 계정 및 패스워드 동일
  - 공급자에 의해 출하 시 설정되는 디폴트(default) 계정 또는 단순 계정 등 계정번호(ID)와 비밀번호 동일
    : 암호 추측 공격, 사전 공격 등을 통해 계정 확인 가능
    : 데이터베이스의 자료 유출 및 변조 등 발생
(2) 계정 및 패스워드 정책 미흡
  - 계정 및 패스워드의 정책 설정이 미흡한 경우 무차별 공격에 의해 패스워드 크래킹 가능

9) 데이터베이스 정보의 불법 열람 및 변조·삭제 위협
(1) 보안 위협 요인
  - 데이터베이스에 저장된 주요 정보에 대해 암호화가 미흡한 경우 비인가자에 의해 정보 노출 또는 변조 가능
(2) 보안 니즈 현황
  - 데이터베이스에 저장된 개인정보, 금융 관련 정보, 게임 관련 정보 탈취 시도 증가
   : 데이터베이스 보안에 대한 요구사항 증가

(3) 보안 방법
- 공개키(PKI: Public Key Infrastructure)
  기반의 강력한 암호화 기능 및 검증 기능 제공
     : 기존 데이터베이스에 대한 불법적 접근 방지
  - 사용자가 데이터베이스의 내용을 추출하여도 암호화된 상태의 데이터베이스 기밀성이 유지되는 시스템 구축


[데이터베이스 보안 목적]

1. 개요

1) 명심해야 될 사항 
(1) “보안에 100%는 없다!”
(2) “관리 범위 100% 충족하는 기술적 대안은 없다!”
(3) “방화벽 구축으로 완벽히 보호되지 않는다!”
(4) “보안은 기술만으로 해결되지 않는다!”

2) 데이터베이스 보안
(1) 정보보안의 3요소
정보보안의 목적은 기밀성, 무결성, 가용성 등을 유지하는 것
(2) DB보안의 목적
DB에 저장된 데이터를 공개·노출, 변조·파괴·훼손, 재해·재난 등의 위협으로부터 보호하여 기밀성, 무결성, 가용성 등을 확보하는 것

 


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

/ 리눅스 bind, bind-chroot란
- bind서비스의 최상위경로가 바뀌지 않게 해주는 패키지

/ bind 설치 정보

 

/ bind, bind-chroot 설치
# yum -y install bind bind-chroot
# systemctl restart named
# systemctl enable named
# systemctl status named (옵션 -l : 상태확인 메시지 확인가능)

/ vi /etc/named.conf

- listen-on port 53 { any; }; 모든 포트 외부 접근 허용
- listen-on-v6 port 53 { none }; 모든 포트 외부 접근 비허용
- allow-query { any; }; 외부에서 오는 query를 허용할 IP 혹은 IP대역 설정
- 저장 후 'named-checkconf'로 확인 : 똑 떨어지면 이상X
- 저장 후 'systemctl restart named'
- 계속 대기중인 'standalone'방식이다.(systemctl로 하는 애들은 대부분 standalone이다.)

/ dig
- dig www.naver.com  

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

- 특정 도메인 서버에서 하려면
# dig @164.124.101.2 www.naver.com  

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

 

/ 리눅스의 호스트파일
- /etc/host.conf or /etc/hosts


/ DNS 질의 순서
- 리눅스에서는 $ -> /etc/host.conf -> /etc/hosts -> DNS 순으로 찾는다.
- 윈도우에서는 $ -> hosts.ics -> hosts -> DNS

/ [여담] CEO, CFO, CCO, CIO, 각 풀네임 알아두기
- CEO : 
- CFO : 
- CCO : 
- CIO : 
- CISO : 정보보호 최고 책임자
    > 1) 정보보호 관리체계의 수립 및 관리, 운영
    > 2) 정보보호 취약점 분석, 평가 및 개선
    > 3) 침해사고의 예방 및 대응
    > 4) 정보보호 사전 보안성 검토

/ bind의 설정파일 확인
# rpm -qc bind
# ps -ef | grep named

* rndc 원격제어 : 953/tcp 포트

/ dns 방화벽 설정
# firewall-config
-
영구적 > 체크 DNS > 옵션에서 firewalld 다시 불러오기
or
# firewall-cmd --permanent --add-port=53/tcp
#
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
firewall-cmd --list-all
- 확인 'firewall-cmd --list-all'

 

/ nslookup으로 확인
- 빨간색으로 표시한 부분은 처음 다녀오는 것이라 조금 느리게 응답이 되었던 부분이다.
- 두번째로 질의를 하면 바로 응답이 온다.

 


proxy

/ 나중에 실습할 것
-
취약점분석도구 OWASP_ZAP, BurpSuite
-
CentOS7 , squid  (서버, client)

/ squid
- 설치되어있는지 확인 및 설치 가능한지 확인
# rpm -qa squid
# rpm -qa | grep squid
# yum list squid

* 설치할때는 install, 삭제할때는 remove또는 erase 

- 설치
# yum -y install squid


- config파일 찾기

* 리눅스 마스터 시험에서 아래 빨간 부분에 들어갈 문자열이 무엇인지 찾는 문제가 종종나온다.

 

- 편집

앞의 #제거

- 포트 확인

 

- 확인

 

 

728x90
728x90

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

/ 사용자 요구사항 명세서 작성

1. 사용자 요구사항 분석

2. 메타 데이터 수집

3. 사용자 뷰 자료 수집

4. 자료 사전 작성

5. 자료량과 패턴 조사

6. 사용자 요구사항 명세서 작성


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

/ TCP 3-way Handshake
- 알아보기

/ TCP 4-way Handshake
- 알아보기

 

#w

#who

 

- w, who, finger(유닉스)의 정보를 가져오는 곳
# ls -ld /var/run/utmp

 

 

/ /var/log 하위

- /var/log/btmp
# lastb

- /var/log/wtmp
# last

- /var/log/lastlog
# lastlog

- dmesg : 부팅시 기록. device

- boot.log : 부팅시 기록, 서비스 데몬

- messages : 서버에서 돌아가는 웬만한 app들의 로그

- secure : 로그인, 인증에 대한 로그기록

/ httpd의 접속 기록
- 위치 : /var/log/httpd/access_log
# cat access_log | grep 192.168.111.1 | wc -1 을 하면 '192.168.111.1'명령어가 들어간것이 몇개인지 알려준다.

/ SSH 로그인 정보
- 위치 : /var/log/secure

/ httpd.conf에서 Listen부분만 조회해서 보고 싶을때
# cat /etc/httpd/conf/httpd.conf | grep Listen

/ ssh의 설정파일을 찾는 법
- 1. yum으로 설치된 이름을 먼저 찾는다.
# yum list installed | grep ssh

- 2. rpm으로 찾는다.
# rpm -qc oepnssh-server

- 3. 설정파일 보기
# vi /etc/ssh/sshd_config
- Port는 주석처리 되어있는데 기본적으로 22번 포트가 열려있다.
- PermitRootLogin : 밖에서 root의 로그인 허용 여부, 주석이면 기본적으로 허용

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts