phpLDAPadmin

phpMyadminだけだと思ったら
LDAPとかいろんなのがあるのか

インストール

$ sudo apt-get install php5-ldap


$ wget http:// ... /phpldapadmin-1.2.0.5.tgz(phpldapadminをダウンロード
$ tar zxvf phpldapadmin-1.2.0.5.tgz
$ mv phpldapadmin-1.2.0.5 phpldapadmin
$ cd phpldapadmin/config
$ cp config.php.example config.php
$ vi config.php

...
$config->custom->appearance['language'] = 'ja_JP';
...

$ sudo apache2ctl restart


なんて便利なんだあああああああ


※phpadmin系は攻撃対象になりやすいから
アクセス制限かけたとこに設置した方がいい

OpenLDAP構築@Ubuntu10.10

インストール

$ sudo apt-get install slapd ldap-utils

設定

OpenLDAP2.3からはslapd.confとかで管理しないようになったらしく
設定ファイルもデータベース化しちゃう方針になったみたい(Configuration Backendなる機能
原因不明なのが色々あってずいぶん困った…
Ubuntu10.10のアップデート待ってたらいつの間にか出来るようになってた


Ubuntu10.04公式ガイドとやり方は同じ
https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html

スキーマを組み込む

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

backendを作成

$ sudo vi /etc/ldap/backend.example.com.ldif

# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/backend.example.com.ldif

frontendを作成

$ sudo vi /etc/ldap/frontend.example.com.ldif

# Create top-level object in domain
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: Example
description: LDAP Example

# Admin user.
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret

# unit1
dn: ou=unit1,dc=example,dc=com
objectClass: organizationalUnit
ou: unit1

# unit1-1
dn: ou=unit1-1,ou=unit1,dc=example,dc=com
objectClass: organizationalUnit
ou: unit1-1

# member
dn: uid=0001,ou=unit1-1,ou=unit1,dc=example,dc=com
objectClass: inetOrgPerson
cn: Yamada Taro
sn: Taro
uid: 0001
userPassword: hoge

$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /etc/ldap/frontend.example.com.ldif

確認

$ ldapsearch -xLLL -b "dc=example,dc=com"
で登録したのが出ればOK

検索

$ sudo slapcat(サーバ側で出力させる
$ ldapsearch -x -h "uid=hoge" (ldapクライアントから条件検索

削除

$ ldapdelete -x -D "cn=admin,dc=example,dc=com" "uid=hoge,ou=unit1-1,unit1,dc=example,dc=com" (hogeさん削除 ※leafのみ可
$ ldapdelete -x -D "cn=admin,dc=example,dc=com" "dc=example,dc=com" -W -r (dc=example,dc=com以下を削除

変更

rootpwの変更

$ vi /etc/ldap/rootpw.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: newpasswd

$ ldapmofiy -x -D cn=config -w secret -f /etc/ldap/rootpw.ldif

rootDNの変更

$ vi /etc/ldap/backend.modify.ldif

dn: olcDatabase={1}hdb,cn=config
replace: olcSuffix
olcSuffix: o=hoge,c=JP
-
replace: olcRootDN
olcRootDN: cn=admin,o=hoge,c=JP
-
replace: olcAccess
olcAccess: {0}to attrs=userPassword by dn="cn=admin,o=hoge,c=JP" write by anonymous auth by self write by * none
olcAccess: {3}to * by dn="cn=admin,o=hoge,c=JP" write by * read

$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/backend.modify.ldif



以下は問題が起きまくってたときのメモ(たぶん不要)

すでに/etc/ldap/slapd.d
があったけどrootpwがsecretじゃないようで自分で作り直した

$ sudo mv /etc/ldap/slapd.d /etc/ldap/slapd.d.orig
$ sudo -u openldap mkdir /etc/ldap/slapd.d
$ sudo vi /etc/ldap/slapd.conf

database config
rootdn  "cn=config"
rootpw  secret

$ sudo -u openldap slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
$ sudo /etc/init.d/slapd restart

The pidfile for slapd is neither specified in "/etc/ldap/slapd.d/" nor
in /etc/default/slapd. Consequently, slapd will not be started.

とか言われるので
$ sudo vi /etc/default/slapd

SLAPD_PIDFILE="/var/run/slapd/slapd.pid"

$ sudo /etc/init.d/slapd restart
これで無事起動

$ ldapsearch -x -D cn=config -b cn=config -w secret
でずらずら出ればひとまず完了

.screenrc

前々からやりたかった
起動時に複数のウインドウを立ち上げる設定を知ったのでメモ

defscrollback 10000

autodetach on
hardstatus on
hardstatus alwayslastline "screen | %w | %u %= %m/%d %c"

# default window
# syntax: screen -t label order command
screen -t tcsh 0
screen -t www 1 cd /var/www
screen -t bsd 2 ssh user@server
...
select 0

再起動時に毎回ウインドウ開いては名前つけてたけどこんな機能があったとは
しかもコマンドも実行させれるって便利ー

Ubuntu10.04から10.10へアップグレードした際にsyslogが

うまく機能しなくなった
syslog受信してもlogに反映されてないので

/etc/rsyslogd.confと/etc/rsyslogd.conf.dpkg-distを見比べてみると

$KLogPath /var/run/rsyslog/kmsg
が
$KLogPath /proc/kmsg

に変更されてた


/proc/kmsgに直してあげると正常に動作するようになったとさ


※追記
しばらくしてまた動かなくなったので

$KLogPath /var/run/rsyslog/kmsg

に戻したら直った…
バグだったのかな?

OSアップグレード@Ubuntu10.04→10.10

Desktop版はマネージャ使えばいいけどServer版で

$ sudo apt-get dist-upgrade
が効かなかった


公式にも書いてるけど
$ sudo apt-get install update-manager-core
$ sudo vi /etc/update-manager/release-upgrades

Prompt=LTS
↓
Prompt=normal

LTS版しかやってくれなかったのか


$ sudo do-release-upgrade
でOSアップグレードが開始


おまけ
$ lsb_release -a
Ubuntuのバージョン(release)を確認することができる

OpenVPN@Ubuntu10.04

Ubuntu10.04時に入れてたのをメモ

インスト

$ sudo apt-get install openvpn

認証局(CA)作成

$ cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
$ vi vars

export KEY_COUNTRY="JP"
export KEY_PROVINCE="<県>"
export KEY_CITY="<市>"
export KEY_ORG="<組織名>"
export KEY_EMAIL="<メアド>"

$ sudo su - (以降rootで作業する
# . ./vars (何か怒られる場合はshで作業すること
# ./clean-all
# ./build-ca (CommonNameにはIPアドレス

サーバ証明書と鍵作成

# ./build-key-server server

クライアント証明書と鍵作成

# ./build-key client1 (client2やらclient3もクライアント数分作っとく

DiffieHellmanとやらを作成(鍵交換を安全にするもの

# ./build-dh

OpenVPNサーバの設定

# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
# cp ca.crt dh1024.pem server.crt server.key /etc/openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
# cd /etc/openvpn
# gunzip server.conf.gz
# vi /etc/openvpn/server.conf (クライアント同士繋げるならclient-to-clientのコメント解除

OpenVPNサーバの起動

$ sudo /etc/init.d/openvpn start

フォワードの設定

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward

iptables
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT

OpenVPNクライアント側

  • OpenVPN GUIをインスト
  • configフォルダにca.crt, server.crt, client1.crt, client1.key, client.ovpn(sample-configからコピー
  • client.ovpnを編集して接続

Win7とかだと管理者としてアプリを実行しないと使えないかも

クライアント側からVPNサーバにpingが届かない場合

おそらくクライアント側にルーティング情報が登録されてないので,
VPNサーバ側で
$ sudo vi /etc/openvpn/server.conf

...
push "route 10.8.0.0 255.255.255.0"
...

的なことを追加してVPNサーバ再起動

これでルーティング情報がクライアント側にpushされる

MRTGの導入@Ubuntu10.10

FreeBSDで使っていい感じだったのでUbuntuに入れてみる

インスト

$ sudo apt-get install mrtg snmpd snmp

SNMPの設定

$ sudo vi /etc/snmp/snmpd.conf

...
# rocommunity public  default    -V systemonly
rocommunity public localhost
rocommunity public  secret 192.168.1.0/24 (外から取りたければ
...

$ sudo /etc/init.d/snmpd restart

MRTGの設定

変な位置にmrtg.cfgがあるなぁ
$ sudo mkdir /etc/mrtg; sudo mv /etc/mrtg.cfg /etc/mrtg
$ sudo vi /etc/mrtg/mrtg.cfg


基本的な値

# Global configuration
WorkDir: /var/www/mrtg
Language: eucjp
Refresh: 300
WriteExpires: Yes

# Default Param
Title[^]: Traffic Analysis for
Options[^]: growright
MaxBytes[_]: 12500000
XSize[_]: 350

# CPU
Target[cpu]: 1.3.6.1.4.1.2021.10.1.5.1&1.3.6.1.4.1.2021.10.1.5.2:public@localhost
MaxBytes[cpu]: 100
Options[cpu]: gauge
YLegend[cpu]: CPU Load(%)
Title[cpu]: CPU Load
PageTop[cpu]: <h1>CPU Load Average(1min, 5min)</h1>
LegendI[cpu]: 1min
LegendO[cpu]: 5min
ShortLegend[cpu]: %

# MEM
Target[mem]:  1.3.6.1.4.1.2021.4.4.0&1.3.6.1.4.1.2021.4.6.0:public@localhost
MaxBytes1[mem]: xxx (freeコマンドで取得する
MaxBytes2[mem]: xxx (freeコマンドで取得する
Options[mem]: gauge, absolute
YLegend[mem]: Memory(MB)
LegendI[mem]: swap
LegendO[mem]: real
ShortLegend[mem]: Bytes
Title[mem]: Memory
PageTop[mem]: <h1>Available Memory (swap, real)</h1>
Unscaled[mem]: dwmy
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P

# HDD
Target[hdd]: 1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@localhost
MaxBytes[hdd]: 100
Options[hdd]: gauge
LegendI[hdd]: /
LegendO[hdd]: /
ShortLegend[hdd]: %
YLegend[hdd]: Disk(%)
Title[hdd]: Disk Space
PageTop[hdd]: <h1>Disk Capacity</h1>
Unscaled[hdd]: dwmy

# Network Traffic (eth0)
Target[iface]: 1.3.6.1.2.1.2.2.1.10.1&1.3.6.1.2.1.2.2.1.16.1:public@localhost
Options[iface]: nopercent
YLegend[iface]: Packets
LegendI[iface]: In
LegendO[iface]: Out
ShortLegend[iface]: Pkts
Title[iface]: Packets
PageTop[iface]: <h1>Network Traffic(In, Out)</h1>

# MIBメモ
#TCP in  1.3.6.1.2.1.6.10.0
#TCP out 1.3.6.1.2.1.6.11.0
#UDP in  1.3.6.1.2.1.7.1.0
#UDP out 1.3.6.1.2.1.7.4.0 

index.htmlを作る

$ sudo mkdir /var/www/mrtg
$ sudo indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

cronに登録

$ sudo vi /etc/crontab

0/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --logging /etc/mrtg/mrtg.log


※追記
Ubuntu9.04でやってみたらリモートから問い合わせできなかった
$ sudo vi /etc/default/snmpd

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

デフォルトでローカルのみ許可になってるみたい