海馬のかわり

最近記憶力に難がある、地方在住サーバエンジニアの備忘録です。

簡単!CentOSでsmokeping

smokepingを使ってみたいけど、ちょっと手間がかかりそう。
そんな場合に試してみてください。

※Nixvalレポジトリがいつまで使えるかは不明です。

■検証環境
OS: CentOS 5.6 (32bit)

■設定手順
1.レポジトリの追加

※以下より、環境に合わせてrepoファイルの取得する。
・RPMforge
http://pkgs.repoforge.org/rpmforge-release/

・epel
http://dl.fedoraproject.org/pub/epel/5/i386/repoview/epel-release.html

・Nixval
http://repo.nixval.com/nixval-centos/5/updates/

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
# rpm -ihv rpmforge-release-0.5.2-2.el6.rf.i686.rpm
# rpm -ihv http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -ihv http://repo.nixval.com/nixval-centos/5/updates/nixval-release-0.1-1.el5.i386.rpm
# sed  -i s/enabled\ =\ 1/enabled\ =\ 0/g /etc/yum.repos.d/rpmforge.repo
# sed  -i s/enabled=1/enabled=0/g /etc/yum.repos.d/epel.repo
# sed  -i s/enabled\ =\ 1/enabled\ =\ 0/g /etc/yum.repos.d/nixval.repo

2.smokepingの追加&設定

# yum --enablerepo=rpmforge,epel,nixval install httpd smokeping
# sed -i s/Allow\ from\ 127.0.0.1/Allow\ from\ 192.168.1.0\\/24/g /etc/httpd/conf.d/smokeping.conf
※許可するネットワークを追加

# vi /etc/smokeping/config
※設定は備考URL参照

# ln -s /usr/lib/mrtg2/* /usr/share/smokeping/lib

# chkconfig httpd on
# chkconfig smokeping on

# service httpd start
# service smokeping start

3.smokeping管理画面へのアクセス
http://ServerIP/smokeping/sm.cgi

※同梱の「SmokeTrace」(tr.html)は「The specified type of tracerouting is allowed for superuser only」
との事なので、このままでは使えない。

■参照
状態監視ツール(smokeping)構築ガイド
http://www.syon.co.jp/syontech/tech001.html

以上

Data ONTAP8でUnixコマンドを使う

いわゆるSystemShellへのアクセス方法メモ。

■設定手順

> priv set advanced
> useradmin diaguser unlock
> useradmin diaguser password
> systemshell

■動作確認
試しにsshでアクセスしてみる。

login as: root
root@10.0.0.1's password:

netapp01>
netapp01> priv set advanced
Warning: These advanced commands are potentially dangerous; use
         them only when directed to do so by NetApp
         personnel.
netapp01*>
netapp01*> useradmin diaguser unlock
netapp01*>
netapp01*> useradmin diaguser password

Please enter a new password:
Please enter it again:

netapp01*> Tue Feb  7 04:26:12 GMT [netapp01:passwd.changed:info]: passwd for user 'diag' changed.

netapp01*>
netapp01*>
netapp01*> systemshell

Data ONTAP/amd64 (netapp01) (ttyp0)

login: diag
Password:
Last login: Tue Feb  7 04:22:01 from localhost


Warning:  The system shell provides access to low-level
diagnostic tools that can cause irreparable damage to
the system if not used properly.  Use this environment
only when directed to do so by support personnel.

netapp01%
netapp01%
netapp01% uname -a
Data ONTAP netapp01 8.1X45 Data ONTAP Release 8.1X45 amd64
netapp01%
netapp01%
netapp01% echo $SHELL
/bin/csh
netapp01%
netapp01%
netapp01%
netapp01% bash
bash-3.2$
bash-3.2$ cat /etc/rc.conf
#
# default rc.conf file (which is copied)
#

#ifconfig_bge0="DHCP"
#ifconfig_em0="DHCP"
#hostname="xxx.yyy.zzz.com"

keyrate="fast"

sshd_enable="YES"

root_rw_mount="NO"
rpcbind_enable="YES"
nis_client_enable="YES"
nisdomainname="unset"
nis_client_flags="-ypsetme"

