목차/14. 참고 — 정규식·문자셋·CLI

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)
\ddd8진수 코드 ddd 에 해당하는 문자
\xhh16진수 코드 hh 에 해당하는 문자

이렇게 \ddd(8진수)와 \xhh(16진수)를 쓰면 표에 이름이 없는 임의의 문자도 코드값으로 직접 지정할 수 있습니다.

문자 유형(Character Types)

특정 한 글자가 아니라 "숫자라면", "공백이라면", "단어 문자라면" 같은 부류 를 가리키고 싶을 때는 문자 유형 표기를 씁니다. 비인쇄 문자와 마찬가지로 예약 문자를 백슬래시로 풀어 적습니다. 대문자 버전(\D·\S·\W)은 소문자 버전의 부정(반대) 을 뜻한다는 점을 함께 기억하면 외우기 쉽습니다.

문자설명
\d임의의 10진 숫자 [0-9]
\D10진 숫자가 아닌 임의의 문자
\s임의의 공백(whitespace) 문자
\S공백이 아닌 임의의 문자
\w임의의 단어 문자 (밑줄 _ 또는 영숫자)
\W단어 문자가 아닌 문자(밑줄·영숫자가 아닌 것)

지원 문자셋(Supported Character Sets)

DLP 게이트웨이는 검사 대상 텍스트를 모두 UTF-8 유니코드 인코딩 으로 다룹니다. 그래서 검사하는 메시지·파일을 원래 인코딩에서 UTF-8로 변환 한 뒤 분석합니다. 변환하려면 먼저 원본의 인코딩을 알아내야 하는데, 게이트웨이는 메타데이터나 MIME 헤더를 보고 판단하고, 그래도 모르면 게이트웨이의 기본 인코딩을 가정합니다.

인코딩을 알아내는 순서

게이트웨이는 다음 순서로 메시지·파일의 인코딩을 결정합니다.

  1. 메타데이터가 있으면 거기서 인코딩을 읽습니다. 예를 들어 Microsoft Word 파일은 인코딩 정보를 파일 안에 담고 있습니다.
  2. 메타데이터는 없지만 MIME 헤더가 있으면 거기서 읽습니다. 텍스트 파일이나 이메일 본문이 이런 경우입니다.
   Content-Type: text/plain; charset="iso-2022-jp"
   
  1. 메타데이터도 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 게이트웨이의 기본 인코딩을 바꾸려면 다음과 같이 합니다.

  1. DLP 게이트웨이에서 $FWDIR/conf/file_convert.conf 파일을 편집합니다.
  2. engine 섹션에서 default_charset_for_text_files 필드를 찾습니다. 예:
   :default_charset_for_text_files (windows-1252)
   
  1. 이 필드 값에는 아래 지원 별칭(alias) 중 하나 를 씁니다. 문자셋마다 하나 이상의 선택적 별칭이 있습니다. 예를 들어 기본 인코딩을 러시아어 KOI8-R로 바꾸려면 이렇게 합니다.
   :default_charset_for_text_files (KOI8-R)
   

문자셋 별칭(Character Set Aliases) 전체 목록

아래 표는 DLP 게이트웨이의 기본 입력 문자셋 으로 쓸 수 있는 문자셋과 그 별칭입니다. 한국어를 포함한 다국어 데이터를 다룰 때 이 목록에서 적절한 별칭을 골라 쓰면 됩니다.

문자셋 이름별칭(Alias)
UTF-8 Encoded UnicodeUTF-8
UTF-7 Encoded UnicodeUTF-7
ASCII (7-bit)ASCII
Japanese (JIS)JIS_X0201
Japanese (EUC)EUC-JP
Korean StandardKSC_5601
Simplified ChineseGB2312
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 RomancsMacintosh
Russian KOI8-RKOI8-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 엔진 제어

dlpcmdSecurity Gateway에서 Data Loss Prevention 엔진을 제어 하는 명령입니다. 격리(quarantine)된 이메일을 관리하고 DLP RAM Disk를 다룹니다. 기본 구문은 다음과 같습니다.

dlpcmd [-s]
    action_by_admin <options>
    getquarantined
    getquarantinedcount
    getquarantinedsize
    ramdisk <options>

파라미터

파라미터설명
-sSilent 모드 — 실패 메시지를 화면에 출력하지 않습니다.
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를 켜고 끄거나 크기를 정하고 상태를 봅니다.

옵션설명
offDLP RAM Disk를 비활성화 합니다.
onDLP RAM Disk를 활성화 합니다.
size <Size in MBytes>DLP RAM Disk의 크기(MB) 를 설정합니다.
statusDLP 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" 장을 참고하세요. 핵심 용어가 헷갈리면 용어 정리로 돌아가면 됩니다.