SharedIT | 묻고 답하기(AMP)

정보보안 관련 배치파일

안녕하세요 ! 

인증심사 체크리스트 관련(국내 ISMS 또는 IS027001) 문의 드립니다.

혹시 심사 내용 중 체크리스트에 대한 배치파일 보유하고 계신 분 있으실까요?

(Ex) 서버 보안성, 업무용 단말기 보안점검 체크리스트 등)


제일 필요한 건 업무용 단말기 보안점검 체크리스트의 배치파일 이긴 합니다..^^;

pc 등 초기 지급 시 아예 셋팅을 해서 지급 하려고 하는데, 전 회사에서 배치파일 보유 하고 있었는데

이직하면서 분실했는 지 안보여서요 ! 

체크리스트 내용은 대부분 공통이라 혹시 전달 받을 수 있을까 하여 문의 드립니다 !!


Tags : 태그가 없습니다.

3개의 답변이 있습니다.

명동쓰레빠
  0 추천 | 약 일 년 전

내용 참고 하겟습니다.


미생
  0 추천 | 약 일 년 전

다음은 chatGPT의 답변입니다.


개인 PC의 보안을 점검하기 위한 주요 자료(설치된 프로그램, IP 설정등)을 가져오는 배치 스크립트를 하나 작성해줘.


  • 개인 PC의 보안을 점검하기 위해서는 다양한 정보가 필요합니다. 주요 자료로는 설치된 프로그램, IP 설정, 포트 열림 상태, 백신 프로그램 등이 있습니다. 이러한 정보를 수집하기 위한 배치 스크립트를 작성해 보겠습니다.


@echo off


rem 보고서 파일 경로

set REPORT_FILE=C:\security_report.txt


rem 설치된 프로그램 목록 저장 파일 경로

set PROGRAM_LIST=C:\program_list.txt


rem IP 정보 저장 파일 경로

set IP_INFO=C:\ip_info.txt


rem 포트 상태 정보 저장 파일 경로

set PORT_STATUS=C:\port_status.txt


rem 방화벽 상태 정보 저장 파일 경로

set FIREWALL_STATUS=C:\firewall_status.txt


rem 실행 중인 서비스 정보 저장 파일 경로

set SERVICE_STATUS=C:\service_status.txt


rem 백신 정보 저장 파일 경로

set ANTIVIRUS_INFO=C:\antivirus_info.txt


rem 보고서 초기화

echo. > %REPORT_FILE%


rem 설치된 프로그램 목록 저장

echo "설치된 프로그램 목록" >> %REPORT_FILE%

wmic product get name, version >> %REPORT_FILE%

echo. >> %REPORT_FILE%


rem IP 정보 저장

echo "IP 정보" >> %REPORT_FILE%

ipconfig /all >> %REPORT_FILE%

echo. >> %REPORT_FILE%


rem 포트 상태 정보 저장

echo "포트 상태 정보" >> %REPORT_FILE%

netstat -ano >> %REPORT_FILE%

echo. >> %REPORT_FILE%


rem 방화벽 상태 정보 저장

echo "방화벽 상태 정보" >> %REPORT_FILE%

netsh advfirewall show allprofiles >> %REPORT_FILE%

echo. >> %REPORT_FILE%


rem 실행 중인 서비스 정보 저장

echo "실행 중인 서비스 정보" >> %REPORT_FILE%

sc query >> %REPORT_FILE%

echo. >> %REPORT_FILE%


rem 백신 정보 저장

echo "백신 정보" >> %REPORT_FILE%

wmic /namespace:\\root\SecurityCenter2 path AntiVirusProduct get displayName, productState, pathToSignedProductExe >> %REPORT_FILE%

echo. >> %REPORT_FILE%


echo "개인 PC 보안 점검 정보 수집 및 보고서 생성 완료"


미생 | 약 일 년 전

배치파일 테스트 결과 무난하게 이상없이 돌아가는데 필요하다면 추가적으로 구체적으로 진단에 필요한 것들을 요구하면 그에 맞게 배치가 더 만들어 집니다.

차바라기 | 약 일 년 전

좋은정보 감사합니다.저도 참고 하도록 하겠습니다.

inside07 | 약 일 년 전

아, 사실 필요한 내용은 로컬보안정책 관련된 배치 파일 입니다 ! 

예를 들어 암호나 계정 잠금에 대한 보안 정책을 배치파일로 설정하고 싶어서요 ! 

