26 May 2015

Web Server : Secure your cPanel server

After the initial setup of cPanel server the server is not very secure and there are many things that can be done to secure your server.
In this tutorial we will go over some steps that include few software installation and web server security settings modification.
The collection of these easy steps is a results of years of experience in maintenance and management of linux servers.

1) Updates & Installation

Update cPanel to the latest version from the WHM interface:
Navigate to: Home » cPanel » Upgrade to Latest Version
Next, install the Apache mod_security with EasyApache:
Navigate to: Home » Software » EasyApache (Apache Update)
On step 4 check the “Mod Security” option and click the “Save and Build” button.
Next, login to the cPanel server as root via SSH and run OS update, then install some softwares from ConfigServer:
yum update -y

wget http://www.configserver.com/free/csf.tgz
tar -xzf csf.tgz
cd csf/
sh install.sh
cd ..
rm -Rfv csf/ csf.tgz

wget http://configserver.com/free/cmc.tgz
tar -xzf cmc.tgz
cd cmc/
sh install.sh
cd ..
rm -Rfv cmc/ cmc.tgz

2) Use The Security Advisors

If your cPanel version is 11.42+ and CSF is installed on your server there is two Security Advisors on your server that will check the security level of your server and will suggest recommendations on how fix the security issues.
For cPanel Security Advisor navigate to:
Home » Security Center » Security Advisor
For ConfigServer Firewall Security Advisor navigate to:
Home » Plugins » ConfigServer Security & Firewall » Check Server Security
* Follow all the recommendations and make the necessary changes to fix your server security issues.
We recommend to run the Security Advisors at least once a month.

3) Web Server Security & Firewall (ModSecurity)

Our choice for Mod Security rules is the Comodo Web Application Firewall (CWAF) agent. The cPanel\WHM plugin automate the installation & configuration of CWAF on the server and the deployment of periodically published predefined firewall rules set updates.
1) To get access to Comodo Mod Security rules and CWAF free sign up is needed:https://waf.comodo.com
2) To download the comodo client agent login to the web administration console and click the “Download latest installer” link (top right of the screen) “cwaf_client_install.sh”.
3) Copy the agent setup file to a local directory in the server E.g. /root
4) Run the installation script as root via SSH:
bash /root/cwaf_client_install.sh
Follow the instructions in the setup wizard!
Next edit mod_security conf file and include the CWAF Rules.
vi /usr/local/apache/conf/modsec2.conf
And add this line:
Include "/var/cpanel/cwaf/etc/cwaf.conf"
The file should look like this:
LoadFile /opt/xml2/lib/libxml2.so 
# LoadFile /opt/lua/lib/liblua.so 
LoadModule security2_module  modules/mod_security2.so 
SecRuleEngine On 
SecTmpDir /tmp 
SecDataDir /tmp 
SecRequestBodyAccess On 
SecAuditEngine RelevantOnly 
SecPcreMatchLimitRecursion 250000 
SecDebugLog logs/modsec_debug_log 
SecPcreMatchLimit 250000 
SecAuditLog logs/modsec_audit.log 
SecDebugLogLevel 0 
Include "/var/cpanel/cwaf/etc/cwaf.conf" 
5) Now login to WHM as root and navigate to:
Home » Plugins » Comodo WAF
At the “Main” tab you can run updates if needed,
At the “Catalog” tab you can set or unset rules for all vhosts or for a singel domain.
6) Restart Apache
service httpd restart
7) Set new Apache configuration:
Home » Service Configuration » Apache Configuration » Global Configuration
Change to:
SSL Cipher Suite = (PCI recommended)
Trace Enable = Off
Server Signature = Off
Server Tokens = ProductOnly
File ETag = None
Then clicking on “Save”
8) Set new PHP configuration:
Home » Service Configuration » PHP Configuration Editor
Select the “Advanced Mode” and set the following settings:
allow_url_fopen = off
expose_php = Off
enable_dl= Off
register_globals = off
display_errors = off
disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open, eval, symlink, link, readlink, dl, escapeshellarg, escapeshellcmd, ini_restore, apache_get_modules, ini_get_all, get_cfg_var
9) Restart Apache
service httpd restart
 10) Enable failure detection of repeated Apache mod_security rule triggers
Navigate to:
Home » Plugins » ConfigServer Security & Firewall » Firewall Configuration
And set the number of failures between 3 and 5 by changing the value:

4) Tweaks

1) Install and config “tmpwatch”
yum install tmpwatch
Edit the tmpwatch cron file:
vi /etc/cron.daily/tmpwatch
The file should look like this:
#! /bin/sh
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
 -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
 -X '/tmp/hsperfdata_*' -m 24 /tmp
/usr/sbin/tmpwatch "$flags" -m 12 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
 /usr/sbin/tmpwatch "$flags" -mf 12 "$d"
2) Disable Compilers for all accounts from:
Home » Security Center » Compiler Access
3) Disable Anonymous FTP & Logins with root
Home » Service Configuration » FTP Server Configuration

5) eXploit Scanner

