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
削除
$ 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
再起動時に毎回ウインドウ開いては名前つけてたけどこんな機能があったとは
しかもコマンドも実行させれるって便利ー
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
iptables
iptables -A INPUT -i tun0 -j ACCEPT iptables -A INPUT -p udp --dport 1194 -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT
MRTGの導入@Ubuntu10.10
FreeBSDで使っていい感じだったのでUbuntuに入れてみる
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'
デフォルトでローカルのみ許可になってるみたい