.linux防火墙

         防火墙类别:硬件防火墙、网络层防火墙     主机防火墙、网络放火墙

         规则链(Chain

                     用途:存放一条条防火墙规则

                     分类依据:处理数据包的不同时机

                     5条规则链: INPUT           处理入站数据包

                             OUTPUT          处理出站数据包

                             FORWARD         处理转发的数据包

                             POSTROUTING     路由选择之后处理

                             PREROUTING      路由选择之前处理

         规则表(Table

         用途:存放不同的规则链

         分类依据:防火墙规则的作用相似

          4个规则表: raw               确定是否对数据包进行状态跟踪

                mangle            为数据包设置标记

                  nat              修改数据包的源/目标地址或端口    

                filter           确定是否放行该数据包

         规则表之间的顺序

                    raw---mangle---nat---filter

         规则链之间的顺序

                  入站: PREROUTING---INPUT

                  出站: OUPPUT---POSTROUTING

                  转发: PREROUTING---FORWARD---POSTROUTING

          规则链内的匹配顺序

                   --顺序比对,匹配即停止(LOG除外)

                   --若无任何匹配,则按该链的默认策略处理

        iptables用法:

                  iptables  -t  表名  选项  链名  匹配条件 -j  处理动作

                          处理动作:

                          ACCEPTREJECTDROPLOG

                          管理选项:

                            -A-I

                            -D 链名 序号

                            -F

                            -L-n--line-numbers

                            -P 链名 ACCEPT|DROP

                          匹配条件(通用/显式) ——

                            -p  协议名      /etc/protocols

                            -s  IP/网段地址、-d  目标IP/网段地址

                            -i  数据包进入的网卡、-o  数据包出去的网卡

                         匹配条件(隐含)

                            --sport  源端口、--dport  目标端口

                            --icmp-type  ICMP数据包类型

                            --tcp-flags  检查哪些标志位  值为1的标志位

                         匹配条件(扩展)

                            -m  state --state  数据包的状态值

                         常见的状态:

                            NEWESTABLISHEDRELATED

                            INVALIDUNTRACKED

         编写防火墙规则的基本思路 ——

              任务目标:

               1. 禁止从192.168.10.0/24访问本机的Web服务

               2. 禁止从外部网络(eth1)访问局域网(eth                                  3. 禁止别的主机访问本机的Web服务,但是允许本机访问别的主机的Web服务

               转化成防火墙规则:

               iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 80 -j DROP

                iptables  -I FORWARD  -i  eth1 -o  eth0 -j  DROP

                iptables  -I INPUT  -p  tcp --dport  80  -j DROP

                iptables  -I OUTPUT  -p  tcp --dport  80  -j ACCEPT

               严格程度:

                 方式1(严格):仅允许

                 方式2(宽松):仅拒绝

                 filter表为例:

                  iptables  -P INPUT  DROP

                  iptables  -P FORWARD  DROP

                  iptables  -A INPUT  ........ -j  ACCEPT

                  iptables  -A FORWARD -s 192.168.4.0/24 -o eth1 -j  ACCEPT

                  iptables  -A FORWARD -d 192.168.4.0/24 -i eth1 -m state                             --state ESTABLISED,RELATED  -j  ACCEPT

         Linux网关/防火墙实验环境:

                  企业局域网 svr5 ——

                  eth0192.168.4.5/24           private1

                  默认网关设为 192.168.4.1

                  gw1(网关/防火墙/路由器) —— 开启 ip_forward

                   eth0192.168.4.1/24             private1

                   eth1174.16.16.1/24             private2

                    互联网 pc205 ——

                     eth0:禁用(ONBOOT=no          private1

                       eth1174.16.16.120/24          private2

                         不要设默认网关

                         基于NAT表的应用

         练习1:使局域网客户机能通过网关访问互联网—— SNAT

           # iptables -t nat -APOSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1

             iptables -t nat -A POSTROUTING-s 局域网网段地址 -o 外网接口 -j SNAT --to-source 外网接口的IP地址     //地址伪装

             iptables -t nat -APOSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE

         练习2 使互联网客户机能通过企业网关访问内网的服务器 —— DNAT

             1)发布内网的Web服务

              # iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination192.168.4.5

               iptables -t nat -APREROUTING -i 外网接口 -d 外网接口的IP地址 -p 协议 --dport 目标端口 -j DNAT --to-destination 内网服务器IP地址

             2)发布内网的DNS服务

              # iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p udp --dport 53 -j DNAT --to-destination192.168.4.5

         练习3:发布内网的其他服务器

             1SSH服务(使用2345端口)

               # iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination192.168.4.5:22

             2FTP服务(加载必要的模块)

               # iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination192.168.4.5

               # modprobe -anf_nat_ftp nf_conntrack_ftp

             3)邮件服务器(TCP 25/110/143DNS解析)

               # iptables -t nat -APREROUTING -i eth1 -d 174.16.16.1 -p tcp -m multiport --dport 25,110,143 -jDNAT --to-destination 192.168.4.5


         iptables规则的导入和导出 ——

            备份/导出:iptables-save > /root/ipfw.rule

            还原/导入:iptables-restore < /root/ipfw.rule

            使用iptables系统服务 ——

               iptables-save  > /etc/sysconfig/iptables

                    或者

               service  iptables save

               service  iptables restart

               chkconfig  iptables on

  

.DHCP服务

         1. 分配IP地址相关参数

         2. 告知客户机TFTP服务器的地址、引导文件名

            协议和端口:DHCPUDP 67/68

            软件包(S):dhcp

            软件包(C):dhclient

            系统服务/进程:dhcpd

            配置文件:/etc/dhcp/dhcpd.conf

            语法检查:service  dhcpd  configtest

         常见的配置:

          default-lease-time  默认租期;

          max-lease-time  最大租期;

          subnet  网络地址  netmask  子网掩码 {

         range  起始IP  结束IP;

         option  routers  默认网关IP地址;

         option  domain-name-servers  DNS1,DNS2;

         next-server  TFTP服务器的IP地址;

         filename  "网卡启动文件的名称";

                  }

       DHCP四次会话:

             1. (客户机)请求  DISCOVER

             2. (服务器)提供  OFFER

             3. (客户机)选择  REQUEST

             4. (服务器)确认  ACK

         实验拓扑:

                                           RHEL6.5_1

        -----CentOS6.5vmnet1----------vmnet1

                                           RHEL6.5_2

         实验一:搭建DHCP服务器

          公司要求将闲置的一台Linux 主机配置为DHCP服务器,以便为局域网内员工的办公用机提供自动分配IP地址的服务,以提高网络管理和维护的效率。需要满足的基本要求如下所述。

             192.168.4.0/24网段的客户机自动配置网络参数。用来给客户机自动分配的IP地址范围是:

                192.168.4.28-192.168.4.54         

                192.168.4.128-192.168.4.200

             客户机的默认网关地址设为192.168.4.1

             客户机所使用的DNS服务器设为8.8.8.8202.106.0.20

             默认搜索域后缀为tarena.com

             将默认租约时间设为2小时,最大租约时间4小时

             验证DHCP服务器的IP分配情况、客户机的租约信息

           1.安装软件包

          [root@srv5 ~]# rpm -q dhcp

          [root@srv5 ~]# yum list dhcp

          [root@srv5 ~]# yum -y install dhcp

           2.修改主配置文件

          [root@srv5 ~]# vim/etc/dhcp/dhcpd.conf

          option domain-name"tarena.com";

          option domain-name-servers202.106.0.20, 8.8.8.8;

          default-lease-time 7200;

          max-lease-time 14400;

          subnet 192.168.4.0 netmask255.255.255.0 {

          range 192.168.4.28 192.168.4.54;

          range 192.168.4.128 192.168.4.200;

          option routers 192.168.4.1;

              }

           3.启动服务

          [root@srv5 ~]# service dhcpd restart

          [root@srv5 ~]# chkconfig dhcpd on

          [root@srv5 ~]# netstat -anptu | grepdhcp

          udp  0  0 0.0.0.0:67    0.0.0.0:*     1585/dhcpd

           4.测试

          [root@pc205 ~]# dhclient -d eth0 //可测试DHCP通信过程

          [root@pc205 ~]# vim/etc/sysconfig/network-scripts/ifcfg-eth0

           BOOTPROTO=dhcp    //IPADDRNETMASK注释掉

          [root@pc205 ~]# service networkrestart

          [root@pc205 ~]# ifconfig

             -------------------------------------------------

             查看IP租约信息

             服务器端,查看地址分配情况

          /var/lib/dhcpd/dhcpd.leases

             客户机端,查看已获取的IP租约

         /var/lib/dhclient/dhclient-ethN.leases

             -------------------------------------------------

.KVM应用

         快速搭建一台KVM服务器 ——

          # yum -y  groupinstall  虚拟化 虚拟化平台 虚拟化客户端  虚拟化工具

          # service  libvirtd restart

         如何管理KVM虚拟化 ——

          # yum -y  groupinstall  虚拟化客户端

          # virt-manager

         如何添加一个桥接网络(虚拟<-->真实) ——

           1. 拷贝 ifcfg-eth0 ifcfg-br0

           2. 修改桥接网卡ifcfg-br0配置

            DEVICE="br0"

            TYPE=Bridge

            NM_CONTROLLED=no

                .. ..

           3. 修改真实网卡ifcfg-eth0配置

                .. ..

            BRIDGE=br0

           4. 重启network服务

       KVM虚拟化(命令行管理、快建)

          virsh nodeinfo

          virsh listvirsh  list --all

          virsh dominfo  虚拟机名

          virsh start  虚拟机名

          virsh shutdown  虚拟机名

          virsh reboot  虚拟机名

          virsh destroy  虚拟机名

          virsh autostart  虚拟机名

          virsh autostart  --disable  虚拟机名

         问题:virshshutdownreboot指令无效

         解决:在虚拟机里执行 yum  -y  install acpid  ;  reboot

         问题:右键菜单没有“在终端中显示”

         解决:yum  -y  install nautilus-open-terminal

        1. 导出虚拟机配置

        # virsh dumpxml  虚拟机名 >  /root/new.xml

        2. 修改导出之后的文件

        # vim /root/new.xml         sed

             ——给虚拟机改名【nameuuid

             ——复制虚拟机【nameuuiddiskmac

        3. 导入新的虚拟机配置

        # virsh define  /root/new.xml

        4. 善后工作

             ——给虚拟机改名:virsh  undefine 旧虚拟机

             ——复制虚拟机:cp  旧磁盘  新磁盘

       0. virsh edit  虚拟机名

         直接查看虚拟机的显示器界面

          virt-viewer  虚拟机名

         克隆一台虚拟机(自动建新磁盘、自动改MAC

          virt-clone  -o  旧虚拟机 -n  新虚拟机  -f  新磁盘路径

       qemu-img 新建虚拟磁盘

             1)新建raw类型的磁盘(独立)

          qemu-img  create -f  raw   磁盘路径  大小

             2)新建qcow2类型的磁盘(独立)

          qemu-img  create -f  qcow2  磁盘路径  大小

             3)磁盘格式转换(独立raw<-->独立qcow2盘)

          qemu-imgconvert  -O  格式  旧磁盘  新磁盘

             4)新建qcow2类型的磁盘(增量)

          qemu-img  create -f  qcow2  -b  后端盘  磁盘路径  [大小]

        练习:基于qcow2增量盘快建新虚拟机、制作备份

           1. 快建新虚拟机的磁盘

          # cd /data/images

          # qemu-img create -f qcow2 -bnode1.qcow2 vh1.qcow2

           2. 为新的虚拟机准备配置文件

          # virsh  edit  模板虚拟机名         .. .. nameuuiddiskmac

           3. 为新虚拟机建立快照

          # qemu-img  snapshot -c  snap1   vh1.qcow2

 

       模板虚拟机的处理 ——

           1. 从命令行创建及安装新虚拟机

            1)为虚拟机准备磁盘

           # qemu-img create -f qcow2muban1.qcow2 20G

            2)为虚拟机准备配置文件、安装系统

             virt-install --name muban1--vcpus=1 --ram=1024 --disk path=/data/images/muban1.qcow2,format=qcow2  --network network=network1 --pxe

           2. 模板虚拟机的出厂设置

            1)预装设置/软件处理

                 提前装需要的软件

                 提前清理网卡配置文件

             # >  /etc/udev/rules.d/70-persistent-net.rules

             # vim  /etc/sysconfig/network-scripts/ifcfg-eth0

                   .. .. 删除 HWADDRUUID这两行

              NM_CONTROLLED="no"

            2)出厂初始化

             # touch  /.unconfigured

             # shutdown  -h  now

            3)善后处理

                 备份模板机的配置文件

             # virsh dumpxml rh6_n1 >/root/muban1.xml

                 删除模板机(保留磁盘)

             # virsh undefine rh6_n1

           3. 虚拟机磁盘的离线访问

             # mkdir  /opt/kdisk

             # guestmount  -a /data/images/svr5  -i  /opt/kdisk/

             # cd  /opt/kdisk        chroot /opt/kdisk

             # vim  /opt/kdisk/etc/sysconfig/network

                HOSTNAME=svr5.tedu.cn

                .. ..                 exit