The eXploit Scanner is the best tool out there for detecting malicious code on the server and for real time detection while files are uploaded to the server.
eXploit Scanner detecting malicious code uploaded real time and deny the upload and blocks the IP address from which the file is upload.
1) Install ClamAV:
Home » cPanel » Manage Plugins
Select “clamavconnector” and Seve.
2) The “eXploit Scanner” is not free, but worth every cent. Buy license at:
3) Once you received the confirmation email of the activation of the license you can start the installation of the eXploit Scanner plugin:
wget http://www.configserver.com/free/cxsinstaller.tgz
tar -xzf cxsinstaller.tgz
perl cxsinstaller.pl
rm -fv cxsinstaller.*

mkdir -m 1777 /usr/suspicious_files
touch /var/log/cxs.log
chmod 0666 /var/log/cxs.log

cp /etc/cxs/cxs.defaults.example /etc/cxs/cxs.defaults
cp /etc/cxs/cxs.ignore.example /etc/cxs/cxs.ignore
cp /etc/cxs/cxs.xtra.example /etc/cxs/cxs.xtra
chmod 644 /etc/cxs/cxs.xtra /etc/cxs/cxs.defaults /etc/cxs/cxs.ignore
chmod 755 /etc/cxs/cxscgi.sh /etc/cxs/cxsftp.sh
4) Enable the pure-ftp upload script:
vi /etc/pure-ftpd.conf
And change the “CallUploadScript” value
# CallUploadScript yes
CallUploadScript yes
Next, restart the pure-uploadscript daemon:
/etc/init.d/pure-uploadscript restart
5) Edit the config files and comment any exiting line with # in this files:
Edit cxscgi.sh file:
vi /etc/cxs/cxscgi.sh
/usr/sbin/cxs -Z --cgi --block --smtp --mail root --delete --qoptions Mexv -I /etc/cxs/cxs.ignore --xtra /etc/cxs/cxs.xtra "$1"
Edit cxsftp.sh file:
vi /etc/cxs/cxsftp.sh
And set the line:
/usr/sbin/cxs -Z --ftp --block --smtp --mail root --delete --qoptions Mexv -I /etc/cxs/cxs.ignore --xtra /etc/cxs/cxs.xtra "$1"
Edit cxswatch.sh file:
vi /etc/cxs/cxswatch.sh
And set the line:
/usr/sbin/cxs --Wstart --allusers --www --block --smtp --mail root --quarantine /usr/suspicious_files --qoptions Mexv --xtra /etc/cxs/cxs.xtra --Wmaxchild 5 --Wloglevel 0 --Wsleep 3 --filemax 0 --Wrateignore 300

6) Create Cron jobs via the UI from:
Home » Plugins » ConfigServer eXploit Scanner
Click on “Edit Cron Jobs” and add the command:
/usr/sbin/cxs --mail root --exp --vir -I /etc/cxs/cxs.ignore -X /etc/cxs/cxs.xtra -Q /usr/suspicious_files --options mMOLfSGchexdnwWZDRPu --qoptions Mexv -Z --sum -S 1000000 -F 10000 -C /var/clamd -T 2 --MD5 -B --allusers
Add the auto update cron command:
/usr/sbin/cxs --upgrade --quiet
Create the cxs suspicious files folder:
mkdir /usr/suspicious_files

* Enable detection of repeated cxs and mod_security rules trigger. This option will block the user IP address if cxs or ModSecurity triger is detected.
Navigate to:
Home » Plugins » ConfigServer Security & Firewall » Firewall Configuration
And set: LF_CXS = 1

* The files “/etc/cxs/cxs.ignore” and “/etc/cxs/cxs.xtra” are used to include or exclude files from scanning by the file name, regular expression match or md5sum match.

Finally we finished securing your server!


* Know that security is not optimization. It will take more resources from the server!
* This guide is not a complete solution for server security. Only the main first steps in the process of securing your server are covered!

Gk root

Optimize MySQL & Apache on cPanel/WHM server

On this optimization process we will go over the Apache core configuration and modules that are part of Apache core. We think that with the correct settings of Apache and MySQL you can get excellent results and the correct level of resource use without installing third-party proxy and cache modules. So let’s start,

Apache & PHP

In the first stage we run the Easy Apache and selected the following:
* Apache Version 2.4+
* PHP Version 5.4+
* In step 5 “Exhaustive Options List” select
– Deflate
– Expires
– MPM Prefork
– MPM Worker
After Easy Apache finished go to your WHM » Service Configuration » Apache Configuration » “Global Configuration” and set the values by the level of resources available on your server.
Apache Directive    (From 2GB memory or less and up to 12GB memory)    

StartServers      4    8    16  
MinSpareServers    4    8    16  
MaxSpareServers    8    16    32  
ServerLimit      64    128    256  
MaxRequestWorkers    50    120    250  
MaxConnectionsPerChild    1000    2500    5000 
Keep-Alive   On  On  On
Keep-Alive Timeout   5   5    5
Max Keep-Alive Requests  50   120   120
Timeout    30  60  60

