Friday, 26 October 2018

How To Open A Port In CentOS 7 With Firewalld

Open Specific Port
Opening a port in firewalld is fairly straightforward, in the below example we allow traffic in from any source IP address to TCP port 100. First we modify the persistent configuration, then we reload firewall-cmd to load this change into the running configuration.
[root@centos7 ~]# firewall-cmd --permanent --add-port=100/tcp
[root@centos7 ~]# firewall-cmd --reload
If the --permanent flag is not specified, this will only change the running configuration but will not be saved.
We can check the ports that are opened in the current default zone with ‘--list-ports’.
[root@centos7 ~]# firewall-cmd --list-ports
As expected we see that TCP port 100 is open.
Should we wish to remove a port, we can use ‘--remove-port=’ instead.
We can also open a range of ports in the same way.
[root@centos7 ~]# firewall-cmd --permanent --add-port=200-300/tcp

Open Predefined Service

Rather than manually specifying a port number to allow through the firewall, we can make use of a bunch of predefined services which may be easier. For example instead of opening TCP port 80, we can use the ‘http’ service.
[root@centos7 ~]# firewall-cmd --permanent --add-service=http
[root@centos7 ~]# firewall-cmd --reload
Now if we list the services that are accepted through the firewall, we will see http listed along with ssh and dhcpv6-client, which are allowed through by default.
[root@centos7 ~]# firewall-cmd --list-services
dhcpv6-client http ssh
This is a predefined service and can be found as an XML file in the /usr/lib/firewalld/services/ directory. Here’s what the http service we just used looks like.
[root@centos7 ~]# cat /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
We can create custom services by copying one of these into the /etc/firewalld/services/ directory and then customizing it. The services in the /usr/lib/firewalld/services/ directory should NOT be modified, changes should be copied into /etc/firewalld/services/ followed by a reload of firewall-cmd to pick up the changes.

Sunday, 21 October 2018

Linux two Face ssh authentication with centralized Database server

Create Databases :- 

  1. mysql -uroot -p
  2. create database Login;
  3. use Login;
  4. create table user (id int(10), Name varchar(25), Password varchar(25));
  5. insert into user (id,Name,Password) values (1,'mukesh','mukesh@123');
  6. exit

Copy Below script  :-

vim /tmp/

mukesh=`/usr/bin/ps ax | grep $$ | grep -v grep | awk '{ print $2 }'`
user=root                 #Databases UserName
password=Voip@90 #Database Password
DB=Login                 #Database Name
host= #Set Local or centralized Server Ip
while [ 1=1 ]
UserName=$(whiptail --inputbox "please enter your username" 8 78 --title "User Name" 3>&1 1>&2 2>&3)
                                                                        # A trick to swap stdout and stderr.
# Again, you can pack this inside if, but it seems really long for some 80-col terminal users.
if [ $exitstatus = 0 ]; then

                Password=$(whiptail --passwordbox "please enter your Password" 8 78 --title "Password" 3>&1 1>&2 2>&3)
                if [ $exitstatus = 0 ]; then
    for ((i = 0 ; i <= 100 ; i+=5)); do
        sleep 0.1
        echo $i
} | whiptail --gauge "Please wait while we check..." 6 50 0

                IsUserExist=$(echo "SELECT count(*) as '' from user  WHERE Name='$UserName'  AND Password='$Password' limit 1 " | mysql $DB -u $user -p$password )
                        if [ "$IsUserExist" -eq 1 ] ;then
echo "Thanks for Login $UserName" > test_textbox
#                  filename height width
whiptail --textbox test_textbox 12 80
                        echo "You have enter wrong Username & Password." > test_textbox
#                  filename height width
whiptail --textbox test_textbox 12 80
                        logout=`/usr/bin/pkill -9 -t $mukesh`
                logout=`/usr/bin/pkill -9 -t $mukesh`

    echo "User selected Cancel."
logout=`/usr/bin/pkill -9 -t $mukesh`