#Change swapfile location as part of upgrade
swapfile="/mroot/etc/swapfile"
swapsize="1073741824"           # 1G swapfile
sim_swapfile="/sim/swapfile"    # use a non-mroot swapfile for vsims.
vsa_swapdevice="/dev/ad1s2"     # use dedicated partition for vsa, tested for in addswap
vsim_std_swapdevice="/dev/ad1s2" # Vsims with standard disk layout uses separate partition just like vsa
VSIM_SWAP_BLOCKS=1500           #number of 1M blocks
vsim_swapsize=$((${VSIM_SWAP_BLOCKS} * 1024 * 1024)) # ~1.5GB of swapspace. Vsims need more swapspace than hardware - burt273995

entropy_file="/var/entropy"

# sendmail related controls
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.base.rules"
ipv6_ipfilter_rules="/etc/ipf6.base.rules"

notifyd_enable="YES"

mlogd_enable="YES"
sldiag_tcd_enable="YES"

ntpd_enable="NO"
ntpd_flags="-g -p /var/run/ntpd.pid -f /var/db/ntpd.drift"

# For Vsim & VSA, use the correct coredump partition
sim_dumpdev="/dev/ad0s4a"
vsa_dumpdev="/dev/ad2s2"

static_routes=""
vmtools_enable="YES"
vmdblade_setup_enable="YES"
vmmonitor_enable="YES"
vmhostinfo_enable="YES"

xinetd_enable="YES"
ifconfig_lo0="inet 127.0.0.1 -arp mtu 8232"

kmip_init_enable="YES"
kmip_client_enable="YES"
bash-3.2$
bash-3.2$
bash-3.2$ exit
exit
netapp01% exit
logout
netapp01*>
netapp01*>
netapp01*> useradmin diguserlock
netapp01*>
netapp01*> priv set admin
netapp01>
netapp01>


作業が終わった後は、以下でAdvancedモードを抜ける。

> exit
> useradmin diaguser lock
> priv set admin

■参照
Recipes for adding disks to a Data ONTAP 8 Simulator
http://communities.netapp.com/docs/DOC-9579

Array APV WebUIでのAW Error

f:id:extrea:20120131112950p:plain

Array APV WebUIで、一部箇所に「AW Error:non-supported DOCTYPE」というエラー出力される。

→ブラウザによりJavaScriptがうまく実行されない為。

[ブラウザ毎表示結果](2012/01/31)

・Internet Explorer 6
OK
※ログイン画面のみ文字化ける

Firefox 9.0.1
AW Error

Opera 11.60
AW Error

Chrome 16.0
AW Error

IE以外ダメみたい。

コマンドによるIIS FTPサービスの追加及び設定

IIS(FTP)の設定をコマンドで行うための手順まとめ。

■前提条件
・Default FTP Siteを使用

■検証環境
・OS: Windows Server 2008
・Windows Firewall無効
FTPルート及びログディレクトリを別ドライブへ指定
FTP専用ユーザのみアップロードを許可

■設定手順
1.事前設定

FTPユーザー追加:

> net user ftp-user001 Password /add

FTPユーザーグループ追加:

> net localgroup "FTP User" /add
> net localgroup "FTP User" ftp-user001 /add

FTPルートディレクトリ設定:

> md d:\ftp\ftproot
> md d:\ftp\logs

現設定の確認:

> cacls d:\ftp\ftproot

Usersグループの書き込み拒否:

> cacls d:\ftp\ftproot /e /p Users:r

FTP Usersグループの書き込み許可(Full Control):

> cacls d:\ftp\ftproot /e /p "FTP Users":f

設定後の確認:

> cacls d:\ftp\ftproot

2.FTPサービス(役割)の追加

現在の役割一覧の確認:

> ServerManagerCmd -query | find "FTP"

FTPの追加:
※インストール完了まで数分かかる
※インストールログをCドライブ直下に出力

> ServerManagerCmd -install Web-Ftp-Publishing -logPath C:\IIS-FTP_install.log

サービスの開始:

> sc start MSFTPSVC
> sc query MSFTPSVC

サービス自動起動設定:

> sc config MSFTPSVC start= auto
> sc qc MSFTPSVC

現在のFTP設定一覧の取得:

> cd c:\inetpub\AdminScripts

グローバル設定:

> cscript adsutil.vbs ENUM /MSFTPSVC

Default FTP Site:

> cscript adsutil.vbs ENUM /MSFTPSVC/1

3.Default FTP Site設定

ファイル名およびロールオーバーに地域設定を使用する:
※デフォルトでは0:00 GMTにてログローテーションされる為、0:00 JSTへ変更する。

