Test Firewall Rules
Oracle Professionals are sometimes required to apply for firewall access within a company to ensure connectivity to required services. As an example, a DBA may need to create database links to other databases or open ports to the RMAN Catalog and OEM Repository. Such request can vary from just a couple of lines to hundreds of rules that must be applied to various firewalls. This article will describe a method to automatically test access to ensure successful implementation of firewall rules on a Linux/ Unix server (tested on Solaris, but should work on all platforms that ships with the bash shell).
First, construct a CSV file with your rules. The fields are "From IP", "To IP", Port, [optional info...]
For example: fwtest.dat
10.272.126.91, 10.110.72.101, 22 10.272.126.91, 10.110.72.101, 1521
Now, create a script to test your rules (let's call it fwtest.sh):
#!/bin/bash OK=0 NotOK=0 cat fwtest.dat | { while IFS=',' read -r from to port rest; do echo TEST ACCESS From=$from To=$to Port=$port timeout 2 bash -c "</dev/tcp/${to}/${port}" if [ "$?" -ne 0 ]; then echo "Connection to $to on port $port failed" NotOK=$[NotOK + 1] else echo "Connection to $to on port $port succeeded" OK=$[OK + 1] fi done echo Successful = $OK echo Failed = $NotOK }
Sample output:
TEST ACCESS From=10.272.126.91 To=10.110.72.101 Port=22 Connection to 10.110.72.101 on port 22 succeeded TEST ACCESS From=10.272.126.91 To=10.110.72.101 Port=1521 bash: connect: Connection refused Connection to 10.110.72.101 on port 1521 failed Successful = 1 Failed = 1