Sep 9
由于某些原因,前一段时间比较关注于系统的安全问题,因此接触到了著名的渗透系统 BackTrack。最初,BackTrack 是基于 Slackware 和 SLAX 的自启动运行光盘,包含了一套安全及计算机取证工具。此后,它还基于 Ubuntu 发布了新的 BackTrack 版本。不过它一直以 Live CD 的形式存在,并不能算一个完整的发行版。但是,自2013年开始,BackTrack 的开发团队决定以 Debian 为基础重建系统,并将它改名为 Kali Linux。自此,Kali Linux 作为 BackTrack 的后继,成为了一个新的 Linux 发行版。在重建过程,Kali Linux 的开发团队复查并打包所有渗透工具。同时,除了发布 x86 架构之外,他们还发布了 ARM 架构的版本。有关 Kali Linux 的介绍,可到它的官方主页 http://www.kali.org 上查看。
 
尽管 Kali Linux 是一个著名的安全测试平台,不过这里所要讨论则是:它作为 Debian 分支,是如何定制的?这里所谓的“定制”,并非官方的定制方法,而是基于 Debian 的 debootstrap 功能来实现系统的定制。至于官方的定制方法,可参看 
http://docs.kali.org/live-build/customize-the-kali-desktop-environment 上所介绍的安装镜像文件的定制方法,这里只借鉴了其中的一部分。作为一个相对完整的定制过程,这里仅侧重于介绍 Gnome 桌面相关工具的安装过程。至于 Kali Linux 做为网络服务器、渗透系统等方面精细定制,只能自己去体会了。
 
A、设定 VirtualBox 中的 Kali Linux 客户机配置
为了在 VirtualBox 安装 Kali Linux,主机中应该事先安装 VirtualBox,这里就不多作展开了。通常,VirtualBox 提供了非常友好的图形界面来完成客户机的配置安装。为了免去配图的麻烦,我们采用 VirtualBox 提供的命令行工具来完成相关客户结的配置操作。 命令行创建客户机分三步:
1、创建一个名为 Kali Dev 的客户机:
$ VBoxManage createvm --name "Kali Dev" --register
2、调整 Kali Dev 中的各项参数,其中 --ostype 可通过命令行
$ VBoxManage list ostypes
查看。调整客户机参数如下:
$ VBoxManage modifyvm "Kali Dev" --ostype Debian_64 --memory 1024 --vram 36 --audio coreaudio --audiocontroller ac97 --acpi on --boot1 dvd --nic1 nat
容易看出,客户机类型是 Debian 64 bit、内存是 1024M、显存是 36M、开启声音、电源控制、以 DVD 媒质为首选启动方式以及以 NAT 方式配置虚拟机的网络。
3、创建 Kali Dev 的硬盘文件并把它关联到客户机上:
$ VBoxManage createhd --filename "Kali Dev.vdi" --size 8192 --variant Standard
$ VBoxManage storagectl "Kali Dev" --name "SATA" --add sata --controller IntelAHCI
$ VBoxManage storageattach "Kali Dev" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Kali Dev.vdi"

这三条命令分别为客户机 Kali Dev 创建好了一个大小为 8 G的动态硬盘、将类型为 IntelAHCI 的 SATA 控制器关联到 Kali Dev 上、再将 8 G 的动态硬盘关联到了 Kali Dev 客户机。至此,客户机 Kali Dev 创建完成,可通过下述方式查看它的所有参数设定

$ VBoxManage showvminfo "Kali Dev"
 
B、准备好安装 Kali Linux 的 Linux 宿主环境
通常,我们可以为 VirtualBox 准备一份 Kali Linux 的 LiveCD。实际上,Linux 定制安装只需要有个 Linux 的宿主环境即可,不一定非要相同的 Linux 环境。这里便是以之前已经使用过的 Fedora  18 Live  CD 作为提供安装的宿主环境,也给出下载地址作为示例:
$ cd ~/Downloads
$ wget http://mirrors.163.com/fedora/releases/18/Live/x86_64/Fedora-18-x86_64-Live-Desktop.iso
现在可以将镜像关联到客户机 Kali Dev 上:
$ VBoxManage storageattach "Kali Dev" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium ~/Downloads/Fedora-18-x86_64-Live-Desktop.iso
一切就绪,可以开始启动 VirtualBox 中的 Kali Dev 客户机了:
$ VBoxManage startvm "Kali Dev"
在正常情况下,稍作等待之后就可以进入 VirtualBox 的 Kali Dev 客户机中的 Fedora 18 Live 环境了。在正式开始安装之前,先确认一下 VirtuaBox 中网络是否正常工作:
$ ping http://www.kali.org
如果 Fedora 18 Live 环境已经链接网络,那么可以到下一步了。如果没有连接上互联网的话,请确认 VirtualBox 的联网方式以及相关的网络配置是否正确。
 
C、为 VirtualBox 中 Kali Linux 硬盘的分区
由于 Fedora 18 Live 提供的 Gnome 桌面环境,而下面的安装都是在虚拟终端下进行的,因此,在 Fedora 18 Live 的程序菜单中找到 gnome-terminal 并点击,然后切换到超级用户
$ su -
现在可以开始对客户机 Kali Dev 的硬盘进行分区操作了:
# fdisk -l
# fdisk /dev/sda
如果对于分区操作不熟悉的话,可采用下述脚本:
#!/bin/bash
VMDISK="/dev/sda"
fdisk ${VMDISK} &> /dev/null  <<EOF
n
p
1