.电子邮件系统

         软件包(S):postfixdovecotcyrus-sasl

         软件包(C):mailmailxthunderbird

         系统服务:postfixdovecotsaslauthd

         配置文件(S):

             /etc/postfix/main.cf

             /etc/dovecot/conf.d/*.conf

             /etc/sasl2/smtpd.conf

         配置文件(C):

             ~/.mailrc  或者 /etc/mail.rc

         快速构建postfix发信服务 ——

           1. 装包

             # yum  -y install  postfix

           2. 配置

             # vim /etc/postfix/main.cf  postconf  -n

               inet_interfaces = all

               mydomain = tedu.cn

               myhostname = mail.tedu.cn

               myorigin = $mydomain

               mydestination = $mydomain,localhost

               home_mailbox = 邮箱名/

           3. 起服务

             # service  postfix restart

             # netstat  -anpt | grep :25


         启用SMTP认证 ——

           1. 装包

             # yum  -y install  cyrus-sasl

           2. 配置

             # vim  /etc/postfix/main.cf

                  .. ..

             smtpd_sasl_auth_enable = yes

             smtpd_recipient_restrictions =

             permit_sasl_authenticated,reject_unauth_destination

           3. 起服务

             # service  saslauthd restart

             # service  postfix restart

       mail命令发信配置:

             # vim ~/.mailrc

             set smtp=smtp://mail.tedu.cn

             set from=hunter@tedu.cn

             set smtp-auth-user="hunter@tedu.cn"

             setsmtp-auth-password="1234567"

         使用mail命令发信:

             # echo 'AAAAA' | mail -s 'AAAAA'  hunter@tedu.cn

 

.rsync同步

         支持本地复制(完全拷贝源到目标),或与其他SSHrsync主机同步(增量拷贝)

         基础操作 ——

                  本地同步:rsync   目录1   目录2

                  远程同步(上行):rsync  目录1   主机2的目录2

                  远程同步(下行):rsync  主机1的目录目录2  

       rsync同步操作的常用选项:

              -a(归档模式)、-v显示同步过程详细信息)、-z(传输过程中启用压缩) --delete(删除目标文件夹多余的文档)

              -A(保留文件的ACL属性信息)、-n(测试同步过程,不做实际修改)

       rsync+SSH同步——

              rsync  user@host:/目录路径

              rsync  -avz user@host:/目录路径/   本地目录

              rsync  -avz  本地目录 user@host:/目录路径/

       rsync+rsync同步 ——

              rsync  user@host::

              rsync  user@host::共享名/

              rsync  -avz user@host::共享名/   本地目录

              rsync -avz  本地目录 user@host::共享名/

        配置rsync服务端

         1.手动建立rsync帐号文件(若是匿名共享,则不需要此文件)

               # vim /etc/rsyncd_users.db

                 ruser:pwd123

                 othername:123456

                       ......

               # chmod 600 /etc/rsyncd_userdb

         2.创建rsyncd.conf共享配置文件

               # vim /etc/rsyncd.conf

               [tools] 

                  path = /usr/src

                  comment = Rsync Share Test

                  read only = yes

                  dont compress = *.gz *.bz2*.zip

                  auth users = ruser             //许可的用户

                  secret file =/etc/rsyncd_users.db  //帐号文件

         3.启用rsync共享服务

               # yum -y isntall xinted

               # chkconfig rsync on


        关于SSH访问缓慢的问题 ——

                 原因:sshd服务会尝试解析客户机的主机名

                 解决办法:

         1. 为双方添加/etc/hosts映射记录

         2. vim /etc/ssh/sshd_config

            UseDNS no

            rsync -avz --password-file=/root/pass.txt user@host::共享名/本地目录 

       rsync+inotify实时同步/触发同步

                 用途:当目录1中的文档发生变更的时候,立即执行同步操作

                 工具:inotify-tools-3.13.tar.gz

                 源码包编译安装(gccmake……):

                 1)解包 tar xf  软件名-版本.tar.gz

                 2)配置 cd  软件名-版本/  ;    ./configure 

                 3)编译 make

                 4)安装 make install

             # yum  -y groupinstall  "开发工具"

                 基本用法:inotifywait [选项] 目标文件夹

                    常用命令选项    -m(启用监控)、-r(递归)、-q(减少输出信息)、-e(限制要监视的事件类型)

         编写监控脚本

             # vim  /root/isync.sh

             #!/bin/bash

            DIR1="/var/www/html"                                                    //指定监控目录

             RSYNC_CMD="rsync -az --delete$DIR1/ root@192.168.4.205:/var/www/html" //指定同步操作

             while   inotifywait -mrqemodify,delete,move,attrib,create $DIR1  |  read x  y  z

             do

             $RSYNC_CMD

             done &