网络防火墙

网络防火墙

  防火墙简单例子

    *实验环境:192.168.198.6A机器,192.168.198.135B机器

    *A机器操作:检查ip是否干净

         

         若ip不干净,如下

         

         解决方法

ifconfig    virbro down禁用此网卡
brctl delbr virbr0删除网桥
systemctl disable libvirtd.service开机禁用服务
systemctl mask libvirtd.service注销服务
reboot重启查看  

          查看是否干净:iptables -vnL

          

例一:简单ping改变INPUT
  *B机器操作:ping 192.168.198.6[ping成功,等待几秒关闭]
  *A机器操作:iptables -vnL查看发现INPUT数量变多
例二:禁止某机器访问,无回应
  *A机器操作:iptables -t filter -A INPUT -s 192.168.198.135 -j DROP[禁止ip为192.168.198.135的机器访问]
  *B机器操作:ping 192.168.198.6[ping不同]
  *A机器操作:iptables -vnL查看[DROP是抛弃的意思,对方发送请求我不搭理,不回应]
  
  tcpdump -i eth0 -nn host 192.168.198.135[执行此命令,一见明了]
  

  例三:清空指定的规则链

   *A机器操作:iptables -vnL查看[iptables -vnL=iptables -t filete -vnL]

        

      iptables -F:清除链接

      

   例四:拒绝某机器访问,有来有回,有回应

    *A机器操作:iptables -t filter -A INPUT -s 192.168.198.135 -j REJECT[拒绝ip为192.168.198.135访问]

          iptables -vnL查看

         

   *B机器操作:ping 192.168.198.6      

         

    *A机器操作:tcpdump -i eth0 -nn host 192.168.198.135[有来有回]

        

   例五:拒绝多种机器访问,会影响效率

   例六:拒绝某网段的访问,慎用

  *A机器操作:iptables -t filter -A INPUT -s 192.168.198.0/24 -j REJECT[拒绝网段为192.168.198.0访问]  

         此时发现自己无法操作,因为自己也在这一网段之中,在机房还好可以在本机操作,要是远程操作就出事了,看清楚在操作

        打开主机操作:iptables -F清除

        或者在执行拒绝网段操作前,执行iptables -F | at now+5 minutes操作,意思是五分钟后执行清空操作

  例七:删除某一规则,要指明规则类型和编号

  *A机器操作:iptables -vnL --line-numbers查看

       

        删除1号链接iptables -D INPUT 1

       iptables -vnL --line-numbers查看[删除1之后,2会自动往上走变成1]

       例八:插入,要指明插入至的规则编号,默认为第一条

  *A机器操作:iptables -vnL --line-numbers查看

     

     插入一条新规则:iptables -I INPUT -s 172.16.0.1/16 -j REJECT[默认不写编号,认为为第一条]

     iptables -vnL --line-numbers查看

     

     再次插入一条新规则:iptables -I INPUT 1  -s 192.168.37.7 -j REJECT[指定了编号,该规则就在第一条,若指定为2,规则为2原第二条规则后推为3,以此类推]

     iptables -vnL --line-numbers查看

     

   例九:替换规则

  *A机器操作:iptables -vnL --line-numbers[查看现有规则]

        

        iptables -R INPUT 1 -s 192.168.198.135 -j REJECT[替换该规则,要指明类型和编号]

        再次查看iptables -vnL --line-numbers[替换成功]

        

    例十:清空计时器,iptables的每条规则都有两个计数器[(1) 匹配到的报文的个数(2) 匹配到的所有报文的大小之和]

  *A机器操作:查看iptables -vnL --line-numbers

        

        iptables -Z INPUT[清除]

        查看iptables -vnL --line-numbers

       

   例十一:同时指定多条规则

  *A机器操作:查看iptables -vnL --line-numbers

        

        iptables -I INPUT  -s 192.168.37.7,192.168.37.8 -j ACCEPT[这我默认写法没加编号,也可以加编号]

        查看iptables -vnL --line-numbers

        

   例十二:允许某机器只可访问本机协议,指定协议

  *A机器操作:查看iptables -vnL --line-numbers[干净]

       

         演示为http服务,指定网页 echo welcome to xdk > /var/www/html/index.html,systemctl start httpd[启动服务]

       iptables -A INPUT -s 192.168.198.1,127.0.0.1 -j ACCEPT[设置本机和windows访问]

       iptables -A INPUT  -j REJECT[设置全部不可访问]

       查看iptables -vnL --line-numbers[只允许192.168.198.1,127.0.0.1访问]

       

  *B机器操作:curl 192.168.198.6[不可访问]

       

  *A机器操作:iptables -I INPUT 3 -s 192.168.198.135 -p tcp --dport 80 -j ACCEPT[设置192.168.198.135访问,-p设置协议 --dport端口80,只允许访问http服务,并且放在第三位]

       查看iptables -vnL --line-numbers

       

  *B机器操作:curl 192.168.198.6

        

   例十三:允许某机器访问,但不允许syn访问[syn用于匹配第一次握手]

  *A机器操作:iptables -I INPUT 4 -s 192.168.198.72  -j ACCEPT[允许192.168.198.72访问,并把它放在0.0.0.0/0之前,否则无法生效]

        iptables -I INPUT 5 -s 192.168.198.72 -p tcp  --syn  -j REJECT[添加192.168.198.72机器不允许访问syn]

        查看iptables -vnL --line-numbers

        

   *B机器操作:curl 192.168.198.6[SYN被禁止无法访问]       

        

        ping 192.168.198.6[因为all在tcp上,所以可以ping通]

        

   例十四: icmp命令使用

  *A机器操作:查看iptables -vnL --line-numbers[设置如下]

        

       ping 192.168.198.72[不通]

        

   *B机器操作:tcpdump -i eth0 -nn host 192.168.198.6[查看是ping通的,原因就是A机器第三条规则不让任何机器访问]

        

   *A机器操作:iptables -I INPUT 3 -s 192.168.198.72 -p icmp --icmp-type 0 -j ACCEPT[192.168.198.72设置icmp,0/0:echo-reply:icmp应答,8/0:echo-request:icmp请求]

         ping 192.168.198.72[成功]  

        

         查看iptables -vnL --line-numbers

        

   例十五: 显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制,要手动加载扩展模块

  *A机器操作:查看iptables -vnL --line-numbers

        

         iptables -I INPUT 3 -m time --timestart 1:00 --timestop 10:00 -j ACCEPT[没写来源默认为任何机器,时间为9-18,为啥写1-10因为差距8个小时要减去]

        查看iptables -vnL --line-numbers

          

   *B机器操作:curl 192.168.198.6[时间不在该阶段就不让访问]

       

   例十六:connlimit扩展, 根据每客户端IP做并发连接数数量匹配

  *A机器操作:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT[设置tcp协议端口80服务,链接大于50次的机器禁止访问]

        查看iptables -vnL --line-numbers        

      

   例十七:基于收发报文的速率做匹配

  *A机器操作:iptables -A  INPUT  -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 10 -j ACCEPT[--icmp-type 8请求,20/minute为每分钟20次,--limit-burst 10 极限突发数]

        iptables -A INPUT -j REJECT[设置此命令,不然不会终止会一直访问下去,我们只要测试一分钟]

        查看iptables -vnL --line-numbers

        

   *B机器操作:ping 192.168.198.6

        

   例十八: state扩展  根据”连接追踪机制“去检查连接的状态,较耗资源

  *A机器操作:查看iptables -vnL --line-numbers

        

  *B机器操作:ssh 192.168.198.6

        

   *A机器操作:iptables -A INPUT -j REJECT[禁止任何机器访问,此时B机器已经死掉了,不让操作]

        iptables -I INPUT 3 -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT[允许访问,22端口为ssh服务,state模板,ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之 前期间内所进行的通信状态,RELATED:新发起的但与已有连接相关联的连接]

        查看iptables -vnL --line-numbers

        

   *B机器操作:关闭重新连接ssh 192.168.198.6[成功,换做其他机器是禁止访问的]

   例十九:查询操作

  *A机器操作:已经追踪到的并记录下来的连接信息库  /proc/net/nf_conntrack  

         调整连接追踪功能所能够容纳的最大连接数量  /proc/sys/net/nf_conntrack_max     

        永久生效:vim /etc/sysctl.conf加入参数,生效命令sysctl -p 

  

      

      

原文地址:https://www.cnblogs.com/dengkui/p/11285190.html