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

https://overthewire.org/wargames/bandit/bandit0.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. Level Goal The goal of this level is for you to log into the game using SSH. The host to which you need to connect is bandit.labs.overthewire.org, on port 2220. The username is bandit0 and the password

overthewire.org

Level Goal

The goal of this level is for you to log into the game using SSH.
The host to which you need to connect is 
bandit.labs.overthewire.org, on port 2220.
The username is 
bandit0 and the password is bandit0.
Once logged in, go to the 
Level 1 page to find out how to beat Level 1.

Commands you may need to solve this level

ssh

Helpful Reading Material

 


/ 접속
0단계는 먼저 ssh를 접속하는 것부터 시작이다.
나의 경우 Xshell을 이용해서 접속했다.

1. 먼저 접속정보를 확인한다.

2. Xshell을 키고 등록정보를 추가한다.
- 맨 좌측의 연결 클릭
- 이름 : 아무거나 (나의 경우 bandit으로 설정)
- 호스트 : bandit.labs.overthewire.org
- 포트 번호 : 2220
- 확인 또는 연결 버튼을 클릭하여 접속한다.

 

3. 접속하기
- 접속할 사용자 이름을 입력한다.
- 매 단계의 사용자 이름은 'bandit단계숫자'로 정해져 있다.
- 지금은 0단계 이므로 사용자 이름이 'bandit0'이 된다.

- 0단계의 비밀번호는 문제 지문에 나와있다.


- 비밀번호를 입력한다.

4. 0단계 클리어!
- 요로코롬 나오면 0단계에 접속하여 클리어한것이다.

 

/ 이제 'Level 0 -> Level 1'로 가보자!

https://overthewire.org/wargames/bandit/bandit1.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. Level Goal The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, us

overthewire.org

 

 

728x90

'정보보안 > 워게임|CTF' 카테고리의 다른 글

bandit12 -> bandit13  (1) 2022.04.13
bandit  (0) 2022.04.13
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