+512M
t
2
82
n
p
2


w
EOF
一定要注意该脚本中的空行数,不要随意改动。然后将它保存为 fdisk_vm.sh,接着运行它:
# chmod +x fdisk_vm.sh
# ./fdisk_vm.sh
脚本运行完成之后,便会在客户机的硬盘 /dev/sda 创建两个区:大小为 512 M 的交换分区 /dev/sda1、囊括剩余大小的根分区 /dev/sda2。 格式化分区:
# mkswap /dev/sda1
# mke2fs -j /dev/sda2
然后挂载根分区
# mkdir /mnt/kali
# mount /dev/sda2 /mnt/kali
再挂载上你其它的分区,这里只有交换分区需要挂载
# swapon /dev/sda1
 
D、准备 debootstrap
debootstrap 是一个快速完成 Debian 基本系统(stage 3)安装的工具。该工具不仅存在于 Debian 系的 APT 源中,甚至其他发行版也有它的打包版本,方便用其他发行版定制 Debian 系统。不过这里考虑特定版本的修改可能性,因此采用 Kali 官方提供的 deboostrap版本:
# cd ~/
# wget http://http.kali.org/kali/pool/main/d/debootstrap/debootstrap_1.0.48+kali1_all.deb
下载好 debootstrap 之后,可以解包安装了。不过由于我们的 Live 环境不是 Debian 系的,所以没有 dpkg 工具。不过,deb 包中的数据仍可通过 binutils 提供的工具 ar 解开:
# ar -xf debootstrap_1.0.48+kali1_all.deb && tar zxvpf data.tar.gz -C /
如果 Live 环境没有提供 ar 工具的,利用它的包管理器安装它,例如
# yum install binutils
如果不出意外的话,debootstrap 已经可以使用了。开始 debootstrap 吧
# debootstrap --arch amd64 sid /mnt/kali http://http.kali.org/kali
经过一段时间(时间长短取决于网络状况)的等待,客户机的硬盘中应该已经装好了 Kali Linux 的基本系统了。
 
E、进入预装的 Kali Linux 环境
先复制域名解析配置文件
# cp -L /etc/resolv.conf /mnt/kali/etc/resolv.conf
挂载 /proc 及 /dev 档案系统:
# mount -t proc none /mnt/kali/proc
# mount -t sysfs none /mnt/kali/sys
# mount -o bind /dev /mnt/kali/dev
然后进入我们的 Kali Linux 环境:
# chroot /mnt/kali /bin/bash
好了,我们已经在预装的 Kali Linux 环境中了。不过安装工作还没有完,还有一系列软件包需要安装。
 
1、配置你的APT源,debootstrap 会创建一个非常基本的 /etc/apt/sources.list 文件用于安装额外的软件包。可以添加 Kali Linux 的官方源(对应于 Debian 的 stable 版):
# cat << EOF > /etc/apt/sources.list
## Kali Official Repositories
deb http://http.kali.org/kali kali main non-free contrib
deb-src http://http.kali.org/kali kali main non-free contrib
## Kali proposed updates
deb http://http.kali.org/kali kali-proposed-updates main non-free contrib
deb-src http://http.kali.org/kali kali-proposed-updates main non-free contrib
## Security updates
deb http://security.kali.org/kali-security kali/updates main contrib non-free
deb-src http://security.kali.org/kali-security kali/updates main contrib non-free
EOF
如果用户希望体验最新的软件,可选择 Kail 的开发版本(对应于 Debian 的 unstable 版):
# cat << EOF > /etc/apt/sources.list
## Kali Official Repositories
deb http://http.kali.org/kali kali-dev main non-free contrib
deb-src http://http.kali.org/kali kali-dev main non-free contrib
EOF
若想再激进一点,可以试试 Kali 的 Bleeding-edge 版本(对应于 Debian 的 experimental 版)
# cat << EOF > /etc/apt/sources.list
## Kali Official Repositories
deb http://http.kali.org/kali kali-bleeding-edge main non-free contrib
deb-src http://http.kali.org/kali kali-bleeding-edge main non-free contrib
EOF
稳妥一点的话,可以试试 Kali 的测试版(对应于 Debian 的 testing 版)
# cat << EOF > /etc/apt/sources.list
## Kali Official Repositories
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
## Security updates
deb http://security.kali.org/kali-security kali-rolling/updates main contrib non-free
deb-src http://security.kali.org/kali-security kali-rolling/updates main contrib non-free
EOF
另外要指出的是,若想让 Kali 的定制过程加快,不妨尝试加入 Debian 源(后果自负):
# echo "## Debian Offical Mirrors
deb http://mirrors.163.com/debian sid main non-free contrib
deb-src http://mirrors.163.com/debian sid main non-free contrib"
>> /etc/apt/sources.list
默认 apt-get 安装、升级包是不会列出包的版本信息,这对我们来说不一定方便。因此做下述设置:
# cat > /etc/apt/apt.conf.d/01apt << EOF
APT::Default-Release "sid"; 
APT::Get::Show-Upgraded "true"; 
APT::Get::Purge "true"; 
APT::Get::Show-Versions "true"; 
APT::Cache::NamesOnly "true";
EOF
更新一下 APT 软件列表:
# apt-get update
 
如果你觉得 Kali Linux 或者 Debian 的镜像有点慢,你可以尝试镜像选择工具 netselect-apt
# apt-get install netselect-apt
# netselect-apt
 
