[syslinux] problem with PXElinux and security of local LAN
Murali Krishnan Ganapathy
gmurali at cs.uchicago.edu
Tue Dec 20 07:48:51 PST 2005
Yet another approach. This does not use PXELINUX! Install the Windows
and Linux images on two partitions of your hard disk (so with this
solution changing the boot image will not be very easy). But it requires
two boots everytime instead of one.
The boot cycle is as follows
(1) Machine boots locally into COMBOOT code
(2) Code checks local machine for boot instructions.
(3) If instructions not found it boots a small linux image
(4) small linux goes online and finds out what the state of this
machine should be (Windows only/Linux Only/Boot Menu)
(5) Stores this information somewhere on the hard disk and reboots
so that COMBOOT code can find this info during next boot
(6) If instructions found, it follows instructions and acts accordingly.
This requires the local machine to have a Windows installation and a
Linux installation which the users can use, and another small linux +
initrd.
As soon as you boot into the small linux, you go online (in one of the
init scripts) somewhere you trust (local webserver perhaps) and download
a small file which says what the next boot image should be
(LINUX/WINDOWS/MENU). The script then writes this information on sector
N of the local hard disk (which is not used for any other thing). The
COMBOOT code checks sector 6 for this information and when found boots
into the appropriate image directly.
Good Things:
(a) Uses things which already exist, i.e. linux code to write this info
to sector N and COMBOOT code to read this info already exist. (see
http://gui.mahamurali.net and click on Autobooting)
(b) No PXELINUX. No TFTP server, so bad guy cannot give you a kernel to
boot from
(c) A change in your local webserver, will affect all clients the next
time they boot. Infact if your logic of (Windows/Linux/Boot Menu) is
simple, this logic can be put as a cgi script on your webserver. So you
dont need to change anything in the webserver at all!!!
Bad Things:
(a) You need to an extra reboot everytime you boot
(b) If you need to change the boot image, you need to change it on
every machine
or setup another image you can boot into on the local machine
(which requires a password) and use that image to help automate the
change of boot image.
Good/Bad:
(a) Machine retains state between reboots, (i.e. local files on machine)
- Murali
Jason Keltz wrote:
> I have two new thoughts on solving this problem, but I'm not sure
> whether either is doable with PXELinux/syslinux..
>
> 1) I've been doing some web searching. It seems like Intel has a BIS
> (Boot Integrity Service) spec that is included in the PXE 2.0 spec.
> The code, I believe, is open source -
> http://sourceforge.net/projects/bis.
> I don't see anything in the PXELinux code about handling BIS. If
> PXELinux could handle BIS, it seems like this would completely solve
> my problem. I could authenticate the code that the PXE server
> receives! (On the other hand, it's not clear if I could authenticate
> the configuration file, but I guess that would only make sense). If
> PXELinux could handle BIS, it seems like it work in a lot of
> situations (like mine) where people have recommended not using PXE.
> Maybe Peter can comment on the feasibility of adding this
> functionality to a future PXElinux?
>
> 2) It is "possible" that I could do what I want to do now with
> syslinux in a different way. The question is, is it possible for
> syslinux to probe a DHCP server for a value and then to act based on
> that value? I don't see anything about DHCP in the syslinux page, and
> the network code may not even be available to syslinux. This is a bit
> like the idea that Murali had. Our machines are supposed to boot
> either directly into linux, directly into Windows, or present a boot
> menu. Before, I was handling the configuration file change on the
> server and using PXELinux. By changing the symlink to the
> configuration file, I could change the options available to the
> users. Basically, my idea is this -- syslinux probes the DHCP server
> for an option that determines how it proceeds. It might be something
> like:
> value of 1 indicates boot directly to linux
> value of 2 indicates boot directly to windows
> value of 3 indicates to present a boot menu.
> syslinux would then either boot directly to linux/windows/present a
> menu. There are a couple of problems with this:
> 1) (again) I'm not sure I can probe a DHCP server in syslinux,
> 2) I'm not sure a syslinux configuration file could act based on the
> condition received in 1.
> 3) In order to install syslinux on the hard disk, it needs to be
> installed into a FAT16 partition. However, by doing this, as far as I
> understand it, there would be no security on the FAT16 partition when
> users boot Windows XP, and hence users could mess with or disable the
> syslinux configuration.
>
> If someone might be able to help me with 2, that would be great.
> If option 1 is magically available and hiding from my sight, it would
> be great if someone could help me figure out how to use it..
>
> Thanks a bunch..
>
> Jas.
>
> _______________________________________________
> SYSLINUX mailing list
> Submissions to SYSLINUX at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux
> Please do not send private replies to mailing list traffic.
>
>
More information about the Syslinux
mailing list