导读
个人购买的服务器价格比较昂贵,同时配置也不怎么高,更多的人就更倾向于在寸土寸金的服务器上安装linux系统,还是黑窗口的那种,图形界面真的是很吃资源,不过本篇呢,小易逆向而行,满足有些小伙伴图形 kali 之路的通畅之行。
碎碎念
小易个人比较主张,承载工具的机器不应外放,始终是个隐患,外部不论何种服务器,在小易眼中,更倾向于用作一个跳板,利用工具尽最大能力不落地目标机器,包括沿途的这些个节点。现在我要开始违背我的意志编写本篇文章了,哈哈。
docker 与 lxc 的抉择
早先,小易写过一篇《docker-compose 构建远程桌面 kali》,不过写完没多久,小易就转战lxc了,只是一直懒得更新技法,各大的网友给的鼓励不够,看的人也不咋多艾,为啥子,基于 docker 很快就不搞了呢,docker与lxc同样都是容器,在资源利用方面的优势不容质疑,不熟悉docker的网友,可能遇到点问题,就把容器给删了,在文件持久性方面,对于桌面系统不友好,容器一毁数据日志皆可能被毁,作为生产使用的kali系统如何能忍受这个问题,当然是不可忍受的,再者说了,谁不希望自己在使用一个系统就像在使用一个完整系统一样,docker 总感觉在系统独立性体现方面不及 lxc ,所以,转战 lxc 吧。
设计概要
首先,假设小易是熟悉 lxc 的那个人,lxc 跑的独立容器需要具有独立的内部IP地址,且必须与主机有连接,这里的主角桌面的Kali Linux,更多希望22、3389即安全shell或者图形化管理端口对外即可,这里小易极力鼓吹有条件的,本地搞个jumpserver,连上远程桌面的Kali,那种体验真心推荐试一把(缺点是很吃网络带宽)。所以,要将管理端口对外的话,就需要在母机上用到目的端口映射,出网方面,如果你是个谨慎的安全爱好者,就爱走代理,那么在母机上部署个代理给它就好了,也就免除在母机上为它做一次原地址转换并伪装实现上网。现在整个需求已然明确:
- kali 自身上网
- 管理端口对外
- 图形 X-window 系统
给鸡蛋挑挑刺吧
上边给大家伙描述了一个美好的画面,现在抛出点不好的,这样你得习惯每次需要回连操作的时候,手动在母机上做一次目的端口映射,着实挺麻烦的,不过,你的机器就打算将端口供给kali使用的话,也不是没有破解之法,批量端口转发吧,最开始就把配置好,一劳永逸,注意内外端口号要一一对应。小易做的时间久了,喜欢使用的时候就给它映射一下,不用就取消映射。如果你知道如何将lxc容器的网络配置成共享母机的,麻烦给我留言,我给送上双手666,哈哈。
模拟环境的实战
小鸡配置信息
- CPU: 2 核心
- 物理内存: 4GB
- 交换分区: 4GB
- 存储:80GB
- 操作系统: debian 11
正式开始
-
安装基础软件包
apt install -y lxc bridge-utils ipset ufw net-tools
-
配置 lxc 存储到固定目录
/etc/lxc/lxc.conf
内容如下:lxc.lxcpath = /data/lxc
-
kali lxc 清华镜像站获取最新包
mkdir -p /data/lxc/05-006-kali/rootfs cd /data/lxc/05-006-kali/rootfs wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/kali/current/amd64/default/20220401_17%3A14/rootfs.tar.xz xz -d rootfs.tar.xz tar -xvf rootfs.tar rm rootfs.tar
-
配置虚拟网卡以供 kali 接入
... auto vmbr0 iface vmbr0 inet static address 10.8.6.1/24 bridge-ports none bridge-stp off bridge-fd 0 ...
# 重启网络 /etc/init.d/networking restart
/data/lxc/05-006-kali/config
内容如下:# Template used to create this container: /usr/share/lxc/templates/lxc-download # Parameters passed to the template: -d kali -a amd64 # For additional config options, please look at lxc.container.conf(5) # Uncomment the following line to support nesting containers: #lxc.include = /usr/share/lxc/config/nesting.conf # (Be aware this has security implications) # Distribution configuration lxc.include = /usr/share/lxc/config/common.conf lxc.arch = linux64 # Container specific configuration lxc.apparmor.profile = generated lxc.apparmor.allow_nesting = 1 lxc.rootfs.path = dir:/data/lxc/05-006-kali/rootfs lxc.uts.name = 05-006-kali # Network configuration lxc.net.0.type = veth lxc.net.0.link = vmbr0 lxc.start.auto = 1 #lxc.apparmor.profile = unconfined lxc.cgroup.devices.allow = a lxc.cap.drop =
注意:lxc.rootfs.path 和 lxc.uts.name 改为你自己的哈
-
配置kali自身的网络地址
/data/lxc/05-006-kali/rootfs/etc/network/interfaces
内容如下# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.8.6.2/24 gateway 10.8.6.1 dns-nameservers 192.168.15.1 source /etc/network/interfaces.d/*.cfg
-
启动kali系统
lxc-start -n 05-006-kali lxc-attach -n 05-006-kali
-
修改主机名
/etc/hostname05-006-kali
-
配置kali联网需求及管理端口的对外映射
/etc/rc.local
内容如下:#!/bin/sh # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. ipset -N extranet_access iphash ipset add extranet_access 10.8.6.2 # kali host ip address iptables -t nat -A POSTROUTING -m set --match-set extranet_access src -j MASQUERADE iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 2222 -j DNAT --to-destination 10.8.6.2:22 iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 3389 -j DNAT --to-destination 10.8.6.2:3389 #iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 4444 -j DNAT --to-destination 10.8.6.2:4444 #iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 4433 -j DNAT --to-destination 10.8.6.2:4433 exit
注意:ens18 为绑定对外IP地址的接口,另外需要在终端即时之行一次
-
配置开机自启服务
chmod +x /etc/rc.local systemctl enable rc-local
-
普通用户创建
adduser kali # 假设这里密码为123456,演示密码弱,建议大家伙设置强密码 usermod -aG sudo kali #将 kali 加入特权组
-
sudo组免密特权操作
/etc/sudoers... %sudo ALL=(ALL:ALL) NOPASSWD:ALL ...
-
kali 管理服务部署
apt update apt install openssh-server kali-desktop-xfce xorg xrdp iputils-ping -y systemctl start ssh systemctl start xrdp systemctl enable ssh systemctl enable xrdp
-
kali 工具子集
- kali-linux-headless
- 无图形化UI的工具集,包括官方镜像里包含的工具。
- kali-linux-large
- 比较完整的套装,占用空间较大,建议30G以上存储
- kali-tools-web
- web应用专用工具集,大概磁盘占用 7.6G ,建议总容量在 20G以上的可以考虑
- kali-tools-wireless
- 无线攻击工具集合
- kali-tools-post-exploitation
- 后渗透集合
- kali-tools-information-gathering
- 信息收集集合
- kali-tools-database
- 数据库专集
- kali-tools-exploitation
- 漏洞利用工具集合
- kali-linux-headless
-
套餐按需加强
-
如果你的vps配置比较高,如存储容量高达30G以上,可考虑弄个大号版的kali套装
# 大号套餐安装示例 apt-get -y update && apt-get -y upgrade && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ kali-linux-large \ pciutils \ bash-completion && \ apt-get autoremove -y && \ apt-get clean
-
如果你的配置支撑不了,选个你专长的工具集合吧,中途遇到需要额外增加的,再从kali软件源安装也挺方便的,这种套餐集合真的很灵活的。如下链接是涉及较全的官方文档,可移步查看。
-