如果你在更新列表的时候出现了
W: GPG error: http://http.kali.org lucid Release: The following signatures were invalid: BADSIG 54422A4B98AB5139 Oracle Corporation (VirtualBox archive signing key)
的错误,请尝试
# apt-key del 16126D3A3E5C1192
# apt-get update
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 16126D3A3E5C1192
或者尝试
# apt-get clean            # Remove cached packages
# cd /var/lib/apt
# mv lists lists.old       # Backup mirror info
# mkdir -p lists/partial   # Recreate directory structure
# apt-get clean
# apt-get update           # Fetch mirror info
 
2、设置时区
# apt-get install tzdata
安装完之后,debconf 会自动以 ncurses 界面的形式提示用户选择时区,这里选择 Asia/Shanghai。以后需要调整时区的话,可执行
# dpkg-reconfigure tzdata
实际上,也可以像其他发行版一样手动操作。首先在 /etc/timezone 里面写上中国的时区
# nano -w /etc/timezone
Asia/Shanghai
接着把原先的 /etc/localtime 删除,并复制合适的时区文件
# rm /etc/localtime
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
有可能还需要修改 /etc/default/rcS 文件:
# nano -w /etc/default/rcS 
把 UTC=yes 改为
UTC=no
使 Linux 默认BIOS 时间为本地时间 
 
3、安装配置系统的 locales
安装 locales:
# apt-get install locales
安装完之后,debconf 会自动提示用户选择要生成的 locale,这里选择了 en_US.UTF-8、zh_CN.UTF-8、zh_CN.GB18030、zh_CN.GB2312、zh_CN.GBK。如果想以后修改这个设置,可以运行下述命令
# dpkg-reconfigure locales
再或者可以手动调整 locales。先在 /etc/locale.gen 中选择需要生成的 locale,例如
# nano -w /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.GB2312 GB2312
zh_CN.GBK GBK
然后执行下述命令生成
# locale-gen
 
4、配置您的键盘布局(如果需要):
# apt-get install keyboard-configuration

debconf 会自动提示用户设置键盘布局。如果以后想修改的话,可执行下述命令

# dpkg-reconfigure keyboard-configuration
 
5、安装内核
5.1、不喜欢编译内核或不懂如何编译内核的人可以先用
# apt-cache search linux-image
看看,然后直接安装最新的内核
# apt-get install linux-image-3.7-trunk-amd64
 
5.2、如果想要编译内核,想简单一点,可以选用 Kali Linux 或者 Debian 提供的内核源码
# apt-cache search linux-source
# apt-get install linux-source-3.7
或者
# apt-get source linux-3.7
# tar jxf linux-source-3.7.tar.bz2 -C /usr/src/
我一般喜欢自己编译内核,不需要整一大堆驱动模块放机器里。不过要注意的是如果自己编译内核的话就要记得安装一个devfsd和module-init-tools,另外你解压内核源码之后最好在/usr/src里创建一个内核源码目录到 /usr/src/linux的符号连接。
 
6、配置网络
如果电脑通过有线网卡获得的是静态 IP 地址,那么可根据下面的例子修改:
# nano -w /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.159.62
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.159.1
如果我们使用的是有线网卡自动获得 IP 地址,则
# nano -w /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
 
当然,还有可能的情况是上网的设备不是有线网卡。例如,电脑通过无线网卡获得的是静态 IP 地址,那么可根据下面的例子修改:
# nano -w /etc/network/interfaces
auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet static
address 192.168.159.62
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.159.1
wpa-essid yourssid
wpa-psk yourpassword
其中 youssid 与 yourpassword 分别是无线网络标识与密码。若用无线网卡自动获得 IP 地址,则
# nano -w /etc/network/interfaces
auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet dhcp
除此而外,还需要安装相关的无线网卡驱动包与无线网络拨号工具。这里假设无线网卡驱动已经有Linux 内核提供了,只剩下安装无线网络工具
# apt-get install iw wpasupplicant wireless-tools

根据需要调整域名解析服务配置,这里只给出一个例子:
# nano -w /etc/resolv.conf
## A simple example /etc/resolv.conf:
nameserver 10.1.1.36
nameserver 192.168.9.100
 
接着再来配置主机名:
# echo "KALI" > /etc/hostname
本地主机名解析:
# echo "127.0.0.1 KALI" >> /etc/hosts
 
重启动网络服务
# invoke-rc.d networking restart
 
7、用户权限管理
修改 root 密码
# passwd
 
实现普通用户 sudo 功能
# apt-get install sudo
# nano -w /etc/sudoers
修改下面这一行(去掉前面的注释符号)
%sudo  ALL=(ALL:ALL) NOPASSWD: ALL
即可。注意前面这个%不可去掉,它表示组成员。
 
新建一个普通用户并将用户加入 sudo 管理员组,同时修改用户密码:
# adduser easior -a sudo
# passwd easior
 
8、把你的 fstab 内容加上吧,这部分内容你自己得会哦,举个例子吧:
# cat /etc/fstab
/dev/sda1   none    swap        sw                0 0
/dev/sda2   /       ext4        noatime           0 1
/dev/cdrom  /mnt/cdrom iso9660  noauto,ro 0 0
proc        /proc   proc        defaults          0 0
 
9、安装引导程序
一般引导程序选择 Grub,目前 Grub 已经升级成为 Grub2:
# apt-get install grub2
# grub2-install /dev/hda
# update-grub
 
