HOME / コンピュータTips / Solaris / 設定メモ
デバイスネーム | ハードウェア | IPアドレス |
iprb0 | Intel 8255x | ひみつ |
iprb1 | Intel 8255x | ひみつ |
elxl0 | 3COM 905C | 未接続 |
OS | Solaris 10 |
patchあてをする前に、そのサーバをSunにレジストしなくてはならない。(アクティベーションみたいなもの)。セキュリティパッチは無料、その他は有料らしい。
残念ながらCLIのsmpatchにアクティベーション機能がない。
updatemanager
を利用して、一度レジストすれば、CLIのsmpatchでもアップデートが出来る。
従って適当なマシンから、
ssh -X -C マシン名
で、ログインでも行い、Xを飛ばすと良い。なおログイン時にrootパスワードは要求されるので、ユーザ権限で実行しても良い。
※注意:パッチが当たるのは、そのバージョンのものであって、アップグレードは別であることに注意せよ。/etc/releaseをみて、Solaris 10 11/06が現在の最新(通称u3)。
これは、CentOS等で言う、4.xのxの数字に相当するアップグレードであるが、Solarisではsmpatchではなく、Live Updateやディスクからの起動でアップデートする。
そこで、sunのサイトにいき、Sun Update Connection, System Edition 1.0.1をインストールする。
下記より、http://192.18.109.11/835-0615/835-0615.pdf
だ、そうである
コンソールにログインできればいいのだが、コンソールにXはないので、updatemanagerは、何らかの方法でユーザで実行する。
ユーザで実行したら、ルート権のパスワードを求められるので、そこでルートパスワードを入力する。
レジスト中に、SDCのアカウントらしきものを入力する
ソフトウェアのライセンスは、サブスクリプションキーを入力しない。
正常に登録されたら、以後の更新は、smpatchでも良いし、updatemanagerでもよい。
smpatchコマンドを利用する。
smpatch update
をすれば、一通りなんとかなる。
パスワードのポリシーを従来のDESからMD5にする。
md5よりも頑強な暗号方式はあるが、さすがに他のシステムで互換性がないのはまずい。
下記はマニュアルより引用。
# cat /etc/security/policy.conf … CRYPT_ALGORITHMS_ALLOW=1,2a,md5 # # Use the version of MD5 that works with Linux and BSD systems. # Passwords previously encrypted with __unix__ will be encrypted with MD5 # when users change their passwords. # # #CRYPT_DEFAULT=__unix__ CRYPT_DEFAULT=1
識別子 | 説明 | アルゴリズムのマニュアルページ |
1 | BSD システムや Linux システムの MD5 アルゴリズムと互換性のある MD5 アルゴリズム。 | crypt_bsdmd5(5) |
2a | BSD システムの Blowfish アルゴリズムと互換性のある Blowfish アルゴリズム。 | crypt_bsdbf(5) |
md5 | BSD バージョンや Linux バージョンの MD5 よりも強力とされている Sun MD5 アルゴリズム。 | crypt_sunmd5(5) |
unix | 従来の UNIX 暗号化アルゴリズム。policy.conf ファイルのデフォルトモジュールはこのアルゴリズムです。 | crypt_unix(5) |
先にgroupaddでadminsグループを作る。Solaris10は標準で、useraddもgroupaddも、パスが取っていないので、フルパスで実行する。/usr/sbin/にある。
svcsで、サービスの一覧が出るので、onlineをチェックする。やばいものを一通り落とす!
近くのマシンからこんな感じにチェックした。
nmap -P0 -O -p 1-1024 necromancer
rpcbind周りは、inetadmでチェックする。
こんなリンクがある。http://www.rinneza.com/junya/tech/solaris9_x86/security/close_service_port_004.html
svcadm -v disable telnet svcadm -v disable ftp svcadm -v disable rlogin svcadm -v disable klogin svcadm -v disable eklogin svcadm -v disable finger svcadm -v disable xfs svcadm -v disable sendmail svcadm -v disable /network/shell:default svcadm -v disable /network/shell:kshell svcadm -v disable rusers svcadm -v disable rstat svcadm -v disable autofs
898/tcp open sun-manageconsoleの停止
/etc/rc2.d/S90wbem stop
このままでは再起動してくるので
cd /etc/rc2.d && mv S90wbem _S90wbem
※これが正しいアプローチなのだかわからず・・・
sshは最初から入っているので、/etc/ssh/sshd_configを書き換え、パスワード認証されないように、下記の2つを治す。
PasswordAuthentication no PAMAuthenticationViaKBDInt no
設定を反映する前に、念のためsshでもう1本ログインをしておくと、ちょっとだけ安心。
また試すときは、締め出しを避けるために、ログインしているシェルは切らずに、別のコンソールから試す。
下記のコマンドでsshの設定が反映される。
svcadm restart ssh
/etc/inet/ntp.confを作成する。どこでも良いのだが
echo 'server ntp1.jpix.ad.jp'>/etc/inet/ntp.conf
で作成。
svcs -a | grep ntp
で動作チェックをする。動いてないのがデフォルトなので、
svcadm enable ntp
で起動を確認。
詳しくはTips/Solarisをみよ。
Solarisのフリーソフトウェア置き場の流儀に従って、
/usr/sfw/plum
におく。
91にユーザ、plumがいないことを確認。
grep 91 /etc/passwd grep 91 /etc/group
グループ作成
groupadd -g 91 plum
ユーザ作成
useradd -u 91 -g plum -d /usr/sfw/plum plum
※vipwで入って、シェルをつぶそう。
実は、これで実行できるんだけど・・・・
su - plum -c 'cd /usr/sfw/plum ; ./plum &'
こんな起動スクリプトを作ってみた・・・・
/usr/sfw/plum/plum.sh {start|stop|restart}
いわゆるSVR系の実行スクリプトなので、これをrcに入れれば、実行が容易になる。
これだと、Traditionalな構造。折角Solaris10なので、サービスマネージャに登録。
/var/svc/manifest/network/以下に、networkに関係するMANIFESTファイルが存在する。このファイルをテンプレートにして、plum用のファイルを作る。
この作り方は、今回は割愛。necromancerから持って行け(汗
できあがったら、XMLが正常なのかチェック
svccfg -v validate /var/svc/manifest/network/plum.xml echo $?
*2行目は念のため、返り値をチェック。
インポートしよう
svccfg -v import /var/svc/manifest/network/plum.xml
インポートできたかチェック・・・。
svcs -x svc:/network/plum svcs -l svc:/network/plum
想像通りでなければ、もう一度xml編集から!
うまくいったら、起動
svcadm -v enable plum
以上。Solaris10っぽくって素敵。
./installer -nodisplay 0. [X] [ ] [ ] Application/Accessibility 1. [ ] [ ] [X] Application/Editors 2. [ ] [ ] [X] Application/Networking 3. [X] [ ] [ ] Application/Publishing 4. [ ] [ ] [X] Application/Utilities 5. [X] [ ] [ ] Desktop/Environment 6. [ ] [ ] [X] Development/Languages 7. [ ] [ ] [X] Development/Libraries 8. [ ] [ ] [X] Development/Tools 9. [ ] [ ] [X] System/Daemons 10. [ ] [ ] [X] System/Emulators 11. [X] [ ] [ ] X/Applications 12. [X] [ ] [ ] X/Window Managers [ ] 1 bluefish - HTML editor, v0.12 [X] 2 emacs - GNU Emacs Editor, v21.3 [X] 3 gawk - pattern scanning and processing language, v3.0.6 [X] 4 GNU sed - streaming editor, v3.02 [ ] 5 joe - Text Editor, v3.1 [ ] 6 vim - Vi IMproved - a programmers text editor", v6.3 [ ] 7 XEmacs - text editor, v21.4.15 [ ] 1 cups - Common UNIX Printing System, v1.1.21 [ ] 2 cupsprint - CUPS Print Suite Cluster, v1.2 [ ] 3 ethereal - A Network Protocol Analyzer, v0.10.5 [ ] 4 Fetchmail - mail retrieval and forwarding utility, v6.2.5 [ ] 5 hpijs - HP InkJet Server, v1.6 [X] 6 lynx - Web browser for cursor addressable displays, v2.8.4 [ ] 7 mutt - The mutt mail user agent, v1.4.2.1 [X] 8 nmap - Network exploration and auditing utility, v3.50 [ ] 9 nmh - new MH message system, v1.0.4 [ ] 10 openldap - Open source Lightweight Directory Access Protocol, v2.2.17 [ ] 11 openslp - SLP networked services discovery, v1.0.11 [ ] 12 pine - Program for Internet News and Email, v4.61 [ ] 13 procmail - mail processing package, v3.22 [X] 14 rsync - A faster, flexible replacement for rcp, v2.6.3.1 [ ] 15 slrn - An easy to use NNTP based newsreader, v0.9.6.2 [ ] 16 snort - open source network intrusion detection system, v2.0.0 [X] 17 tcpdump - dump traffic on a network, v3.8.3 [X] 1 gcc-2 - GNU Compiler Collection, v2.95.3 [X] 2 gcc-3.4.2 - GNU Compiler Collection, v3.4.2 [X] 3 GNU bison - a better yacc, v1.35 [X] 4 GNU m4 - macro processor, v1.4 [ ] 5 mysqlpydb - Python MySQL API, v0.9.2 [ ] 6 php - Scripting Lang. Tool for web pages (MySQL API), v4.3.2 [X] 7 ruby - Object oriented interpreted scripting language, v1.6.4 [ ] 8 samp - Solaris AMP cluster and examples, v1.0 [ ] 9 TclX - TCL Extensions, v8.2.0 [ ] 1 aalib - ASCII Art Library, v1.2 [X] 2 Berkeley DB - database library, v1.85 [X] 3 berkeleyDB - Berkeley Database Library, v4.2.52 [ ] 4 curl - tool for transfering data specified with URL syntax, v7.10.3 [ ] 5 fltk - The Fast Light Toolkit, v1.1.3 [ ] 6 fnlib - X11 font rendering library, v0.5 [X] 7 gcc-2 - GNU Compiler Collection Runtime Libraries, v2.95.3 [X] 8 gd - GD Graphics Library, v2.0.15 [ ] 9 guile - GNUs Ubiquitous Intelligent Language for Extension, v1.3.4 [ ] 10 libogg libao libvorbis - Ogg and Vorbis libraries, v1.0 [ ] 11 libpcap - A Packet Capture Library, v0.8.3 [ ] 12 libsane - Scanner libraries and utilities, v1.0.14 [ ] 13 MPEG Library - decode MPEG-1 video streams, v1.3.1 [ ] 14 ncurses - new curses library, v5.2 [X] 15 PCRE - Perl-compatible regular expression library, v4.5.0 [ ] 16 qt - C++ GUI framework, v3.1.1 [X] 17 readline - library for editing command lines, v4.2 [ ] 18 S-Lang library - for S-Lang language, v1.4.0 [ ] 19 SDL - Simple DirectMedia Layer library, v1.2.5 [X] 20 Xaw3d - ThreeD Athena Widgets, v1.5 [X] 1 autoconf - GNU autoconf utility, v2.59 [X] 2 automake - GNU automake utility, v1.8.3 [X] 3 binutils - GNU binary utilities, v2.15 [X] 4 cvs - Concurrent Versions System for version control, v1.11.17 [X] 5 ddd - GNU Data Display Debugger, v3.3.8 [X] 6 gdb - GNU source level debugger, v6.2.1 [X] 7 global - Source code tag system, v4.8 [X] 8 libtool - Generic library support script, v1.5.2 [X] 9 make - GNU make utility, v3.80 [ ] 1 Imap - mail server daemon and utilities, v2002.4 [ ] 2 proftpd - Professional FTP Daemon Server, v1.2.10 [ ] 3 squid - web proxy cache, v2.5.7 [ ] 1 lxrun - linux system call emulator, v0.9.6.1 [ ] 2 wine - Windows API for Unix, v20041104
上記ソフトは次の場所にインストールされる
/opt/sfw
PATHを通す。
/opt/sfw/bin
READMEは下記の場所に入っている
/opt/sfw/READMEs
SolarisではApacheは1と2が入っているが、apache2を利用する。
/etc/apache2/ /usr/apache2/
mkdir -p /etc/apache2/conf.d/vhosts/ mkdir -p /etc/apache2/conf.d
/etc/apache2/httpd.confを書き換える。
LoadModuleの終わりに書く(RH風)
Include /etc/apache2/conf.d/*.conf ServerAdmin sysadmin[at]justplayer.com ServerName necromancer.justplayer.com
AddDefaultCharsetはいろんな意味で悪さをするので、.htaccessとかで変えるのがよいとという判断。
#AddDefaultCharset ISO-8859-1
CGI、plはCGIということで・・・・。
AddHandler cgi-script .cgi .pl
ステータス系は行かす。ただし社内からのみ
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 61.197.171.160/29 </Location> <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 61.197.171.160/29 </Location>
とりあえず・・・
DirectoryIndex index.php index.cgi index.html index.html.var
SSLは別ファイルで呼ぶので、ここではコメントアウト
#<IfModule mod_ssl.c> # Include /etc/apache2/ssl.conf #</IfModule>
Nameベースのバーチャルホスト。
NameVirtualHost *:80 Include "/etc/apache2/conf.d/vhosts/*.conf"
conf.d/vhosts.confにVirtualHost群に対するデフォルト設定群をいれ、conf.d/vhosts/*.confを読み込む。またconf.d/vhosts/以下には、ホスト名FQDN.confという名前で、VirtualHostを作るルール。
ただし、Apache2は最初の一つめを、HTTP RequestでHost:エントリがないときに答えるデフォルトホストとするので、しかるべきファイルを外に追い出し、vhosts.conf内にかく。
コンフィグテスト
/usr/apache2/bin/apachetcl configtest
サービスを有効にする
svcadm enable apache2
サービスを無効にする。
svcadm disable apache2
サービスをリスタートする。
svcadm restart apache2
graceful!
/usr/apache2/bin/apachectl configtest && /usr/apache2/bin/apachectl graceful
※Solarisでは、有効、無効は、再起動後にも影響を及ぼす。
Companion Discからインストールされた、php、SAMP(Solaris,Apache,MySQL,PHP)パッケージは、apache1系を前提に作成されたものである。
従ってこれらはアンインストールする。
pkgrm SFWsampc pkgrm SFWmphp
php-4.4.2をインストール((php5系は互換がないのでWikiPlus等もすべてphp4で書いている))。
注意
残念なことに、RedhatEnterpriseと違って、phpのパッケージは提供されていない。従って、phpの4.4系を追う必要がある。
php-4.4.2を展開し、BUILD.shを作る。
BUILD.sh
#!/bin/sh ./configure \ --prefix=/usr/local/php4 \ --with-apxs2=/usr/apache2/bin/apxs \ --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ --enable-zend-multibyte \ --with-config-file-path=/usr/local/etc \ --with-config-file-scan-dir=/usr/local/etc/php.d \ --disable-debug \ --enable-inline-optimization \ --with-bz2-dir=/usr/sfw/lib \ --with-zlib-dir=/usr/sfw/lib \ --with-jpeg-dir=/usr/local/lib \ --with-png-dir=/usr/local/lib \ --with-gd \ --with-ttf \ --enable-gd-native-ttf \ --with-gettext \ --with-iconv \ --with-pspell \ --with-regex=system \ --with-xml \ --with-libxml-dir=/usr/local/lib gmake gmake install
なお、今回は面倒なのでconfigureで下記を入れなかった。
--with-mysql=/usr/local/lib/mysql \ --with-mysql-sock=/tmp/mysql.sock \ --with-pgsql=shared \ --with-pgsql
まずはファイルをコピー。
mkdir -p /usr/local/etc/php.d cp php.ini-dist /usr/local/etc/php.ini
php.iniはこう直す。
ショートタグは無効にする。xml使うときにウザイから。
short_open_tag = Off
WARNINGは全部出してみる。へたれプログラムは動きませんが・・・
error_reporting = E_ALL
ただし、画面にはerrorは出しません。社内サーバならばOKですが・・・。
display_errors = Off
そのかわりログを残す。
log_errors = On
デフォルトのまますが、確認。
register_globals = Off
POSTのMAXサイズ。デフォルトは8M。あまりでかいとまずいこともある。
post_max_size = 64M
実は、これもPOSTMAXにあわせて増やさないと、POSTで上げられるファイルの上限が縛られる。
upload_max_filesize = 64M
mbstring系、これが一番とは限らない。意味を読め。
mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.func_overload = 7
/etc/apache2/conf.d/以下に、php.confを作る。特別な理由はないので、こんな感じで・・・・
LoadModule php4_module libexec/libphp4.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
歴史があるのでちと複雑。
/bin,/usr/bin | POSIXのデフォルト的なもの |
/sbin,/usr/sbin | POSIXのデフォルト的なスーパーユーザ用 |
/opt/sfw/bin | オプションで追加されるソフト。Companion Disc系など。ディストリビュータが追加するもの |
/usr/sfw/bin | SunがSolarisのディスクの中で追加したフリーソフト。 |
/usr/ccs | Sunの開発系? |
/usr/ucb | バークレーからのもらい物系 |
/usr/dt,/usr/openwin,/usr/X11 | X系 |
/usr/local/bin | 管理者が自分自身の出てコンパイルしたもの。SunSiteのもの |
とりあえず、境界線上ということでftpdをたててみた。
Companion DiscにproftpdのVer.1.20が入っていたのだが、気がつかず1.3.0をインストールしてしまったので、そのままになっている。
srcコンパイル系は次の場所に置く。
cd ${HOME}/src/
下記のサイトからダウンロード
ftp://ftp.jp.proftpd.org/proftpd/distrib/source/
2006年2月の段階では1.3.0rc3を利用する。
ftp://ftp.jp.proftpd.org/proftpd/distrib/source/proftpd-1.3.0rc3.tar.bz2
rcなのでリリースされたら新しいものを使おう
./configure gmake gmake install
/usr/local/etc/proftpd.conf
ServerName "mephisto.justplayer.com" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nobody DefaultRoot ~ UseReverseDNS off AllowStoreRestart on AllowRetrieveRestart on IdentLookups off RootLogin off AllowOverwrite on AuthUserFile /usr/local/etc/ftppasswd RequireValidShell off # Administrative users cannot log in. <Limit LOGIN> DenyUser root,daemon,bin,sys,adm,lp,uucp,nuucp,smmsp,listen,gdm,webservd,nobody,noaccess,nobody4,plum,rotoold,irc </Limit> <Directory /home/*/> HideNoAccess on </Directory>
cat /etc/passwd | awk -F: '{print $1}' | xargs | sed 's/\ /,/g'
/usr/local/etc/passwd
justplayer:$1$c75rhAEd$CxPSv03xAJuMpUEkX6Di/.:2000:2000::/home/ftpclient: heiwa:$1$97PcsErk$90x7IWLbqAV9Dsus2EAJ10:2000:2000::/home/ftpclient/heiwa:
Solaris10らしくMANIFESTを作る。
/var/svc/manifest/networkに行くとftp.xmlがあるので、まねて作った。
<?xml version='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <!-- Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. ident "@(#)proftp.xml 1.4 04/12/09 SMI" NOTE: This service manifest is not editable; its contents will be overwritten by package or patch operations, including operating system upgrade. Make customizations in a different file. Service manifest for proftpd --> <service_bundle type='manifest' name='proftpd'> <service name='network/proftp' type='service' version='1'> <create_default_instance enabled='false' /> <exec_method type='method' name='start' exec='/usr/local/sbin/proftpd' timeout_seconds='60'> <method_context> <method_credential user='root' group='root' /> </method_context> </exec_method> <exec_method type='method' name='stop' exec=':kill' timeout_seconds='60'> </exec_method> <stability value='Unstable' /> <template> <common_name> <loctext xml:lang='C'> ProFTP server </loctext> </common_name> <documentation> <manpage title='proftpd' section='1M' manpath='/usr/local/man' /> </documentation> </template> </service> </service_bundle>
上記のproftpd.xmlファイルが正しいかどうかチェック
svccfg -v validate /var/svc/manifest/network/proftpd.xml echo $?
インポート
svccfg -v import /var/svc/manifest/network/proftpd.xml
状況チェック
svcs -x network/proftp
Enableにする(今起動&自動起動)
svcadm enable proftp
動いているのを再び確認。
svcs -x network/proftp
このftpサーバでは、/usr/local/etc/ftppasswdに記載するのがルールとする。また、ユーザアカウントは同一とし、chrootをすることでセキュリティを保つ。
Sun Studio 11をダウンロードして展開。
インストーラを起動。
./install
開発環境ではないので、こんな感じ・・・((そこまで根拠がない))。
No Install Default Install Custom Install Product ---------- --------------- -------------- ------- 0. [X] [ ] [ ] Solaris patches 1. [ ] [ ] [X] Sun Studio Software 2. [X] [ ] [ ] Documentation 3. [X] [ ] [ ] Source Distribution 4. [ ] [X] [ ] Sun Performance Library 5. Done
オプションは、こんな感じ((これもそこまで根拠はない))。
[X] 1 Compilers C [X] 2 Compilers C++ [ ] 3 Compilers Fortran 95 [ ] 4 Demos [X] 5 External editors [X] 6 Garbage Collectors [ ] 7 IDE [X] 8 Performance Tools [X] 9 Standalone Tools: Building Software [ ] 10 Standalone Tools: DBX Debugging Tools [ ] 11 Sun Studio 11 Demos [ ] 12 X-designer
インストールはこんな感じで完了。
一応最後に言われるのはこんな事。
The installation and licensing log files are located at /var/sadm/install/logs. To view a log file, type at the prompt: % cd /var/sadm/install/logs; more <filename> The installed product contains Update Notification, a feature that checks a web service at Sun Microsystems and informs you of relevant updates. Please refer to the Release Notes for further information. If you installed any component of the Sun Studio 11 developer tools on a network server, you can use the email template /<install- directory>/SUNWspro/READMEs/email_template.txt to send getting started information to the developers who use the network-installed software.
こんな感じで、pathを追加しておく。
setenv PATH "${PATH}:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/usr/sfw/bin:/opt/sfw/bin:/usr/local/bin:/usr/sbin"
標準のものを使うには、Studio11が必要。
なぜかというと標準のPerlは、Forte Cを使ってコンパイルされており、Perlのモジュール追加((特にCライブラリを含むもの))には、コンパイルされた環境を要求するからである。
ForteCをインストールしたくない場合は、標準のものではなく、gccでコンパイルされたSunSITEのPerlを利用するのがよい。