3-2_OracleVM VirtualBox_OpenLDAP、Squid

# OpenLDAPについて
・サービス名はslapd(Standalone LDAP Daemon)
・今回はドメイン名を77test.com、OUをldaptest、ユーザ名を77test01とする。
・slappasswdでldapサーバの管理者パスワードを設定する。
・.ldifファイルという設定ファイルを作成し、ldapaddコマンドなどで読み込ませることでLDAPサーバに情報を反映させる
```
(ldifファイルの表記例）
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}1WIX/d2vLgHcOaju+/BZFW+f9G9Tz5c0
```

・LDAPへデータを登録する場合ldapadd、登録済みのデータを修正する場合はldapmodify
　登録したデータを検索する場合はldapsearchコマンドを使う
```ruby:ldapaddコマンドの実行例
ldapadd -Y EXTERNAL -H ldapi:/// -f /var/temp/add_rootpw.ldif
```
-Y EXTERNAL パスワード入力を省略する
-H LDAPサーバの指定（ldapi:///⇒ローカルホストを指定）
-f ファイルの指定

・OpenLDAPとSwuidを連携する場合、/var/etc/squid.confに以下の設定を追記する
```
auth_param basic program /usr/lib64/squid/basic_ldap_auth -v 3 -b
"dc=ldaptest,dc=com" -f "(&(uid=%s)(host=192.168.114.162))" localhost
```

・ACL設定に以下を追記する
```
（acl 名前 条件）
acl ldap-auth proxy_auth REQUIRED
```

・http_access設定の一番上に以下を追記する
```
http_access allow ldap-auth
```

# OpneLDAPのインストール

```ruby
[root@localhost ~]# yum install openldap openldap-servers openldap-clients

[root@localhost ~]# rpm -qa | grep openldap
3行
```

# slappasswordの設定
```
[root@localhost ~]# cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@localhost ~]# chown ldap. /var/lib/ldap/DB_CONFIG
[root@localhost ~]# systemctl start slapd
[root@localhost ~]# systemctl enable slapd

[root@localhost ~]# slappassword
New password:
{SSHA}個別に違うパスが出力される

```

# add_rootPw.ldif
```
[root@localhost ~]# cd ; pwd
[root@localhost ~]# mkdir ./ldap_work
[root@localhost ~]# ls -l
[root@localhost ~]# vi ./ldap_work/add_rootPw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}1WIX/d2vLgHcOaju+/BZFW+f9G9Tz5c0 \\slappasswordで作成した暗号化パスワードをいれる
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528418/f6e0da43-1fd5-17fa-28e9-8a9f801fcde3.png)

```
[root@localhost ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./ldap_work/add_rootPw.ldif
\\書き換えの時はldapreplaceに変える？

[root@localhost ~]# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b olcDatabase={0}config,cn=config
olcDatabase: {0}config
~省略~
olcRootPW: {SSHA}1WIX/d2vLgHcOaju+/BZFW+f9G9Tz5c0 \\ここが変わる
```

# ドメイン名を変更する
```
[root@localhost ~]# vi ./ldap_work/change-domain.ldif

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
    read by dn.base="cn=Manager,dc=77test,dc=com" readby * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=77test,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=77test,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}1WIX/d2vLgHcOaju+/BZFW+f9G9Tz5c0

[root@localhost ~]# ldapmodify -x -D cn=config -w password -f ./ldap_work/change-domain.ldif \\エントリーの追加
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528418/c30adead-185b-bdff-8bcc-c1c05146eb2d.png)


# 組織を追加
```
[root@localhost ~]# vi ./ldap_work/base.ldif
dn: dc=77test,dc=com
objectClass: dcObject
objectClass: organization
dc: 77test
o: 77test Inc.

dn: ou=ldaptest,dc=77test,dc=com
objectClass: organizationalUnit
ou: ldaptest

[root@localhost ~]# ldapadd -x -D "cn=Manager,dc=77test,dc=com" -w password -f ./ldap_work/base.ldif
adding new entry "cn=Manager,dc=77test,dc=com" 
adding new entry "ou=ldaptest,dc=77test,dc=com"

```

# schemaの追加
```
[root@localhost ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif

[root@localhost ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

[root@localhost ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
```

・ユーザの作成
```
[root@localhost ~]# vi ./ldap_work/add_user.ldif
dn: uid=77test01,ou=ldaptest,dc=77test,dc=com
objectClass: account
objectClass: simpleSecurityObject
uid: 77test01
userPassword: {SSHA}1WIX/d2vLgHcOaju+/BZFW+f9G9Tz5c0
host: 192.168.56.2 \\teratermでCentOSに接続する際のホストOSアドレス

[root@localhost ~]# ldapadd -x -D "cn=Manager,dc=77test,dc=com" -w password -f ./ldap_work/add_user.ldif

[root@localhost ~]# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=77test,dc=com''uid=77test01'
```
・Squidと連携させる
```
[root@localhost ~]# cp -p /etc/squid/squid.conf /etc/squid/squid.conf.bk2
[root@localhost ~]# ls -l /etc/squid/squid.conf*
[root@localhost ~]# vi /etc/squid/squid.conf

◆修正点その1 下記3行追加する
#Openldap認証設定
auth_param basic program /usr/lib64/squid/basic_ldap_auth -v 3 -b "dc==77test,dc=com" -f (&(uid=%s)(host=192.168.56.2))" localhost

◆修正点その2
# Example rule allowing~
# Adapt localnet in the ACL section~
# from where browsing~
acl ldap_auth proxy_auth REQUIRED \\コメントイン
http_access allow ldapauth \\コメントイン
#http_access allow localnet \\コメントアウト
#http_access allow localhost \\コメントアウト
http_access allow mynetwork
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528418/862aa06e-fa53-771c-1aaa-427e3c28f40f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528418/4406246e-763d-48db-66fa-6a9d890acf86.png)

```
[root@localhost ~]# systemctl restart squid
```

プロキシの設定を行う
アドレス：teraterm接続のときのアドレス
ポート：8080
*.local(いるのかな？）
＞保存


http://192.168.56.2:8080
認証画面が出るので
ユーザ名：77test01
パスワード：password

認証されウェブ画面が表示される

```
[root@localhost ~]# tail -f /var/loga/squid/access.log
⇒77test01のアクセスログが出力される
```