Tuesday, July 5, 2011

SSH with Empty Password and no ssh keys

This is a guide to zero security in linux. It is applicable only in places where security is not a threat and there is no threat from external networks.

The following options would allow a system running ssh to have a user with empty password so that you can use this user to login without any password or ssh keys.


I am adding a test user for this purpose.

useradd noneknowme
passwd -d noneknowme

Configure ssh server to allow empty passwords.

Edit the following line in /etc/ssh/sshd_config
================
PermitEmptyPasswords yes
================

Restart sshd using /etc/init.d/sshd restart

Now you should be able to access the host with ssh with username noneknowme without any issues.
===============
ssh -l noneknowme test
[noneknowme@test ~]$
================

Don't try this . I am using this as a reference. Thanks to linuxquestions.org

Friday, July 1, 2011

script to check swap usage by process ( approximate )

The following command returns the total swap usage.

swapon -s

The following script would obtain the total MB of swap used obtained from proc filesystem and sum it up.

for pid in `ps -ef|grep -i java| grep -v grep|awk '{print $2}'`; do echo -n "Pid: $pid "; cat /proc/$pid/smaps |grep -i swap| awk '{SUM += $2} END {print "SUM: " SUM " kB (" SUM/1024 " MB)"}'; done

Thanks to linuxquestions.org

Monday, May 30, 2011

Zero Padding in Bash

I was wondering what is the best way to do "Zero Padding" in Bash. Suppose you need to iterate through a for loop and you need 01, 02, 03 sequence instead of 1, 2,3 then that is Zero padding.

Some of the methods I could get from the internet.

1. Using printf

for ((i=2;i<16;i++)); do printf "%02d" $i; done

2. Using seq

There were couple of solutions when you use seq

* seq -f '%02g' 1 15

* seq -w 1 15


Enjoy being fast using bash..

Wednesday, December 8, 2010

Backup mails in Thunderbird from Outlook

It has been a hard time working with Outlook and I was worried that it could crash at any time. I thought of backing up all the mails to thunderbird in another linux box. Reading the documentation I couldn't figure out any method using which we can import the .pst files to the thunderbird client.

Here is what I did to do the migration. Initially I took the backup from the outlook

Outlook -> File -> Import or Export -> Export to a file -> Personal Folder File (.pst )

Now it might take some time to take a complete backup. At the end we will get a big backup.pst file.


Transfer the file over to the Linux Desktop.

Since there is no way to import the .pst file directly to thunderbird. We might have to convert to mbox format to get this done. There are many tools to do that. In my case I used readpst.

1. Install Readpst

Readpst is with the package libpst.

yum -y install libpst

2. Convert the .pst file to mbox based format.

mkdir mail

readpst -o mail backup.pst


Now that we have mbox format of all the folders.

3. Install MboxImport utility in thunderbird.

Download the xpi from http://nic-nac-project.de/~kaosmos/ImportExportTools-2.4.1.xpi

Thunderbird-> Tools -> Addons-> extensions -> Install
Select the xpi file that you downloaded earlier and install it. Restart tomcat for the new extensions to take effect.

4. Import the Mbox mails to thunderbird.

Now that we have the mbox based mails in mails directory we can import the mails and account to thunderbird.

Thunderbird -> Tools -> ImportExportTools -> Import Mbox File -> Import entire directory (including sub directory)

Now you can select the "mails" directory in which we saved the mbox format files.


It might take some time for the import to happen. Now that you have a backup..Don't worry about old mails..

Monday, September 6, 2010

Add a Recovery Disk to KVM and Recover the VM

There might be situations when you see a corrupted File system in KVM VM. In such situation you can add a ISO rescue cd and fix the file system errors.

For example I have a VM named "centos". Take the VM configuration file /etc/libvirt/qemu/centos.xml

Add the following lines in the configuration file above the disk image of the VM.









Then execute the command virsh and enter the following command.

virsh # define /etc/libvirt/qemu/centos.xml
Domain centos defined from /etc/libvirt/qemu/centos.xml

virsh # start centos
Domain centos started


During booting process press f12 so that you get the booting option and select CDROM. Now that the VM boots with the ISO image and you can do the filesystem recovery process.

fsck -y /dev/mapper/VolGroup00-LogVol00

Reboot the VM and ensure that you are able to access the VM without any file system errors.

Friday, August 6, 2010

Enable GPRS with Vodafone INDIA in Motorolo Milestone Android device.

