How Much RAM Should I Put On My Virtual Machine? [closed] - virtual-machine

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am installing virtual box on my window
I will use it for anonymous web browsing and nothing else.
I will also install ccleaner on the VM.
The total Amount is 2GB.
How much ram should I put on my Virtual Machine?
Which version of window is the best for Anonymous Web Browsing?
Is linux a better option for anonymity web browsing?

Though i agree with above comments, it doesn't hurt to add some info. I take that you mean you have 2GB Ram in total.
First, the amount of ram required is proportional to how much you actually use it(VM) for and whether will you be using your primary machine in parallel or not.
For e.g. i have a 64 bit system windows 7 with 8 GB ram. I frequently use 1 linux VM in parallel with my host machine. So i have dedicated 2GB per VM. Though i have multiple VM's, it is almost guaranteed that i don't use two VM's simultaneously. However, i am extensively using VM + host together.
Now if you are going to do a lot of browsing, that probably means a lot of tabs, perhaps including you tube videos and stuff. Since your total is 2GB, i won't recommended allocating more than 512MB to your VM, unless you are willing to sacrifice your host performance for the time you are running VM.
Anonymous browsing has little to do with OS rather more important is browser or intermediate application. The only possible difference is for e.g. if you are using Linux and use an open source application such as
tor
which may or may not be available on windows. [Edit: just verified that tor does exist on windows too]
CCleaner is of no use if you are already using a common feature of FF/Ch/IE "Start private browsing". However, this does not leave any thing in your history and cache.
I also believe you are some what confusing anonymous browsing. Use of VM or CCcleaner refers to anonymity which is local to your machine i.e. if some one else uses your pc, he/she would not be able to track what you have been doing by ordinary means.
However, your real ip and request info is not hidden from your network in general. Using of Tor or some proxies etc. results in network anonymity where you leave no trace on a site which you have visited or perhaps that is blocked in your region.
Another thing is, if you have a 32bit machine / OS which is windows, it doesn't utilize more than 3GB ram in practice.

regarding ram: 0.5 gb should be enough but in any case virtual box recomends those values when you telling it what you about to install on the vm.
Windows 7 is best os I seen comming out from MS house till today especially in security.
IE9 private browsing can do what you ask for without a vm at all.

Related

make virtual machine appear a real machine to applications

I am using VmWare Workstation 14 and when I install an operating system (any of them) some programs and apps are able to identify that I am using a virtual machine.
I have seen the vm is using virtualized devices that are really named virtual. like for example VmWare Network Card or etc. Is there any way to install fake real like hardware drivers on these virtual machines? Can this simple change make the app see this vm as a real machine?
How to make this virtual machine appear as a real machine to applications?
Is there really any way?
This was asked as a yes-or-no question so my answer is:
Yes... probably. But it's a lot of work.
There's a 2006 presentation by Tom Liston and Ed Skoudis that talks about this: https://handlers.sans.org/tliston/ThwartingVMDetection_Liston_Skoudis.pdf
It focuses on VMware, but some of it would also apply to other types of Virtual Machine Environments (VMEs).
In summary, they identify as many things as they can find that would allow VM detection, which would each have to be addressed, and they also mention some VMware-specific mitigations for them.
VME artifacts in processes, file system, and/or Windows registry. These would include the VMtools service and "over 50 different references in the file system to 'VMware' and vmx" and "over 300 references in the Registry to 'VMware'", all of which would have to be deleted or changed.
VME artifacts in memory. Specific regions of memory tend to be different in guests (VMs) than hosts, namely the Interrupt Descriptor Table (IDT), Global
Descriptor Table (GDT), and Local Descriptor Table (LDT). The method by which the VM is built may allow these to appear the same in guests as they do in hosts.
VME-specific virtual hardware. This would include the drivers you mention like VmWare Network Card. The drivers would have to be removed or replaced with drivers that do not match the names or code signatures of any virtual drivers. Probably easiest to do on an open-source system, simply by modifying the driver source code and build.
VME-specific processor instructions and capabilities. Some VMEs add non-standard machine language instructions, or modify the behaviour of existing instructions. These can be changed or removed by editing the VME source code, at the cost of convenient host-guest interaction.
VME differences in behaviour. A VM might respond differently on the network, or fail at time synchonization. This could be mitigated with additional source code changes (on both host and guest) to make the network traffic look closer to normal, and providing sufficient CPU cores to the VM would help make sure it does not run more slowly than wall clock time.
Again this is from 2006, so if anyone has a more up-to-date reference, I'd love to see their answer.