10、退出 chroot 环境并重启机器:
# exit
# umount /mnt/kali/dev
# umount /mnt/kali/sys
# umount /mnt/kali/proc
# umount /mnt/kali
# swapoff
# reboot
记得从光驱中取走 Live CD,否则又要进入 Live CD 环境了。例如
$ VBoxManage storageattach "Kali Dev" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium none
$ VBoxManage closemedium dvd ~/Downloads/Fedora-18-x86_64-Live-Desktop.iso
 
F、在新装的 Kali Linux 中安装 Gnome 桌面环境
 
好了,重启系统后进入新安装的 Kali Linux/Debian 系统,不过目前只是命令行模式。先以普通用户 easior 登录系统:
login: easior
password: 
这样也方便测试 sudo 设置是否有效。
 
在安装 Linux 桌面之前,需要安装 X Window的核心:
$ sudo apt-get install xserver-xorg
如果需要精简 X-server 的话,可先运行 lspci 查看硬件配置
$ sudo apt-get install pciutils
$ lspci
然后根据自己的硬件情况安装,例如:
$ sudo apt-get install xserver-xorg-core xserver-xorg-video-intel xserver-xorg-input-evdev xserver-xorg-input-synpatic
精简的后果需要自己负责,可能造成 X Windows 的某个功能失效。
 
好了,可以安装 Kali Linux 定制的 GNOME 桌面,注意这里是定制的桌面。因此,Gnome 的部分安装的是 gnome-core,而不是安装整个 GNOME 环境:
$ sudo apt-get install gnome-core kali-defaults kali-root-login desktop-base
接着安装 GNOME 的启动管理工具
$ sudo apt-get install gdm3
根据自己需要选择Gnome的主题与icon主题:
$ sudo apt-get install gnome-icon-theme gnome-themes-standard
Kali Linux 默认的 Gnome 桌面环境是 Gnome 3,但默认运行在 fallback 模式。若想临时切换成 Gnome 3 的标准模式,请在终端输入:
$ gnome-shell --replace
gnome 3的标准模式支持一些桌面特效开启、还有很多gnome-shell插件。如果您觉得比较好用,请输入下面的命令使系统在启动时,自动进入gnome-shell的标准模式。
$ gsettings set org.gnome.desktop.session session-name gnome
若想还原默认的桌面请输入:
$ gsettings set org.gnome.desktop.session session-name gnome-fallback
注销或者重启之后进入桌面即可直接进入您要切换的模式。
 
安装文件管理器以及nautilus-open-terminal:
$ sudo apt-get install nautilus nautilus-open-terminal
 
声卡安装
$ sudo apt-get install alsa-utils gnome-media
 
网络配置工具
$ sudo apt-get install network-manager network-manager-gnome

需要注意,Linux 系统中有两套网络服务管理工具:由 ifupdown 提供的/etc/init.d/networking 以及由 network-manager 提供的 /etc/init.d/network-manager。前者常用于没有桌面环境的系统,后者应用于桌面环境,两套网络服务不能同时运行,但可以共存。前面已经由 /etc/init.d/networking 包接管了网络,若现在想换用 network-manager,请先停用它:

$ sudo invoke-rc.d networking stop
$ sudo update-rc.d networking disable

接着开启 /etc/init.d/network-manager:

$ sudo invoke-rc.d network-manager start

若想完全由 network-manager 接管网络服务,作如下配置

$ sudo nano -w /etc/NetworkManager/NetworkManager.conf
[ifupdwon]
manager=true

其中 manager 由原先的 false 改成了 true。并重启 /etc/init.d/network-manager 服务:

$ sudo invoke-rc.d network-manager restart

若觉得 ifupdown 包没有必要存在,可删除它

$ sudo apt-get remove ifupdown
 
Netspeed 可以显示当前网络上传下载速度的 GNOME applet:
$ sudo apt-get install netspeed
Alt+鼠标右键选择 Add to Panel。
 
Gnome 压缩文件管理工具:
$ sudo apt-get install file-roller
 
卸载Gnash,它是自由的 Flash 播放器
$ sudo apt-get remove --purge gnash
汉化浏iceweasel浏览器(Firefox)
$ sudo apt-get install iceweasel iceweasel-l10n-zh-cn
安装Flash插件:
$ sudo apt-get install flashplugin-nonfree
$ sudo update-flashplugin-nonfree --install
 
邮件阅读工具:
$ sudo apt-get install evolution
 
Deb包图形安装工具:
$ sudo apt-get install gdebi
Debian包管理图形工具
$ sudo apt-get install synaptic
安装Ubuntu软件中心Software Center:
$ sudo apt-get install software-center
跨Linux平台包管理工具
$ sudo apt-get install packagekit gnome-packagekit
 
如果使用的是笔记本,还可能需要安装这些软件
$ sudo apt-get install acpi acpid hibernate cpufreqd hotkeys
 
热拔插工具
$ sudo apt-get install hotplug usbutils discover
 
硬盘加速
$ sudo apt-get install hdparm 
 
服务管理工具
$ sudo apt-get install rcconf
 
prelink加速程序启动
$ sudo apt-get install prelink
当你安装完生启到新系统时用这个命令来运行
$ sudo prelink -am
 
好了,可以再次重启系统了
$ sudo reboot
让我们看看 Gnome 桌面环境能否正常工作?
 
G、桌面的进一步定制
 
