Monthly Archives: December 2011

rtmpdump and ssh tunnel / socks proxy

You can use rtmpdump on linux to download videos from a page that uses rtmpe / flash to display the videos. If you want to, you can also run an ssh tunnel. This could be used with benefit if you want to watch videos from a web site that you can’t because they’re restricting access to it based on IP addresses.

1. yum install rtmpdump (apt-get install rtmpdump i ubuntu)
2. ssh -D 2001 server-med-sshd
3. rtmpdump -S localhost:2001 -r rtmpe:// -o /tmp/fil1.mp4

rtmpe doesn’t work with normal http proxy because it doesn’t use the web browser’s proxy settings. It also operates on port 1935, 443 and lastly it tries on port 80 if I googled right.

A VPN might be possible to use, but does that only work if you send all traffic through the VPN?

This tool should work on Windows as well.

How to find things in Linux man pages

There’s a couple of places (naturally).

It’s easy to be fooled and think: “anybody can type man man”. But in all fairness, you need to figure out which man page to look into, or what command to run and sometimes it’s just a blank.

In RHEL there is /usr/share/doc where there are some special places, for example /usr/share/doc/initscripts*/sysconfig.txt for all config files that relate to the boot-up process.
There is also /usr/share/man. In /usr/share/man/man5 which has all the level 5 man pages in gzip format. For example “man 5 yum.conf” you can find in /usr/share/man/man5/yum.conf.5.gz.

To open a man page you just type ‘man yum’. To get the man page for yum, or ‘man man’ for the manual for man.

To search through man-pages you can use either of these (they are the same):

man -k yum
apropos yum

While inside a man-page you can search by typing:
and then what you want to search for
and then ENTER.
Like this: /priority
This will hilight all the matched entries, you move to the next match with ‘n’.
This might differ between operating systems, it depends on which viewer is used to present the man page.

Sometimes these don’t find what you are looking for.
In that case you could manually move into /usr/share/man/man5 and hit:

zgrep priority *

to grep through the gzip files looking for any entries that says ‘priority’.

or, if you want to you could use this to search through all directories:

find . -name "*"|xargs zgrep -i priority

or even better (if you’re not looking for a language specific man page):

find /usr/share/man* -name "*"|xargs zgrep -i gpgcheck

These are all relatively slow though, if you read this and have any suggestions please let me know :)

Red Hat Certification – RHCE – Preparation

Wow, there’s lots of it in there.
Some of it is about networking and a lot about individual services.
I haven’t actually planned to go get the exam soon, but I think just going through these objectives will make me better at Linux. Anyway, if I pass the RHCE, that extends the RHCSA expiration automagically.

This is going to take a while to do. I will update this post as I progress through the sections.

This is a copy of the objectives from

System Configuration and Management

Routing / NAT

  • Route IP traffic and create static routes
  • Use iptables to implement packet filtering and configure network address translation (NAT)

For the two above I think I need to use another machine. Maybe the IBM T40 could be of some use again. Install SLC via USB maybe! /2011 12 18: update: Nope, T40 didn’t like booting like that. So, booting via DVD instead. But, maybe I can boot via the small CD and then load the files off of an NFS-server instead. Turns out the CPU in my laptop does not have PAE and thus cannot install anything after RHEL5(possibly) with the default isos. There is a guide on that tells you how to do it via a fedora netinstall iso.


  • Use /proc/sys and sysctl to modify and set kernel run-time parameters
  • Configure system to authenticate using Kerberos
  • Configure a system as an iSCSI initiator that persistently mounts an iSCSI target
  • Produce and deliver reports on system utilization (processor, memory, disk, and network)
  • Use shell scripting to automate system maintenance tasks


  • Configure a system to log to a remote system
  • Configure a system to accept logging from a remote system


Network Services

Network services are an important subset of the exam objectives. RHCE candidates should be capable of meeting the following objectives for each of the network services listed below:

  • Install the packages needed to provide the service
  • Configure SELinux to support the service
  • Configure the service to start when the system is booted
  • Configure the service for basic operation
  • Configure host-based and user-based security for the service

RHCE candidates should also be capable of meeting the following objectives associated with specific services:


  • Configure a virtual host
  • Configure private directories
  • Deploy a basic CGI application
  • Configure group-managed content


  • Configure a caching-only name server
  • Configure a caching-only name server to forward DNS queries
  • Note: Candidates are not expected to configure master or slave name servers


  • Configure anonymous-only download


  • Provide network shares to specific clients
  • Provide network shares suitable for group collaboration


  • Provide network shares to specific clients
  • Provide network shares suitable for group collaboration


  • Configure a mail transfer agent (MTA) to accept inbound email from other systems
  • Configure an MTA to forward (relay) email through a smart host


  • Configure key-based authentication
  • Configure additional options described in documentation

