정보보안(18회차) 노트



<주제>
비정상적 로그인 시도를 탐지해서 메일로 알림 보내기!!

<과정>
1> / (네이버 IMAP으로 시도 -> ip 블락됨 ->) 구글로 시도 -> php MAILER 설치 시도 -> 안됨(루트 필요) -> 관리자에게 문의해서 메일러 설치
--(MAILER 설치법:composer require phpmailer/phpmailer 이 코드를 리눅스 안에있는 서버랑 연결된 프롬포트창에 입력 -> vendor 폴더 설치됨--

2> / 구글 계정 만들고 2차인증 활성화 -> php 코드에 본인의 계정과 앱 비밀번호(기존 비밀번호 아님!!)입력 -> 서버에 입력할 계정을 쓸 경우 일반 사용자가 쓰는 암호는 안됨.
(인증 에러/전송 실패( SMTP Error: Could not authenticate.))
ex. $mail->Password = '일반 구글 비밀번호'; -> X
$mail->Password = '앱 비밀번호 16자리'; -> O

3> / 찾아보니 앱 비밀번호(엑세스 권한 부여하는 16자리 비번)라는게 필요, 코드에 적어둔 구글 비번을 앱 비번으로 바꿔서 실행해보니 메일 전송 성공

<결과>
우선 코딩으로 메일 보내기 성공!!
다음에 할거: 이제 사이트랑 메일 보내기(방금 한거)를 연결해서 비정상적인 접속시도를 감지했을 경우 따로 만들어둔 계정에 경고문 보내고, 경고문 읽어서 웹사이트(이 사이트 이메일 칸)에 출력하기
공격 지연작업 해보기



use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require __DIR__ . '/../vendor/autoload.php';
$mail = new PHPMailer(true);

try {
$mail->SMTPDebug = 0; // 0으로 두면 실제 전송 시 디버그 로그 안 뜸
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '본인계정';
$mail->Password = '앱 비밀번호'; // 앱 비밀번호 16자리
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;

// **한글 인코딩**
$mail->CharSet = 'UTF-8';

$mail->setFrom('본인계정', '서버 모니터링');
$mail->addAddress('본인계정');

// 제목/본문
$mail->Subject = '[서버 경고] 비정상 접근 시도 감지됨';
$mail->Body = "비정상 접근 시도가 감지되었습니다.\n로그 페이지를 확인하세요.";

$mail->send();
echo "✅ 이메일 전송 성공!";
} catch (Exception $e) {
echo "❌ 전송 실패: {$mail->ErrorInfo}";
}