미생 | 약 일 년 전

해당하는 내용에 대해서는 별도의 secedit 라는 명령어에 대한 학습이 필요합니다. 무작정 사용하기보다는 관련 MS 포럼등에서 정보를 찾아보실 필요가 있어보입니다.


로컬 보안 정책을 조정하기 위한 배치 파일을 만들기 위해서는 secedit 명령어를 사용할 수 있습니다. 이를 사용하여 패스워드 정책 또는 계정 잠금 정책 등을 설정할 수 있습니다. 아래는 예제 스크립트입니다.


@echo off


rem 패스워드 정책 설정

rem 패스워드 복잡성, 변경 기간 등을 설정할 수 있습니다.

rem secedit /export /cfg C:\windows\security\templates\setup.inf /quiet

rem setup.inf 파일에서 PasswordComplexity, MinimumPasswordLength, MaximumPasswordAge 등을 수정

rem secedit /configure /db %windir%\security\new.sdb /cfg C:\windows\security\templates\setup.inf /areas SECURITYPOLICY

rem secedit /validate /db %windir%\security\new.sdb /cfg C:\windows\security\templates\setup.inf /areas SECURITYPOLICY


rem 계정 잠금 정책 설정

rem 계정 잠금 임계값, 잠금 기간 등을 설정할 수 있습니다.

rem secedit /export /cfg C:\windows\security\templates\setup.inf /quiet

rem setup.inf 파일에서 LockoutBadCount, ResetLockoutCount, LockoutDuration 등을 수정

rem secedit /configure /db %windir%\security\new.sdb /cfg C:\windows\security\templates\setup.inf /areas SECURITYPOLICY

rem secedit /validate /db %windir%\security\new.sdb /cfg C:\windows\security\templates\setup.inf /areas SECURITYPOLICY


echo "로컬 보안 정책 설정 완료"



위의 예제에서는 secedit 명령어를 사용하여 패스워드 정책과 계정 잠금 정책을 설정하는 방법을 보여줍니다. 각각의 정책은 먼저 secedit /export 명령어를 사용하여 기존의 설정을 export하고, setup.inf 파일에서 원하는 값을 수정한 후, secedit /configure 명령어로 설정을 적용합니다. 마지막으로 secedit /validate 명령어를 사용하여 설정이 적용되었는지 확인합니다.


패스워드 복잡성, 변경 기간, 계정 잠금 임계값, 잠금 기간 등의 값은 setup.inf 파일에서 수정할 수 있습니다. 이 값을 원하는 대로 수정한 후, 배치 파일을 실행하면 설정이 적용됩니다.

미생 | 약 일 년 전

Secedit.exe는 Windows 운영 체제의 로컬 보안 정책을 관리하는 데 사용되는 명령줄 도구입니다. 이 도구는 로컬 보안 정책 데이터베이스에서 설정을 가져오거나 저장하고, 보안 옵션, 그룹 정책 및 로컬 보안 정책과 관련된 정보를 표시합니다. Secedit.exe를 사용하면 보안 정책을 명령 줄에서 쉽게 구성할 수 있습니다.


Secedit.exe는 다음과 같은 명령줄 매개변수를 사용할 수 있습니다.


/export : 현재 로컬 보안 정책을 설정 파일로 내보냅니다. 이 파일은 보안 설정 옵션을 설정하는 데 사용됩니다.

/configure : 설정 파일에 저장된 보안 설정을 로컬 보안 정책 데이터베이스에 적용합니다.

/validate : 현재 로컬 보안 정책이 설정 파일에서 정의된 보안 설정과 일치하는지 확인합니다.

/areas : 구성할 보안 정책 영역을 지정합니다. SECURITYPOLICY, GROUP_MGMT, USER_RIGHTS, REGKEYS, FILESTORE, SERVMANAGE, EVENTAUDIT, TRUSTEDPUBINFO, 또는 ALL을 사용할 수 있습니다.

/db : 보안 설정을 적용할 데이터베이스 파일의 경로를 지정합니다.

/log : 작업에 대한 로깅을 사용하도록 설정합니다.

/quiet : 명령어 실행 결과를 출력하지 않고 조용히 작업을 수행합니다.

예를 들어, secedit.exe를 사용하여 로컬 보안 정책 데이터베이스에 새 보안 설정을 적용하려면, 먼저 /export 매개변수를 사용하여 현재 설정을 내보낸 다음, 내보낸 설정을 수정한 다음 /configure 매개변수를 사용하여 데이터베이스에 새 설정을 적용합니다.


