노트북이필요해최근에출시한삼성플렉스NT950QCT-A58M 모델을구매하게되었다. 해당모델은윈도우가포함되어있지않은모델이다. 삼성리커버리F4로진입및초기화이미지를SRS8 로제작하는방법에대해포스팅한다. 해당 포스팅은 최신 기종의 M.2 Nvme 장착된 모델을 기준으로 했다. (이 방법 외에도 SRS7을 이용하는 방법도 있으나 기존에 다른 삼성노트북이 있어 이 방법으로 진행하니 꼭 이 방법이 아니더라도 SRS8 을 설치 할 수 있으니 참고바람.)
준비물:
●NVME를지원하는M.2 USB or USB-C
타입외장하드케이스(필수) ●노트북케이스오픈할작은스크류드라이버
I. SRS8 복사를 외장하드 케이스에 연결
1. 최신 모델에는 M.2 Nvme 가 대부분 장착되어 있고 예전 모델이라면 본인에 맞는 외장 하드 케이스를 구입하던 다른 기타방법을 통해 외장하드디스크를 인식할 수 있도록 준비한다. SRS8 을 설치할 M.2 또는 기타 하드디스크를 탈착 후 외장하드에 연결한다. 이 작업은 복구모드 (F4) 진입을 위한 작업일 뿐이다.
II. SRS8 공장초기화 디스크 복사
1. 첫번째 단계의 USB 하드디스크를 복사할 노트북에 꼽고 전원을 켠다. 기존 노트북의 복구모드(F4)로 접근 후 Create a factory state disk 메뉴로 접근한다. 접근하면 다음 사진과 같이 하드디스크가 잡혀야만 복사를 시작할 수 있다. 참고로 일반 USB로는 복사를 진행 할 수 없고 일반 하드디스크로 잡힌 장치로만 복사가 가능하다.
2. 복사가 모두 끝났으면 외장하드 케이스에 연결한 디스크 제거 후에 원상복귀한다. 그 후 F4 클릭하여 복구모드로 진입가능한지 확인하도록한다.
(필자처럼 복구모드 진입이 가능한 상태가 되었다면 2단계는 모두완료)
III. SRS8 윈도우 및 드라이버 등 설치
1. 윈도우 10 설치 진행은 생략하며 파티션 화면에서 가장 용량큰 메인 파티션 부분에 포맷 후 설치 진행하도록한다. 2. 삼성에서 지원하는 프로그램 설치한다.
(마이크로소프트 스토어를 통해서 삼성 업데이트 설치 후 드라이버 설치) 3. 삼성 리커버리를 스토어를 통해서 설치한다. 단 설치가 아래 사진처럼 나오면서 진행이 안되는 경우는 때론 삼성업데이트가 모델의 버전을 인식을 잘 못하는 경우가 있다. 그 때는 설치가 안될 때는 마이크로소프트 계정에서 한번이라도 다운로드 받은 이력이 있다면 라이브러리에서 다운이 가능하니 참고하자.
(윈도우 내에서 직접 사용하지 않는다면 꼭 다운로드 하지 않아도된다)
IV. 공장이미지 생성
1. Samsung Update 를 통해 SRS8 최신버전을 다운받는다.(8.1.23.0 20.06.13 최신버전) 2. Samsung Recovery Service_8.1.23.0/UpdateWInPe/SRS8WinPEx64 에 위치한 파일을 압축을 푼다. 3. 압축푼 폴더 중 Recovery 폴더만 D:\에 이동(공장이미지 위치 드라이브) 4. 윈도우 검색 창에 CMD 검색 후 반드시 관리자 권한으로 CMD 실행한다
5. 밑에 사진처럼 D:\Recovery 위치로 이동한뒤 "SRS backup /source:C:\ /dest:d:\" 명령어 입력 후 엔터 6. C:드라이브의 이미지를 D:\위치에 모두 백업하게된다. 정상적으로 백업이 완료되었다면 밑에 사진처럼 나온며 공장이미지 생성이 완료되었다.
V. 공장이미지 설정 변경
1. D:\ 위치로 이미지 생성을 했다면 D:\Samsung\backup\랜덤 위치에 백업파일이 생성되었을 것이다
2. 해당 위치에서 .xml 파일을 열도록하자. 빨갛게 밑줄 친부분만 보인이 원하는 입력값으로 수정하도록하자. 단 IsFactoryImage 부분은 꼭 true 로 변경하자. 뿐만 아니라 RequiredDiskSpace 도 너무 크게 입력하게되면 용량부족으로 복구가 안되니 적당한 수치입력 후 저장하도록 하자.
VI. 공장이미지 복사 및 복구 테스트
1. 파티션 관련 프로그램으로 SAMSUNG_REC2 파티션 위치에 Samsung/Backup/Factory 위치에 D:\ 드라이브의 백업했던 이미지를 복사하면 이제 모든 작업이 끝난다.
한동안 노트북 구매할일이 없었는데 몇일 전에 스케치를 하고싶다고하는 와이프 생일선물로 삼성 노트펜북을 사주었다. 해당 모델은 NON OS 버전이 따로 존재하지 않다. 즉 무조건 OS가 포함되어 있는 제품을 구매해야만 했었는데 SAMSUNG 리커버리 버전이 8버전으로 업그레이드가 되어있었다..
삼성 UPDATE 프로그램을 통해 다운 받은 파일을 설치하게되면 SAMSUNG RECOVERY 프로그램(Samsung Recovery Service_8.0.23.0_64)은 설치가 따로 되지 않는다. 리커버리에 필요한 서비스 프로그램만 실행된다. 이유는...
Microsoft Store에서 제공해주는 Samsung Recovery 앱에서 시작되게 되어 있기 때문이다. 이걸 설치하는 방법은 아직 알수는 없다. 삼성에서 최초 설치되서 나온 이미지들에만 설치가 되어 있는 것으로 확인되었다. 물론 파일(BulletClient.exe)로 실행하는 방법은 있지만 제공해주는 파일에서 설치를 할때 실행파일은 따로 설치되지 않는다라는 점을 알도록 하자. 설치파일 중 기존 7 버전과 8버전의 큰 차이점은 "ADMINTOOL"을 제공하지 않는다. 삼성에서 다른 형태로 ADMINTOOL을 제공하는 모양이다. 즉 현재로서는 ADMINTOOL을 만드는 방법은 없다. 하지만..
본인이 꼭 SRS8 버전으로 사용을 해야한다고한다면 다른 방법으로 하는 방법은 있다. 파티션을 직접 수정하는 방법이다. 이런거 하기 귀찮다면 바로 "뒤로가기 버튼" 클릭하시고 SRS7 사용을 하도록하자. 일단 한번 설치해두면 계속 사용하는거니 한번쯤 해두는 것도 나쁘지않다.
SRS8 을 사용하기 위한 가장 중요한 부분은 F4 클릭으로 리커버리 모드로 들어가 Samsung Recovery 8 을 사용는 것이다. 각 노트북마다 F4를 눌렀을 때 리커버리 모드들어가는게 약간 다르다.
SRS8 이 설치된 노트북과 SRS7 이 설치된 노트북 F4 리커버리 모드의 차이가 있다라는 말이다. 정리해보면
SRS8 이 설치된 노트북의 파티션 구조
SRS7 이 설치된 노트북의 파티션 구조
파티션 순서가 약간 바뀌어도 경험상 큰 문제는 없다. SRS 8 이 기본적으로 설치되어져서 나온 노트북 모델은 SRS7 admin tool 로 설치하면 리커버리 모드로 접속시도를 하면 안될 수도 있다라는 점 알자. 이 부분을 자세히 다루는 이유는 SRS 8은 리커버리 모드(F4)에서 접속이 안되면 제대로 사용할 수가 없기 때문이다. 본인 노트북이 어떤건지 잘 알고 사용하길 바란다.
1. SRS 8 을 위한 파티션 생성 및 F4 (리커버리 모드 접근 가능 상태)
http://nnfive.blogspot.kr/2017/03/admin-tool-samsung-recovery-solution-7_13.html(SRS 7 admintool)
SRS 7 Admintool 을 이용하여 F4 리커버리 모드에 접속한다. 이 부분은 SRS 7 복구영역 부분 참고하길바란다.
이 부분이 중요하다. 사진속에는 Add Recovery Data 부분이 unchecked 되어 있는데 이 부분은 꼭 check 상태로 변경하고 용량은 약 20~40기가 정도로 잡도록 하자. 용량은 본인이 프로그램을 모두 다 설치하고 복구를 원한다면 용량이 더 키우면 된다. 그리고 나머지는 사진처럼 만든 후 Run 을 하면 F4 리커버리 모드로 접속이 가능하게 된다. 리커버리 모드로 접속이 되면 일단 가장 중요한 작업은 끝났다!
2. SRS 8 복구 이미지 생성 전, 윈도우 10 설치 및 업데이트 그리고 응용프로그램 설치
윈도우 설치 과정 및 응용프로그램들을 모두 설치하도록 하자. 본인이 응용프로그램을 많이 설치하게되면 용량부족도 생길 수 있으니 신중하게 설치하도록 하자.
Samsung Recovery Service_8.0.23.0_64 필자가 최신버전으로 찾은 버전은 다음 버전이고 상위버전이 있으면 그 것으로 다운 받도록하자.
압축을 풀게되면 UpdatewinPE/SRS8WinPEx64 .wim 파일이 있고 이 파일을 반디집이나 7zip 으로 압축을 풀도록 하자.
위에 같은 파일들이 쭈욱 나와야한다. 위에 폴더 중 Recovery 폴더만 작업하기 편한 곳으로 이동을 하도록 하자.
3. SRS 8 을 위한 이미지 생성
필자는 C드라이브 루트에서 작업하였고 SRS 8 이미지 생성은 간단하다.
다음 위에 사진과 같이 " srs.exe backup /source:c:\ /dest:e:\ " 명령어로 C드라이브에 설치되어 있는 윈도우즈 이미지를 만들어주도록하자. e: 드라이브는 이미지가 저장될 장소이다. USB나 HDD 를 설치하여 이미지를 저장하도록하자.
저장을 다완료하면 위에 100%와 제일밑에 Backup completed 메세지가 나오면서 이미지가 저장된다. 이미지가 생성완료되었다면 해당경로로 가보도록하자.
위에 사진 밑부분에 경로가 표시되어 있고 확장자 "XML"파일이 생성된게 보일 것이다. 그 파일을 notepad로 열고 XML 내용을 간단히 확인해보도록 하자.
실제 필자가 만들면서한 XML 파일이다. 빨간색으로 쓰여져있는 글자들만 수정하면 된다. 위에 사진을 참고하면 쉽게 이해갈 것이다. Microsoft Windows 10 Pro 가 Windowscaption 이며 중요한부분이 97.5.GB 설치공간이 필요합니다. 라는 부분에서 본인이 적당하게 크기를 바꾸도록하자. 기본적으로 SRS로 이미지를 생성하면 용량이 크게 잡히는 경향이 있다. 그리고 IsFactoryImage 를 꼭 "true" 로 바꿔야 다음과 같이 PC초기화에 목록이 표시된다.
이후 작업은 2020년 5월에 올린 자료참고
Admin Tool Samsung Recovery Solution 7 USB 제작방법을 요청하시는 분들이 많아서 첨부터 다시 포스팅하기로 하였다. 필자가 ISO파일은 저작권 문제로 인해 공유는 하지 않고 있으며 또한 필자도 누군가 공유한 자료로 한게 아니며 포스팅한 그대로 작업한 일이기 때문에 잘보고 따라하면 문제 없이 될 것이다.
단, SRS7 Admin Tool을 이용하기전에 본인의 PC 또는 노트북이 윈도우 7이 초기 설치되어 있었던 모델이라면
SRS7 을 사용을 할 수가 없다는 점을 알아야한다. 단 윈도우 8에서부터는 UEFI를 제대로 지원하는 상태였기 때문에 윈도우 8 버전에서는 될 수도 있다. 단 필자는 윈도우 8이 설치되어 있던 모델에서 테스트를 해보지는 않았으니 해보고 안되면 안되는 것이다.
왜 윈도우 7이 설치되어서 나왔던 모델은 안되는지 간단히 설명을 하자면,
F4 Recovery Mode 로 진입을 할 때 GPT 파티션을 인식할 수 없다는게 이유이다. 이 부분은 삼성에서 바이오스 업데이트를 통해서만 진입이 가능할 거라고 생각한다.
물론 MBR파티션으로 구성하여 F4를 눌러 리커버리 모드로 진입은 가능하다. 하지만 문제는 SRS 7 은 GPT 파티션에서만 구동되기때문에 꼭 GPT 파티션으로 HDD를 구성해야한다. MBR 파티션상태에서 리커버리 모드로 진입하게 되면 GPT파티션이 아니라며 아래 사진과 같은 메세지 오류가 발생하여 더 이상 진행이 불가능하다.
SRS 7 자체를 사용할 수 없는건 아니지만 윈도우 7이 설치되어서 나온 모델 컴퓨터들은 F4로 삼성 리커버리 모드 진입이 불가능하기 때문에 항상 Admin Tool USB를 가지고 작업을 해야하는 불편함은 있다. 또한 팩토리 이미지를 생성하고 윈도우안에 리커버리 솔루션을 설치하여 복구가 가능하다. 삼성 컴퓨터 모델이 윈도우 10이상부터 설치되어서 나오는 모델들은 리커버리 모드 접근을 포함하여 모든 리커버리 기능을 정상적으로 설치가 가능하다. 윈도우 8은 필자가 테스트를 해보지 않아서 잘 모르겠다. 개인적인 생각으로는 어떻게 하든 가능할것으로 보인다. Admin Tool for SRS7을 만드는 과정 삼성 리커버리 솔루션 프로그램을 아래 공식사이트에서 다운을 받자. http://orcaservice.samsungmobile.com/SWUpdate.aspx 해당 프로그램은 삼성 모델 컴퓨터들 자동 업데이트 프로그램이며 모델명 NT900이나 NT901로 검색하여 Samsung Recovery 설처파일을 원하는 폴더 위치에 저장하도록 하자. (Samsung_Recovery_7.3.0.17이 가장 최신이다. 2017.03.14 기준)
삼성 복구 솔루션을 다운이 모두 완료 되었으면 다음 폴더로 이동하자. C:\Program Files (x86)\Samsung\Samsung Recovery_7.3.0.17\Recovery\UpdateWinPE 폴더안에 SRS7_3WinPex64.wim 파일이 보일 것이다. 일반 압축프로그램으로는 압축이 풀리지 않으니 7zip(http://www.7-zip.org/)을 설치하여 압축을 풀어보도록 하자.
폴더 중에 Recovery 폴더로 들어가면 Admin 폴더가 있다. 이 안에 Admintool.exe 파일이 있다. 이제 구조를 약간 변경을 해보도록하자. SRS7/Recovery/ 폴더안에 Recovery 폴더를 생성하고 SRS7/Recovery/ 폴더안에 있는 모든 파일을 SRS7/Recovery/Recovery로 이동을하자, 단 Admin 폴더는 그대로 두자. 그리고 Admin 폴더내에 있는 모든 파일을 SRS7/Recovery로 이동하고 Admin 폴더는 삭제를 하자. 이렇게한 상태에서 Admin Tool USB 제작을 하면 정상적으로 부팅이 될 것이다. Admin Tool USB 제작은 꼭 GPT파티션으로 제작하지 않아도 되며 일반 FAT32로 만들어서 전체파일 복사하면 정상적으로 부팅 될것이다. 단 UEFI로 부팅을 해야하니 바이오스에서 UEFI:USB 로 부팅하여 Admin Tool SRS7로 부팅하자. 03.16 수정사항 제일 중요한 부분을 빼놓은게 있어서 다시 적을게요. 루트 위치에 Autorun.inf 파일을 넣어주셔야합니다. 노트패드로 작성하시고 inf 파일로 변경해서 넣어주시면됩니다. 이걸 넣지않게되면 Admin tool drive 로 인식이 안되서 Admin drive was not found 이런 메세지가 나오면서 리커버리 영역이 설치가 되지 않을겁니다. [Autorun] label=AdminTool for Recovery action=AdminTool for Recovery open=Recovery\AdminTool.exe icon=Recovery\AdminTool.exe,0
이 외에 다른 오류 관련 메세지가 나와서 진행이 안되시면 밑에 EFI 파일을 기존 폴더를 지우고 이 파일로 대체해주세요. 이 파일은 7.3.0.12 버전 EFI 파일입니다. 따로 다운 받기 귀찮으니 이걸로 쓰세요.
친구가 노트북을 하나 구입해달라고 요청하여 삼성 노트북 9 시리즈 하나를 구입했다.
미국인 친구라서 한국어판 윈도우즈를 구입해서 쓰기가 좀 그래서 Freedos 버전으로 저렴하게
구입하였으나 윈도우 10으로 설치를 다 해놓고 보니 컴퓨터를 너무 모르는 친구라서
복구 솔루션이 필요하다. 다른 타사 제품을 사용하는거보다 삼성이기때문에
Samsung Recovery Solution 7의 Admin tool 을 이용하여 설치 진행을 해보자. Admin tool USB를
인식하기전에 매우 중요한작업은 다음과 같음.(Admin tool USB를 만드는 과정은 나중에 포스팅)
OS Mode Selection 을 CSM and UEFI OS 나 UEFI OS로 변경
Boot Device Priority 에 들어가서 Boot Option # 1 에 꼭 UEFI:USB 를 잡아야 모든게 정상적으로 된다. (USB 이미지는 꼭 UEFI GPT 파티션으로 만들어야한다)
UEFI:USB 로 부팅을 하게되면 바로 Admin tool 메뉴가 나오고 위에 사진처럼 체크박스를
하고 Run 을 실행하면 파티션에 복구 데이터 파티션, 리커버리 모드(F4) 진입시
Samsung Recovery Solution 7 메뉴 부팅가능하게 하는 파티션 생성 및 프로그램이 설치된다.
마지막으로 MBR fix 를 통해 셋팅을 모두 완료가 되었다.
이제 윈도우 10을 설치하는 과정이다.
윈도우의 ISO 이미지를 USB에 생성할때 꼭 GPT partition scheme for UEFI 로 생성해야한다.
만약 하지 않으면 파티션에 설치를 할 수 없다. 그 이유는 Samsung Recovery Solution 7
Admin Tool 에서 파티션 생성할 때 GPT 파티션으로 생성했기 때문이다. 어쨌든 이렇게
이미지를 USB에 넣고 다시 UEFI USB로 부팅하여 윈도우 10을 설치.
설치시 Recovery 라고 2개 생성된 파티션은 손대지말고 용량이 가장 큰 파티션에 설치
(윈도우 10 설치과정은 너무 간단하여 생략)
윈도우 10 설치가 완료되었으면 Samsung update(드라이버 업데이트 프로그램)을 통해 드라이버 및 필요한 응용프로그램을 모두 설치를 한다. 프로그램은 삼성 공식다운로드 페이지에서 모델명 검색하면 받을 수 있다. 뿐만 아니라 윈도우즈 업데이트도 모두 해둔다. 그리고 재부팅 후 F4 키를 계속 누르게 되면 삼성 리커버리 모드에 진입하게 된다.
리커버리 진입 후에 CTRL+ALT+F10 누르면 관리자패스워드를 입력하라고 나오는데
"secos"라고 입력하고 제일 위에 Command Promt를 선택하면 검은색 커맨드 창이 나오게된다.
X: 드라이브에서 X:\Recovery\Admin 폴더로 이동하여 AdminTool.exe 를 실행하게되면 다음 위에 사진과 같은 AdminTool 창이 뜨게 된다. 그리고 Capture Factory Image 에 체크하고 Wimboot 에 체크를 하고 RUN을 하게되면 공장 초기화 백업을 시작하게된다.
이렇게 시작이 되고~~ 약 5분에 10분 기다리자.
모든 작업이 끝나면 Backup management 에 Factory Image 라고 보인다 ! 야호! 이제 거의 다 끝나감. 자 이제 원래 윈도우로 돌아가 지저분하게 하고 다시 F4를 클릭하며 삼성 리커버리 모드에 진입하여 Factory Image 로 복구를 해보자!
Recovery 클릭 ! 옵션은 따로 선택하지말고 바로 실행.
짜짠...! 복구가 완료되면 Samsung Recovery 창이 하나 뜨면서 모든게 완료된다. 내 친구는 앞으로 컴퓨터 몰라도 쉽게 복구할수 있게 되었다.
System / Package Manager / Available Packages 탭에 들어가면 여러 패키지를 설치 할수 있다. 이 중 squid 를 검색하여 squid 를 install 로 한다.
/etc/ssl/openssl.cnf 중 수정해야할 부분만 표시하겠다
# $FreeBSD: src/crypto/openssl/apps/openssl.cnf,v 1.6 2004/03/17 17:44:38 nectar Exp $
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
# default SAN value if $ENV::SAN is not defined
#
SAN =
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several certificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
#crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
distinguished_name=req_distinguished_name
req_extensions = v3_req prompt=yes <==no 에서 yes 로 변경
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extensions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
#input_password=""
#output_password=""
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = US
#countryName_default = AU
#countryName_min = 2
#countryName_max = 2
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (eg, YOUR name)
#commonName_max = 64
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated User Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
extendedKeyUsage=clientAuth
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# copy of [ usr_cert ] plus nonempty Subject Alternative Names
basicConstraints=CA:FALSE
nsComment = "OpenSSL Generated User Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
extendedKeyUsage=clientAuth
subjectAltName=$ENV::SAN
[ server ]
# Make a cert with nsCertType=server
basicConstraints=CA:FALSE
nsCertType= server
nsComment= "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
extendedKeyUsage=serverAuth,1.3.6.1.5.5.8.2.2
keyUsage = digitalSignature, keyEncipherment
[ server_san ]
# copy of [ server ] plus nonempty Subject Alternative Names
basicConstraints=CA:FALSE
nsCertType= server
nsComment= "OpenSSL Generated Server Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
extendedKeyUsage=serverAuth,1.3.6.1.5.5.8.2.2
keyUsage = digitalSignature, keyEncipherment
subjectAltName=$ENV::SAN
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:TRUE <==FALSE 에서 TRUE 변경
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true
# Key usage: this is typical for a CA certificate.
keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ v3_ca_san ]
# copy of [ v3_ca ] plus nonempty Subject Alternative Names
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
subjectAltName=$ENV::SAN
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
이렇게 개인키와 공개키를 만들었으면 winscp 를 통해 파일을 윈도우에 저장을 하도록하자.
위에 명령어를 통해 생성된 키값이다.
Pfsense 관리자 페이지에 접속하여 System / Certificate Manager / CAs / Add 를 선택하면
다음과 같은 페이지가 나온다. Import an existing Certificate Authority 를 선택하고
Certificate data 안에는 CA.pem 정보값을 워드패드로 열어 붙여넣기를 하고 Certificate Private Key 는 private.key 파일 안에 있는 정보를 붙여넣기하고 Save를 한다.
저장을 하게되면 다음과 같이 생성이 완료된것을 확인할 수 있다.
마지막으로 오른쪽에 보면 Actions 메뉴 중 Export CA가 있다. Export하여 인증서를 가지고 있도록하자.
이렇게 완료되었다면 이제 위에서 설치한 Squid 프록시 설정 부분에 가보도록하자.
Services / Squid Proxy Server 항목에 가면 아래에 관련된 옵션을 모두 체크한다.
Note: If unchecked, ALL Squid services will be disabled and stopped.
Note: Transparent mode will filter SSL (port 443) if you enable man-in-the-middle options below. In order to proxy both HTTP and HTTPS protocols without intercepting SSL connections, configure WPAD/PAC options on your DNS/DHCP servers
그리곤 위에서 Export 한 인증서를 신뢰할 수 있는 루트 인증 기관으로 선택하여 설치해준다.
설치를 하고 들어가면 아까 생성한 인증서가 보이고 https 접속시 나오는 SSL 관련 페이지도 뜨지 않게된다.
이제 준비가 모두 완료되었다. 와이어샤크를 이용하여 SSL 통신을 볼수 있도록 해보자.
vmware 에 설치된 PC는 squid 프록시를 통해서 인터넷을 사용하는 사용자라고 생각하면
된다. 구글에서 비밀번호를 대충치고 난 뒤의 와이어샤크 결과를 보도록하자.
보다시피 모두 암호화되어 있어서 아무것도 볼수가 없다. 개인키를 이용하여 복호화를 해보도록하자. Wireshark 메뉴중 Edit -> Preferences -> Protocols -> SSL 에 들어가면 다음과 같은 화면이 나오고 Edit 를 선택한다.
그리고 SSL 443포트 프로토콜은 http 로 해주고 확인을 하면 !
암호화 되어 있는 패킷들이 모두 복호화되어 있다. 패스워드는 임의로 막 입력한 값이므로
접속시도도 하지마라. 추가적인 설명은 나중에 포스팅.
pfsense 는 패키지 형태로 나온 오픈소스의 방화벽 솔루션이다.
방화벽 이 외에도 프록시 서버, DNS, NTP 등 많은 서버들을 간단하게 업데이트를 통해 운영할수 있는 매우 좋은 솔루션이라고 생각한다.
설치부터 운영 방법까지 포스팅할 예정이다.
Open Source Security
Secure networks start here.™ With thousands of enterprises using pfSense® software, it is rapidly becoming the world's most popular open source network security solution
1. https://pfsense.org/download 페이지에서 ISO 이미지를 받을 수 있으며, 본인이 편한 플랫폼으로 다운받는다. 아키텍쳐는 32비트나, 64비트 아무거나 받도록하자. 필자는 VMWARE에 설치하여 운영하기 위해서 ISO로 다운받았다.
2. ISO 이미지를 넣고 부팅을 해보면 다음과 같이 화면에 나온다
화면이 나오면 엔터로 들어가면된다. 2번은 싱글모드 부팅으로 나중에 패스워드를 까먹었거나 할때 싱글모드로 부팅하여 찾을수 있을 것이다. 이 외에 옵션은 딱히 손댈 필요는 없다.
본인이 Custom Install 로 하고싶다면 하면된다. 하드포맷이나 마운트 위치등 설정할수 있는 부분이니 필요할때는 Custom Install 하고 디폴트로 사용하고자 하면 Quick/Easy Install 로 설치하면 된다.
이 후에 나오는 항목들은 모두 엔터로 넘어가자 특별한 내용은 없다.
설치가 1분안에 모두 완료되고 다음과 같이 재부팅 하라는 메세지가 나온다. 그리고 재부팅
하면 설치는 완료가 된다. 재부팅하기 전에 생각을 해봐야하는 부분이 있다 방화벽을 어떻게 운영 할지를 생각해보아야한다. Vmware 에는 디폴트로 랜카드가 하나만 잡혀 있기 때문에 랜 카드를 추가해주어야 정상적으로 방화벽으로 동작할 것이다.
필자는 인터넷 -> 공유기 -> 필자PC <-> 방화벽 -> vmware 윈도우 7 으로 구성할 예정이다. 즉 방화벽에 적용되는 사용자는 vmware 에 설치된 윈도우 7 사용자가 될 것이다. ->
<-> ->
필자가 원하는 구성도를 보면 필자PC와 방화벽은 같은 서브넷에 있어야하며 vmware 윈도우 7 사용자는 방화벽 밑단에 있거나 브릿지를 이용해야하지만 가상에서 브릿지로 구성하면 이리저리 복잡하니 방화벽 밑에 nat 로 설정하여 사용하겠다.
설치가 완료되고 최초로 부팅을 하게되면 다음과 같이 설정하는 화면이 나온다. 위에 빨간
네모칸안에 랜카드가 2개 잡혀 있는 것이 보일 것이다. 그리고 VLAN은 사용하지 않을 예정이니 n 으로 하자.
랜카드가 두개 잡혀 있고 le0 을 WAN구간 le1 을 LAN 구간으로 설정한다. 이 부분은 개인 설정마다 다 다르니 잘 확인하고 구분을 하도록하자. 다 완료되었으면 y 를 누르고 다음으로 간다.
설정이 모두 완료되면 위에 사진처럼 나온다. WAN 구간에는 공유기로부터 받은 192.168.10.15 대역으로 설정이 되어 있고 LAN구간에는 192.168.1.1/24 로 디폴트로 들어가게 되어 있다. 필요하면 본인이 바꿔서 설정해야한다. IP설정은 2번 메뉴에서 가능하다.
IP설정이 모두 완료되었으면 웹브라우져를 통해 접속을 해보자.
192.168.1.1 으로 접속하면 다음과 같은 페이지가 나온다. 그리고 디폴트 계정
admin
pfsense
입력하고 접속하면 서버 도메인이나 이메일등 입력하라는 메뉴가 나오고 저장하면
다음과 같이 메뉴가 나온다. 이로서 설치 부분은 모두 완료되었다.
참고사항으로 192.168.10.15 은 WAN구간 IP 주소로 접속이 되지 않는다. 왜냐면 방화벽 디폴트로 막기 때문이다. RFC4193 에 사설대역 및 루프백 대역을 차단하라고 권고되어 있기 때문에 막혀 있다. 일반적으로 WAN에서 접속하여 방화벽을 관리하지는 않는다. 필자는 VMWARE 사용으로 WAN에서도 접속가능하게 해두었지만 실제 운영하는사람은 접속되게 해서는 안될 것이다.
Interface 메뉴의 WAN 에 가면 Block private networks and loopback addresses