zoukankan      html  css  js  c++  java
  • solr的访问权限管理及ubuntu下iptables的设置

    Apache Solr 是一个开源的搜索服务器,该平台默认允许匿名访问,攻击者可读取平台中各类敏感信息。之前考虑过增加账号密码访问,但是没有搞定,所以采用了曲线救国的方式,设置solr服务器只允许部分IP访问。

    ubuntu下iptables的设置参见: https://www.tuicool.com/articles/QvQNZbu

    iptables -I INPUT -p tcp --dport 12580 -j DROP 
    iptables -I INPUT -s 114.55.**.*** -p tcp --dport 12580 -j ACCEPT
    iptables -I INPUT -s 210.12.***.**/27 -p tcp --dport 12580 -j ACCEPT
    iptables -I FORWARD -p tcp --dport 12580 -j DROP 
    iptables -I FORWARD -s 114.55.**.*** -p tcp --dport 12580 -j ACCEPT
    iptables -I FORWARD -s 210.12.***.**/27 -p tcp --dport 12580 -j ACCEPT

    第一条命令是插入命令,禁止所有ip访问12580端口

    第二条命令是插入命令,允许线上服务器 114.55.**.*** 访问solr服务器

    第三条命令是插入命令,允许公司ip段访问solr服务器

    设置完成后,测试发现,公司ip和线上服务均不能访问solr服务。想起因为为了部署方便,我们的程序一直是通过域名访问的。我们把host:12580端口映射到了solr.project.company.cn。当访问solr.project.company.cn时,dns服务会把请求转发到solr服务器host:80端口,solr服务器上的nginx服务把这个请求/solr 下的请求转发到12580端口。

    # /etc/nginx/conf.d/solr.conf
    
    server {
        server_name  localhost;
        location /solr/ {
            proxy_pass http://127.0.0.1:12580;
        }
    }

    因此要允许本机访问12580端口

    iptables -I INPUT -s 127.0.0.1 -p tcp --dport 12580 -j ACCEPT

    再次测试,线上服务器和公司ip都可以访问solr服务了。不过既然是通过nginx转发请求,那么仍然限制不住其他ip不加端口访问。用手机测试了一下,果然这样。

    在确保没有其他服务在使用转发服务后。同样对80端口限制了ip访问,那么问题解决了。

    为了是iptables的配置生效,需要保存配置,并且能够重启后自动生效。使用

     

    # 保存 
    /etc/rc.d/init.d/iptables save 
    # 重启服务
    service iptables restart

    结果发现分别报:

    # 保存
    no such file or directory: /etc/rc.d/init.d/iptables
    # 重启
    iptables: unrecognized service

     

    因为ubuntu下配置不同。

    参考http://blog.phiy.me/debian-iptables-persistent/ 安装iptables-persistent

     

    apt-get install iptables-persistent

    安装过程中需要点击两次yes。这会在/etc/iptables/下生产rules.v4 和rules.v6两个文件,分别保存ipv4和ipv6下的规则。

    以后再次修改的话,保存

    iptables-save > /etc/iptables/rules.v4

    OK。

     

     

     

     

  • 相关阅读:
    ajax 发送 json 数组
    h5拖动总结
    TypeScript 学习
    java程序员面试经历(不忘初心,永不放弃,方得始终)。
    mysql统计天、周、月、季度、半年、年
    C++错误unresolved external symbol _WinMain@16
    记mysql条件分支语句CASE WHEN THEN ELSE END的使用
    freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)
    tomcat启动内存溢出三种解决方案:java.lang.OutOfMemoryError:PermGen space解决办法
    Spring事务异常回滚,捕获异常不抛出就不会回滚
  • 原文地址:https://www.cnblogs.com/yuetz/p/7682930.html
Copyright © 2011-2022 走看看