如果一切顺利的,Kali Linux 重启之后便会出现 GDM 的图形登录界面,输入帐号、密码之后就能进入 Gnome 环境。不过,我们看到的 Gnome 环境可能是全英文的,无法输入中文,甚至可能出现中文字符无法显示。即使能显示的话,中文字体也不一定让我们满意。这就需要我们进一步定制 Gnome 环境。
 
Gnome3 的配置工具:
$ sudo apt-get install gnome-tweak-tool
 
安装中文字体:
$ sudo apt-get install tff-wqy-microhei tff-wqy-zenhei fonts-liberations ttf-mscorefonts-installer
安装额外字体
(1)、首先拷贝字体到用户家目录下,比如自行建立 ~/.fonts/truetype/ 目录:
$ mkdir -p ~/.fonts/truetype
当然,也可以考虑给其他用户使用,此时可以建立如下目录
$ sudo mkdir -p /usr/local/share/fonts/truetype
这里不建议用户随意修改 /usr/share/fonts 目录。接着就是复制一些字体到这些目录,可以考虑从授权的 MS Windows 或者 Apple Mac OS X 系统下找到需要的字体,比如复制中易六套字体,它们分别是 simhei.ttf、simyou.ttf、simkai.ttf、simfang.ttf、simli.ttf、simsun.ttc:
$ cp sim*.tt* ~/.fonts/truetype/
(2)、生成你字体的fonts.dir+fonts.scale文件
$ sudo apt-get install xfonts-utils
$ cd ~/.fonts/truetype/
$ mkfontscale
$ mkfontsdir
(3)、把字体路径加到 Xorg-server 的配置文件中,比如在 /etc/X11/Xorg.conf.d 新建一个文件:
$ sudo nano -w /etc/X11/Xorg.conf.d/10-fonts.conf
FontPath "/usr/share/fonts/truetype/"
FontPath "~/.fonts/truetype/"
其中 /usr/share/fonts/truetype/ 是系统安装的字体。可以根据字体安装的实际情况修改上述配置。
(4)、最后执行下述命令更新 xft 的字体缓存:
$ fc-cache -v -f
 
安装完成之后,打开网页
把你喜欢的字体优先级调到最高,然后点击”生成“保存成.fonts.conf文件放入用户名家目录下。最好 root 目录下也拷贝一份,因为有些程序是以 root 账户来运行的。
 
关于 Deiban 字体显示优化,可以看看这里:
如果通过以上设置的字体显示效果还无法满足你的需求,你可以折腾 Debian 的字体渲染 Infinality 补丁。
 
设置系统的 locale 为中文
$ su 
# cat << EOF > /etc/default/locale
LC_ALL="zh_CN.UTF-8"
LANG="zh_CN.UTF-8"
EOF
$ su easior
实际上,我们也可以在 ~/.xprofile 或者 ~/.bashrc 等用户级配置文件。例如在 ~/.xprofile 文件也加入
export LANG=zh_CN.GB18030
export G_FILENAME_ENCODING=@GB18030
export LC_ALL=zh_CN.GB18030
export G_BROKEN_FILENAMES=1
用户级的 locale 就被设置成了 zh_CN.GB18030。
 
安装中文手册
$ sudo apt-get install manpages-zh
 
安装编码转化工具(文件名编码 convmv、文件内容编码iconv、mp3标签easytag):
$ sudo apt-get install convmv iconv easytag
 
安装中文输入法
$ sudo apt-get install ibus ibus-rime
配置中文输入法
$ ibus-setup
 
由于我们是在虚拟机中安装 Kali Linux,因此还需要安装 VirtualBox-guest-additions。目前,该包是通过内核的 dkms 模块实现自动化模块编译,故而,安装它之前需要确认当前内核的头文件已被安装,也即
$ sudo apt-get install linux-headers-`uname -r` virtualbox-guest-dkms virtualbox-guest-x11
它可以实现 Virtualbox 与 X 之间的无缝切换、剪切板共享、文件的拖曳、文件夹的共享等功能。实际上,文件(夹)的拖曳、剪切板的共享的启用方法是在 VirtualBox 主机中执行:
$ VBoxManage modifyvm "Kali Dev" --clipboard bidirectional --draganddrop bidirectional
设置成功之后,可以试试在 VirtualBox 客户机与主机之间相互复制文件或者拖曳文件能否成功?不过对于移动非常大的文件,剪切板的功能可能不一定能够胜任,这就需要启用文件夹共享功能。具体来说,先要在 VirtualBox 中配置主机的共享文件夹路径,例如指定 ~/Downloads:
$ VBoxManage sharedfolder add "Kali Dev" --name "vbmeida" --hostpath "~/Downloads/"
这条命令将 VirtualBox 主机的文件夹 ~/Downloads 关联到客户机 Kali Dev 的 vbmedia 挂载点上。接着到 VirtualBox 的客户机中查看内核模块 vboxsf 是否加载:
$ lsmod | grep vboxsf
$ sudo modprobe vboxsf
如果想让该模块随机器启动自动加载,可做如下设置
$ su -c 'echo vboxsf >> /etc/modules'
接着再将用户 easior 加入到 vboxsf 组中:
$ sudo gpasswd -a easior vboxsf
现在可以尝试在客户机 Kali Dev 中设置共享文件夹的挂载点,并尝试挂载:
$ sudo mkdir /mnt/share/
$ sudo mount -t vboxsf vbmedia /mnt/share/
$ ls /mnt/share
如果觉得每次要手动挂载共享文件夹麻花的话,也可以在 /etc/fstab 中作如下设置
$ su -c "echo 'vbmedia /mnt/share default 0 0' >> /etc/fstab"
重启系统之后,便会自动挂载共享文件夹。
 