Sunday, 7 October 2018

Create custom Centos 7 Kickstart boot CD iso

Scenario: You want to create a custom CentOS 7 / RHEL 7 boot CD with custom kickstart files located on the CD. Furthermore you want to perform some post installation tasks like running some Puppet manifests. In this post I describe the process based on CentOS 7.1.

1) Install a base CentOS 7.1 virtual machine
First you need to install your build environment. It is sufficient to install a “@Base” system.
2) Prepare your build environment
If the installation of your CentOS 7.1 virtual machine is finished you can continue with preparing your build environment.
2.1 Create needed folder structure as root

mkdir -p ~/kickstart_build/isolinux/{images,ks,LiveOS,Packages,postinstall}

The folders will contain the following:
  • images: contents of the images directory located on the CentOS DVD
  • ks: all your kickstart files which we will create later on
  • LiveOS: contents of the LieveOS directory on the CentOS DVD
  • Packages: all RPM packages from CentOS 7 DVD plus additional packages. In my case I will also install Puppet agent. Therefore I need some packages from Puppet Labs
  • postinstall: everything you want so to do after installation, for example executing custom scripts or in my case Puppet modules.
2.2 Copy needed content
Now you need to copy all needed content from the CentOS DVD to your local folders. Please save the CentOS 7 ISO file in /tmp and mount it somewhere.