RHCSA – Rapid Track – Day 5 – Exam

Just did the exam.
Not bad at all, I really enjoyed this hands-on exam.

Great way to test someone’s skills, although I thought it would be harder. But maybe I got lucky with the tasks.

I believe this RHCSA Rapid Track (along with My Own Preparation ™) and learning how to work inside a terminal/console is enough.

Can’t wait until next week to find out how it went!

RHCSA – Rapid Track – Day 4

Last day!

A little more kickstarting, LVM – logical volume management and File ACL.
Then a rehearse of the previous chapters.

Feeling a bit excited about tomorrow!

These ACL were a bit more complex than I thought, but they could be made very complicated if you want to. But there’s the default ACL and then there’s the normal ones. Chmod +s for sticky bits.

Also got a 4GB USB pen that does about 4.4MB/s :p

Some important ones:

mount -o remount,rw /
kernel-doc package and /usr/share/doc/kernel-*
rpm -qd; rpm -qc

Some important but not importantest:

getsebool -a
setsebool -P
usermod -a
sssd - service that caches authentication stuff

/etc/auto.master ->

/home/guests    /etc/auto.guests

/etc/auto.guests ->

* -rw nfsserver:/path/to/mount/on/home/guests/&

If on nfsserver there is an nfsshare that is: /path/to/mount/on/home/guests/
and in there you have home directories for users. Then this will automount these directories when anybody tries to access them. Same concept as doing:

ls /net/nameofnfsserver/

RHCSA – Rapid Track – Day 3

Wow, what a day!

Some great stuff today:

It ended with configuring a kickstart file, starting an unattended installation via PXE by referring to said kickstart file on an http-server.

Before that we were playing with partitioning, making swap, encrypting with cryptsetup and LUKS. Also very interesting.

After we learned about partitioning we did changing booting kernel parameters, resetting root password, editing grub, loading modules, setting module specific parameters etc.

And we started the day with SELinux. Very interesting, a lot of opinion about that in the room but honestly I can see that SELinux is extremely useful and doesn’t cause much harm on a desktop. Especially one where you don’t run any services. Also, there’s so often 0-day exploits for various net-services that running SELinux can’t be bad, right? There’s probably lots of other stuff you can do to do hardening in a Linux system.

Teacher did not mention chcon at all, only restorecon.

More thoughts

This RHCSA course do assume that you know a bit. For example it assumes that you know scripting, we’re not going through that at all. Using vi, less, are also assumed. Parsing, grepping etc. There are people struggling keeping up in class.

Going through all the objectives before attending is a great idea. It gives you some breathing room while doing the exercises in class and if you have stumbled upon and questions while you were experimenting yourself – you have a great opportunity to ask these in class. Another good thing with this is probably that it makes you faster at doing the task. If you can reset the root password on a VM in 60 seconds, instead of 300s – because you’re wondering about what commands to run, what parameters to send and how to send them, etc, that’ll save you a lot of time.

Mini Book Review

But even that is not enough, you really need to be experienced with Linux before. How to use the CLI and things like that. There are some good books around. Such as the book UNIX and Linux System Administration Handbook. I haven’t read all of it yet, actually just the part until Perl scripting, which is only the 2nd chapter! The stuff before chapter 3 are just basic linux administration / using the system. After that it goes into booting, filesystem, basically everything, and this is with some serious depth. Which is not for me.


Found on youtube. Pretty cool, snapshotting in LVM!

RHCSA – Rapid Track – Day 2

I wrote in the preparation that there were no ‘set up ftp/www service’. What do you think we did today in the course? Set up vsftpd and httpd :)

Ssh hardening, set up vnc server, configure firewall via gui, ntp setup. Stuff like that.

It’s getting closer! I believe tomorrow will be even more challenging, if there’s storage stuff and encryption. But, setting that up via the GUI are pretty easy. So we’ll see!

RHCSA – Rapid Track – Day 1

First day done!

What hit me was that there are many commands in linux, some you maybe only use for one purpose. But there are some things that you haven’t done with it before, so an old command can still cause some trouble. For example crontab and the last * (or, day of week) in conjunction with day/month or by itself.

