방화벽 환경에서 그누보드5 관리자 페이지 세션 오류 및 로그아웃 해결 방법
페이지 정보

본문
방화벽이나 프록시 서버 환경에서 그누보드5 관리자 페이지 접속 시 '정상적으로 로그인하여 접근하시기 바랍니다.' 메시지와 함께 세션이 끊기는 원인을 확인하고, adm/admin.lib.php 파일 수정과 IP 검증 로직 조정 등 구체적인 해결 절차를 알아봅니다.
방화벽 환경 그누보드 관리자 페이지 세션 오류 원인
그누보드5 관리자 페이지(adm) 접속 시 정상적으로 로그인하여 접근하시기 바랍니다. 메시지가 출력되면서 로그아웃되는 현상은 방화벽 서버 환경에서 실제 클라이언트 IP(Real IP)를 올바르게 가져오지 못해 관리자 세션 키 검증에 실패하기 때문에 발생합니다.
상세 원인
그누보드는 관리자의 보안 강화를 위해 세션 키($admin_key)를 생성할 때 회원 가입일시, 브라우저 정보($_SERVER['HTTP_USER_AGENT'])와 함께 접속한 클라이언트의 IP를 확인하는 get_real_client_ip() 함수를 사용합니다. 그러나 방화벽을 사용하는 서버 환경에서는 프록시나 방화벽 장비의 영향으로 실제 접속자의 IP를 정상적으로 전달받지 못해, 세션 검증 단계에서 저장된 키와 생성된 키가 일치하지 않게 됩니다. 이로 인해 시스템은 권한 탈취 시도나 비정상 접근으로 오인하여 세션을 강제로 파기하고 로그아웃 처리합니다.
방화벽 환경 관리자 세션 오류 해결 방법
방화벽 환경에서 그누보드 관리자 페이지(adm)에 접속할 때 "정상적으로 로그인하여 접근하시기 바랍니다." 메시지가 출력되며 자동 로그아웃되는 문제는 방화벽 서버가 실제 IP(Real IP)를 제대로 가져오지 못해 관리자 아이디의 IP가 중복으로 표시되거나 세션 키 검증에 실패할 때 발생합니다.
수정 파일 위치
- 파일 경로:
adm/admin.lib.php
해결 방법
adm/admin.lib.php 파일 내에서 관리자 세션 키($admin_key)를 검증하는 로직을 찾아 주석 처리합니다. 수정 전 반드시 해당 파일을 백업하십시오.
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
/*
$admin_key = md5($member['mb_datetime']. get_real_client_ip(). $_SERVER['HTTP_USER_AGENT']);
if (get_session('ss_mb_key')!== $admin_key) {
session_destroy();
include_once(G5_LIB_PATH.'/mailer.lib.php');
// 메일 알림
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.<br><br>관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.<br><br>해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.'.G5_URL, 0);
alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');
}
*/
주의사항
- 보안 로직을 주석 처리하는 것은 관리자 세션 탈취 공격 등에 취약해질 수 있으므로 보안 위험성에 대한 평가가 필요합니다.
방화벽 환경 관리자 페이지 세션 오류 원인과 해결 방법
그누보드5 관리자(adm) 페이지에 접속할 때 정상적으로 로그인하여 접근하시기 바랍니다. 메시지가 나타나면서 자동으로 로그아웃되는 현상은 방화벽 서버가 실제 IP(Real IP)를 정상적으로 가져오지 못해 접속한 관리자의 아이디가 중복 IP로 표시될 때 발생한다.
확인 및 해결 위치
관리자 세션 키($admin_key)를 생성할 때 사용되는 get_real_client_ip() 함수가 방화벽 환경에서 올바른 IP를 반환하지 못해 세션 키 검증에 실패하는 것으로 확인된다. 이를 해결하기 위해 adm/admin.lib.php 파일 내부의 세션 검증 로직을 수정할 수 있다.
수정 대상 코드
adm/admin.lib.php 파일에서 아래의 관리자 아이피 및 브라우저 검증 로직 블록을 확인한다.
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
$admin_key = md5($member['mb_datetime']. get_real_client_ip(). $_SERVER['HTTP_USER_AGENT']);
if (get_session('ss_mb_key')!== $admin_key) {
session_destroy();
include_once(G5_LIB_PATH.'/mailer.lib.php');
// 메일 알림
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.<br><br>관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.<br><br>해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.'.G5_URL, 0);
alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');
}
조치 방법
방화벽 환경에서 발생하는 해당 오류를 우회하기 위해 adm/admin.lib.php 파일 내의 위 검증 로직 전체를 주석 처리한다.
주의사항 및 보안 위험
보안 로직을 주석 처리하는 것은 관리자 세션 탈취 공격에 취약해질 수 있으므로 보안 위험성 평가가 필요하다.
그누보드에서 특정 IP나 내부망 환경을 XSS 공격 알림 메일 발송 대상에서 제외하는 별도의 설정 기능은 기본적으로 제공되지 않습니다.
관리자 페이지 접속 시 발생하는 세션 오류 및 XSS 알림 메일 문제는 방화벽 환경에서 get_real_client_ip() 함수가 실제 클라이언트 IP를 올바르게 인식하지 못해 발생하는 경우가 많습니다. 이를 해결하기 위해 adm/admin.lib.php 파일의 보안 로직을 주석 처리하는 방법이 주로 사용되나, 이는 보안상 취약점을 야기할 수 있습니다.
예외 처리 및 해결 방향
- 코드 수정:
adm/admin.lib.php내의$admin_key검증 및mailer()발송 로직을 주석 처리하여 알림 메일 발송 자체를 중단할 수 있습니다. - 근본적 해결: 특정 IP를 예외 처리하려면,
mailer()함수가 호출되기 전$_SERVER['REMOTE_ADDR']값을 확인하여 내부망 IP 대역일 경우 해당 로직을 건너뛰도록 조건문을 추가하는 방식이 가능합니다.// 예시: 특정 IP 대역 예외 처리 if ($_SERVER['REMOTE_ADDR']!== '192.168.0.1') { // 기존 XSS 알림 메일 발송 로직 } - 주의사항: 보안 로직을 주석 처리하거나 예외를 추가하는 것은 관리자 세션 탈취 공격에 노출될 위험이 있습니다. 서버 환경에서 방화벽이 전달하는 실제 IP 헤더(예:
HTTP_X_FORWARDED_FOR)를 서버 설정에서 올바르게 인식하도록 환경을 구성하는 것이 가장 권장되는 방법입니다.
방화벽 환경 관리자 세션 오류 해결 가이드
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| 방화벽 환경에서 그누보드 관리자 페이지 접속 시 세션 오류 및 로그아웃 발생 | 방화벽 장비로 인한 실제 IP 인식 실패 여부 확인 | adm/admin.lib.php 파일 내 세션 키 검증 로직 주석 처리 적용 |
실전 FAQ
Q. 관리자 페이지 보안 로직을 주석 처리하면 어떤 보안 위험이 발생하나요?
- 답변: 관리자의 세션 키 검증과 IP 일치 여부를 확인하는 로직이 해제되므로, 세션 탈취나 비정상적인 권한 접근 시도를 차단하기 어려워질 수 있습니다. 따라서 적용 환경의 보안 수준을 평가한 후 신중히 결정해야 합니다.
Q. 코드를 수정했음에도 계속해서 로그아웃이 발생하면 무엇을 확인해야 하나요?
- 답변: 코드 수정 외에도
/data/session폴더의 쓰기 퍼미션 설정 상태나 호스팅 서버의 디스크 용량 부족 여부를 함께 점검해야 세션 데이터가 정상적으로 생성 및 유지될 수 있습니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- sir.kr — 그누보드 관리자 로그인이 계속 되지 않습니다. - SIR - 개발자 커뮤니티
- sir.kr — 그누보드 관리자 로그인 풀림 - SIR - 개발자 커뮤니티
- sir.kr — 어드민 접속오류 경고창이 뜰떄 - SIR - 개발자 커뮤니티
- tkdev.tistory.com — 그누보드 자동등록방지 캡차 적용
- sir.kr — XSS 공격 알림 메일의 설정을 바꿀 수 있나요? - SIR - 개발자 커뮤니티
- sir.kr — 그누보드 5.6.4 관리자 페이지 반응형 - SIR - 개발자 커뮤니티
- wishml.tistory.com — 그누보드 '정상적으로 로그인하여 접근하시기 바랍니다.' 해결 방법 :: wish me luck
- 이전글그누보드 반응형 웹에서 이미지맵(imageMap) 링크 영역 유지하는 방법 26.09.24
- 다음글그누보드 게시판 스킨 내 추가 필드(가사·해석) 데이터 출력 오류 해결 방법 26.09.24
댓글목록
등록된 댓글이 없습니다.