mkdir -p /mnt/iso
mount -o loop /tmp/CentOS-7-x86_64-DVD-1503-01.iso /mnt/iso
cp /mnt/iso/.discinfo ~/kickstart_build/isolinux/
cp /mnt/iso/isolinux/* ~/kickstart_build/isolinux/
rsync -av /mnt/iso/images/ ~/kickstart_build/isolinux/images/
cp /mnt/iso/LiveOS/* ~/kickstart_build/isolinux/LiveOS/
ll /mnt/iso/repodata/ | grep -i comps
-rw-r--r--. 1 root root 157580 1. Apr 01:43 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz

cp /mnt/iso/repodata/0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz ~/kickstart_build/
cd ~/kickstart_build/
gunzip 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml
mv 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml comps.xml

2.3 Get additional packages if needed
As I already mentioned I will also install Puppet Opensource client on my machines to install and configure my machines as needed. So I need to implement additional packages on the custom boot ISO to be able to install and run Puppet manifests.

mkdir /tmp/packages
cd /tmp/packages
wget -e robots=off --mirror --no-parent --no-host-directories --cut-dirs=4
wget -e robots=off --mirror --no-parent --no-host-directories --cut-dirs=4
rm -Rf index* repodata

2.4 Copy all your packages and create repodata
Now it`s time to bring the CentOS packages and your additional needed packages together. First copy all packages from CentOS 7 ISO to your local folder. Afterwards you can move all additional packages from /tmp/packages to your kickstart packages folder:

rsync -av /mnt/iso/Packages/ ~/kickstart_build/isolinux/Packages/
rsync -av /tmp/packages/ ~/kickstart_build/isolinux/Packages/

Now we need to create the repodata folder in ~/kickstart_build/isolinux/Packages/:

yum install -y createrepo
cd ~/kickstart_build/isolinux
createrepo -g ~/kickstart_build/comps.xml .

3) Prepare Kickstart file
3.1 Create a kickstart
You need to create the kickstart file in ~/kickstart_build/isolinux/ks and name it for example ks.cfg. The content can look like this:

# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
# Use text install
# Run the Setup Agent on first boot
firstboot --disable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=de-nodeadkeys --xlayouts='de (nodeadkeys)'
# System language
lang de_DE.UTF-8
# Network information
network --bootproto=static --device=ens3 --noipv6 --activate --ip= --netmask= --gateway= --nameserver= --hostname=infrastructure.reimer.local
network --bootproto=static --device=ens9 --noipv6 --activate --ip= --netmask=
# Root password
rootpw --iscrypted "some-crypted-password"
# System timezone
timezone Europe/Berlin --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=512
part pv.219 --fstype="lvmpv" --size 1 --grow
volgroup vg_system --pesize=4096 pv.219
logvol / --fstype="xfs" --size=1 --grow --label="rootlv" --name=rootlv --vgname=vg_system
logvol swap --fstype="swap" --size=2048 --name=swaplv --vgname=vg_system

You can validate your kickstart file like this:

ksvalidator ~/kickstart_build/isolinux/ks/ks.cfg

To create a crypted root password which you can use within your kickstart file do the following:

python -c 'import crypt; print(crypt.crypt("My Password", "$6$My Salt"))'

This generates a SHA512 crypted password.
3.2 Create kickstart postinstallation section
If you want to perform some postinstallation tasks within your kickstart installation you can add an appropriate section in the kickstart file. In my case I want to perform my Puppet configuration during the kickstart installation.
HINT: Be careful. In this case the first step will be the copy of the Puppet manifests from the ISO from which you boot your machine you want to kickstart. This action takes place in the NON-CHROOTED environment. The second step will be the Puppet run itself. This takes place in the CHROOTED environment.
Add the following at the end of your kickstart file:

# Copy needed Puppet files to /root/postinstall
%post --nochroot

set -x -v
exec 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1
echo "==> copying files from media to install drive..."
cp -r /run/install/repo/postinstall /mnt/sysimage/root
set -x -v
exec 1>/root/kickstart-stage2.log 2>&1
ls -l /root/postinstall
puppet apply -l /root/puppetrun.log /root/postinstall/puppet/manifests/site.pp --modulepath=/root/postinstall/puppet/modules/ $*

4) Time for action: create your custom CentOS 7 ISO file and test it

yum install -y genisoimage
cd ~/kickstart_build/
mkisofs -o centos-7-custom.iso -b isolinux.bin -c -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/

Now start a new virtual machine from your custom CentOS 7 ISO file and insert the following option at kernel boot:

linux inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg

Congratulations🙂 Your kickstart installation should run.

Friday, 2 March 2018

WARNING[4621] sig_pri.c: Span 1: Got SETUP with duplicate call ptr (0x7f6060000b20). Dropping call.

As i see this issue come with libpri updated version libpri-1.4.15 or more.

Resolve :-  After Down grade the libpri version from  libpri-1.4.15 to libpri-1.4.12. Its working fine now.


Wednesday, 21 February 2018

How to change Password by using sh script

Please find below script For change password automatic . set below script in crontab

Create new file .sh

vim  /home/Alert/

Enter below line in .sh file

# Change password echo -e "Password\nPassword" | passwd username

Set permission for .sh file

chmod 777 /home/Alert/

set script in crontab :-

45 10 * * * /bin/sh /home/Alert/


How to install perl modules on linux

Please find below command :-

yum -y install perl-CPAN
perl -MCPAN -e shell
yum install perl-DBD-mysql -y

Then start installation of modules :-

[root@localhost ~]# perl -MCPAN -e shell

Then Enter Below command :-


   install "Asterisk::AMI"
   install "asterisk::perl"
   install DBI
   install LWP
   install "Bit::Vector"
   install CGI
   install "Carp::Clan"
   install "Compress::Raw::Bzip2"
   install "Compress::Raw::Zlib"
   install "Config::Abstract"
   install DCOP
   install "Date::Calc"
   install "Device::Gsm"
   install "Device::Modem"
   install "Device::SerialPort"
   install "Email::Date::Format"
   install "Encode::Locale"
   install "ExtUtils::MakeMaker"
   install FCGI
   install "File::Listing"
   install "HTTP::Cookies"
   install "HTTP::Daemon"
   install "HTTP::Date"
   install "HTTP::Message"
   install "HTTP::Negotiate"
   install "IO::Compress::Base"
   install "LWP::MediaTypes"
   install "List::Util"
   install "MIME::Lite"
   install "MIME::Types"
   install "Mail::Lite"
   install "Net::HTTP"
   install Perl
   install "Pod::Simple"
   install Storable
   install "Sub::Uplevel"
   install "Test::Exception"
   install "Test::Pod"
   install "Test::Simple"
   install "Time::Local"
   install "Time::Piece"
   install "Template::Plugin::TimeDate"
   install "WWW::RobotRules"


Tuesday, 20 February 2018

mount: unknown filesystem type LVM2_member

Please find below :- 

root@zoo:~# mount /dev/sdd2 /home/mukesh
mount: unknown filesystem type 'LVM2_member'

root@zoo:~# fdisk -l /dev/sdd
Disk /dev/sdd: 233.8 GiB, 251000193024 bytes, 490234752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0009345d
Device     Boot  Start       End   Sectors   Size Id Type
/dev/sdd1  *        63    208844    208782   102M 83 Linux
/dev/sdd2       208845 488247479 488038635 232.7G 8e Linux LVM
(/dev/sdi1 is /boot partition, /dev/sdi2 is where the /home data resides)

Seems lvm2 tools also provide a way to check if its lvm or not, using lvmdiskscan (/dev/sdd2 here)

root@zoo:~# lvmdiskscan
  /dev/sdb1  [       1.82 TiB]
  /dev/sdc2  [     149.04 GiB]
  /dev/sdd1  [     101.94 MiB]
  /dev/sdd2  [     232.71 GiB] LVM physical volume
  0 disks
  4 partitions
  0 LVM physical volume whole disks
  1 LVM physical volume

Scan LVM

root@zoo:~# lvscan
 inactive '/dev/VolGroup00/LogVol00' [457.75 GiB] inherit
 inactive '/dev/VolGroup00/LogVol01' [1.94 GiB] inherit

Run below command for Activate LVM

root@zoo:~# vgchange -ay

Check Now

root@zoo:~# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [457.75 GiB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.94 GiB] inherit

Now mount :

mount /dev/VolGroup00/LogVol00 /home/mukesh

Done !

Monday, 19 February 2018


Please find below steps :-

JAVA installation : 

Jenkins requires Java 7 Minimum version.

#yum search java |grep openjdk
#yum install java-1.8.0-openjdk* wget -y 

Then check JAVA version 

1) #java -version

Output :-
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

Install RPM For Jenkins

#rpm –import
#cd /etc/yum.repos.d/

Install Jenkins:

#yum install jenkins -y

Now We have to enable, start and check the status of Jenkins:

systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins

Thursday, 15 February 2018

How to Install Python 2.7 on centos 6 & 7

Installation steps :-

Check Python version:
1) python -V

update Puthon version:

1) sudo yum update
2) sudo yum install scl-utils
3) sudo yum install centos-release-scl-rh
4) sudo yum install python27
5) sudo scl enable python27 bash

Verify the update:

1) python -V
  Python 2.7.8

After logging out or restarting, you must enable python 2.7:
$ sudo scl enable python27 bash
Enabling Python 2.7 in .bash_profile or .bashrc causes the machine to hang because CentOS 6 relies on Python 2.6 for Yum.

Tuesday, 13 February 2018

How to install NTP in Linux

Tested configuration:-

At server side:-
1) Yum install ntp* -y
2) vim /etc/ntp.conf 
Here on line 8:- restrict default netrap nopeer noquery (From here remove nopeer and noquery)
3) Then restart ntp service

At client side:-

1) Install package chrony* 
2) Yum install system-config-date
3) system-config-date 
a) (Here check mark on syncronize date and time over network)
 b) remove all ntp server
c) add server IP of NTP server

4) Advanced Option 
a) Speed up initial syncronized (OK)
5) Then restart services

Trouble shooting:-

1) If after restart of service only time is changing then please check hard ware clock of both machines:- By following 
hwclock --show

If hardware clock is not same then sync there clock after restart NTP service

2) If hardware clock are same but still it is not working then change the BIOS cell of machine. It may be Down thats why it is not able to work with hardware.

Please do configuration and if face any problem then please let me know.

Monday, 29 January 2018

How Break Windows 7,8,8.1,10 Password Using TRK

Please Follow below Steps :-

1. Download TRK iso from the link below:-

2. Make USB bootable
3. Plug in USB in Laptop/Desktop having Winsows any version
4. Boot laptop using USB or CD Rom
5. select sdb1 to boot TRK

6. Select Windows password resetting

7. Now select Winpass prompts for username first

8. enter username "Administrator"

9. enter 1

10. Select clear Password

11. Reboot

Wednesday, 24 January 2018

Restrict Ftp user to access other directory

Please follow below steps :-

1. # yum update
2. Disable selinux(vi /etc/sysconfig/selinux) for check #sestatus
3.#service iptables stop
4.#useradd akash
5.#passwd akash
#################Now Install Ftp#############################
6.yum install vsftpd -y
7.service vsftpd resart
##################Make directory For user access##################################
8.mkdir /akash1
###############Create file For Chroot_Jail##################
9.  vi /etc/vsftpd/chroot_list (here write the user name and save and exit).
10. vi /etc/vsftpd/vsftpd.conf
Here we add one entry- local_root=/akash1 (You can write here your directory for access via ftp).
# (default follows)
and do this than save and exit .
11.service vsftpd restart.

Tuesday, 23 January 2018

How to ssh Without Password

Here we have done send data from one server to another server by using rsync command without password for ssh its also same

    1. Test rsync over ssh (with password):

    rsync -avz -e ssh /home/test/ root@

    2. ssh-keygen generates keys.

    $ ssh-keygen

    Enter passphrase (empty for no passphrase):

    3. ssh-copy-id copies public key to remote host

    Use ssh-copy-id, to copy the public key to the remote host.

    ssh-copy-id -i ~/.ssh/

    4. Perform rsync over ssh without password


    Perform the rsync again, it should not ask you to enter any password this time.

    rsync -avz -e ssh /home/test/ root@

Friday, 19 January 2018

How to set up trapper in zabbix

Steps for setting trapper on items:

Step 1:

create host(trapper_junglee) under the host-group(teenpati-production) for which u need to create trapper. (Eg;

Step 2:

create item under created host(trapper_junglee)
Name  : Maintenance
Type  : Zabbix Trapper
key   : maintenance
rest all as it is & update it

Step 3:

create trigger under created host(trapper_junglee)
Name : Maintenance 00:25 - 00:40
Expression : {trapper_healthkart:maintenance1.time()}>002500 and {trapper_healthkart:maintenance1.time()}<004000
Severity : Information
Enable & update the trigger.

Step 4:

Go to particular machine( and select the trigger for which want to add trapper.
    In that go to dependencies and add the trapper time[trigger] by selecting right host-group and host.

Step 5 :

Finally update it.

Friday, 12 January 2018

How to create screen on zabbix Admin

Steps To Create A Screen:

1: First select a particular location or any machine of that location (eg:205.14796.214-a dataweave machine) which you want to create a screen.

2: Select Graph.

3: Select create graph.

4: Give name to the screen which you want to create.

5: Then add number of machine you want in that screen from host filter.

6: Then finally select the add button.

7: Then select Monitoring>screen>Create screen.

8: Give a name and select number of row’s and column’s.

9: Select that screen which you have created.

10 : Select Edit Screen>Change.

11: In graphs select the number of screens which you have created finally select add.

12 : Select slide show.

Thursday, 11 January 2018

How to install DKIM on Ubuntu server

Step 1: Install DKIM package
Use the following command in your terminal to install the DKIM package
sudo apt-get install opendkim opendkim-tools

Step 2: Edit configuration file

After installation of the package, there will be a config file created within the installed directory. Edit the config file  by adding the content given below at the end of the file.
KeyFile                 /etc/postfix/dkim.key
Selector                mail
SOCKET                  inet:8891@localhost
Make sure to replace with your domain name.

Step 3: Install and configure Postfix

(Skip to next step if already installed and configured). Postfix is the standard Mail Transfer Agent for Ubuntu. Use the command below to install Postfix.
sudo apt-get install postfix
Follow the instructions on the screen and complete the installation process. Open the postfix config file using the following command and edit as follows.
vim /etc/postfix/
Add the following lines towards the end of the file, then save and exit by pressing ESC key followed by typing :wq! and then hit the Enterkey.
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Step 4: DKIM key generation

Generate the DKIM key using the command
opendkim-genkey -t -s mail -d
This command will generate mail.private and mail.txt file. mail.private is private key that will be used to sign outgoing emails. Move it to /etc/opendkim.conf
cp mail.private /etc/postfix/dkim.key

Step 5: Setting DNS records

Open the mail.txt file using cat command
cat mail.txt
The result will look similar to this
mail._domainkey    IN    TXT    ( "v=DKIM1; k=rsa; t=y; "
      "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDny/XOYgwb+zaDh/HNvrYVDIF5xRsVmKM4BKRyq4+3LVKvTtqtKG56wld1/xbBVRRtJKczYCjZPmDrepz7mXw+TSqYX5nURJdV+lxhHOK85c78ua4twI4XFfCrwr3q/kj4HuQLJ2ceN9VqRO5CoE5kPTunopNOB1Nv3TolP5wkKQIDAQAB" )  ; ----- DKIM key mail for
Use the data available to set up your DNS records for your corresponding domain name.

Step 6: Setting up and testing

Start your DKIM service using the command
sudo service opendkim start
Restart the postfix service once before testing your setup
sudo service postfix restart
Now its time to set your DKIM setup. There are a few ways to test the setup out of which use the following.

Magento Installation on Linux

Please follow the below procedure to install Magento on linux machines

1. Download the latest magento tar file in your local machine by signing up on offical website.
2. Now using sftp or rsync copy the magento.tar file from local machine to server.
3. Extract Magento package file .
tar xvzf magento-
4. Copy all magento files/directories to domain root folder i.e,  /home/domainname/public_html
rsync -ravP magento/ /home/domainname/public_html/
5. We need to change the ownership of the files located in /publichtml
chown -R domainame:domainname public_html/
6. Now we need to change the permissions for the both Folder in /home/domainname/public_html
chmod -R 775 app/
chmod -R 775 media/
Magento configuration setup:
Now Open your browser and type your domain name, Now you’ll see the welcome/first page of domain.
Now start by continue button and give the concerned Local setting( time zone and currency )

Now go with continue button
Next page will be Database Configuration page. provide the database details
NOTE : If you added  domain through virtualmin by selecting mysql, it creates new MySql database and user, you can use the same details in magento Database connection
Now In the Web Access Options section, selcet skip the baseurl validation.
Now in the next page Create Admin Account page.
We need to an Encryption key.
If every thing is done correctly then following page displays to indicate a successful installation.
Backend will take you to admin login page
To login to Admin Dashboard of Magento, please go to the url http://ip-address or domain /index.php/admin and enter the required credentials created while installation Magento through web interface. We’ll see something like this.
Frontend will be the main site veiw
Magento Installation is done.

Magento Patching
After logging in through admin panel you will be seeing critical,warning messages, which means we need to do patch for concerned messages
The details of the patch will be given in the messages itself
Download the patches from the offical website and upload them in server through Sftp/Filezila
NOTE : If Patch is applied/removed the following message will be shown

Patch was applied/reverted successfully.
Thank you ! Enjoy Magento.

How To Open A Port In CentOS 7 With Firewalld

Open Specific Port Opening a port in firewalld is fairly straightforward, in the below example we allow traffic in from any source IP ad...