加强linux操作系统DNS服务安全

  • 拓扑图:

    • 代码:
    • #!/bin/bash
      #2017-12-3
      #by-duwentao
      
      domain_name="hetian.com"
      rip=`ifconfig eth0|grep Mask|awk -F ":" '{print $2}'|awk -F " " '{print $1}'|awk -F "." '{print $3"."$2"."$1}'`
      ip=`ifconfig eth0|grep Mask|awk -F ":" '{print $2}'|awk -F " " '{print $1}'`
      ip_last=`ifconfig eth0|grep Mask|awk -F ":" '{print $2}'|awk -F " " '{print $1}'|awk -F "." '{print $4}'`
      named="/etc/named.conf"                                  #主配文件
      Forward_parsing_file="/var/named/$domain_name.zone"             #正向解析文件
      Reverse_parsing_file="/var/named/$rip.in-addr.arpa.zone" #反向解析文件
      
      #check the yum allocation of right and wrong 
      function Check_Yum( )
       {
      	yum clean all>/dev/null 2>&1  #判断yum配置文件的格式是否正确
      	if [ $? -ne '0' ];then
      		echo -e "\033[31m yum allocation is wrong \033[0m"
                      Repair_Yum
      
      	else
      		#定义变量用来查看yum有多少安装包
      		Yum_Num=`yum repolist all|grep repolist|awk -F ":" '{print $2}'|sed s'/,//'g|sed s'/ //'g`
      
      		if [ $Yum_Num -eq  0 ];then
      			echo -e "\033[31m yum allocation is wrong \033[0m"
      			Repair_Yum
      		else 
      			echo -e "\033[32m yum allocation is right \033[0m"	
      
      		fi
      	fi
       }
       
      #repair yum
      function Repair_Yum( )
      {
         dvd_file="/etc/yum.repos.d/dvd.repo"
         read -p "Do you want to repair yum y/n:" check
      
         if [ "$check" = "y" -o "$check" = "yes" -o "$check" = "Y" ];then
      	mount /dev/cdrom /mnt 1>/dev/null 2>&1  
      	if [ -f $dvd_file ];then
      	   rm -rf  $dvd_file
      	   touch $dvd_file
      cat >> $dvd_file << +END+
      [dvd]
      name=dvd
      baseurl=file:///mnt
      gpgcheck=0
      +END+
              else
      	   touch $dvd_file
      cat >> $dvd_file << +END+
      [dvd]
      name=dvd
      baseurl=file:///mnt
      gpgcheck=0
      +END+
      	echo -e "\033[31m Please run it again and see the repair results \033[0m"
      	exit 0
              fi
      
         elif [ "$check" = "n" -o "$check" = "N" -o "$check" = "no" ];then
      	echo -e "\033[31m yum allocation is wrong,Please configure it manually \033[0m"
      	exit 0 
         else
      	while [[ 1 < 2 ]]
      	do
      		echo -e "\033[31m Your input is wrong,please try again \033[0m"
      		Repair_Yum
      	done
         fi   
      
      }
      
      #install dns server
      function Install_DNS_Server( )
      {
      	#把原有的卸载干净
      	yum remove bind* -y
      	rm -rf /var/named/*
      	rm -rf  /etc/named.conf.rpm*
      	#开始安全dns服务
      	yum install bind bind-libs bind-utils -y
      	/etc/init.d/named restart > /dev/null 2>&1
      	if [ $? -eq 0 ];then
      
      		echo -e "\033[32m DNS server install sucessful \033[0m"
      	else
      		echo -e "\033[31m DNS server install failed try again \033[0m"
      	fi
      
      }
      
      #Edit named configuration file
      
      function Edit_Conf ( )
      {
      
      #修改
      sed -i '/^include/d' $named                 
      sed -i s'/127.0.0.1/any/'g $named
      sed -i s'/localhost/any/'g $named 
      sed -i '/recursion/i version "I do not tell you";' $named    #隐藏版本号
      sed -i s'/recursion yes/recursion no/'g $named 		     #关闭rescursion功能,防止spoofig
      sed -i '/recursion/i fetch-glue no;' $named                  #关闭glue fetching功能
      
      ##Edit named configuration file
      cat >> $named << +END+
      
      zone "$domain_name" IN{
          type master;
          file "$Forward_parsing_file";
       
      };
       
      zone "$rip.in-addr.arpa" IN{
          type master;
          file "$Reverse_parsing_file";
       
      };
       
      include "/etc/named.rfc1912.zones";
      include "/etc/named.root.key";
       
      +END+
      
      #Edit Forward and Reverse configuration file
      #Edit Forward  configuration file
      if [ ! -f $Forward_parsing_file  ];then
          touch $Forward_parsing_file
      else
          rm -rf $Forward_parsing_file
          touch $Forward_parsing_file
      fi
      
      cat >> $Forward_parsing_file << +END+
      \$TTL 1D
      @   IN SOA  $domain_name.  root.$domain_name. (
                          0   ; serial
                          1D  ; refresh
                          1H  ; retry
                          1W  ; expire
                          3H )   ; minimum
      @     IN     NS     dns.smile.com.
      dns   IN     A      $ip
      mail  IN     A      $ip
      www   IN     A      $ip
       
      +END+
      
      #Edit Reverse configuration file
      
      if [ ! -f $Reverse_parsing_file  ];then
              touch $Reverse_parsing_file
      else
              rm -rf $Reverse_parsing_file
              touch $Reverse_parsing_file
      fi
       
      
      cat >> $Reverse_parsing_file << +END+
       
      \$TTL 86400
      @   IN SOA  $rip.in-addr.arpa. root.$domain_name. (
                          0   ; serial
                          1D  ; refresh
                          1H  ; retry
                          1W  ; expire
                          3H )   ; minimum
      @     IN     NS     dns.$domain_name.
      $ip_last   IN    PTR     www.$domain_name.
      $ip_last   IN    PTR     mail.$domain_name.
       
      +END+
      
      #修改权限
      chgrp named $named        
      chgrp named $Reverse_parsing_file
      chgrp named $Forward_parsing_file
      
      echo "nameserver $ip" >> /etc/resolv.conf
      /etc/init.d/named restart
      
      }
      
      #copy
      function copy( )
      {
           scp -r /root/shell/DNS_Server_masters.sh [email protected]:/root
           if [ $? -ne '0' ];then
                   echo -e "\033[31m 拷贝失败 \033[0m" 
           else
                   echo -e "\033[32m 拷贝成功 \033[0m" 
           fi
          
          ssh -l root 172.24.10.106 '/bin/bash /root/DNS_Server_masters.sh'
      }
      
      #chenge_DNS_slave
      function chenge_DNS_slave ( )
      {
      
      #修改
      sed -i '/^include/d' $named
      sed -i s'/127.0.0.1/any/'g $named
      sed -i s'/localhost/any/'g $named
      sed -i '/recursion/i version "I do not tell you";' $named    #隐藏版本号
      sed -i s'/recursion yes/recursion no/'g $named               #关闭rescursion功能,防止spoofig
      sed -i '/recursion/i fetch-glue no;' $named                  #关闭glue fetching功能
      
      ##Edit named configuration file
      cat >> $named << +END+
      
      zone "$domain_name" IN{
          type slave;
          file "$Forward_parsing_file";
          masters {172.24.10.105;};
      };
       
      zone "$rip.in-addr.arpa" IN{
          type slave;
          file "$Reverse_parsing_file";
          masters {172.24.10.105;};
      };
       
      include "/etc/named.rfc1912.zones";
      include "/etc/named.root.key";
       
      +END+
      
      chmod g+w  /var/named/
      echo "nameserver $ip" >> /etc/resolv.conf
      service named restart
      }
      
      #echo menu
      function menu ( )
      {
      
              echo -e "\033[32m 1.检查yum是否配置正确 \033[0m"
           	echo -e "\033[32m 2.安装DNS服务 \033[0m"
              echo -e "\033[32m 3.修改DNS-master服务的配置文件 \033[0m"
      	echo -e "\033[32m 4.拷贝文件到目标主机并且进入目标主机\033[0m"
      	echo -e "\033[32m 5.修改目标机的主配文件\033[0m"
              echo -e "\033[32m exit.输入exit或者ctrl+c退出 \033[0m"
              echo -e "\033[32m help.请输入1|2|3|help|exit \033[0m"	
      
      	read -p "请选择你菜单:" menu
      
              case $menu in
      		1) Check_Yum
      		   ;;
      		2) Install_DNS_Server
      		   ;;
      		3) 
      		  if [ `rpm -qa |grep bind-9.8|wc -l` -ne 1 ];then
      		   echo -e "\033[31m 请确保已经安装DNS服务 \033[0m"
      		  fi
      		  Edit_Conf
      		  ;;
      		4)copy
      		  ;;
                      5) chenge_DNS_slave
      		 ;;
      		help)
      		   echo -e "\033[32m help.请输入1|2|3|4 \033[0m"
      		   menu
      		   ;;
      		exit) exit 0
      			;;
      		*)
      		   echo -e "\033[31m 输入有误,请重新输入 \033[0m"
      		  menu
      		  
      		  ;;
      
              esac
      
      }
      
      while [[ 1 < 2 ]]
      do
      hostname=`hostname`
      	if [ "$hostname" =  "DNS_SERVER_1"  ];then
      
                      echo "当前设备是DNS_SERVER_1:请选择你菜单:" 
      		menu
              else
                      echo "当前设备是$hostname:请选择你菜单:"
      	         menu
              fi
      done


    执行结果:

    优酷视频



    微信公众号:

    时间: 2024-08-29 17:13:11

    加强linux操作系统DNS服务安全的相关文章

    【Linux】DNS服务-BIND从服务器、缓存服务器、转发服务器配置

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example.net的配置信息即可3 1.配置文件位置 /var/named/chroot/etc/named.conf 2.在主配置文件中添加一行域的zone定义: zone "example.net" { type slave;          masters { 120.27.99.64; };

    linux下DNS服务器之视图和轮询

    案例4 视图  viwer 拓扑图: 1.查看帮助 [[email protected] ~]# vim /usr/share/doc/bind-9.8.2/sample/etc/named.conf [[email protected] ~]# cd /var/named/chroot/etc 2.[[email protected] etc]# vim named.conf 添加视图: 36 view    "lan-view" 37 { 38 zone "."

    Linux的DNS服务和BIND应用

    在Linux上DNS服务是由通过BIND程序提供的. 所以为了搭建DNS服务器,就需要安装BIND程序. 安装BIND BIND文件 主配置文件:/etc/named.conf 它包含了其他文件 查看BIND的其他文件 其中 /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key 这三个模块是主配置文件的三个重要模块 解析库文件: /var/named/目录下 注意:1.一台DNS服务器可同时为多个区域提供解析 2.必

    【Linux】DNS服务-BIND基础配置

    BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护. BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows) BIND服务的名称称之为named DNS默认使用UDP.TCP协议,使用端口为53(domain),953(mdc,远程控制使用) BIND安装 本例使用的环境

    Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明

    NamedManager 是一个基于Web的DNS管理系统,可用来添加.调整和删除DNS的zones/records数据.它使用Bind作为底层DNS服务,提供一个现代Ajax的Web界面,支持 IPv4和IPv6.该应用程序很稳定,在生产环境中使用没有任何问题.过多的介绍在此就不做说明了,下面说下NamedManager环境部署过程: 1)下载NamedManager的rpm安装包 [[email protected] ~]# hostname dns.kevin.cn [[email pro

    Linux搭建DNS服务

    在Linux中搭建dns服务跟Windows上一样,服务原理都一样,DNS服务默认使用UDP53端口,在Linux中称为BIND服务,在Linux中,DNS分为不同的类型,常见的类型有:缓存域名服务器:只是提供域名解析结果的缓存结果,目的在于提高查询速度和效率.但是没有自己控制的区域地址 数据:主域名服务器:维护一个特定的DNS区域的地址数据库,对其中的解析服务具有自主控制权,是指定区域中唯一存在 的权威服务器.官方服务器: 从域名服务器:与主域名服务器提供相同的DNS解析服务,常常用于DNS服

    Linux操作系统——优良服务的优良承载

    一.Linux操作系统特点 1.性能强劲,运行稳定,一般作为服务器: 2.整个操作系统易压缩,方便植入硬件设备: 3.开源免费(源代码开放,方便大众维护或进行二次开发): 4.对于初学者来说是目前建立编程思维的最好环境: 5.与Windows系统不同,Linux系统没有盘符的概念(不分盘),所有文件都处于根目录下(目录也是一种特殊文件). 二.访问Linux操作系统 1.主机上安装双系统(或多系统),在启动时选择启动Linux操作系统: 2.配置虚拟机服务,给虚拟机安装好Linux操作系统后通过

    Linux之DNS服务

    DNS服务 DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp)应用层协议 BIND:BekerleyInternatName Domain, ISC (www.isc.org) 本地名称解析配置文件:hosts /etc/hosts %WINDIR%/system32/drivers/etc/hosts 例如: 1.1.1.1 www.magedu.com 2.2.2.2 www.apple.com DNS域名 根域 一级域名::Top Level

    linux 下DNS 服务的搭建

    在这我就不对理论知识 进行过多的阐述 需要了解的到:http://baike.baidu.com/subview/22276/15346050.htm?fr=aladdin 下来直接进入搭建 使用的软件:Vmware workstation 10 rhel6.3(64位) 使用的操作系统: [[email protected] ~]# uname  -a Linux wang 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x8