Now go to WHM » Service Configuration » Apache Configuration » Include Editor » “Pre VirtualHost Include” and allow users minimal cache and data compression to allow the server to work less for the same things by pasting the code below into the text field.
# Cache Control Settings for one hour cache

Header set Cache-Control "max-age=3600, public"

Header set Cache-Control "max-age=3600, public, must-revalidate"

Header set Cache-Control "max-age=3600, must-revalidate"

# Mod Deflate performs data compression

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE no-gzip

Go to WHM » Service Configuration » “PHP Configuration Editor” and set the parameters according to your needs:
– memory_limit
– max_execution_time
– max_input_time


For MySQL you need to update the configuration file that usually in /etc/my.cnf
Best config base on 1 core & 2GB memory MySQL 5.5:
    local-infile = 0
    max_connections = 250
    key_buffer = 64M
    myisam_sort_buffer_size = 64M
    join_buffer_size = 1M
    read_buffer_size = 1M
    sort_buffer_size = 2M
    max_heap_table_size = 16M
    table_cache = 5000
    thread_cache_size = 286
    interactive_timeout = 25
    wait_timeout = 7000
    connect_timeout = 15
    max_allowed_packet = 16M
    max_connect_errors = 10
    query_cache_limit = 2M
    query_cache_size = 32M
    query_cache_type = 1
    tmp_table_size = 16M


    max_allowed_packet = 16M
    key_buffer = 64M
    sort_buffer = 64M
    read_buffer = 16M
    write_buffer = 16M

Best config base on 8 core & 12GB memory (Shared server) MySQL 5.5:
max_connections = 600
key_buffer_size = 512M
myisam_sort_buffer_size = 64M
read_buffer_size = 1M
table_open_cache = 5000
thread_cache_size = 384
wait_timeout = 20
connect_timeout = 10
tmp_table_size = 256M
max_heap_table_size = 128M
max_allowed_packet = 64M
net_buffer_length = 16384
max_connect_errors = 10
concurrent_insert = 2
read_rnd_buffer_size = 786432
bulk_insert_buffer_size = 8M
query_cache_limit = 5M
query_cache_size = 128M
query_cache_type = 1
query_prealloc_size = 262144
query_alloc_block_size = 65535
transaction_alloc_block_size = 8192
transaction_prealloc_size = 4096
max_write_lock_count = 8


max_allowed_packet = 16M

key_buffer = 384M
sort_buffer = 384M
read_buffer = 256M
write_buffer = 256M

key_buffer = 384M
sort_buffer = 384M
read_buffer = 256M
write_buffer = 256M

#### Per connection configuration ####
sort_buffer_size = 1M
join_buffer_size = 1M
thread_stack = 192K

Repair & optimize databases then restart MySQL:
mysqlcheck --check --auto-repair --all-databases
mysqlcheck --optimize --all-databases
/etc/init.d/mysql restart

Security & Limit Resources

Install CSF (ConfigServer Security & Firewall) at: http://configserver.com/free/csf/install.txt
1) Go to WHM » Plugins » ConfigServer Security & Firewall » “Check Server Security” And pass on what appears as required to repair:
2) Go to WHM » Plugins » ConfigServer Security & Firewall » “Firewall Configuration” and set the parameters according to your needs:

Now enjoy your new fast and more effective server.


In order to enable to MySQLi extension in your WHM, please follow these steps:

1. Log into the WHM with your root credentials.

2. Go to the "EasyApache (Apache Update)" menu, located in the "Software" section or use the search box to find it.

3. On the EasyApache page, make sure your Previously Saved (Default) configuration is selected and click on "Customize Profile".

4. Keep clicking "Next Step", until you reach the "Short Options List" page and scroll to the bottom of the page.

5. Click on the "Exhaustive Options List" button.

6. On this page, scroll down to the PHP section and find MySQL “Improved” extension.
You can use the page search option of your browser to locate the extension faster (Ctrl+F).

7. Ensure the check box is filled in and scroll to the bottom.

8. Click the "Save Only" button.

9. On the next page, click the "Build profile I just saved" button.

10. A pop box will appear and ask you to recompile Apache and PHP, select "Yes" and "I understand", if prompted.

11. Wait until the Build ouput is complete and the MySQLi extension should be installed/enabled. Please do not log out of the WHM or interrupt the rebuild process and wait for it to be completed.


21 May 2015

ශිල්ප සයුර A/L ICT e Learning Tuition 2016 /2017 and 2015 Revisio

ලංකාව පුරා A/L ICT ඉගන ගන්න අයට දැන් තියන ටියුෂන් ක්‍රමයට වඩා අති නවීන සාර්ථක E Learning ක්‍රමයට A/L ICT විභාගයට සාර්ථකව මුහුණ දෙන්න ශිල්ප සයුර A/L ICT E Learning පාඨමාලාවට බඳවා ගැනීම දැන් ඇරඹුණා. අදම අන්තර්ජාලයෙන් ඉල්ලුම් කරන්න.


Course Director
Niranjan Meegammana
ICT & Youth Development Professional
Adobe Lead Educator & Ashoka Fellow