Don't ever try to get help from the Vodafone Customer care. I searched google to get the following working settings. I use vodafone internet as they provide 2GB limited internet access for 95 RS which is quite affordable.

1. Ensure that VMC is activated.

make sure  that vmc is activated send a sms ACT VMC to 144

2. Configure the following settings..


This is where u find the settings in milestone:
Settings->Wireless  & networks->Mobile networks->Access point names

 Here are the settings:



Add new APN.

Homepage: Any ****.

Connection Name: Any ****
Access Point Name: www
User Name:Leave it.

Password: Leave it.
Authentication: none.
Proxy: None

Port Number: 0

Leave rest of the settings as they are - in default state. n enjoy.

I guess no more calls to vodafone cc. -

Thursday, May 6, 2010

KVM Virtualization in Fedora

WHY KVM

KVM is a full virtualization technology which uses the linux kernel for efficient hardware virtualization.

It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is underway to get the required changes upstream.

Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.

* Ensure that your processor support virtualization

[root@fedora ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority

* Install the required kvm packages

yum install kvm qemu libvirt python-virtinst

qemu: we use qemu for processor emulation. We use full system emulation. QEMU emulates a full system (for example a PC), including one or several processors and various peripherals. It can be used to launch different Operating Systems without rebooting the PC or to debug system code.

libvirt: It is a tool to interact with virtualization capabilities of linux kernel.


In order to use Qemu support in libvirt we have to use the libvirt daemon.

/etc/init.d/libvirtd start

Qemu communicates with libvirt daemon using URIS.


So to connect to the daemon, one of two different URIs is used:

* qemu:///system connects to a system mode daemon.
* qemu:///session connects to a session mode daemon.

Inorder to check whether they communicate without any issues. Check the following command and output.

[root@fedora ~]# virsh -c qemu:///system list
Id Name State
----------------------------------


Usually all the documents mention to use a bridged setup so that internet is available to the hosts. In my setup I configured iptables with SNAT so that the VMS can communicate to the external network.

Install Virt Manager:

Virt Manager provides you a GUI to manage the VMS.

yum install virt-manager


Creating a centos VM.

virt-install --connect qemu:///system -n centos5 -r 512 --vcpus=2 -f /opt/kvm/centos5.qcow2 -s 12 -c CentOS-5.4-i386-netinstall.iso --vnc --noautoconsole --os-type linux --os-variant rhel5.4 --accelerate --hvm


-r 512 = RAM
--vcpus = virtual cpus
-f /opt/kvm/centos5.qcow2 = Storage file used to store VM data
-c ISO file to install the VM from
--os-variant = You can find the OS - Variant list by using man virt-install

If you have additional partitions then you can use it as a LVM disk and configure individual LVM disks for individual hosts.

You can use virt-manager to proceed with the rest of the installation process. You can also use vncviewer to proceed with the installation

yum install vnc
vncviewer localhost:0 # If you are having a single host.

Suppose that you are having multiple hosts then you find the vnc ip and port and then connect using vncviewer

[root@fedora ~]# virsh vncdisplay centos5
:1

root@fedora ~]$ vncviewer localhost:1

TigerVNC Viewer for X version 1.0.0 - built Oct 26 2009 10:57:15
Copyright (C) 2002-2005 RealVNC Ltd.
Copyright (C) 2000-2006 TightVNC Group
Copyright (C) 2004-2009 Peter Astrand for Cendio AB
See http://www.tigervnc.org for information on TigerVNC.

Wed May 5 22:20:18 2010
CConn: connected to host localhost port 5901
CConnection: Server supports RFB protocol version 3.8
CConnection: Using RFB protocol version 3.8
TXImage: Using default colormap and visual, TrueColor, depth 24.
CConn: Using pixel format depth 24 (32bpp) little-endian rgb888
CConn: Using Tight encoding







Configuring Network for the VM.

In my case virt-manager uses the ip range 192.168.122.0/24 which is default. You can change the default by running the following commands and modifying the entries.
virsh net-edit default
virsh net-destroy default
virsh net-start default


I used SNAT based forwarding. You can also use MASQUERADE.

My eth0 interface ip was 192.168.1.221 and hence my iptables command was

iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j SNAT --to 192.168.1.221

echo 1 >/proc/sys/net/ipv4/ip_forward



Now you should be able to connect to external network from VM.


This seems to be the future to virtualization as we are using the kernel to manage the hardware virtualization which would improve effeciency of the system.