H、更多的桌面应用程序的安装
 
C/C++编译工具
$ sudo apt-get install build-essential gcc-4.8-multilib gcc-4.8-locales gcc-4.8-doc gdb automake libtool

安装更多的手册页 例如 C API 手册页、posix 函数以及开发文档的手册页、C API 手册页、标准类库手册页、C++ API 手册页:

$ sudo apt-get install manpages-dev manpages-posix manpages-posix-dev glibc-doc stl-manual libstdc++6-4.3-doc

C/C++ 的集成开发环境 Linux 下也有很多集成开发环境可以选择,例如 Code::Blocks、CodeLite、Eclipse+cdt 等,这里选择安装 Code::Blocks,最好连带安装上它插件需要的工具 valgrind、asytle、doxygen、cppcheck、cccc、cscope 等:

$ sudo apt-get install codeblocks valgrind asytle cppcheck cccc cscope doxygen

Java 运行环境或者开发工具

$ sudo apt-get default-jre

或者

$ sudo apt-get default-jdk

通常,默认安装是由 OpenJRE 或者 OpenJDK 提供的 Java。接着可以安装浏览器的 Java 插件了

$ sudo apt-get install icedtea-7-plugin

Java 集成开发环境

$ sudo apt-get install eclipse 
 
Python类工具需要:
$ sudo apt-get install python-dev python-vte python-appindicator

Python 的集成开发环境也有很多选择,例如 pycharm、Eclipse+pydev。通常选择前者,不过需要首先确认 Java 开发环境已经安装,然后便可以开始下载并安装它了

$ wget http://download-cf.jetbrains.com/python/pycharm-community-4.5.1.tar.gz
$ sudo tar zxvf pycharm-community-4.5.1.tar.gz -C /usr/local/
$ sudo sh -c 'cat > /etc/profile.d/pycharm-4.5.1.sh << EOF
/usr/local/pycharm/bin/
EOF'

第一次运行 PyCharm,需先执行

$ pycharm.sh

以后执行非常简单。

图形界面开发工具
若想使用 GTK+ 作为界面开发工具
$ sudo apt-get install libgtk2.0-dev libgtk-3.0-dev devhelp libgtk2.0-doc

若想使用 wxWidgets 作界面开发库,则

$ sudo apt-get install wx3.0-doc libwxgtk3.0-dev python-wxgtk3.0-dev

版本控制工具:

$ sudo apte-get install git gitg bzr subversion
 
安装常用的压缩解压工具
$ sudo apt-get install bzip2 zip unzip gzip p7zip unrar arj 
 
密匙、口令、密码缓存管理工具:
$ sudo apt-get install gnome-keyring seahorse pinentry-gtk2 keychain
 
跨平台密码(口令)管理工具:
$ sudo apt-get install keepassX
 
网络下载工具
$ sudo apt-get install amule transmission transmission-cli ftp gftp wget gwget
为了将 gwget 与 firefox 关联,请安装 firefox 的 flasgot 插件。
 
远程登录与远程桌面工具
$ sudo apt-get install openssh-client xtightvncviewer rdesktop
如果用户没有公网 IP 或者独立域名的话,可安装远程协同工具 teamviewer:
$ wget http://download.teamviewer.com/download/teamviewer_linux_x64.deb
$ sudo dpkg -i teamviewer_linux_x64.deb
 
网络上重要开源交流工具(IRC客户端Xchat、新闻组客户端Pan、RSS客户端liferea)
$ sudo apt-get install xchat pan liferea
当然,也可以安装商业交流工具 skype。不过,它只有 32 bit 的版本,因此,在 Kali 64 bit 中安装还需要做一些简单的处理。由于现在 Debian 已经开始采用多 CPU 架构的方式,参看 http://wiki.debian.org/Multiarch/HOWTO。因此,这里需要增加 i386 架构:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
接着便可到 skype 官方网站下载、安装它了:
$ wget http://skype.tom.com/download/linux/skype-debian_4.2.0.11-1_i386.deb
$ sudo dpkg -i skype-debian_4.2.0.11-1_i386.deb
如果安装过程出现问题,可尝试下述方式:
$ sudo apt-get upgrade
$ sudo apt-get install -f skype-debian
希望会有好运气。
 
BBS 论坛浏览工具
$ sudo apt-get install pcmanx-gtk2 qterm
 
文本编辑工具
$ sudo apt-get install nano emacs gedit
 
网页编辑工具
$ sudo apt-get install bluefish
 
PDF 查看工具
$ sudo apt-get install evince
如果想要安装 Adobe Read,请安装 http://www.deb-multimedia.org 提供的非官方 Debian 源:
$ su -c "echo 'deb http://www.deb-multimedia.org/ sid main non-free
        deb-src http://www.deb-multimedia.org/ sid main non-free' >> /etc/apt/sources.list"
$ sudo apt-get update
若碰到下述错误
W: GPG error: http://www.deb-multimedia.org sid InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907
请导入该服务器的 GPG 公匙:
$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 07DC563D1F41B907
更新软件列表
$ sudo apt-get update
接着可以安装 Adobe Read 了:
$ sudo apt-get install acroread-chfonts acroread acroread-plugins
 