예를 들어, 다음 명령어는 현재 로컬 보안 정책을 설정 파일로 내보냅니다.
secedit /export /cfg C:\security.cfg

그런 다음, 설정 파일에서 원하는 값을 수정한 후, 다음 명령어를 사용하여 수정된 설정을 로컬 보안 정책 데이터베이스에 적용합니다.


secedit /configure /db %windir%\security\new.sdb /cfg C:\security.cfg /areas SECURITYPOLICY

위의 예제에서는 /configure 매개변수를 사용하여 로컬 보안 정책 데이터베이스 파일의 경로와 수정된 설정 파일의 경로를 지정하고, SECURITYPOLICY 영역에 대해서만 새 설정을 적용합니다.



개인적 의견 

  • secedit를 통해 기존 환경설정 파일을 빼거나 표준화할 보안설정된 PC의 값을 export해서 특정 위치에 두거나 한 뒤 배치를 돌리는 도구에 해당 정책값을 같이 배포하거나 원격지에 설정을 한 뒤 그 파일을 가져와서 보안설정 업데이트를 하도록 하면 굉장히 편해지실 것으로 생각됩니다.

  • 해당 의견은 chatGPT의 제안을 기반으로 하기 때문에 충분한 검토 및 사용예를 검증하여 실 사용에 참고해주시기 바랍니다.

inside07 | 약 일 년 전

감사합니다 ! 
이 정보가 제일 잘 맞는 것 같아요 

로컬정책을 하나의 pc에 셋팅해놓고 그대로 expert 한 다음,

적용 할 pc에 import 하는 방법이 있었네요, 감사합니다 !!

wansoo
  0 추천 | 약 일 년 전

인터넷 검색해 보면 여러가지 나오네요.

회사마다 환경이 다르기 때문에 인터넷에 공개되어 있는 내용들을 참조해서 수정해 줘야 하지 않을까 싶어 보이네요.


PC 점검 배치파일 : https://rootkey.tistory.com/71#google_vignette

@echo off

cls

setlocal


set DATE="date /t"

set TIME="time /t"

set directory="C:\check-log"


set IPs="netsh interface ip show address | findstr "IP 주소:" | findstr /v "127.0.0.1""

set HNAME="hostname"


rem ### Check List Command ###


FOR /F "tokens=1" %%a IN (' %DATE% ') DO SET DATE=%%a

FOR /F "tokens=2" %%a IN (' %TIME% ') DO SET TIME=%%a

FOR /F "tokens=5,6" %%a IN (' %OSNAME% ') DO SET OSNAME=%%a %%b

FOR /F "tokens=3" %%a IN (' %IPs% ') DO SET IPs=%%a

FOR /F "tokens=1" %%a IN (' %HNAME% ') DO SET HNAME=%%a



echo. > %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt

echo ■■■■■■■■■■ PC 정보 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt

echo ○ IP : %IPs% >> %directory%\%HNAME%.%DATE%.txt

echo ○ PC명 : %HNAME% >> %directory%\%HNAME%.%DATE%.txt

echo ○ 실행시간 : %DATE% %TIME% >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt



echo ■■■■■■■■■■ 설치 프로그램 확인 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

powershell "Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate" >> %directory%\%HNAME%.%DATE%.txt

echo. >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt



echo ■■■■■■■■■■ 최근 OS 업데이트 날짜 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

powershell "gwmi win32_quickfixengineering | Select-Object installedon |sort installedon | Select-Object -last 1" >> %directory%\%HNAME%.%DATE%.txt

echo. >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt


net start | find /i "AlYac" > NUL

if errorlevel 0 (

echo ■■■■■■■■■■ 알약 백신 운영 여부 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

echo ▶ 실행중 >> %directory%\%HNAME%.%DATE%.txt

)else (

echo ■■■■■■■■■■ 알약 백신 운영 여부 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

echo ▶ 미실행 >> %directory%\%HNAME%.%DATE%.txt

)


echo. >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt


echo ■■■■■■■■■■ 알약 업데이트 날짜 ■■■■■■■■■■ >> %directory%\%HNAME%.%DATE%.txt

powershell "dir "C:\ProgramData\ESTsoft\ALYac\log\event" | Select-Object LastWriteTime | Select-Object -last 1" >> %directory%\%HNAME%.%DATE%.txt

echo. >> %directory%\%HNAME%.%DATE%.txt