> cscript adsutil.vbs SET /MSFTPSVC/1/LogFileLocaltimeRollover True

新しいログディレクトリの指定:

> cscript adsutil.vbs SET /MSFTPSVC/1/LogFileDirectory "D:\ftp\logs"

ログ取得項目(追加分):

> cscript adsutil.vbs SET /MSFTPSVC/1/LogExtFileDate True
> cscript adsutil.vbs SET /MSFTPSVC/1/LogExtFileBytesSent True
> cscript adsutil.vbs SET /MSFTPSVC/1/LogExtFileBytesRecv True

匿名接続の禁止

> cscript adsutil.vbs SET /MSFTPSVC/AllowAnonymous False	

FTPルートディレクトリ変更:

> cscript adsutil.vbs SET /MSFTPSVC/1/ROOT/Path "D:\ftp\ftproot"

FTP書き込み許可:

> cscript adsutil.vbs SET /MSFTPSVC/1/ROOT/AccessWrite True

その他:
・FTPバナー抑制
※FTP接続時に『Microsoft FTP Service』というバナーを表示しない

> cscript adsutil.vbs SET /MSFTPSVC/1/SuppressDefaultFTPBanner True
> cscript adsutil.vbs SET /MSFTPSVC/1/BannerMessage "FTP Server"

・パッシブモードでのポートレンジ指定(21000/tcp~21500/tcp)

> cscript adsutil.vbs SET /MSFTPSVC/PassivePortRange "21000-21500"

以上

Windows Serverをタダで利用する in Amazon EC2

Amanzon EC2の無料使用枠(フリーティア)にWindows Serverが加わったので
利用開始手順も書こうかと思ったけれど、すでに素晴らしい資料があった為
貼り付けだけ。

・EC2でWindowsサーバ立ち上げ
http://www.slideshare.net/kentamagawa/ec2windows

※今回はSP1のパッチが当たった、AMI ID「ami-ecea5ced」を利用した。
※無償枠ユーザーが増えた為なのか、インスタンス起動までに時間がかかる模様。

なお同じフリーティアで、Linuxのmicroインスタンスがもう1つ利用可能なので
計2仮想サーバを1年間無償で利用できる事になる。Amazonってば、太っ腹。

ちなみにLinuxインスタンスを使う場合、RHEL互換のAmazon Linuxがオススメ。

■その他参考情報
・AWS 無料使用範囲
http://aws.amazon.com/jp/free/

・はじめてのアマゾンクラウド1「Amazon Web Service(AWS)のアカウント開設する」
http://www.slideshare.net/kentamagawa/3aws

・はじめてのアマゾンクラウド2「仮想サーバを立ち上げる」(Linux)
http://www.slideshare.net/kentamagawa/3amazon-ec2

・Amazon Linux AMIの提供開始
http://aws.typepad.com/aws_japan/2010/09/amazon-linux-ami%E3%81%AE%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B.html

以上

ADのアカウントでLinuxサーバにログインする

■趣旨
Active Directoryのアカウントで、Linuxサーバへログインする。
ただし以下の設定は既存のまま変更しない。

  • ホスト名
  • DNS

また以下の要件を満たす事。

  • 各サーバでアカウントのUID/GIDを統一する。

->ADアカウントのRIDをキーとして使用する

  • 特定グループに所属するアカウントのみログインを許可する


■検証環境
ドメイン名:EXAMPLE.LOCAL

  • ADサーバ

OS: Windows Server 2008 Standard (x86_64)
ホスト名: dc.example.local
IPアドレス: 10.0.0.1

OS: CentOS 5.6 (x86)
ホスト名: sysa-web01.localdomain
IPアドレス: 10.0.0.2

■設定手順
1.必要パッケージのインストール

  • samba-common
  • samba-client
# yum install samba-common samba-client

2.winbind認証設定

# authconfig \
 --enablewinbind \
 --enablewinbindauth \
 --smbsecurity=ads \
 --smbworkgroup=EXAMPLE \
 --smbrealm=EXAMPLE.LOCAL \
 --smbservers=dc.example.local \   # ※1
 --enablewinbindusedefaultdomain \ # ※2
 --winbindtemplatehomedir=/tmp \   # ※3
 --winbindtemplateshell=/bin/bash \
 --enablelocauthorize \
 --update

※1 カンマ区切りで複数指定可。hostsへ対応する名前を記述する。
※2 ドメイン名自動補完設定。[EXAMPLE\testuser001]のような入力が必要無くなる。
※3 ログイン時に自動的にホームディレクトリを作りたいならこのあたりを参照