MS Word 文档编辑工具 WPS4Linux 的安装,它的官方主页位于 http://linux.wps.cn,现在开始下载
$ wget http://wdl.cache.ijinshan.com/wps/download/Linux/unstable/wps-office_8.1.0.3724~b1p2_i386.deb
不过需要注意,目前的 WPS4Linux 只有 32 bit 版本,因此,在 Kali 64 bit 中安装仍需像前面一样做一些简单的处理:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
如果前面已经处理过了,这里就不必重做一遍。好了,尝试安装下载好的 WPS4Linux 吧:
$ sudo dpkg -i wps-office_8.1.0.3724~b1p2_i386.deb
可能安装过程仍有其他依赖问题,自行摸索吧。
 
词典工具
$ sudo apt-get install stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ec-gb stardict-xdict-ce-gb stardict-langdao-ce-gb sdcv
 
图片及处理工具
$ sudo apt-get install gimp imagemagick eog
 
CHM查看工具
$ sudo apt-get install xchm chmsee
 
影音播放工具
$ sudo apt-get install audacious mplayer smplayer gnome-mplayer 
视频编辑工具
$ sudo apt-get install avidemux cinelerra  lives pitivi winff ffmpeg
音频编辑工具
$ sudo apt-get install audacity mhwaveedit mencoder
光盘刻录工具
$ sudo apt-get install brasero
 
磁盘分区工具
$ sudo apt-get install gparted

安装 plymouth

Debian 默认的启动画面确实很酷,但是一行一行的文字滚动确实很丑陋,为了不给人留下 Dos 命令行的错觉,还是装一个splash,让开机变得漂亮一点。有两种 splash 的选择,一个是 splashy,一个是 plymouth。不过 splashy 似乎有些过时,对 KMS 支持的不好。于是安装 plymouth。

$ sudo apt-get install plymouth plymouth-themes-all

安装以后,需要进行配置。修改 /etc/initramfs-tools/modules 添加以下三行

$ sudo nano -w /etc/initramfs-tools/module
intel_agp
drm
i915 modeset=1

如果使用的是 nvidia 或者 ATI 的显卡,设置会有所不同,具体参考 /usr/share/doc/plymouth 下的文档。接着修改grub 的配置文件

$ sudo nano -w /etc/default/grub
#GRUB_GFXMODE=""
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_GFXMODE=1024x768

运行

$ sudo update-grub2

使上面的修改生效。请喝杯茶继续,革命还未成功。先列出已安装的所有主题

$ sudo plymouth-set-default-theme --list

设定主题

$ sudo plymouth-set-default-theme solar

重新生成 initramfs

$ sudo update-initramfs -u -k all

安装 Dropbox,首先添加 Debian 源

$ su -c "echo 'deb https://linux.dropbox.com/debian sid main
           deb-src https://linux.dropbox.com/debian sid main' >> /etc/apt/source.list"
由于dropbox采用了https协议,所以我们需要安装下面的软件:
$ sudo apt-get install apt-transport-https
接着注入 GPG 公匙:
$ wget https://linux.dropbox.com/fedora/rpm-public-key.asc
$ sudo apt-key add rpm-public-key.asc
$ rm rpm-public-key.asc
更新软件列表
$ sudo apt-get update
开始安装吧:
$ sudo apt-get install dropbox
有可能有依赖问题,需要自行安装python-gpgme:
$ sudo  apt-get install python-gpgme
 
若想安装 Google 提供的一些软件,例如 Google Chrome、Google Earth、Google Talk Plugin 等,请先添加 Google 源
$ su -c " echo 'deb http://dl.google.com/linux/chrome/deb/ stable main
                deb http://dl.google.com/linux/earth/deb/ stable main
                deb http://dl.google.com/linux/musicmanager/deb/ stable main
                deb http://dl.google.com/linux/talkplugin/deb/ stable main
                deb http://dl.google.com/linux/mod-pagespeed/deb/ stable main' >> /etc/apt-source.list"
接着注入 GPG 公匙:
$ wget https://dl-ssl.google.com/linux/linux_signing_key.pub
$ sudo apt-key add linux_signing_key.pub
$ rm linux_signing_key.pub
更新软件列表
$ sudo apt-get update
开始安装吧:
$ sudo apt-get install google-chrome google-earth google-musicmanage google-talkplugin
要注意,Google 只提供了稳定版本的包,请根据 Debian 适当调整设置。

有关 Debian 更多的第三方仓库,请看 https://wiki.debian.org/UnofficialRepositories 的介绍。

I、控制台下常用应用程序
对于那些在控制台下工作的狂人,以下工具肯定是必备的。不过在介绍这些工具之前,先要来说一下使用这些功能的先决条件,那就是在内核等相关位置开启 framebuffer 功能。首先,内核要支持 framebuffer,也即要在内核中开启下列参数
General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/usr/share/v86d/initramfs) Initramfs source file(s)
Device Drivers ->
    Input Device Support --->
        <*> Event Interface
    <*> Connector - unified userspace <-> kernelspace linker  --->
    Graphics support  --->
        [*] Support for frame buffer devices  --->
            [*]   Enable firmware EDID
            <*>   Userspace VESA VGA graphics support
        Console display driver support --->
            [*] VGA text console
            [*]   Enable Scrollback Buffer in System RAM
            (64)    Scrollback Buffer Size (in KB)
            <*> Framebuffer Console support
            -*-   Map the console to the primary display device
            [ ]   Framebuffer Console Rotation
            [*]   Support for the Framebuffer Console Decorations
            [ ] Select compiled-in fonts