Already seen one double negative (/usr/share/doc/initscripts/sysconfig.txt and PEERDNS= directive) – so beware and read carefully.

Cool things:

ls -l /net/

Will automagically mount the nfs server in there. Pretty nice!

automount, autofs, with /etc/auto.master
so that you can for example set up dynamic mounting of nfs directories for users that haven’t logged on to the system.

configuring ldap authentication best done via system-config-authentication GUI tool. Doing it via the CLI takes about a gazillion (26) variables/commands.

anacron for crontab that runs the script again if the machine was off when it was supposed to run.


Red Hat Certification – RHCSA – Preparation

Found this “cheat sheet” for RHCE. Sure it doesn’t specifically say RHCSA but honestly there’s a lot of good commands in there. Some things obviously might be too advanced for RHCSA, such configuring an dns/named service. But it might be good as a reference.

The objectives of the RHCSA exam: I copied the ones I’m unsure about below.

I think definitely it would be a good idea to go through these objectives before taking the exam, and if you have time – do each step as well!

There’s a bunch of things there that I’m not sure about or know how to do. I’m attending a five day RHCSA rapid track course, so we should be able to go through the stuff I don’t know there, but doesn’t hurt to do a little preparation!

This post is about: me going through each objective and trying to accomplish it. Writing it down is for you, but mostly for me :) If you have any questions there is the comment field below.

The lists are the objectives, first level is the actual objective while the sub-lists are commands, thoughts and comments.

I’m writing this and updating it as I go along. It’s purpose is to prepare for the exam, without using any ‘cheats’ like trying to find out labs/questions that comes on the exam.

Understand and Use Essential Tools

  • Access remote systems using ssh and VNC
    • In each VM’s setting you can specify port etc to the VM.
    • vnc client:
  • Create hard and soft links
  • adjust process priority with renice,
    • renice
    • nice
    • top #to view, also in ps -fe -o pid,comm,nice
    • /etc/security/limits.conf
  • Access a virtual machine’s console
    • Open virt-manager and open the VM.
  • Start and stop virtual machines
    • Open virt-manager and stop/start there.
    • CLI: virtsh.

Add virtualization post-install.

To test: installing with only Desktop.
Packages, modules, services?

After install ‘lsmod|grep kvm’ doesn’t show anything.
Went into Add/Remove Software and added stuff under ‘Virtualization’.
After install, just trying to start virt-manager doesn’t work. It asks if libvirt service is running. ‘service libvirtd start’. Then virt-manager starts and finds the qemu. No need to reboot as ‘chkconfig –list|grep libv’ shows that they start on boot. Booting a machine after this works.

Configure Local Storage

  • Create and configure LUKS-encrypted partitions and logical volumes to prompt for password and mount a decrypted file system at boot
    • You can set this up while installing the system.
    • /etc/crypttab
    • /etc/fstab still necessary
  • Configure systems to mount file systems at boot by Universally Unique ID (UUID) or label
    • fstab: LABEL= and UUID=
    • Find label/UUID with blkid, set label with e2label.
  • Add new partitions, logical volumes and swap to a system non-destructively
    • # non-destructively? so without making the system unbootable?

You can format, partition a drive and encrypt it after install. In desktop you can go to places and find the drive in there, that will open a dialogue where you put in the password and tada. After that you can hit ‘df -h’ to get the UUID and mountpoint. This you then put in /etc/crypttab. Don’t forget to add it to /etc/fsstab too. But, be careful here. I managed to screw it up so much that it wouldn’t even boot anymore.

This is a great guide for how to set up a LUKS partition and mount it on boot.
Works for partitions created outside install.

When I did ‘custom layout’ in install and set up encryption, it appears to take a lot longer to encrypt/format. If doing this in the exam I’d consider making a small partition. Especially not a 16GB one. It took ~15minutes in comparison to 5s.
It was however fast to create with cryptsetup post-install.
If you do decide to split up the filesystem (perhaps one partition per VM) then you’ll need to set appropriate selinux settings to make it work.

Create LUKS partition to boot from post-install

During install:

vdisk in vmware of 20GB.
One partition of 500MB for /boot
One swap of 512MB
One pg of 10GB, VG of the same, and lv for /
Keeping available space of about 9GB.

