Archive for the ‘Linux’ Category

Linux Security Tip 1 - Watch root

It is easy to think whenever you get a linux box set and live on the net, to think that the box is ready to confront any threats out there.

I won’t go into a whole post as to why i think Linux should undergo a “severe” security audit as much as it is done on a windows box, but experience has shown me that it is easy to get into a linux box as much as it is easy to get into a windows box.

Now… this is going to be a small serie on Security Tip - feel free to add any tips you may have in the comments.

Today’s tip isn’t really a security hardening tip but much more a way to keep up with root access on your server. As much as it is good to harden your server, it is far more better to be alerted of any major actions.

Many linux servers have been compromised through getting root access… so, say you got some production servers (or your precious home laptop) unto which you don’t log often and wish to be kept alerted whenever someone logs as root.

To do that, simply log through ssh or terminal and type

vi /root/.bash_profile (note if you use sudo userA, you may do vi /home/userA/.bash_profile)

once opened, go into edit mode and type

echo ‘ALERT - Root Shell Access on:’ `who` | mail -s “Alert: Root Access from `who | awk ‘{print $6}’`” your@email.com

save and exist

So whenever someone logs as root (or sudo user), you will get an email with the who output which is “login” - “terminal” - “date” - IP Address

(keep in mind that this isn’t whenever any user logs, but in our case only when ROOT logs in)

sincerely,

service automated restart

Ok… it’s got pretty late here, and tomorrow is another day of work… but before I hit the sack… for those interested in keeping up services running on their server, here is a little bash cron script which could be modified or alterated to keep up any services/daemons running.

Please note this is a tip, so you migth need to modify things around to fit your needs… just giving out the idea here :-)

for mysql service for instance

/usr/bin/pgrep mysqld

if [ $? -eq 0 ]
then
/etc/init.d/mysqld restart
fi

So… from there, you could easily develop it and make it more sophisticated… like email you for instance etc…

peace,

sqlite, hack the code…

So… for about few hours now, I was puzzled on how to get sqlite working on one of our customer centos server. Problem was that all sqlite function were bugging and the sqlite databases couldn’t be queried. A quick php -v on cli, gave me the first indication that sqlite.so file wasn’t properly loading. Actually the repo sqlite install had place the lib files in the wrong directories… after quickly checking the extension dir, i decided to copy over the .so sqlite extension file and reload apache… first try… first failure.. even pointing to the right extension file, the lib couldn’t still be loaded..

that’s where the puzzle started…

After thinking it through and reading on php.net/bugs section, I came to realize that this was simply a bug starting off php 5.1…

So after a while, I decide to retrieve back to an old sqlite version and compile it myself

so

wget -q http://pecl.php.net/get/SQLite-1.0.3.tgz

tar zxvf SQLite-1.0.3.tgz; cd SQLite-1.0.3

phpize

(if you get a phpize error, just do a yum insta php-devel) then retry phpize again

./configure

make

(that’s where I was about to pull my hair, when while compiling the source code, make abruptly stopped with an error 1 and offset error)

this is where we need to hack the C code of sqlite to make it compile with our Centos 5

vi sqlite.c

then comment out this line

static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };

so this becomes

/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */

replace then

function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, arg3_force_ref)
PHP_FE(sqlite_popen, arg3_force_ref)
to:
function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, third_arg_force_ref)
PHP_FE(sqlite_popen, third_arg_force_ref)

“save - exit”

then make clean

./configure; make; make install

Once that is through with no error

cp modules/sqlite.so To_The.Php.ini.ExtensionDir

then service httpd restart

and voila :-)

easy he.. still got me confused for a second there ;-)

remove strange file names

I once was asked in a job interview, how I would remove a file if this one started with a “-”

open your terminal

touch -myPictures

then try rm -myPictures and see what happens ;-)

so how would you do it?

there are two ways to do it (i am sure there are mores, but hey why bother?)

1) rm ./-myPictures

2) rm — -myPictures

Arch Linux on an Asus F5N

I have decided to write a small how-to on how I was able to install and configure my ASUS F5N laptop.

To read more about Arch Linux, go there http://archlinux.org

(this part assumes you are able to download the iso file, burn it, boot from it, proceed to install)

** note that I have only installed the base package as I wanted to have a very minimal system, devel and support package were not installed)

X-Window

pacman -Sy xorg nvidia

type nvidia-xconfig (I did not want to bother editing the X86.. conf file, so i left that out the nvidia script)

Desktop Environment

I decided to go with Gnome…

pacman -S gnome gnome-extra

—— System Configuration ——

At this point we need to add some daemons Read the rest of this entry »