30 Things To Do After Minimal RHEL
30 Things To Do After Minimal RHEL
30 Things To Do After Minimal RHEL
RHEL/CentOS 7 Installation
CentOS is a Industry Standard Linux Distribution which is a derivative of RedHat Enterprise
Linux. You may start using the OS as soon as you install it, but to make the most out of your
system you need to perform a few updates, install a few packages, configure certain services and
application.
This article aims at “30 Things to Do After Installing RHEL/CentOS 7”. The post is written
keeping in mind you have installed RHEL/CentOS Minimal Install which is preferred in
Enterprise and production environment, if not you can follow below guide that will show you
minimal installations of both.
The following are the list of important things, which we’ve covered in this guide based on
industry standard requirements. We hoping that, these things will be very helpful in setting up
your server.
7. Install PHP
After minimal RHEL 7 installation, it’s time to register and enable your system to Red Hat
Subscription repositories and perform a full system update. This is valid only if you have a valid
RedHat Subscription. You need to register your in order to enable official RedHat System
repositories and update the OS from time-to-time.
We have already covered a detailed instructions on how to register and active RedHat
subscription at the below guide.
Note: This step is only for RedHat Enterprise Linux having a valid subscription. If you are
running a CentOS server immediately move to further steps.
The first thing you need to do is to configure Static IP address, Route and DNS to your CentOS
Server. We will be using ip command the replacement of ifconfig command. However, ifconfig
command is still available for most of the Linux distributions and can be installed from default
repository.
# yum install net-tools [Provides ifconfig utility]
But as I said we will be using ip command to configure static IP address. So, make sure you first
check the current IP address.
# ip addr show
Now open and edit file /etc/sysconfig/network-scripts/ifcfg-enp0s3 using your choice of editor.
Here, I’m using Vi editor and make sure you must be root user to make changes…
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Now we will be editing four fields in the file. Note the below four fields and leave everything
else untouched. Also leave double quotes as it is and enter your data in between.
After making the changes ‘ifcfg-enp0s3‘, looks something like the image below. Notice your IP,
GATEWAY and DNS will vary, please confirm it with your ISP. Save and Exit.
Network Details
Restart service network and check the IP is correct or not, that was assigned. If everything is ok,
Ping to see network status…
# ip addr show
# ping -c4 google.com
Verify IP Address
The next thing to do is to change the HOSTNAME of the CentOS sever. Check the currently
assigned HOSTNAME.
# echo $HOSTNAME
To set new HOSTNAME we need to edit ‘/etc/hostsname‘ and replace old hostname with the
desired one.
# vi /etc/hostname
Set System Hostname
After setting hostname, make sure to confirm hostname by logout and login again. After login
check new hostname.
$ echo $HOSTNAME
$ hostname
4. Update or Upgrade CentOS Minimal Install
This will not install any new packages other than updating and installing the latest version of
installed packages and security updates. Moreover Update and Upgrade are pretty same except
the fact that Upgrade = Update + enable obsoletes processing during updates.
Important: You can also run the below command which will not prompt for the packages
update and you do not need to type ‘y‘ for accepting the changes.
However it is always a good idea to review the changes which is going to take place on the sever
specially in production. Hence using the below command may automate the update and upgrade
for you but it is not recommended.
In most cases, specially in production environment, we usually install CentOS as command line
with no GUI, in this situation we must have a commandline browsing tool to check websites via
terminal. For this, we going to install a most famous tool called ‘links‘.
For usage and examples to browse web sites u links tool, read our article Command Line Web
Browsing with Links Tool
No matter for what purpose you will be using the server, in most of the cases you need a HTTP
server to run websites, multimedia, client side script and many other things.
If you would like to change default port (80) of Apache HTTP Server to any other port. You
need to edit the configuration file ‘/etc/httpd/conf/httpd.conf‘ and search for the line that starts
typically like:
LISTEN 80
Change port number ‘80‘ to any other port (say 3221), save and exit.
Change Apache Port
Add the port you just opened for Apache through firewall and then reload firewall.
# firewall-cmd --add-service=http
Reload firewall.
# firewall-cmd --reload
After making all above things, now it’s time to restart Apache HTTP server, so that the new
port number is taken into effect.
Now add the Apache service to system-wide to start automatically when system boots.
Now verify the Apache HTTP Server by using links command line tool as shown in the below
screen.
# links 127.0.0.1
PHP is a server-side scripting language for web based services. It is frequently used as general-
purpose programming language as well. Install PHP on CentOS Minimal Server as.
After installing php, make sure to restart Apache service to render PHP in Web Browser.
Next, verify PHP by creating following php script in the Apache document root directory.
Now view the PHP file, we just created (phpinfo.php) in Linux Command Line as below.
# php /var/www/html/phpinfo.php
OR
# links http://127.0.0.1/phpinfo.php
Verify PHP
MariaDB is a fork of MySQL. RedHat Enterprise Linux and its derivatives have shifted to
MariaDB from MySQL. It is the Primary Database management System. It is again one of those
tools which is necessary to have and you will need it sooner or later no matter what kind of
server you are setting. Install MariaDB on CentOS Minimal Install server as below.
# firewall-cmd --add-service=mysql
# /usr/bin/mysql_secure_installation
Secure MariaDB Database
Read Also:
SSH stands for Secure Shell which is the default protocol in Linux for remote management. SSH
is one of those essential piece of software which comes default with CentOS Minimal Server.
# SSH -V
Check SSH Version
Use Secure Protocol over the default SSH Protocol and change port number also for extra
Security. Edit the SSH configuration file ‘/etc/ssh/sshd_config‘.
Uncomment the line below line or delete 1 from the Protocol string, so the line seems like:
This change force SSH to use Protocol 2 which is considered to be more secure than Protocol 1
and also make sure to change the port number 22 to any in the configuration.
Secure SSH Login
Disable SSH ‘root login‘ and allow to connect to root only after login to normal user account for
added additional Security. For this, open and edit configuration file ‘/etc/ssh/sshd_config‘ and
change PermitRootLogin yes t PermitRootLogin no.
Read Also:
GCC stands for GNU Compiler Collection is a compiler system developed by GNU Project
that support various programming languages. It is not installed by default in CentOS Minimal
Install. To install gcc compiler run the below command.
# gcc --version
Check GCC Version
Java is a general purpose class based, object-oriented Programming language. It is not installed
by default in CentOS Minimal Server. Install Java from repository as below.
# java -version
Tomcat is a servlet container designed by Apache to run Java HTTP web server. Install tomcat
as below but it is necessary to point out that you must have installed Java prior of installing
tomcat.
# /usr/sbin/tomcat version
Check Tomcat Version
Add service tomcat and default port (8080) through firewall and reload settings.
Now it’s time to secure tomcat server, create a user and a password to access and manage. We
need to edit file ‘/etc/tomcat/tomcat-users.xml‘. See the section which looks like:
<tomcat-users>
....
</tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tecmint" password="tecmint" roles="manager-gui,manager-
script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>
Secure Tomcat
Here we added user “tecmint” to administer/manage tomcat using password “tecmint”. Stop and
start the service tomcat so that the changes are taken into effect and enable tomcat service to start
at system boot.
Read Also: Installing and Configuring Apache Tomcat 8.0.9 in RHEL/CentOS 7.0/6.x
Nmap for Network Mapper creates a map of the network by discovering host on which it is
running as well as by analyzing network. nmap is not included in the default installation and you
have to install it from repository.
List all open ports and corresponding services using them on host.
# nmap 127.0.01
# firewall-cmd --list-ports
firewalld is a firewall service which manages the server dynamically. Firewalld removed
iptables in CentOS 7. Firewalld is installed by default on RedHat Enterprise Linux and its
derivatives by default. With iptables every change in order to be taken into effect needs to flush
all the old rules and create new rules.
However with firewalld, no flushing and recreating of new rules required and only changes are
applied on the fly.
# firewall-cmd --get-zones
# firewall-cmd --get-default-zone
Firewalld Default Zone
# firewall-cmd --set-default-zone=work
# firewall-cmd --list-services
List Firewalld Zone Services
# firewall-cmd --add-service=http
# firewall-cmd –reload
# firewall-cmd --remove-service=http
# firewall-cmd --reload
Remove Firewalld Service Temporarily
# firewall-cmd --add-port=331/tcp
# firewall-cmd --reload
# firewall-cmd --remove-port=331/tcp
# firewall-cmd --reload
To disable firewalld.
To enable firewalld.
wget is a Linux command line based utility that retrieves (downloads) content from web servers.
It is an important tool you must have to retrieve web contents or download any files using wget
command.
For more usage and practical examples on how to use wget command to download files on the
terminal, read 10 Wget Command Examples.
Telnet is a network protocol that enables a user to login into another computer on the same
network over TCP/IP. Once connection etablished to the remote computer it becomes a virtual
terminal and allow you to communicate with the remote host within your computer as per
whatever privileges provided to you.
Telnet also very useful for checking listening ports on remote computer or host.
Webmin is a Web based configuration tool for Linux. It acts as a central system to configure
various system configuration like users, disk quota, services and configurations of HTTP server,
Apache, MySQL, etc.
# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.740-1.noarch.rpm
# rpm -ivh webmin-*.rpm
Install Webmin
After webmin installation, you will get a message on terminal to login to your host (http://ip-
address:10000) using your root password on port number 10000. If running a headless server you
can forward the port and access it on a machine/server that is headed.
It is not a good idea to add untrusted repositories specially in production and it may be fatal.
However just for example here we will be adding a few community approved trusted repositories
to install third party tools and packages.
Attention! Extra care is needs to be taken while adding Third Party Repository.
In the CentOS Minimal Install you don’t get utility like unzip or unrar. We have the option to
install each utility as required or an utility that servers for all. 7-zip is such an utility which
compress and extract files of all known types.
Notice: The package is downloaded and installed from Fedora EPEL 7 Repository.
A small yet very useful NTFS driver called NTFS-3G is available for most of the UNIX-like
distribution. It is useful to mount and access Windows NTFS file system. Though other
alternatives like Tuxera NTFS is available, NTFS-3G is most widely used.
After installing ntfs-3g has been installed, you can mount Windows NTFS partitions (where
/dev/sda5 is my windows drive) using following command.
VSFTPD which stands for Very Secure File Transfer Protocol Daemon is a FTP server for
UNIX-like System. It is one of the most efficient and secure FTP Server available today.
# vi /etc/vsftpd/vsftpd.conf
Edit a few fields and leave other as it is, unless you know what you are doing.
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
You may also change the port number and open vsftpd port through the firewall.
# firewall-cmd --add-port=21/tcp
# firewall-cmd --reload
sudo which is commonly called as super do as well as suitable user do is a program for UNIX-
like operating system to execute a program with the security privileged of another user. Let’s see
how to configure sudo…
# visudo
sudoers File
Give all the permission (equal to root) to a user (say tecmint), that has already been created.
Give all the permission (equal to root) to a user (say tecmint), except the permission to reboot
and shutdown the server.
Again open the same file and edit it with the below contents.
Give permission to a group (say debian) to run a few root privilege command say (add user and
delete user) .
SELinux which stands for Security-Enhanced Linux is a security module at kernel level.
# getenforce
Check SELinux Mode
# setenforce 0
# setenforce 1
24. Install Rootkit Hunter
Rootkit Hunter abbreviated as Rkhunter is an application that scan rootkits and other potentially
harmful exploits in Linux systems.
Run rkhunter as a scheduled job, from a script file or manually to scan harmful exploits in
Linux.
# rkhunter --check
Linux Malware Detect (LMD) is a open source Linux malware scanner released under the
GNU GPLv2 license, that is
specially designed for threats faced in hosting environments. For complete installation,
configuration and usage of LMD can be found at:
speedtest-cli is a tool written in python to test internet bandwidth including download and
upload speed. For complete installation and usage of speedtest-cli tool, read our article at Check
Linux Server Bandwidth Speed from Command Line
This is one of the most widely used software utility. It function as job scheduler i.e., schedule a
job now that will execute in future itself. It is useful in logging and maintaining records
unattained as well as several other routine work like regular backup. All the schedule is written
in /etc/crontab file.
30 4 * * * /home/$user/script.sh
After adding the above line to crontab, it will run automatically at 04:30 am everyday and the
output depends upon what is there in script file. Moreover script can be replaced by commands.
For more examples of cron jobs, read 11 Cron Jobs Examples in Linux
Owncloud is a HTTP based data synchronization, file sharing and remote file storage
application. For more detail on installing own cloud, you may like to see this article : Create
Personal/Private Cloud Storage in Linux
Virtualization is a process of creating virtual OS, Hardware and Network, is one of the most
sought technology of these days. We will be discussing on how to install and configure
virtualization in detail.
Our CentOS Minimal server is a headless server. Lets prepare it to host virtual machines that is
accessible over HTTP by installing following packages.
# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
# wget
http://download.virtualbox.org/virtualbox/4.3.12/Oracle_VM_VirtualBox_Extensi
on_Pack-4.3.12-93733.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.12-
93733.vbox-extpack
Install Virtualbox Extension Pack
# adduser vbox
# passwd vobx
# usermod -G vboxusers vbox
# wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-4.3-
1.zip
Extract the zip and copy the extracted folder to HTTP working directory.
# unzip phpvirtualbox-4.*.zip
# cp phpvirtualbox-4.3-1 -R /var/www/html
# mv config.php.example config.php
Open the configuration file to edit and add ‘username‘ and ‘password‘ we just created in the
above step.
# vi config.php
http://192.168.0.15/phpvirtualbox-4.3-1/
PHP Virtualbox Login
Password protect your boot loader so that you get an additional level of security right at the
booting time. Also you get a protection layer of protection at physical level. Protect your Server
by locking GRUB at boot to avoid any unauthorized access.
First make backup of two files, so that if anything goes bad, you have the option to revert back.
Create a backup of ‘/etc/grub2/grub.cfg‘ as ‘/etc/grub2/grub.cfg.old‘.
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old
# cp /etc/grub.d/10_linux /etc/grub.d/10_linux.old
Now open ‘/etc/grub.d/10_linux‘ and add the below line at the end of the file.
cat <<EOF
set superusers=”tecmint”
Password tecmint avi@123
EOF
Notice in the above file, replace “tecmint” as username and “avi@123” as password with your
username and password.
After creating new grub.cfg file, reboot the machine and press ‘e‘ to edit. You will find that it
requires you to enter ‘valid credentials‘ in order to edit boot menu.
Also you can generate encrypted password in place of plain password as shown in the above
step. First generate an encrypted password as suggested below.
# grub2-mkpasswd-pbkdf2
[Enter Normal password twice]
Generate Encrypted Grub Password
Now open ‘/etc/grub.d/10_linux‘ file and add the below line at the end of the file.
cat <<EOF
set superusers=”tecmint”
Password_pbkdf2 tecmint
grub.pbkdf2.sha512**************************************************
EOF
Encrypted Grub Password
Replace the password with the one generated on your system. Don’t forget to cross check the
password.
Also note you need to generate grub.cfg in this case as well, as described above. Reboot and
next time you press ‘e‘ to edit, you will be prompted for username and password.
We’ve tried to cover most of the necessary post-installation points of industry standard
distributions RHEL 7 and CentOS 7. If you find that we’ve missed certain points or you need to
extend this post with a new post-install things, you may share with us, we will include your point
in this article by extending it.