Cron job for backing up MYSQL database from SSH

Backing up MYSQL databases became very necessary especially if you own a shopping cart or e commerce website.

Hackers are always trying to gain access to your database and sometimes they gain access and the most action they perform is to modify databases and change the information stored. In that case you cannot restore your database if you do not have backup and if you have backups mostly they are daily or weekly backups taken by cPanel or by any other control panel.

There is no feature in any hosting panel which allows you to take backup every minute or by custom time span.

The following script allows you to configure an time interval for taking backup of mysql database and it does not replace any backup stored already. This means you can restore any backup available accordingly.

Features are discussed in the comment# lines of the scripts:

Just copy and paste this script in any file like: backup.sh and upload it in any folder giving root access to it.

 

#!/bin/bash -x
#backup file location, it is the location where backup will be stored, change it to your own
backupDir=/home/USERNAME/public_html/backups/
myDate=$(date '+%Y-%m-%d'-'%I-%M-%S-%p')

#this is the backup file name, generates different names of files to avoid rewriting
dbName=backupSQL-$myDate

# This is temporary directory, change it accordingly if you have this somewhere else.
cd /tmp

# MYSQL command to take backup with valid username/password
mysqldump -u root -pPASSWORD_HERE DATABASE_NAME_HERE > $dbName

# it compresses the file into tar to save the disk space.
tar -cvf $dbName.tar $dbName

# moves the file to backup directory from temporary directory
mv $dbName.tar $backupDir

# delete backups older than 2 days, change -mtime +2 to any digit like +7 for files older than 7 days.
find $backupDir -mtime +2 | xargs rm -rf

<br/ >
Now come to a cron job, Follow the following steps to set a cron job for auto backups.
<br/ >
Login to SSH with root access.

Execute following command:

$ crontab -e

A text editor will be opened just write the following cron job line at the end of file:

*/5 * * * * /FILE-PATH/backup.sh

In above code */5 is the time interval for auto backups. Auto backup script will run every 5 minutes. You can change it accordingly.
Just save the cron job and you’re done.

Feedback are welcome šŸ™‚

How to deal with hackers for web server? Sym links solution

Nowadays hacking becomes more ordinary, and most web hosting companies are being targeted and there is no proper solution to prevent or to make your server 100% secure.

As a web hosting provider, we do always try to secure our servers from the hackers sometime it works but sometimes we failed.

Today i want to describe some commands forĀ Linux WHM/cPanelĀ based servers commands to make your server secure not 100% but it works out of the box. As i am using these commands to not prevent server from hacking but these commands are very useful and does not allow hackers to do anything on the server with other accounts.

I assume, you already familiar with theĀ sym links those are auto-created on the linux based servers, they allow hackers to create link directory/files with the other accounts, so they can access other accounts those are related to other cPanel accounts on the server.

If you disableĀ sym links on the server, hackers cannot hack into your server or if they are able to hack one account, other accounts will remain safe and will not get affected.

Well, disablingĀ sym links is not the proper solution and also disturbs functionality of some scripts on the server like joomla and wordpress.

Here i would like to describe some linux commands those are used to prevent creation of new symlinks in the root directory of an account, on cPanel it isĀ public_html.

Follow the following steps to:

  • Login to your server via ssh with root access.
  • Now make a check if there areĀ sym linksĀ  already created on the server.
  • Execute following command for cPanel:
  • Ā # find /home*/*/public_html -type l
  • Above command will display all theĀ sym links for all cPanel accounts created in public_html and sub directoriesĀ if any.
  • Now, add a cron job to check forĀ sym linksĀ  and remove them if found, you can set any interval, in the below command i set it to everyĀ 5Ā minutes.
  • So the command checks and removes allĀ sym linksĀ inside theĀ public_htmlĀ directory and their sub directories.
  • Execute the following commands to add cron job:
  • # crontab -e
  • A crontab file will be opened in default text-editor.
  • Go to last line and add below command:
  • */5 * * * * find /home*/*/public_html -type l -exec rm -rfv {} \;
  • Now, save your crontab file to make it functional.
  • And you’re done, this will check forĀ sym linksĀ insideĀ public_htmlĀ directory and will remove them if found.
  • TIP: you can also change the location of your directory for other control panels, by replacing /home*/*/public_html
  • Note: Do not execute command on system directories, your server will be destroyed and will become unstable.

That is all, comments are welcome : ) if it works for you.

Update fails or server cannot connect to repositories

Hello,

Three days ago one of my client’s server ran into an issue, the server has opensuse operating system with Yast installed and webmin as hosting control panel.

The issue was, it could not able to connect to anyĀ repositoriesĀ for update or to install any package either from the yast panel. I have searched alot on google and on opensuse forum but was not able to find any proper solution.

I got it solved by doing following on the server:

I came to know that the server’s reverse DNS entries are wrong and do not point to any physical server. So i changed them to openDNS resolver by following method:

Login to SSH with root details.

Open resolver file by:

nano /etc/resolv.conf

and insert the following IPs for nameservers:

nameserver 208.67.222.222
nameserver 208.67.220.220

Save the file by pressing CTRL + O and exit to the nano editor by CTRL + X

 

And you’re done, now your server can update theirĀ repositories.

Change Host Name of Linux Red Hat or CentOS Permanently

Here is the short commands to change the host name of your linux Red Hat or CentOS 5 & 6 operating system, Follow the below steps:

  • Login to your server via SSH
  • Edit the fileĀ /etc/sysconfig/networkĀ by executing below command:
  • nano /etc/sysconfig/network
  • Find the host name line, usually written as :
  • server.websterz.net
  • Just change the host name and press:
  • CTRL + O and then press Enter

Read More