如果这些参数已经开启,那么不必重新编译内核;否则的话,请重新编译并安装内核。然后,查看内核模块
$ lsmod | grep fb
fbcon vesafb vga16b
加载这些模块
$ sudo modprobe fbcon vesafb vga16b
为了以后不需要再手动加载模块,可编辑下述文件
$ sudo nano -w /etc/modules
fbcon vesafb vga16b
好了,现在可以查看相关的 VGA 参数了:
$ sudo apt-get install hwinfo
$ hwinfo --framebuffer | grep Mode
根据控制台分辨率,通常是 1024x768,16位,按显示信息选择 VGA 参数。接着在 Grub 的内核参数结尾加入 framebuffer 分辨率参数:
vga=0x317
一切完成之后,重启客户机系统并用 Host+F1~F8(VirtualBox 主机是 Linux 时的按键)切换到 VirtualBox 的虚拟机控制台吧。
 
framebuffer 配置工具
$ sudo apt-get install fbset
控制台字体修改工具
$ sudo apt-get install console-setup console-data
中文显示以及中文输入
$ sudo apt-get install fbterm ibus-fbterm
开机打开数字键盘(即NUMLock)
$ sudo apt-get console-tools
文本浏览器
$ sudo apt-get install lynx links2 w3m w3m-img 
网络聊天工具
$ sudo apt-get install finch irssi
截图工具
$ sudo apt-get install fbcat
图片查看器
$ sudo apt-get install fbi
PDF 浏览器
$ sudo apt-get install fbida-fbgs
控制台下的鼠标支持
$ sudo apt-get install gpm
启动该服务
$ sudo /etc/init.d/gpm start
试试按住鼠标左键拖动选择复制区域,然后右键粘贴。
 

J、在 Kali Linux 中开启 SELinux 与 iptables 防火墙

配置 SELinux,需要确认 Linux 内核与文件系统是否支持。目前包括 btrfs、ext2、ext3、ext4、jfs 与 xfs 在内的文件系统都是支持 SELinux。其次,凡是基于 Debian 内核的 Linux 系统都是具备了运行 SELinux 的能力。但是,如果内核是自行编译的话,请务必确认内核选项 CONFIG_AUDIT 与 CONFIG_SECURITY_SELINUX 已经开启。如果不然,请重新编译内核。一切就绪之后就可以开始配置 SELinux 了。 先安装 SELinux 的基本工具集以及默认策略:

$ sudo apt-get install selinux-basics selinux-policy-default auditd
接着运行
$ sudo selinux-activate
配置 GRUB 与 PAM 并在根目录创建 /.autorelabel。重启系统并等待完成文件系统的标记直至系统再次重启。随后执行
$ sudo check-selinux-installation
检查系统是否正确执行设置并捕获一些 SELinux 的普通问题。例如,若出现 FSCKFIX is not enabled - not serious, but could prevent system from booting... 请检查 /etc/default/rcS 中的 FSCKFIX 配置,设置为 yes 即可。 若前述问题全部解决之后,一个可工作的 SELinux 系统准备好了,不过它还是处于 permissive 模式。这意味着 SELinux 策略不是强制执行的,但所有的 denials 信息会被记录到日志系统。执行
$ audit2why -al
可以查看所有可能的 denials 以及一些简短解释。如果系统日志里没有出现严重的 audit 错误,那么可以放心的使用 SELinux。可尝试临时启用 SELinux 的 enforcing 模式
$ sudo setenforce 1

或者可以在 /etc/default/grub 中增加 enforcing=1 参数到内核命令行然后重启系统永久生效。

防火墙服务有很多,这里以最简单的方式提供,先安装软件

$ sudo apt-get install iptables
创建防火墙脚本
$ sudo sh -c 'cat > /etc/iptables.rules << EOF
*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections 
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Now you should read up on iptables rules and consider whether ssh access 
# for everyone is really desired. Most likely you will only allow access from certain IPs.

# Allow ping
#  note that blocking other types of icmp packets is considered a bad idea by some
#  remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
#  https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
EOF'
然后测试
$ sudo iptables-restore < /etc/iptables.rules
$ sudo iptables -L
$ netstat -nat
如无任何问题,将上述防火墙配置脚本放入网络启动服务
$ sudo sh -c 'cat > /etc/network/if-pre-up.d/iptables << EOF
#!/bin/bash

iptables-restore < /etc/iptables.rules
EOF'

防火墙服务配置完成。

K、最后,Kali Linux/Debian 的日常维护工作:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
 
L、通过前面的介绍,我们了解了 Debian 系统的定制过程。实际上,如果熟悉 Gentoo 基本系统(stage 3)的安装过程的话,我们会发现它们之间有些共同之处,都是利用软件仓库中的包来搭建系统,大部分的步骤也是类似的。这可以说是 Linux 的共性,不仅 Gentoo、Debian 独有。比如,Fedora 系统也可以通过 febootstrap 实现类似的系统定制过程。不过相比 Gentoo 通过源码包编译实现的定制而言,Debian、Fedora 这些利用二进制包来搭建系统,有一些天然的短板。例如,打包好的 deb 包、rpm 包都是预先指定依赖关系的,虽然 Debian、Fedora 可以将二进制包分得很细、打得很小,但是这对于同一个包内的互斥特性是无能为力的。而 Gentoo 则不然,只要软件包的 Ebuild 写得好,那么它的 USE 标记不仅可以拿来控制包的某些依赖关系,也能拿来启用包的某些互斥特性,这使得我们可以随心所欲的调整包的功能。