がらくたネット


Scientific Linux

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 = 5
fail2banは.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にすればいけた。