14참고 — 정규식·문자셋·CLI참고 — 정규식·문자셋·CLI
마지막 장은 Data Type을 만들 때 쓰는 정규식 문법, 패턴에 넣는 비인쇄 문자와 문자 유형, DLP 게이트웨이가 지원하는 문자셋, 그리고 CLI 구문 표기법과 게이트웨이에서 DLP 엔진을 제어하는 dlpcmd 명령 까지 — 필요할 때 찾아보는 참고 자료를 한자리에 모았습니다. 요약이 아니라 원문의 모든 표·문자·파라미터·주의사항을 빠짐없이 담되, 왜 그렇게 쓰는지를 함께 풀어 둡니다.
정규식 구문 — Pattern Data Type의 메타문자
Data Type 정의하기의 Pattern 방식은 정규식으로 콘텐츠를 매칭합니다. 이때 반드시 Check Point가 구현한 정규식 문법 을 써야 매칭이 의도대로 동작합니다. Check Point는 표준 정규식 메타문자(metacharacter)를 다음과 같이 구현하고 있습니다.
| 메타문자 | 이름 | 설명 | |
|---|---|---|---|
\ | 백슬래시(Backslash) | 메타문자를 이스케이프 합니다. 또 비인쇄 문자(non-printable characters)와 문자 유형(character types)을 나타낼 때도 씁니다. | |
[ ] | 대괄호(Square Brackets) | 문자 클래스(character class) 를 정의합니다. 대괄호 안에 넣은 문자 중 하나에 매칭됩니다. | |
( ) | 괄호(Parenthesis) | 서브 패턴(sub-pattern) 을 묶습니다. 괄호로 감싼 문자열 전체에 메타문자를 적용할 때 씁니다. | |
{min[,max]} | 중괄호(Curly Brackets) | 최소/최대 개수 한정자(quantifier) 입니다. {n} 은 정확히 n회, {n,m} 은 n회부터 m회까지, {n,} 은 최소 n회를 뜻합니다. | |
. | 점(Dot) | 임의의 한 문자 에 매칭됩니다. | |
? | 물음표(Question Mark) | 0회 또는 1회 출현({0,1} 과 같음). | |
* | 별표(Asterisk) | 바로 앞 문자의 0회 이상 출현. | |
+ | 더하기(Plus Sign) | 1회 이상 출현({1,} 과 같음). | |
| `\ | ` | 세로줄(Vertical Bar) | 택일(alternative) — 좌우 중 하나에 매칭됩니다. |
^ | 캐럿(Circumflex) | 패턴을 버퍼의 시작 에 고정(anchor)합니다(보통 단어 단위). | |
$ | 달러(Dollar) | 패턴을 버퍼의 끝 에 고정합니다(보통 단어 단위). | |
- | 하이픈(Hyphen) | 문자 클래스 안에서 범위(range) 를 나타냅니다. 예: [a-z]. |
비인쇄 문자(Non-Printable Characters)
줄바꿈·탭·경고음처럼 눈에 보이지 않는 문자를 패턴에 넣어야 할 때가 있습니다. 이런 비인쇄 문자를 패턴에서 쓰려면 예약 문자 집합을 백슬래시로 풀어(deflate) 표기합니다. 즉 백슬래시 뒤에 약속된 글자를 붙여 해당 문자를 가리킵니다.
| 문자 | 설명 |
|---|---|
\a | 경고음(alarm), BEL 문자(16진수 코드 07) |
\cX | "control-X" — X 자리에 임의의 문자를 넣은 컨트롤 문자 |
\e | 이스케이프(escape, 16진수 코드 1B) |
\f | 폼피드(formfeed, 16진수 코드 0C) |
\n | 줄바꿈(newline, 16진수 코드 0A) |
\r | 캐리지 리턴(carriage return, 16진수 코드 0D) |
\t | 탭(tab, 16진수 코드 09) |
\ddd | 8진수 코드 ddd 에 해당하는 문자 |
\xhh | 16진수 코드 hh 에 해당하는 문자 |
이렇게 \ddd(8진수)와 \xhh(16진수)를 쓰면 표에 이름이 없는 임의의 문자도 코드값으로 직접 지정할 수 있습니다.
문자 유형(Character Types)
특정 한 글자가 아니라 "숫자라면", "공백이라면", "단어 문자라면" 같은 부류 를 가리키고 싶을 때는 문자 유형 표기를 씁니다. 비인쇄 문자와 마찬가지로 예약 문자를 백슬래시로 풀어 적습니다. 대문자 버전(\D·\S·\W)은 소문자 버전의 부정(반대) 을 뜻한다는 점을 함께 기억하면 외우기 쉽습니다.
| 문자 | 설명 |
|---|---|
\d | 임의의 10진 숫자 [0-9] |
\D | 10진 숫자가 아닌 임의의 문자 |
\s | 임의의 공백(whitespace) 문자 |
\S | 공백이 아닌 임의의 문자 |
\w | 임의의 단어 문자 (밑줄 _ 또는 영숫자) |
\W | 단어 문자가 아닌 문자(밑줄·영숫자가 아닌 것) |
지원 문자셋(Supported Character Sets)
DLP 게이트웨이는 검사 대상 텍스트를 모두 UTF-8 유니코드 인코딩 으로 다룹니다. 그래서 검사하는 메시지·파일을 원래 인코딩에서 UTF-8로 변환 한 뒤 분석합니다. 변환하려면 먼저 원본의 인코딩을 알아내야 하는데, 게이트웨이는 메타데이터나 MIME 헤더를 보고 판단하고, 그래도 모르면 게이트웨이의 기본 인코딩을 가정합니다.
인코딩을 알아내는 순서
게이트웨이는 다음 순서로 메시지·파일의 인코딩을 결정합니다.
- 메타데이터가 있으면 거기서 인코딩을 읽습니다. 예를 들어 Microsoft Word 파일은 인코딩 정보를 파일 안에 담고 있습니다.
- 메타데이터는 없지만 MIME 헤더가 있으면 거기서 읽습니다. 텍스트 파일이나 이메일 본문이 이런 경우입니다.
Content-Type: text/plain; charset="iso-2022-jp"
- 메타데이터도 MIME 헤더도 없으면 원본이 Security Gateway의 기본 인코딩 이라고 가정합니다. 이때
$DLPDIR/log/dlpe_problem_files.log에 다음과 같은 로그가 남습니다.
Charset for file <file name> is not provided. Using the default:
<charset name>
기본 인코딩은 출고 시 Windows Code Page 1252(Latin I) 이며, 필요하면 바꿀 수 있습니다.
기본 인코딩 바꾸기
DLP 게이트웨이의 기본 인코딩을 바꾸려면 다음과 같이 합니다.
- DLP 게이트웨이에서
$FWDIR/conf/file_convert.conf파일을 편집합니다. - engine 섹션에서
default_charset_for_text_files필드를 찾습니다. 예:
:default_charset_for_text_files (windows-1252)
- 이 필드 값에는 아래 지원 별칭(alias) 중 하나 를 씁니다. 문자셋마다 하나 이상의 선택적 별칭이 있습니다. 예를 들어 기본 인코딩을 러시아어 KOI8-R로 바꾸려면 이렇게 합니다.
:default_charset_for_text_files (KOI8-R)
문자셋 별칭(Character Set Aliases) 전체 목록
아래 표는 DLP 게이트웨이의 기본 입력 문자셋 으로 쓸 수 있는 문자셋과 그 별칭입니다. 한국어를 포함한 다국어 데이터를 다룰 때 이 목록에서 적절한 별칭을 골라 쓰면 됩니다.
| 문자셋 이름 | 별칭(Alias) |
|---|---|
| UTF-8 Encoded Unicode | UTF-8 |
| UTF-7 Encoded Unicode | UTF-7 |
| ASCII (7-bit) | ASCII |
| Japanese (JIS) | JIS_X0201 |
| Japanese (EUC) | EUC-JP |
| Korean Standard | KSC_5601 |
| Simplified Chinese | GB2312 |
| EBCDIC Code Page 37 (United States) | IBM037 |
| EBCDIC Code Page 273 (Germany) | IBM273 |
| EBCDIC Code Page 274 (Belgium) | IBM274 |
| EBCDIC Code Page 277 (Denmark, Norway) | IBM277 |
| EBCDIC Code Page 278 (Finland, Sweden) | IBM278 |
| EBCDIC Code Page 280 (Italy) | IBM280 |
| EBCDIC Code Page 284 (Latin America, Spain) | IBM284 |
| EBCDIC Code Page 285 (Ireland, UK) | IBM285 |
| EBCDIC Code Page 297 (France) | IBM297 |
| EBCDIC Code Page 500 (International) | IBM500 |
| EBCDIC Code Page 1026 (Turkey) | IBM1026 |
| DOS Code Page 850 (Multilingual Latin I) | IBM850 |
| DOS Code Page 852 (Latin II) | IBM852 |
| DOS Code Page 855 (Cyrillic) | IBM855 |
| DOS Code Page 857 (Turkish) | IBM857 |
| DOS Code Page 860 (Portuguese) | IBM860 |
| DOS Code Page 861 (Icelandic) | IBM861 |
| DOS Code Page 863 (French) | IBM863 |
| DOS Code Page 865 (Danish, Norwegian) | IBM865 |
| DOS Code Page 869 (Greek) | IBM869 |
| Windows Code Page 932 (Japanese Shift-JIS) | Shift_JIS |
| Windows Code Page 874 (Thai) | ibm874 |
| Windows Code Page 949 (Korean) | KS_C_5601-1987 |
| Windows Code Page 950 (Traditional Chinese Big 5) | csBig5 |
| Windows Code Page 1250 (Central Europe) | windows-1250 |
| Windows Code Page 1251 (Cyrillic) | windows-1251 |
| Windows Code Page 1252 (Latin I) | windows-1252 |
| Windows Code Page 1253 (Greek) | windows-1253 |
| Windows Code Page 1254 (Turkish) | windows-1254 |
| Windows Code Page 1255 (Hebrew) | windows-1255 |
| Windows Code Page 1256 (Arabic) | windows-1256 |
| Windows Code Page 1257 (Baltic) | windows-1257 |
| ISO-8859-1 (Latin 1) | ISO-8859-1 |
| ISO-8859-2 (Latin 2) | ISO-8859-2 |
| ISO-8859-3 (Latin 3) | ISO-8859-3 |
| ISO-8859-4 (Baltic) | ISO-8859-4 |
| ISO-8859-5 (Cyrillic) | ISO-8859-5 |
| ISO-8859-6 (Arabic) | ISO-8859-6 |
| ISO-8859-7 (Greek) | ISO-8859-7 |
| ISO-8859-8 (Hebrew) | ISO-8859-8 |
| ISO-8859-9 (Turkish) | ISO-8859-9 |
| Mac OS Roman | csMacintosh |
| Russian KOI8-R | KOI8-R |
CLI 구문 표기법(Syntax Legend)
전체 명령줄 참조는 R82 CLI Reference Guide 에 있습니다. 이 가이드(와 Check Point 문서 전반)는 명령·파라미터·옵션을 가능하면 알파벳 순 으로 싣고, 구문을 다음 약속대로 표기합니다. 이 약속을 알아야 dlpcmd 를 비롯한 모든 명령 설명을 정확히 읽을 수 있습니다.
| 표기 | 뜻 | |
|---|---|---|
| TAB(들여쓰기) | 사용할 수 있는 중첩된 하위 명령(nested subcommands) 을 나타냅니다. 들여쓴 줄은 위 명령의 하위 명령입니다. | |
중괄호 { } | 세로줄 `\ | ` 로 구분된 명령·파라미터 목록을 감쌉니다. 이 중 하나만 입력할 수 있습니다. |
꺾쇠 < > | 변수를 감쌉니다. 사용자가 지원되는 실제 값을 직접 지정 해야 합니다. | |
대괄호 [ ] | 선택적(optional) 명령·파라미터를 감쌉니다. 넣어도 되고 안 넣어도 됩니다. |
들여쓰기(TAB) 표기는 원문에서 화살표로도 나타나는데, 다음처럼 계층을 표현합니다.
main command
nested subcommand 1
nested subsubcommand 1-1
nested subsubcommand 1-2
nested subcommand 2예를 들어 이렇게 쓰여 있으면:
config
-a <options>
-d <options>
-p
-r
del <options>실제로는 아래 중 하나의 명령 만 실행하라는 뜻입니다 — cpwd_admin config -a <options>, cpwd_admin config -d <options>, cpwd_admin config -p, cpwd_admin config -r, 또는 cpwd_admin del <options>.
dlpcmd 명령 — DLP 엔진 제어
dlpcmd 는 Security Gateway에서 Data Loss Prevention 엔진을 제어 하는 명령입니다. 격리(quarantine)된 이메일을 관리하고 DLP RAM Disk를 다룹니다. 기본 구문은 다음과 같습니다.
dlpcmd [-s]
action_by_admin <options>
getquarantined
getquarantinedcount
getquarantinedsize
ramdisk <options>파라미터
| 파라미터 | 설명 |
|---|---|
-s | Silent 모드 — 실패 메시지를 화면에 출력하지 않습니다. |
action_by_admin <options> | 격리된 이메일을 공개 GUID(Public GUID)로 보내거나 삭제 합니다(아래 상세). |
getquarantined | 격리된 모든 이메일의 목록 을 보여 줍니다. |
getquarantinedcount | 격리된 이메일의 개수 를 보여 줍니다. |
getquarantinedsize | 격리된 전체 이메일의 총 크기 를 보여 줍니다. |
ramdisk <options> | DLP RAM Disk 를 보여 주고 제어합니다(아래 상세). |
action_by_admin — 격리 메일 보내기/삭제
action_by_admin 은 격리된 이메일을 공개 GUID로 지정해 보내거나(Release) 삭제(Discard) 합니다. 동작 번호 1 은 보내기, 2 는 삭제입니다.
격리 메일을 보내기(Release) — 동작 번호 1:
dlpcmd action_by_admin 1 {Public GUID of the Quarantined Email} ["Justification for Sending or Deleting"] ["Administrator Name"]격리 메일을 삭제(Discard) — 동작 번호 2:
dlpcmd action_by_admin 2 {Public GUID of the Quarantined Email} ["Justification for Sending or Deleting"] ["Administrator Name"]뒤쪽의 사유(Justification)와 관리자 이름(Administrator Name)은 선택 항목 이라 대괄호로 표기되어 있으며, 큰따옴표로 감싸 넣습니다.
ramdisk — DLP RAM Disk 제어
ramdisk 하위 명령은 DLP RAM Disk를 켜고 끄거나 크기를 정하고 상태를 봅니다.
| 옵션 | 설명 |
|---|---|
off | DLP RAM Disk를 비활성화 합니다. |
on | DLP RAM Disk를 활성화 합니다. |
size <Size in MBytes> | DLP RAM Disk의 크기(MB) 를 설정합니다. |
status | DLP RAM Disk의 정보를 표시 합니다. |
사용 예
다음은 격리 메일을 조회하고, GUID로 한 통을 보낸 뒤, 다시 목록을 확인한 전체 흐름입니다.
[Expert@MyGW:0]# dlpcmd getquarantined
Printing quarantined mails:
Mail GUID: {8698E6EC-340C-9115-0AB6-F6CA9986147F}; Arrival date: Sun Dec 1 13:38:32 2019; exp date: Sun Dec 8 13:38:32 2019; sender: dataowner-JOHNDOE;
... ... ...
[Expert@MyGW:0]#
[Expert@MyGW:0]# dlpcmd action_by_admin 1 {8698E6EC-340C-9115-0AB6-F6CA9986147F} "Released an Email" "Main Admin"
[Expert@MyGW:0]#
[Expert@MyGW:0]# dlpcmd getquarantined
No quarantined mails
[Expert@MyGW:0]#더 깊은 게이트웨이 작업
게이트웨이 측 Kernel Parameter 작업 과 Kernel Debug 는 이 가이드 범위를 넘어갑니다. 각각 R82 Quantum Security Gateway Guide의 "Working with Kernel Parameters" 장과 "Kernel Debug on Security Gateway" 장을 참고하세요. 핵심 용어가 헷갈리면 용어 정리로 돌아가면 됩니다.