Scientific Linux
scientific linuxについて調べてみたみた。 SLと略されることが多いって。 読み方は「サイエンティフィック リナックス」だよね、たぶん。
エンタープライズlinuxのコードを元にFNAL(Fermi国立研究所、アメリカ)やCERN(欧州原子核研究機構)が再編集したパッケージ。CentOSもそんな感じ。 で、世界中の研究機関とか理研とかでも使われているディストリビューション。
特徴はサポート期間をはっきり表明してることここね。
2012/02/16にSL6.2がリリースされた。リリースノートはここ
2011/07/28にSL6.1がリリースされた。相違点はここ
ちなみにredhat-releaseの情報
Scientific Linux release 6.0 (Carbon) RHEL6.0はこう Red Hat Enterprise Linux Server release 6.0 (Santiago)
upgrade
SLはyum updateだけではマイナーバージョンが変わらない
yum clean all # 6.xにアップデートする場合 yum --releasever=6.x update sl-release yum update reboot
2013/06/12追記 ちなみにSL6.4を最少環境+αでインストール後、updateした場合 /rootパーティションはdfすると2273528使用していた。 約2.2GBって感じかな。
SL6.3を最少環境+αでインストール後、6.4にupdateした場合の /rootパーティションはdfすると2340644使用していた。 約2.3GBって感じかな。
インストール
最小限構成+開発ツールとかライブラリとかでインストールしてみた感じ。
- ext4がデフォルトね
- パーティションのデフォルト設定は
- /bootが500Mとられるのね
- 残りはLVMになるのね
- SWAPはLVMの中で6GBぐらい
- 残りのうち50GBを/(root)でとるのね
- 残りを/homeに割り当てるのね
- IPv6は有効になってるのね
- SELinuxは有効だね
- xinetdが動いてるんだね
- MTAはpostfix 2.6.6だね
- rsyslogが標準syslogデーモンだね
- rpcサービスが稼働しているんだね
- IPtableは起動しているね
ってな感じかな。
インストール構成を考えてたけども結果的にはこれかな
- インストールタイプはMinimal
- ベースシステム 互換性ライブラリ、Perlのサポートにチェック
- 開発 その他の開発、サーバープラットフォーム開発、開発ツールにチェック
これだけしておいて、あとは個々にyumったらOKかと。
SL AddonのYum Repositoriesにある4つのリポジトリは魅力的だけども使うときにいれたらえぇかってな具合で、どうよ?
- IPv6は使わなければ無効化してしまおう
- rpc関連も使わなければ止めよう
service rpcbind stop #RPCプログラムとアドレスの変換ツール、111番ポートが終了 service rpcgssd stop #NFSクライアント用RPCSEC GSSコンテキスト管理デーモン service rpcidmapd stop #NFSv4向けのUID/GIDマッパーサービス
- その他不要なサービスは停止してしまおう
libvirt-guests #shutdown/boot時にlibvirtのゲストをサスペンド/リジュームさせるスクリプト netfs #NFS/CIFS/NCP等のマウント/アンマウントツール nfslock #NFSファイルロックサービス、50337番ポートが終了 xinetd #旧来inetデーモン cpuspeed #CPUの周波数を調整
- lokkitでSELinuxとiptableを無効にしてしまおう
lokkit -q --disabled --selinux=disabled
- Scientific LinuxのyumリポジトリはFTPが遅いらしいのでmirrorリストを有効にして手近なサイトからダウンロードするように設定してしまおう
cd /etc/yum.repos.d vi sl.repo mirrorlist=http://ftp.scientificlinux.org/linux/scientific/mirrorlist/sl-base-6.txt ←7行目のコメントアウトを外す vi sl-updates.repo mirrorlist=http://ftp.scientificlinux.org/linux/scientific/mirrorlist/sl-security-6.txt ←7行目のコメントアウトを外す
いや、fastestmirrorを入れておけばよいんぢゃね?
yum install yum-plugin-fastestmirror -y
- yumはなんとcronで自動アップデートするようになっている
cd /etc/sysconfig vi yum-autoupdate ENABLED="false" ←7行目を変更 ちなみにcronで実行されているのは /etc/cron.daily/yum-autoupdate
- APIPAを無効にしとこう
echo NOZEROCONF=yes >> /etc/sysconfig/network netstat -nrで169.254.0.0のDestinationが表示されていなければOK
- manコマンドが入ってないらしいので入れておこう
- logwatchは入ってないらしい
- dmidecodeは入ってるらしい
- NTPサーバは入ってないらしい。入れておこう
- wgetは入ってないらしいので入れておこう
- nkfは入ってないらしいので入れておこう
IPv6無効化
/etc/modprobe.dにdisable_ipv6.confを作成
cd /etc/modprobe.d vi disable_ipv6.conf options ipv6 disable=1 #この行を記述して保存iptableのv6も起動しているので自動起動を止めてサーバを再起動する
chkconfig ip6tables off reboot
ifconfigとかでIPv6が表示されてなければOK
postfix
IPv6を無効化することでpostfixが影響うける
maillogに
postalias: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
postalias: warning: inet_protocols: configuring for IPv4 support only
とかが表示される
この場合、main.cfの inet_protocolsを変更する
vi /etc/postfix/main.cf inet_protocols = ipv4デフォルトはallとなっている。 allの場合、IPv4とサポートされていればIPv6が自動的に有効になる。
ssh
最初はrootでsshできちゃうから、これを止める準備が必要だねー。 sshできるユーザを作成して、sshdの設定を変更して…と。
useradd svadmin passwd svadmin useradd svdummy passwd svdummy えっ?svdummyってユーザ何って?後で説明します。 usermod -G wheel svadmin cd /etc/ssh vi sshd_config PermitRootLogin no ←コメントアウトを外して設定をnoにする service sshd restart cd /etc/pam.d/ vi su auth required pam_wheel.so use_uid ←5行目のこの行のコメントアウトを外す 新しいsshコンソールからrootでつなげてみてダメならOK 作成したsvadminとsvdummyで接続できたらOK svadminでsuできてsvdummyでsuできなかったらOK
これでrootではsshできないし、wheelグループに属していないとsuできない状態完成っ。 注意点としてはwheelグループに属していないと、rootを含めてsuで別ユーザになれないという事ね。ここ間違えないように。テストに出ます。(笑
起動画面
んと、grubで起動してくるのだが…画面上にはほぼ何も表示されずに一気にログイン画面まで進む感じ。途中でESCを押すことで見慣れた起動画面が見える。 エラーになれば表示されるんだろうか?? って事で常に見えるように変更
vi /boot/grub/grub.conf kernelパラメータ箇所のrhgbとquietを削除 rhgbはRedHat Graphical Bootの略で起動時にSceitific Linuxと表示されて以降 各種デーモンが起動している様子の画面の所。Service postfix ... [OK]とかのあれ。 システムのブートプロセスをグラフィカルに表示するやつ quietはその前で、grub自体が起動しているところ。dmesgとかで表示される内容のやつ。 設定されているとほとんどのカーネルメッセージを抑制する kernelパラメータにはvga=773とつけておくとよさげ。 あとLANG=ja_JP.UTF-8となってるけど、コンソール上で日本語表示できないので削除った。
vgaはコンソールの解像度を変更するオプション。
771 | 800×600/8bit |
773 | 1024×768/8bit |
775 | 1280×1024/8bit |
8bitは256色の事ね。
fail2ban
fail2banを入れてsshアタックを簡単に防いでおこう。
epelリポジトリをインストールしたらyumでfail2banがインストールできる
yum install epel-release yum install fail2ban cd /etc/fail2ban vi fail2ban.local [Definition] logtarget = /var/log/fail2ban.log vi jail.local [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail[name=SSH, dest=root, sender=fail2ban] logpath = /var/log/secure maxretry = 5fail2banは.confファイルを読み込んでから.localファイルを読み込んで設定を上書きする。
なので、.confはそのままにしておいて変更点部分だけを.localに設定しておくことで設定が簡易になるほかにバージョンアップ時の対応も楽になるって仕掛け。
設定が完了したら確認してみて動かしておく。
fail2ban-client -d
ばらばらと設定内容が表示される
service fail2ban start
NTP
yum install ntp
ntp.confはお好きにどうぞ(笑
先に一度同期させておいて
ntpdate ntp1.jst.mfeed.ad.jp
chkconfig ntpd on
service ntpd start
logwatch
最小構成ではlogwatch君はおられない
yum install logwatch ちゃんと動くか確認 sh /etc/cron.daily/0logwatchちなみに設定ファイルは /etc/share/logwatch/default.conf/logwatch.conf ですね。
リポジトリ
SLには便利なリポジトリが最初からある。使うもよし、使わないのもよし。
yum install elrepo-release epel-release rpmforge-release atrpms-repo
3dm2
atrpmsリポジトリにある
yum install atrpms-repo yum install 3dm2 service 3dm2 start ポート888が開くので接続して設定
でも、ちょっと古いのでやっぱりLSIから取得した最新版でインストールするのが吉。
unzip 3DM2_CLI-Linux-10.2.zip sh install.sh --install -fN0 -fでプロンプト無しで実行、Nで3dm2.confを内蔵のやつ使う、0でWebInterfaceを使うって事
ちなみにアンインストールもコマンド一発ッス。
ユーザのパスワード
ちょっとkickstartについて触れてみたときに、パスワード文字列の所で少しはまった。
EL6からはパスワードアルゴリズムがMD5からSHA512に変更されてるんだねー。なので、/etc/shadowの中身も$1$…から$6$…に変更になってる。
書式は
$[id]$[salt][文字列]
となっているそうで、idは1ならMD5、6ならSHA512なのだよ。
saltはMD5の時は22文字までOKでSHA512の時は86文字までOKらしい。
で、暗号化されたパスワードを生成する方法が見当たらない。ww MD5の時は、opensslコマンドで一発表示できたんだが。
openssl passwd -1 [文字列]
探してたら
perl -e 'print crypt("Red Hat", "\$6\$salt\$") . "\n"’ってのが出てきてそれっぽい。salt部分が手動なので気になるが。
んでもって作ってみたさ。最後に表示される文字列がSHA-512での文字列ってな訳ですね。
#!/bin/perl ## yum install perl-String-Random use String::Random; my $input = $ARGV[0]; if ( $input eq "" ){ print "not input. exit...\n"; exit 1; } my $rand = String::Random->new(); my $salt = $rand->randregex('\w{16}'); my $str = crypt("$input", "\$6\$$salt\$"); print "input is: " . $input . "\n"; print "salt is: " . $salt . "\n"; print "crypt string is : " . $str . "\n";
そして、発見。 これで生成した文字列を利用してuseraddコマンドを実行したらちゃんとパスワードが設定された状態になる。って当然だよねー。
useradd -p '[生成された文字列]' -m [ユーザ名] 生成された文字列は$6$から全てを入力しておくこと
kernel
kernelアップデートしたらなんかwarrningが出た。
Your running kernel is using more than 70% of the amount of space you reserved for kdump, you should consider increasing your ashkernel reservationなんだこれ?
えっと。 EL6では起動時にkdumpサイズを計算して、小さすぎればこのメッセージを出す。らしい。 grub.confのkernelオプションにcrashkernel=512Mすればよさげらしい。
デフォルトがautoになってるので、これは128Mの割当らしい。なので、256Mにすればいけた。