echo ============================================================ >> %directory%\%HNAME%.%DATE%.txt




진단 배치파일 : https://boanchung.tistory.com/7



@echo off

echo ====주요정보통신기반시설 기준으로 서비스 작성=====

echo ============================================================================

net start | find /I "Alerter" >> whatservice.txt

net start | find /I "Clipbook" >> whatservice.txt

net start | find /I "Computer Browser" >> whatservice.txt

net start | find /I "DHCP Client" >> whatservice.txt


net start | find /I "Alerter" >> service.txt

net start | find /I "Clipbook" >> service.txt

net start | find /I "Computer Browser" >> service.txt

net start | find /I "DHCP Client" >> service.txt


for /F %%a in ("service.txt") do set "FileSize=%%~zi"

if %FileSize% EQU 0 ( GOTO PC5-Y

) else ( GOTO PC-N )


:PC5-Y

echo.

echo 양호

del service.txt


:PC-N

echo.

echo 취약

del service.txt




차바라기 | 약 일 년 전

정보 참고 하도록 하겠습니다. 감사합니다.

inside07 | 약 일 년 전

아, 사실 필요한 내용은 로컬보안정책 관련된 배치 파일 입니다 ! 

예를 들어 암호나 계정 잠금에 대한 보안 정책을 배치파일로 설정하고 싶어서요 ! 

wansoo | 약 일 년 전

  • 계정 활성화 유무 확인은  

net user 계정명 | find "활성 계정"

으로 확인해 볼 수 있겠고요.


  • 모든 계정 정보를 한번에 보려면

for /f "delims= " %a in ( 'net user ^|findstr /v \\ ^| findstr ^^[a-z]' ) do @net user %a

명령을 사용하면 되겠고...


  • 모든 계정의 상태 확인은 

 wmic useraccount get Name, Status

를 사용하면 되겠고...


  • 계정 잠금 임계값 설정 확인은

net accounts | find "잠금 임계값"

으로 확인해 볼 수 있고요.


  • 계정 잠금 기간 :  net accounts | find "잠금 기간"

  • 암호 최소 길이 : net accounts | find "최소 암호 길이"

  • 최대 암호 사용 기간 : net accounts | find "최대 암호 사용 기간"

  • 최근 사용 암호 기억되게 설정되었는지 확인은 

 net accounts | find "최근 암호 기억"

명령을 줘서 내용이 나오는지 여부로 확인해 볼 수 있겠고요.


각종 로컬 보안 설정 확인을 배치 파일로 확인해 보려면...

secedit 명령을 이용해서 정책 설정 내용을 text 파일로 내보내기한 후, 그 text file을 다시  찾아 봄으로서 확인해 볼 수 있겠고요.

예를 들자면...

secedit /export /cfg d:\l_pol.txt

한 후에...

개체 액세스 감사는 

type d:\l_pol.txt |find /I "AuditObjectAccess"

계정 관리 감사는

type d:\l_pol.txt |find /I "AuditAccountManage"

계정 로그온 이벤트 감사 :  type d:\l_pol.txt |find /I "AuditAccountLogon"

권한 사용 감사 : type d:\l_pol.txt |find /I "AuditPrivilegeUse"

디렉토리 서비스 액세스 감사 : type d:\l_pol.txt |find /I "AuditDSAccess"

로그온 이벤트 감사 : type d:\l_pol.txt |find /I "AuditLogonEvents"

시스템 이벤트 감사 : type d:\l_pol.txt |find /I "AuditSystemEvents"

정책 변경 감사 : type d:\l_pol.txt |find /I "AuditPolicyChange"

프로세스 추적 감사 : type d:\l_pol.txt |find /I "AuditProcessTracking"


와 같이 확인해 보면 되겠고...



화면보호기 설정 여부 확인은

registry 정보를 이용해서...

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaveActive"


화면보호기 해제 암호 사용 여부는

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaverIsSecure"


화면 보호기 대기 시간 확인은

reg query "HKCU\Control Panel\Desktop" /v "ScreenSaveTimeOut"


1값이 나오면 True로 설정된 것이고, 0이거나 없다면 False가 되겠고...



계정 암호 변경은  net user 계정 "암호" 명령으로 바꾸면 되겠고요.


댓글로 제시된 명령들 중에 적당한 명령들을 선택해서 배치파일에 넣고 적당한 옵션과 추가 명령들을 사용해서 만들면 될 걸로 보여 지네요.