
파티셔닝, 패키지 선택 및 부팅 옵션을 포함한 자동화된 무인 Kali Linux 설치를 위한 Preseed 구성 예제 및 가이드.
Debian preseed 파일은 Debian 기반 배포판의 설치 및 구성을 자동화하는 데 유용한 도구입니다. Kali는 이를 활용하여 개입 없이, 맞춤화되고 일관된 설치를 통해 설치 속도를 높일 수 있습니다. preseed 파일에 대한 훨씬 더 많은 정보는 Debian 설치 가이드 또는 Debian 예제 preseed 텍스트 파일을 참조하십시오.
preseed 파일을 사용자 정의하는 방법은 많고 설치된 패키지가 더 많은 옵션을 제공하지만, 이 저장소는 가볍게 사용자 정의된 Kali 설치 옵션을 허용하는 더 간단한 파일을 호스팅하고 생성할 수 있도록 제공됩니다.
preseed 파일 사용에 대한 매우 심층적이고 유용한 가이드는 Debian 설치 위키에서 확인할 수 있습니다. 여기에는 preseed를 iso 파일에 구워 넣는 방법, preseed 파일을 담은 USB를 사용하는 방법, 또는 네트워크 연결을 통해 URL에서 preseed 파일을 가져오는 방법에 대한 단계가 포함되어 있습니다.
한 가지 유의할 점은 URL 프리시딩을 활용하려면 다음 부팅 프롬프트를 따라야 한다는 것입니다.
/install.amd/vmlinuz vga=788 auto=true priority=critical url=link-to-preseed.cfg initrd=/install.amd/initrd.gz --- quiet
BIOS 부팅 시스템에서는 ESC를 눌러 빈 프롬프트를 열거나 E 기존 부팅 옵션을 수정하여 부트 매개변수를 편집할 수 있습니다. UEFI 시스템에서는 C를 눌러 빈 프롬프트를 열거나 E를 눌러 기존 부팅 옵션을 수정할 수 있습니다.
기존 부팅 옵션을 활용하려면 다음 부팅 프롬프트를 추가하여 자동 설치를 수행할 수 있습니다:
language=en country=US locale=en_US.UTF-8 keymap=us auto=true priority=critical url=link-to-preseed.cfg
preseed 파일을 만들 때 개입 없는 설치를 위해 항상 사용해야 하는 특정 플래그가 있습니다. 각각을 살펴보겠습니다.
다음은 위치 기반 설정(로케일, 언어, 국가)을 자동으로 선택합니다. 로케일에 대한 자세한 내용은 Debian Wiki 항목을 방문할 수 있습니다. 어떤 로케일을 사용할지 확실하지 않다면 아래에 설정된 영어 옵션을 선택할 수 있습니다. 선택적으로 로케일을 확인하려면 이미 설치된 머신에서 locale 명령을 실행할 수 있습니다. .UTF-8 앞에 정보를 입력하도록 하십시오.
kali@kali:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
preseed 옵션:
d-i debian-installer/locale string en_US
그러나 이러한 모든 옵션을 수동으로 선택하거나 위 항목을 사용한 후 그중 하나만 변경하려는 경우 다음을 사용하여 각각을 설정할 수 있습니다:
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8
다음으로 로케일로 설정되지 않는 키맵을 설정해야 합니다. 이미 설치된 머신이 있다면 localectl 명령을 사용하여 레이아웃을 찾을 수 있습니다.
kali@kali:~$ localectl
System Locale: (unset)
VC Keymap: (unset)
X11 Layout: us
X11 Model: pc105
preseed 옵션:
d-i keyboard-configuration/xkb-keymap select us
로케일과 키맵은 모두 나중에 각각 dpkg-reconfigure locales 및 dpkg-reconfigure keyboard-configuration을 사용하여 변경할 수 있음을 명심하십시오.
이제 네트워크 설정을 편집할 수 있습니다. url 프리시딩을 사용하는 경우에는 이 설정이 사용되지 않음을 명심하십시오. 먼저 인터페이스를 선택해야 합니다. 이 옵션에서는 가장 쉬운 auto를 사용합니다. 그러나 필요한 경우 eth0과 같은 특정 인터페이스를 선택할 수 있습니다.
d-i netcfg/choose_interface select auto
다음 preseed 옵션은 호스트 이름과 도메인 이름 요청을 건너뛰는 데 사용됩니다. 이 값들은 DHCP를 통해 제공되거나 사전 설정된 값('kali' 호스트 이름과 빈 도메인)을 사용하여 제공됩니다:
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
호스트 이름이나 도메인 이름을 직접 설정하려면 원하는 값으로 문자열을 수정하면 됩니다. DHCP 값이 우리가 설정한 값보다 우선한다는 점을 명심하십시오. 하지만 다음과 같이 값을 하드 코딩하면 피할 수 있습니다:
d-i netcfg/hostname string personal-hostname
이제 네트워크 미러로 이동합니다. 다음 옵션은 Kali에 사용할 미러와 필요한 경우 프록시 설정을 지정하는 역할을 합니다. 확실하지 않다면 아무것도 설정할 필요가 없습니다. 이 예제에서는 호스트 이름 값을 Kali Cloudflare 미러 네트워크인 kali.download로 편집합니다. 가장 빠른 미러를 자동으로 할당받으려면 http.kali.org 옵션을 대신 사용할 수 있습니다:
d-i mirror/country string manual
d-i mirror/http/hostname string kali.download
d-i mirror/http/directory string /kali
d-i mirror/http/proxy string
포함할 수 있는 몇 가지 다른 옵션도 있습니다. 이 두 옵션은 미러에 연결할 프로토콜과 선택할 suite를 설정합니다. 두 옵션 중 하나를 변경할 필요가 없다면 preseed에서 이 항목을 제외하는 것이 가장 좋습니다:
d-i mirror/protocol string http
d-i mirror/suite string kali-rolling
이제 사용자 생성을 진행합니다. 먼저 전체 이름을 설정한 다음 사용자 이름을 설정합니다. 전체 이름은 여러 단어가 될 수 있지만 사용자 이름은 그럴 수 없습니다. 사용자 이름은 한 단어로 사용해야 합니다. 그런 다음 원하는 대로 비밀번호를 설정할 수 있습니다. 비밀번호를 평문으로 두고 싶지 않다면 암호화된 해시를 사용할 수 있습니다. mkpasswd 명령이나 여기서 다루지 않는 다른 여러 방법을 통해 생성할 수 있습니다:
d-i passwd/user-fullname string Kali Linux
d-i passwd/username string kali
d-i passwd/user-password password kali
d-i passwd/user-password-again password kali
암호화된 해시는 다음과 같이 사용할 수 있습니다:
d-i passwd/user-password-crypted password [hash]
이제 시계 설정으로 이동합니다. 사용되는 옵션은 다음을 수행합니다: 시스템 시계가 UTC로 설정되어 있음을 설치 프로그램에 알리고, Kali 설치가 시계로 사용해야 하는 시간대 값을 적용한 다음, NTP를 사용하여 해당 시간을 설정합니다.
d-i clock-setup/utc boolean true
d-i time/zone string US/Eastern
d-i clock-setup/ntp boolean true
시간대에 설정할 값을 /usr/share/zoneinfo/ 폴더에서 검색하거나 다음 명령을 사용할 수 있습니다:
kali@kali:~$ cat /etc/timezone
US/Eastern
이제 파티셔닝에 들어갑니다. 이는 사용 중인 시스템 유형과 원하는 설치 유형에 따라 설정할 값이 몇 가지 있기 때문에 preseed 생성에서 가장 복잡한 부분입니다.
먼저 파티셔닝 도구인 partman의 자동 설정을 지정합니다. LVM(lvm)이나 암호화(crypto)를 사용하는 대신 일반 설치라고 지정한 다음 사용 가능한 하드 드라이브 전체를 사용하도록 지정합니다. 20 GB와 같은 더 작은 크기나 여유 공간의 백분율을 사용할 수도 있습니다. 마지막 옵션은 파일 구성 방식을 결정합니다. 모든 것이 하나의 파티션에 있는 경우(atmoic), /home 폴더가 별도의 파티션에 있는 경우(home), 또는 /home, /var, /tmp가 모두 별도의 파티션에 있는 경우(multi)입니다.
d-i partman-auto/method string regular
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
다음으로 동의해야 하는 일련의 프롬프트가 있습니다. 이 모든 프롬프트에 동의하면 partman은 위에서 설정한 값에 따라 자동으로 파티션을 나눕니다.
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
드디어 파티셔닝이 끝났으니 패키지 선택으로 이동할 수 있습니다. 다음 옵션은 일반적인 Kali Xfce 설치로 이어집니다. 설정할 수 있는 사용 가능한 값의 전체 목록을 보려면 tasksell Kali GitLab 패키지 저장소를 참조할 수 있습니다. 일부 옵션은 desktop-gnome, desktop-kde, meta-top10, meta-everything, meta-purple입니다. 사용하려는 패키지를 추가하고 구분자로 쉼표를 사용하면 됩니다.
tasksel tasksel/first multiselect standard,core,desktop-xfce,meta-default
추가로 설치할 패키지를 개별적으로 선택할 수 있습니다:
d-i pkgsel/include string openssh-server build-essential
debootstrap 이후에 safe-upgrade 또는 full-upgrade로 패키지를 업그레이드하거나 none으로 전혀 업그레이드하지 않을 수도 있습니다:
d-i pkgsel/upgrade select none
이제 마지막 섹션만 남았습니다: grub 옵션 및 재부팅. 이 옵션은 비교적 간단합니다. grub에 오직 Debian만 감지되면 부트 파티션을 설정해도 안전하다고 알리고, 다른 OS가 설치된 경우에도 부트 파티션을 설정해도 안전하다고 알립니다. 첫 번째 옵션은 대부분의 상황에서 안전하지만, 두 번째 옵션은 듀얼 부팅 시 위험할 수 있습니다. 듀얼 부팅을 사용하지 않는다면 true로 설정할 수 있으며, 그렇지 않다면 옵션을 제거하고 수동으로 선택하는 것이 좋습니다.
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
이 마지막 두 옵션은 부팅 장치를 설정한 다음 시스템에 Kali로 재부팅하도록 지시합니다. 이 예제에서는 USB 드라이브를 사용하여 Kali를 설치할 수 있으므로 부팅 장치를 /dev/sda로 하드 코딩합니다. USB 드라이브를 사용하지 않는 경우 default 값을 사용할 수 있지만 값을 하드 코딩하는 것이 더 안전합니다.
d-i grub-installer/bootdev string /dev/sda
d-i finish-install/reboot_in_progress note