After boot:

  1. fdisk -c -u /dev/sda
  2. n, p, 4, enter, enter, t, 4, 83, w
    1. new partition, primary, partition 4, starting, end (space), set type, partition 4, type 83, write
  3. some error, but fdisk -l shows the new partition /dev/sda4
  4. rebooted (tool advised to)
  5. cryptsetup luksFormat /dev/sda4
  6. cryptsetup luksOpen /dev/sda4 luksdrive
  7. ls /dev/mapper/ will show luksdrive in there.
  8. mkfs.ext4 /dev/mapper/luksdrive
  9. edit /etc/crypttab and add: /dev/mapper/luksdrive /dev/sda4
    1. man crypttab
  10. edit /etc/fstab and add: /dev/mapper/luksdrive /mnt/luksdrive ext4 defaults 1 2
    1. man fstab
  11. mkdir /mnt/luksdrive
  12. mount -a
  13. cd /mnt/luksdrive
  14. try a reboot

Mount filesystem based on UUID or label

By UUID: If you for example like above have created another partition and encrypted it and added it to fstab. You could just hit ‘blkid’ to get the UUID of the partition. Then you can change the /dev/mapper/luksdrive on the fstab into UUID=12354-515-51-5. To try it out, hit mount -a.

By label: set it with ‘e2label /dev/mapper/luksdrive lukslabel’. Then in fstab add LABEL=lukslabel instead of /dev/mapper/luksdrive. To view label hit: blkid. If there is none set, it’s not shown.

Create and Configure File Systems

  • Mount, unmount and use LUKS-encrypted file systems
    • cryptsetup luksOpen /dev/sda4 luksdrivelabel
    • mount -t filesystem /dev/mapper/luksdrivelabel /mnt/luksdrive
    • touch /mnt/luksdrive
    • umount /mn/luksdrive
  • Mount and unmount CIFS and NFS network file systems
    • mount -t nfs -o rw host:/remotedir /mnt/nfs
    • mount -t cifs //server/share /mnt/cifs –verbose -o user=username
    • umount /mnt/dir
  • Extend existing unencrypted ext4-formatted logical volumes
  • Create and configure set-GID directories for collaboration
    • A chmod on a directory that changes group owner of all files under that directory, into the same as the directory.
    • mkdir /share
    • touch /share/1
    • chgrp wheel/share
    • chmod g+s /share
    • touch /share/2
    • ls -l /share/
  • Create and manage Access Control Lists (ACLs)
    • first you need to add acl on the file system in /etc/fstab
    • getfacl
    • setfacl -m g:wheel:rw /path/file

Mount NFS file system

First, we need to set up an nfs server, this is not part of RHCSA though.

on server:
mkdir /nfs;chmod a+w /nfs
Make sure nfs-utils and rpcbind are installed.
chkconfig –list  # check nfs, nfslock and rpcbind are on
edit /etc/export # /nfs IP/netmask(rw,sync,no_root_squash)
setsebool -P nfs_export_all_rw
check /etc/hosts.allow and .deny
starts services

on client:
mkdir /mnt/nfs
mount.nfs /mnt/nfs -v -w
mount -t nfs -o rw /mnt/nfs

ACL on filesystem

  • mount # see options on your filesystem
  • vi /etc/fstab # change ‘defaults’ to the what you saw in ‘mount’ and add acl, comma separated
  • mount -o remount / # use this to remount /. Or you could reboot. Hard to unmount / if you are using it.
  • mount # now it has rw,acl
  • getfacl /root/install.log
  • setfacl -m g:wheel:rw /root/install.log
  • getafcl /root/install.log

Extend existing unencrypted ext4-formatted logical volumes

Deploy, Configure and Maintain Systems

  • Configure systems to boot into a specific runlevel automatically
    • /etc/inittab
  • Install Red Hat Enterprise Linux automatically using Kickstart
  • Configure a physical machine to host virtual guests
  • Install Red Hat Enterprise Linux systems as virtual guests
  • Configure systems to launch virtual machines at boot

Installed SLC6.1 in a VM. This time I chose both Virtual Host and Desktop Environment and X11 for packages. In VMWare Workstation 8 and the settings for the VM, do enable ‘virtualization’ in the processor options or you cannot virtualize inside the VM. It’s a lot easier to setup/install VM if you have a desktop GUI. Especially the part about you getting access to the console.

Post-install there is a GUI tool in the menu that you can use to install a VM and configure VM-stuff.

By default the virtual machine starts on boot.
In chkconfig –list. There is an entry called ‘libvirt-guests’. This is a fairly complex script that looks where the VMs are installed and boots them. You can go into the settings of the VM in the GUI and enable it to boot when the host boots.
By the way, if there are issues during boot, see /var/log/boot.log

Install a VM via an http server.

yum install php

This installs httpd with php-support.


