################################################################################################ # File name fw_upgrade # # Created by ITUS # # Original version from firmware 1.51 sp1 # # VERSION NUMBER 1.51 - 6beta # # Last Modified date 28th Feb 2016 # # Changes - roadrunnere42 - Only new snort rules are added to the list instead of rewritting # # the whole list, complete new snort list download ever 14 days. Malicious and # # ads list, downloaded in memory and duplicate ip's are removed before writting. # # Changes - Hans run webfilter based on ads/malicious settings in UCI # # Perform DNSMASQ restart / SNORT restart only in case of updates # # Changes - Hans correction in line 17 based on Wisywig error # # Changes - Hans added rules function calls into scripts # # Changes - roadrunnere42 added ramdisk and checks to see if files exist before removing # # Changes - user8446 added option switches to curl commands as follows: added -1 to force # # connections =/> TLS1.0 for IPS, -m to exit if connection drops or host is down to keep script# # from hanging for all curl commands # # # # # # # # When changing the script please update WHAT YOU CHANGED OR ADDED, ADD 1 TO THE VERSION # # NUMBER AND DATE CHANGED. # # This will make it easied to time to come to identiy what your you have and who did what. # ################################################################################################ update_snort_rules() { # check to see if ramdisk is empty and it not remove all rules. if [ "$(ls -A /mnt/ramdisk)" ] ; then rm -R /mnt/ramdisk/*.rules fi curl -k -1 -m 40 -o /mnt/ramdisk/botcc.portgrouped.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-botcc.portgrouped.rules curl -k -1 -m 40 -o /mnt/ramdisk/botcc.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-botcc.rules curl -k -1 -m 40 -o /mnt/ramdisk/ciarmy.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-ciarmy.rules curl -k -1 -m 40 -o /mnt/ramdisk/compromised.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-compromised.rules curl -k -1 -m 40 -o /mnt/ramdisk/dshield.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-dshield.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-exploit.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-exploit.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-malware.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-malware.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-mobile_malware.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-mobile_malware.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-user_agents.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-user_agents.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-web_client.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-web_client.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-worm.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-worm.rules curl -k -1 -m 40 -o /mnt/ramdisk/emerging-current_events.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-current_events.rules # curl -k -1 -m 40 -o /mnt/ramdisk/emerging-trojan.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-trojan.rules # curl -k -1 -m 40 -o /mnt/ramdisk/drop.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-drop.rules # curl -k -1 -m 40 -o /mnt/ramdisk/emerging-web_specific_apps.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-web_specific_apps.rules # curl -k -1 -m 40 -o /mnt/ramdisk/emerging-scan.rules https://rules.emergingthreats.net/open/snort-edge/rules/emerging-scan.rules echo "working on snort rules please wait... may take upto a minute" cat /mnt/ramdisk/*.rules > /mnt/ramdisk/alert.list sed -i 's/alert /drop /' /mnt/ramdisk/alert.list sed '/^\#/d' /mnt/ramdisk/alert.list >> /mnt/ramdisk/temp.rules sed '/^$/d' /mnt/ramdisk/temp.rules > /mnt/ramdisk/snort.rules sed -i '/sid:2002802/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2019237/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2018194/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012251/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100527/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100649/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009080/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009205/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009206/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009207/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009208/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2008975/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010515/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2003099/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2101201/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001689/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011695/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013359/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013358/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013357/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013355/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013354/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013353/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013360/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100648/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009080/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2101390/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012086/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100650/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011803/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012510/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001219/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2003068/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2002995/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011347/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2102925/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012263/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012848/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001046/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2003055/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2002993/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2002992/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001353/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009205/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009206/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009207/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009208/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001046/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2016950/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2019509/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011507/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010514/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010516/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010518/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010520/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010522/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010525/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010527/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012056/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012075/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012119/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012205/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012272/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012398/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010931/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011764/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2103088/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2103192/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2103134/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2101852/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2015526/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009151/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012997/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2101201/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2016672/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2000538/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2000540/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011367/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012251/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100528/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2007994/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2008066/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2012180/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2102925/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2100628/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010697/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2013479/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2001046/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011803/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2009768/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2019490/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011347/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2011037/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2103133/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2103132/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2017005/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2006445/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2003927/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2010908/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2014020/s/^/#/' /mnt/ramdisk/snort.rules sed -i '/sid:2017479/s/^/#/' /mnt/ramdisk/snort.rules ########################################################################################## #compare snort files ########################################################################################## # if system has been restart then rules from ramdisk are copied (a fresh copy) if [ "$system_restarted" = "1" ] ; then mv /mnt/ramdisk/snort.rules /etc/snort/rules/snort.rules else # checks to see if counter is less or equal to 14, if less or equal 14, snorts rules are checked against new rules and any new rules are added. Rules that have been deleted from the new snort rules list are not deleted. Thats why I put in, after 14 downloads a fresh copy of snort is used. #loads the counter number into the variable called value value=$(cat "counter") if [[ "$value" -le "14" ]] ; then echo "It's been " $value "days since last full update, will automatically do full update when it's been 14 days" #compares the two snort files and the differences are added back into the snort rules. grep -Fxvf /etc/snort/rules/snort.rules /mnt/ramdisk/snort.rules >> /etc/snort/rules/snort.rules echo $((value+1)) >counter # update counter by adding 1 else # Is more that 14 days so use fresh copy of snort rules mv /mnt/ramdisk/snort.rules /etc/snort/rules/snort.rules echo 1 > counter # set counter to 1 fi fi # If the alert.list file is present remove it, this justs free's up more space in memory if [ -f /mnt/ramdisk/alert.list ] ; then rm /mnt/ramdisk/alert.list fi # If the temp.rules file is present remove it, this justs free's up more space in memory if [ -f /mnt/ramdisk/temp.rules ] ; then rm /mnt/ramdisk/temp.rules fi echo "#*************************************************************" >> snort.rules echo "#" >> snort.rules echo "# Copyright (c) 2003-2016, Emerging Threats" >> snort.rules echo "# All rights reserved." >> snort.rules echo "# " >> snort.rules echo "# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the " >> snort.rules echo "# following conditions are met:" >> snort.rules echo "# " >> snort.rules echo "# * Redistributions of source code must retain the above copyright notice, this list of conditions and the following " >> snort.rules echo "# disclaimer." >> snort.rules echo "# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the " >> snort.rules echo "# following disclaimer in the documentation and/or other materials provided with the distribution." >> snort.rules echo "# * Neither the name of the nor the names of its contributors may be used to endorse or promote products derived " >> snort.rules echo "# from this software without specific prior written permission." >> snort.rules echo "# " >> snort.rules echo "# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES," >> snort.rules echo "# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE " >> snort.rules echo "# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, " >> snort.rules echo "# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR " >> snort.rules echo "# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, " >> snort.rules echo "# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE " >> snort.rules echo "# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. " >> snort.rules echo "#" >> snort.rules echo "#*************************************************************" >> snort.rules sleep 1 do_snort_restart=1 } ########################################################################################## update_ads_rules() { ########################################################################################## # If the ads.tmp file is present remove it, this just free's up more space in memory if [ -f /mnt/ramdisk/ads.tmp ] ; then rm /mnt/ramdisk/ads.tmp fi #### Ads Updates #### curl -m 40 -s -d mimetype=plaintext -d hostformat=unixhosts http://pgl.yoyo.org/adservers/serverlist.php? | sort >> /mnt/ramdisk/ads.tmp curl -m 40 -s http://winhelp2002.mvps.org/hosts.txt | grep -v "#" | grep -v "127.0.0.1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | sed -e '1,3d' | sort >> /mnt/ramdisk/ads.tmp #curl -m 40 -s http://someonewhocares.org/hosts/hosts | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | grep -v '^\\' | grep -v '\\$' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> /mnt/ramdisk/ads.tmp curl -m 40 -s http://sysctl.org/cameleon/hosts | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | grep -v '^\\' | grep -v '\\$' | awk '{print $3}' | grep -v '^\\' | grep -v '\\$' | sort >> /mnt/ramdisk/ads.tmp curl -m 40 -s http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | grep -v '^\\' | grep -v '\\$' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> /mnt/ramdisk/ads.tmp curl -m 40 -s https://hosts.neocities.org/ -k | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> /mnt/ramdisk/ads.tmp sleep 1 echo "Number of lines before removing duplicate records" wc -l /mnt/ramdisk/ads.tmp # strip out duplicate ads sort -u /mnt/ramdisk/ads.tmp > /mnt/ramdisk/ads.tmp1 sed '/^$/d' /mnt/ramdisk/ads.tmp1 > /mnt/ramdisk/ads.tmp echo "Number of lines After removing duplicate records" wc -l /mnt/ramdisk/ads.tmp1 echo "working on ads rules please wait may... take upto a minute" sed 's/^/address=\//g' -i /mnt/ramdisk/ads.tmp sed -e 's/$/\/10.10.10.11/' -i /mnt/ramdisk/ads.tmp sleep 1 # activate ads update mv /mnt/ramdisk/ads.tmp /etc/itus/lists/ads sleep 1 chmod 655 /etc/itus/lists/ads } ########################################################################################## update_malicious_rules() { ########################################################################################## #If the malicious.tmp file is present, remove it, this just free's up more space in memory if [ -f /mnt/ramdisk/malicious.tmp ] ; then rm /mnt/ramdisk/malicious.tmp fi ### Malware Updates ### curl -m 40 -s http://mirror1.malwaredomains.com/files/justdomains | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | sort >> /mnt/ramdisk/malicious.tmp curl -m 40 -s https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt -k | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | sort >> /mnt/ramdisk/malicious.tmp curl -m 40 -s https://hosts.neocities.org/ -k | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> /mnt/ramdisk/malicious.tmp sleep 1 echo "working on malicious rules please wait... may take upto a minute" echo "Number of lines before removing duplicate records" wc -l /mnt/ramdisk/malicious.tmp # Strip out duplicate malicious sort -u /mnt/ramdisk/malicious.tmp > /mnt/ramdisk/malicious.tmp1 sed '/^$/d' /mnt/ramdisk/malicious.tmp1 > /mnt/ramdisk/malicious.tmp echo "number of lines After removing duplicate records" wc -l /mnt/ramdisk/malicious.tmp1 sed 's/^/address=\//g' -i /mnt/ramdisk/malicious.tmp sed -e 's/$/\/10.10.10.11/' -i /mnt/ramdisk/malicious.tmp sleep 1 # activate malicious update mv /mnt/ramdisk/malicious.tmp /etc/itus/lists/malicious sleep 1 chmod 655 /etc/itus/lists/malicious sleep 1 } ########################################################################################## # Prevent DNSMASQ/SNORT restart unless updates are needed ########################################################################################## do_dnsmasq_restart=0 # 0 = no restart, 1 = restart do_snort_restart=0 # 0 = no restart, 1 = restart ########################################################################################## # Check to see if there is a mount point in /mnt/ramdisk and if there is'nt it will creat one. ########################################################################################## # This is used the first time you run this script on the Shield to created the mount point. if [ ! -d "/mnt/ramdisk" ] ; then mkdir /mnt/ramdisk fi ########################################################################################## # Check to see for /mnt/ramdisk is mounted, if not will create the ramdisk in memory. ########################################################################################## if mount | grep /mnt/ramdisk > /dev/null ; then echo "yes mounted" else echo "Creating Ramdisk" mount -t tmpfs -o size=50000k tmpfs /mnt/ramdisk fi ########################################################################################## # check to see if there is a mount point in /mnt/restart-var and if there isn't it will # create one, this is used the first time you run this script on the shield to create the # mount point. ########################################################################################## if [ ! -d "/mnt/restart-var" ] ; then mkdir /mnt/restart-var echo 1 > counter fi ########################################################################################## # check to see if /mnt/restart-var is mounted if not will create the restart-var in memory. ########################################################################################## if mount | grep /mnt/restart-var > /dev/null ; then echo "System has not been restarted" else echo "Creating restart-ramdisk" mount -t tmpfs -o size=1k tmpfs /mnt/restart-var system_restarted="1" echo $system_restart fi ########################################################################################## # update snort rules ########################################################################################## # To prevent the snort rules from updating put # in front (# update_snort_rules) update_snort_rules sleep 1 ########################################################################################## # Update ads rules ########################################################################################## # Managed via LUCI>SERVICES>Web Filter > Content filter - Ads if [ $(uci get e2guardian.e2guardian.content_ads) = 1 ] ; then echo "Updating ADS rules" update_ads_rules sleep 1 do_dnsmasq_restart=1 fi ########################################################################################## # Update malicious sites rules # Managed via LUCI>SERVICES>Web Filter > Content filter - Malicious ########################################################################################## if [ $(uci get e2guardian.e2guardian.content_malicious) = 1 ] ; then echo "Updating MALICIOUS rules" update_malicious_rules sleep 1 do_dnsmasq_restart=1 fi ########################################################################################## # restart DNSMASQ ########################################################################################## if [ $do_dnsmasq_restart = 1 ] ; then echo "Restarting DNSMASQ service" /etc/init.d/dnsmasq restart sleep 3 fi ########################################################################################## # restart SNORT ########################################################################################## if [ $do_snort_restart = 1 ] ; then echo "Restarting SNORT service" #mv /mnt/ramdisk/snort.rules /etc/snort/rules/snort.rules sleep 3 /etc/init.d/snort restart echo "Restarted" sleep 2 fi ########################################################################################## # update last-update date ########################################################################################## date > /.do_date ########################################################################################## # umounts the ramdisk so freeing up memory. ########################################################################################## umount /mnt/ramdisk echo " Please ignore the error with PID as these are normal" exit 0