writing a network discovery tool in Objective-C [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I want to embark on a project for a CS class.
Can anyone provide insight on how to write a tool that will map out a network and state device info, IP info, open ports, etc.
I will be using OS X.
There's a few things you can use to discover the nodes on a network.
SNMP will help detect a few different network devices. Broadcasting an SNMP get request for sysName.0 will give you results from anything that responds to SNMP (even if they do not have a value for the OID). Some may be printers, some may be servers, some may be NAS etc. sysDescr.0 can also be used although for many network devices (in my experience) it returns the same value as sysName.0. Mac OS X comes with the NetSNMP libraries. Once you have received responses from SNMP agents, you can then send extra SNMP requests to further determine details about the device. There are human readable files that explain these in detail in /usr/share/snmp/mibs.
You can use a broadcast ping (your application will require root privileges to give you raw access to the Internet Protocol for constructing a broadcast ping packet, or a ping packet in general). Just broadcast a few packets and wait for replies. The source code to BSD's ping utility used in Mac OS X can be found at Apple's website. The ping executable is usually installed with owner root and with the setuid bit, meaning that the ping executable is run as root even when invoked by a non-root user (this is why non-root users can use ping). You'll notice though that in ping's source code it only creates the socket as root and then immediately drops its root privileges.
Zeroconf/Bonjour will also help. Have a look at Core Foundation's CFNetServices or Foundation's NSNetServices. Mac systems can be configured to publish themselves very easily. There are also Windows and Linux implementations but of course, these need to actually be running on the network devices before you can detect them with your program.
In order to determine what ports are open, you can simply run a loop over the desired port range and attempt to make a connection. Keep in mind though that many servers consider this an attack and will drop packets and perhaps even permanently blacklist your IP. Once you have made a successful TCP connection, you can look up the port number in the /etc/services file to determine the name of the service. This can be done using the POSIX function getnameinfo.

What do I need to know about running my own dedicated server (with windows 2008)

I'm thinking of getting my own dedicated server with the following stats:
Processor: Celeron 440 2.0 GHz
Memory: 1 GB
Primary Hard Drive : 160 GB SATA II
This will be running Windows. I have some experience with my local IIS and playing around with servers, but I have never set one up (at least a Windows one) and I've never dealt with DNS/backup/security issues.
My question has two parts:
Will this server be able to run Windows 2008, SQL Server, and possible Exchange on it without trouble. I'm worried about the processor and RAM.
Are there any guides/tutorials that talk about how to admin a windows server from start to finish. (I'm looking for something like the FAQs slicehost has for *nix based servers).
You WILL run into a problems with RAM. Refer to MS documentation and minimum requirements (SQL Server and Exchange). Also please mind that new releases of Exchange run only on 64bit systems.
Personally I would recommend installing CORE version of W2K8 if you plan to go with your described configuration.
It depends from user load. If you have about 1k unique users / month this means that probably, you will have 30 users per day - roughly 1 per hour. I think you will use more CPU working on this computer personally. So it really depends from user load.
If I were you, I would add more RAM to have something about 4 GB. RAM is the cheapest upgrade available.
You state "I've never dealt with DNS/backup/security issues."
I would suggest to you that these are the most important issues. You need to stay on top of security, applying security patches, insuring firewalls are properly configured etc.
Having been called after the fact for websites that have been hacked, I can tell you it is not pretty. Learn all you can before you stand up this server on the internet.

Portable Windows Development Environment and USB Thumb Drives [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I find myself wasting more and more time the last few years when I have to reinstall an OS and 20+ development tools and apps. I'm looking to do more work in virtual machines.
Now that you are starting to see 32GB and 64GB thumb drives. I was wondering can you run a Virtual PC or VMWare image from a USB Thumb drive? Any issues with doing this? I would plan on backing up the image daily just in case something happened to the drive.
Running a VM off a flash drive would have positively putrid performance. I guess you could copy the virtual hard drive to local storage first, though. I run my VMs off an external hard drive, myself.
I suggest you invest in an external SSD to put those VMs on. Thumb drives are not known for speed.
This is entirely doable. Take a look at VMware Player -- To Go. Performance will be worse than an internal hard drive but not completely terrible. Jeff did a brief comparison.
I've never tried a thumb drive, but I use external USB drives for virtual machines all the time. I use VirtualPC 2007 and have had no problems. In fact, sometimes if the host machine is on the weaker side, having the VM on an external drive increases performance. I recommend the external USB drive route.
Windows XP (and Vista and 7) can boot on multiple hardware configurations, each with different drivers (retail license, not OEM).
I started out with a 2.5" USB HDD for my portable enviroment. It was booting fine on multiple machines (#home, #work, or in any VMWare).
I don't recommend a flash stick, but I do recommend a SSD stick. Today you can find SSD sticks with 2 ends, one USB and one eSATA.
For booting USB drives with Windows XP you need USBoot.
After booting the first time, Windows will install some drivers, including the Disk Controller drivers (without which, if booting directly on SATA Windows would BSOD with 0x0000007b).
Since the first Intel SSD came out, I switched to using a SSD.
I have 2 2.5" trays (insert 2.5" drive like a floppy) both #home and #work.
I can boot that Windows in VMWare and on many other computers using USB (and I have, and it was life saving). I even booted from the backup VHD once :)
I use Windows Backup to backup to a versioned VHD (in command line, see wbadmin command on Windows Vista, 7, 2008, 2008 R2).
I can restore the entire enviroment including the OS pretty fast, and I have recovered from several disasters.
I also use EFS for important files (don't forget to backup your EFS files).
I pretty much have the smallest laptop arround, and I am very happy I don't have to carry a laptop bag back and forth to my workplace.
USBoot should work with Windows Vista and 7, yet I haven't had the time to switch (time consuming process for the size and complexity of my stuff).

Setting up a development environment INSIDE a virtual machine

Heres the problem. I use around three different machines for development. My partner is using two. We have to go through the same freaking set up procedure on all five machines to get to work.
Working with a php project here, so:
Install and configure, PDT, a php debugger, and some version of XAMPP.
Then possible install an svn client, and any other tools.
Again, to each of the five machines.
What if, instead, we did all of this once, in a virtual machine that is set up with the same stack, same versions, as the production server. Then each of us could grab a copy of the VM image, run that image on each of the five machines and do all of our development in that VM. Put Eclipse, apache, mysql, the works, all in that vm.
The only negative of this approach, and please correct me on the only part, is performance. Is it really that big of an issue though? The slowest machine out of the five is a Samsung NC10 powered by an Intel Atom 1.6 ghz processor.
Do you think this is possible and practically usable? Or am I crazy?
I use a VM for development (running on my laptop) and have never had performance problems. Another approach that you could take would be to image the drive in the state that you want. Use Acronis or Ghost to re-image each machine when you need to. Only takes about 5-10 minutes to restore an image on any modern PC.
I use a VM for all my "work" as it keeps it away from my "play". This set up allows me to use the office VPN without exposing my whole machine to the office environment (which I trust about as much as the internets. ;-) Also I don't have to worry about messing up my development environment by trying games or other software. My work VM is currently running inside VirtualBox but I have used VMWare in the past. I have only noticed performance issues when using graphic intensive programs like Webex or the Terminal Server Client.
It can certainly be done. What turns me off is the size of the VM image, which would normally be several GBs. Having it on a network share means it can take longer to transfer then your current setup process takes. I guess an external hard drive would be the easiest way to move it around.
Performance wouldn't be an issue with any web development.
I have to ask why your current machines need to be "re-imaged" each time you sit down for work?
If you're using Windows you'll probably want to use SYSPREP on the master image so that the 'mini-setup' runs when you boot up the virtual machines for the first time.
Otherwise in terms of Windows' point of view, the machines have the exact same SID, hostname and other things - running multiple machines with the same SID on the same network can cause tons of headaches. Even more if you want them to communicate with each other.
I've run websphere for zSeries on a vmware virtual machine with no problem and websphere is more resource intensive then any PHP stack. I find that having a multi core machine or at least hyper threading makes it run a lot faster.
With vmware, disk operations are slower. For PHP development I doubt it would be a problem, but you'd definitely notice it if you are compiling a large C++ project. There is also Sun's VirtualBox which is free, and the latest version is rather nice (but I haven't looked at how slow disk operations are yet).
I am using that idea in practice. Virtual machines are generally great for development.
To run on multiple operating systems and multiple separate development environments.
Preserver older development environments for later support.
Can be easily backed up, when hard drive crashes no need to start from beginning.
Can be copied from developer to another, so everyone don't have to do tedious installations and configurations.
Down sides are:
Virtual machines are slower, you need more powerful computers than you would need otherwise. I would recommend having at least 4 G of ram, but preferably more like 16, fast multi core processors and fast hard drives.
Copying Windows OS virtual machines, each used copy of virtual machine should have it's own product key. When you make a copy, it needs to be registered with new product key.
Did you think about a software configuration manager like ansible, chef or puppet? With such software automation of such tasks is very easy! It can even create fresh vm and then configure it.