Add port 80 in the firewall: iptables-save > fwrules. Copy the one with port 22, paste and add port 80. iptables-restore < fwrules.

To keep the rules on reboot:

/etc/init.d/iptables save

Copy DVD into your web root:

This assumes that the DVD is mounted automagically which it does for me.

sudo mkdir /var/www/html/SL6; sudo cp -pR /media/nameofdisk/* /var/www/html/SL6

If you use the -p that means it preserves the read/write permissions on the files, beceause it’s mounted as a CD/DVD that means the files are read-only. If you want to do changes don’t use the -p or you’ll have to change that stuff later.

To set SELINUX context:

chcon -R --reference=/var/www /var/www/html/SL6.

Install from HTTP

Launch the virtualization manager. Create new VM. Name and network transfer, point to your httpd. RAM, disk space. Chose network interface – I only had NAT. (if you follow my guide below you’ll need to set static IP settings). After that the machine boots and you get a console. It starts graphical and then install continues as usual. If you want to see which IP your VM in the VM gets you can look in the access_log in /var/log. By default it got an address in 192.168.122.* range. If you set too little memory you cannot get the kdump.

Bridged networking

follow this guide (incomplete) or one on linuxtopia or on libvirt wiki

  1. ifdown eth0
  2. cd /etc/sysconfig/network-scripts
  3. cp ifcfg-eth0 ifcfg-bridge0
  4. edit ifcfg-eth0 and add ‘BRIDGE=”bridge0″ ‘
  5. edit ifcfg-bridge0 and set ‘DEVICE=”bridge0″ ‘, ‘TYPE=”Bridge” ‘, ‘DELAY=”0″ ‘
  6. TYPE needs to be Bridge, capital B.
  7. ifup eth0
  8. ifup bridge0
  9. ifconfig bridge0
  10. add a rule similar to -A INPUT -i bridge0 -j ACCEPT in the iptables (don’t forget to save/restart iptables)
  11. edit /etc/resolv.conf with ‘nameserver ip.ip.ip.ip’.
  12. /etc/sysctl.conf and enable ip_forwarding. Reboot or sysctl -p /etc/sysctl.conf
  13. consider adding static IP addresses in ifcfg-bridge0. My DHCP didn’t work, probably because of some configration in VMWare Workstation. BOOTPROTO=”static”, IPADDR, NETMASK, GATEWAY, NM_CONTROLLED=”no”, ONBOOT=”yes”.

Installing with the help of kickstart

First, copy the /root/anaconda-ks.cfg to /var/www/html/SL6/ks.cfg. Also set permissions to the file as appropriate.
Then open that file in system-config-kickstart. You probably want to change some stuff. For HTTP server install set server to: and path to SL6. That’s if your path is . And of course add the whole URL to the ks.cfg. Remove virtualization packets. Change hdd layout stuff, you probably have less space available this time. Change URL to repository. Mine was still set to CD/ROM so had to manually set that during boot. Got two questions during the install: do you want to overwrite what’s on the disk? And, reboot? at the end of install. Consider removing these to speed up install.
Also, I could not log on after first reboot. Even though I kept the root password as is.

In system-config-kickstart: Set it to clear MBR, initialize labels and also to autoreboot upon completion.
For root password you need to manually enter, you can set it to plaintext. Set setupagent to disabled for a completely automatic install.
Repository you cannot change in system-config-kickstart.
Manually edit the ks.cfg.

repo –name –baseurl=
user –name user –plaintext –password 112233

Last one creates a user called user with pw 112233.

How-to Boot into CD in VM in qemu

Download the .iso.
Add new storage hardware, make it an IDE CD-ROM, hit add existing storage and select the .iso, set type to ‘raw’. Change boot order.

Manage Users and Groups

  • adjust password aging for local user accounts
    • chage
  • Set enforcing and permissive modes for SELinux
    • sestatus to see current setting
    • /etc/selinux/config # for settings
    • Command to set it ‘on the fly’:
  • List and identify SELinux file and process context
    • files: ls -Z
    • processes: ps -e fZ
  • Restore default file contexts
    • chcon -R –reference=/var/www/html /var/www/html/SL6
    • chon -t usr_t /var/www/html/SL6
    • restorecon -v /var/www/html/SL6
  • Use boolean settings to modify system SELinux settings
    • setsebool
    • to find the available settings: getsebool -a
  • Diagnose and address routine SELinux policy violations
    • Tool ‘sealert’. Logs are in /var/log/audit
    • There is also a GUI tool.