3.samba設定

# cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org
# vi /etc/samba/smb.conf
---
#idmap uid = 16777216-33554431
#idmap gid = 16777216-33554431
idmap domains = EXAMPLE
idmap config EXAMPLE: default = yes
idmap config EXAMPLE: backend = rid
idmap config EXAMPLE: range = 10000-19999
idmap alloc config: range = 10000-1999
---

※デフォルト設定をコメントアウトし、上記行を追記(77行目付近)

上記は各LinuxサーバでUID/GIDの整合性を取るための設定
通常は各サーバのwinbindが早いもの順でUID/GIDを割り当てるため、同一ユーザでもサーバ毎にUID/GIDが異なる。

これをWindowsアカウントのSIDの末尾4ケタ(RIDと呼ばれる部分)+指定レンジ(10000-19999)を足し合わせたものをUID/GIDとする設定を行う。

こうする事で各サーバ間でUID/GID割り当てルールを統一される。

■参考
RIDの確認方法

# id testuser001
uid=11110(testuser001) gid=10513(domain users) 所属グループ=10513(domain users),11113(operator)

※この場合、11100がwinbindの割り当てたUID
# wbinfo -U 11110
S-1-5-21-2966872847-1102543892-2619680819-1110

※アカウントのSIDを取得するコマンド。最後の4ケタ(1110)がRID
※上記割り当てルールでは、これに10000を足し合わせた11110がこのユーザーのUIDとなる。
# wbinfo -G 11113
S-1-5-21-2966872847-1102543892-2619680819-1113

※グループのSIDを取得するコマンド。最後の4ケタ(1110)がRID
※当該グループ(operator)も同様のルールで割り当てられている事が確認できる。


4.hostsへドメイン名を追加。
既存ホスト名を変更する必要はなし。

# cp -p /etc/hosts /etc/hosts.20120112
# vi /etc/hosts
---
10.0.0.1	DC.EXAMPLE.LOCAL DC                 # ※1 
10.0.0.2	SYSA-WEB01.EXAMPLE.LOCAL SYSA-WEB01 # ※2 
---

※1 AD名前解決用。複数ある場合はその数だけ記載する。
※2 ADでの、このホストのFQDN

5.ドメイン参加

# net join -U Administrator
administrator's password:
Using short domain name -- EXAMPLE
DNS update failed!                          # ※1 
Joined 'SYSA-WEB01' to realm 'EXAMPLE.LOCAL'

※1 ADをDNSとして設定していない為に出るエラーだが認証させるだけなら問題ない?
# /etc/init.d/winbind restart

ADのユーザー/コンピューター管理ツールにて当該ホスト名のComputerが追加されたことを確認する
f:id:extrea:20120113172558p:plain

6.特定グループユーザのみアクセス許可設定
現状では全ドメインユーザーがアクセスできるため、特定グループのみ
ログイン可能とする。(本ケースではoperatorグループのSIDを追記)

# cp -p /etc/pam.d/system-auth /tmp
# vi /etc/pam.d/system-auth
# diff -wb /tmp/system-auth /etc/pam.d/system-auth
7c7
< auth        sufficient    pam_winbind.so use_first_pass
---
> auth        sufficient    pam_winbind.so use_first_pass require_membership_of=S-1-5-21-2966872847-1102543892-2619680819-1113

※許可するグループとして、SIDにて記述することで「半角スペースを含むグループ名」でも指定できる。
(一応、今回のグループ名ならそのまま「operator」と記述しても可)

7.連携テスト
・Kerberos認証

# kinit testuser001; echo $?

※正常終了する事

・winbind連携

# id testuser001

※ユーザ情報が表示されること

・ログイン認証

# ssh localhost -l testuser001

※正常にログイン出来ること。ユーザはあらかじめAD上に作成しておく。

■その他

  • winbindにてSID / UID,GID間の紐付けがおかしくなった場合の対処方法

smb.confにてidmapのUID/GID発番Rangeを変更した場合など、以前割り当てられたUID/GIDをキャッシュをクリアしたいなあという時に。

以下にキャッシュが存在するため、ディレクトリごと削除

# rm -rf /var/cache/samba
# /etc/init.d/winbind restart
  • SSHなどのログイン履歴はイベントログから拾えるようになる。

f:id:extrea:20120113172700p:plain

以上