ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

2011年11月16日水曜日

CentOS 6 Minimal Install 後の処理

  • ネットワークインタフェースを有効にする
    インストール時に未設定の場合、認識したインタフェースに対して /etc/sysconfig/network-scripts/ifcfg-eth0 等の ONBOOT="no" の設定がされています。"yes"に変更し、DHCPであれば BOOTPROTO=dhcp を追加します。
    # cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE="eth0"
    BOOTPROTO=dhcp
    HWADDR="XX:XX:XX:XX:XX:XX"
    NM_CONTROLLED="yes"
    ONBOOT="yes"
  • ホスト名を変更する
    ホスト名が適当な値に設定されます。 /etc/sysconfig/network のHOSTNAMEを修正します。
    # cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=XXXXXXXX
  • 必要そうなパッケージのインストール
    yum install wget
    yum install unzip
    yum install zip
    yum install bind-utils

2008年8月8日金曜日

自宅サーバ構築 No.011(kernel update & grub)

yum の設定が終わっているので、頻繁に‘yum update’として、インストール済のパッケージをアップデートするわけですが、たまに kernel のアップデートが発生します。

kernel のアップデートは結構頻度が高いです。重要なコンポーネントですから当然と言えば当然でしょう。一般的に以下の様に grub の設定も同時に変更され、過去の kernel とアップデートされた kernel を選んで起動できるようになっています。(当然、標準は新しい kernel です。)

# pwd
/boot/grub

# cat menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda2
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.1.10.el5)
      root (hd0,0)
      kernel /vmlinuz-2.6.18-92.1.10.el5 ro root=LABEL=/
      initrd /initrd-2.6.18-92.1.10.el5.img
title CentOS (2.6.18-92.1.6.el5)
      root (hd0,0)
      kernel /vmlinuz-2.6.18-92.1.6.el5 ro root=LABEL=/
      initrd /initrd-2.6.18-92.1.6.el5.img
title CentOS (2.6.18-92.el5)
      root (hd0,0)
      kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/
      initrd /initrd-2.6.18-92.el5.img

2008年8月3日日曜日

自宅サーバ構築 No.010(TCP Wrapper)

何も設定されていない TCP Wrapper ですが、まずはお決まりの設定だけ実施しておきます。hosts.deny で ALL:ALL を指定しておきます。

ここで、hosts.allow に何も指定していないと、すべて拒否することになってしまいます。ですので、ssh での接続だけは許す為に、ローカルネットワークからの ssh だけ許可するために、hosts.allow に ssh:10.0.0. とローカルネットワークアドレスを指定ておきます。

#/etc/hosts.allow
sshd: 10.0.0.

#/etc/hosts.deny
ALL:ALL
設定は、ファイル編集後、即時反映されます。ゆるやかに設定するのであれば、許可(hosts.allow)を設定し、拒否(hosts.deny)を設定するという順で設定したほうがいいでしょう。

誤って、hosts.allow の記述を削除しただけで、sshd:10.0.0. と追加し忘れると、ssh による接続すらできなくなるので、hosts.allow / hosts.deny を編集する場合、ssh セッションを残したままで、狙い通りの設定になっているか確認したほうがいいでしょう。

xinetd は、セッション開設時のチェックになるので、接続済のセッションは影響されません。

(もう少し設定を続けます・・・)

2008年7月24日木曜日

自宅サーバ構築 No.009(パケットフィルタ )

順番が逆ですが、公開する前にいわゆるパケットフィルタ系の設定をしておく必要があります。基本は TCP Wrapper と xinetd による対策と、iptables(Netfilter) による対策です。

それぞれの関係ですが、TCP Wrapper で判定された通信が、xinetd に渡されます。また、TCP Wrapper に渡る前に、iptables で判定されるようになっています。

外から入ってくるパケットは、iptables → TCP Wrapper → xinetd というルートで目的のアプリケーション(ssh/telnet/ftp 等)と通信します。

初期状態で、CentOS 5.2 の iptables は以下の状態です。

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
REJECT は、reject-with icmp-host-prohibited の1行だけで、適切なエラーだけです。また、RH-Firewall-1-INPUT は、INPUT と FORWARD で使用されています。極々最低限の定義で、ほとんど許した後に、それ以外を拒否としているルールなので、iptables を適用していない状態と、ほとんど変わりません。

TCP Wrapper の初期設定は以下の状態です。
# cat /etc/hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#

# cat /etc/hosts.deny
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!

何も定義されていません。

iptables や TCP Wrapper は、例を元に、だいたいで設定をすることが多いのですが、ちょっと時間を掛けて、設定をじっくりやります。

2008年7月21日月曜日

自宅サーバ構築 No.008(ClamAVインストール)

Linux でも、アンチウイルスソフトは必要ということで、ClamAV(Clam AntiVirus) をインストールします。

既に、yum のリポジトリを追加してあるので、追加したリポジトリからインストールします。今回は DAG(RPMForge) を使用します。DAG 以外のリポジでは、clamav という名前で提供されているのですが、DAG では、clamd という名前で、複数パッケージがセットになっています。

いろんなサイトでも、clamd でのインストール例が掲載されていますので、そちらに合せてインストールします。

  1. インストール
    # yum --enablerepo=rpmforge install clamd
    * clamd/clamav/clamav-db がインストールされます。
  2. ClamAV起動
    # service clamd start
    Starting Clam AntiVirus Daemon: [ OK ]
    ちなみに、chkconfig はインストール直後で、以下の設定(on)になっています。
    # chkconfig --list clamd
    clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  3. ウイルスパターンアップデート
    # freshclam
  4. その他

2008年7月20日日曜日

自宅サーバ構築 No.007(yumリポジトリ設定)

yum の初期設定では、当たり前ですが、標準のリポジトリしか設定されていません。なので、いくつかのリポジトリは予め追加しておきます。

参考:Computer - CentOSのリポジトリを増やす

EPEL - FedoraProject
* How can I install the packages from the EPEL software repository?

# su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'
:
# su -c 'yum -y install foo'

以下の通り、リポジトリが追加されます。
# ls -l epel*
-rw-r--r-- 1 root root 1054 4月 26 03:08 epel-testing.repo
-rw-r--r-- 1 root root 954 4月 26 03:08 epel.repo
DAG: RPM packages for Red Hat, RHEL, CentOS and Fedora
# rpm -Uvh http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

上記のようにしてもエラーが発生してしまいます。HTTP で失敗しているようです。wget してからrpm コマンドを実行します。

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt

以下の通り、リポジトリが追加されます。
# ls -l *rpmforge*
-rw-r--r-- 1 root root 684 3月 9 2007 mirrors-rpmforge
-rw-r--r-- 1 root root 428 3月 9 2007 rpmforge.repo

一般的に DAG/RPMforge は、disable(enable=0)にしておくようなので、変更します。

# vi rpmforge.repo
:
#enabled = 1
enabled = 0
:

2008年7月19日土曜日

自宅サーバ構築 No.006(必要なツールの導入)

準備作業が多いですが、必要なツールのインストールはやってしまいます。

  1. screen
    • インストール可能か確認
      # yum info | grep -i ^name | grep -i screen
      Name : gnome-screensaver
      Name : screen
      Name : xfce4-screenshooter-plugin
      Name : xscreensaver
      Name : xscreensaver-base
      Name : xscreensaver-extras
      Name : xscreensaver-extras-gss
      Name : xscreensaver-gl-base
      Name : xscreensaver-gl-extras
      Name : xscreensaver-gl-extras-gss
    • インストール
      # yum install screen
  2. compress
    # yum install ncompress
  3. ntp
    # yum install ntp

    # vi /etc/ntp.conf
    :
    #server 0.centos.pool.ntp.org
    #server 1.centos.pool.ntp.org
    #server 2.centos.pool.ntp.org
    ntp.jst.mfeed.ad.jp
    :

    # ntpdate ntp.jst.mfeed.ad.jp

    # chkconfig --list ntpd
    ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
    # chkconfig ntpd on
    # chkconfig --list ntpd
    ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    # /sbin/service ntpd start
    ntpd を起動中: [ OK ]
  4. その他

自宅サーバ構築 No.005(SELinux無効)

SELinuxは、Red Hat Enterprise Linux、Fedora、CentOS 等では、標準でインストールされます。ファイルシステムもそれ用になっています。本来なら、インストールするかどうかを選択できるといいのですが、インストールされてしまいます。

でも、使いたくありません。随分こなれてきましたが、使わないといけない必然性はありません。

とりあえず、以下の手順で、無効にしておきます。

  1. SELinux の状態を確認
    # cat /etc/sysconfig/selinux | grep ^SELINUX=
    SELINUX=enforcing ← enforcing であれば有効状態です。
    # getenforce ← コマンドでも確認可能です。
    Enforcing
  2. /etc/sysconfig/selinux を編集
    # vi /etc/sysconfig/selinux
    :
    SELINUX=disabled ← enforcing を disabled に変更
    :
    以下の方法で、
    # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  3. システム再起動
    # shutdown -r now
  4. SELinux の状態を確認(システム再起動後)
    # cat /etc/sysconfig/selinux | grep ^SELINUX=
    SELINUX=disabled ← disabled であれば無効状態です。
    # getenforce ← コマンドでも確認可能です。
    Disabled

自宅サーバ構築 No.004(yum設定)

とりあえず一休みというわけではないのですが、最少構成のため、これから必要なパッケージは全てインストールしていくことになります。ということで、yum の設定を済ませておきます。

  1. yum の キャッシュディレクトリを掃除
    # yum clean all
    Cleaning up Everything
  2. yum-fastestmirror をインストール
    fastestmirror で最もアクセスしやすいミラーサイトを自動選択してくれるようになります。
    # yum install yum-fastestmirror
  3. アップデート可能なパッケージをすべて更新
    最少構成でも結構時間が掛かります。
    # yum update
まずは、このくらいでいいでしょう。標準のリポジトリにないパッケージをインストールしたりする場合、リポジトリを変更したりする必要がありますが、それは後程ということで。

2008年7月18日金曜日

自宅サーバ構築 No.003(Wheel設定)

SSHでのログインを、root ログイン禁止、パスワード認証禁止、公開鍵認証のみ許可設定しましたが、もうひと工夫必要です。

一般ユーザで、root になれるユーザを制限することで、悪意をもった一般ユーザが root に昇格することを避けるため、指定したユーザのみ root になれるようにします。一般的にいう Wheel 設定です。

  1. wheel グループへ一般ユーザ(hoge)を追加
    # cat /etc/group | grep wheel
    wheel:x:10:root
    # usermod -G wheel hoge
    # cat /etc/group | grep wheel
    wheel:x:10:root,hoge
  2. PAM設定
    /lib/security/pam_wheel.so が存在することを確認します。
    存在しない場合、インストールが必要です。
    # vi /etc/pam.d/su
    :
    #auth required pam_wheel.so use_uid
    auth required pam_wheel.so use_uid ← コメントを外す
    :
    特にシステム再起動などを行わなくても、設定は反映されます。
これで、特定のユーザ以外は root になれません。Linux は標準状態で多くのユーザが追加されており、パスワード設定などされていないので、原則使えないので問題は少ないのですが、それらのユーザがクラックされて、そこから root に昇格なんてことは最小限にできます。

弱点と言えば、/etc/group を眺めると root になれるユーザがわかってしまうということでしょうか。

2008年7月16日水曜日

自宅サーバ構築 No.002(SSH設定)

とりあえずCentOSをインストールし終わりましたが、当然、このままでは公開できません。まずは、いくつかセキュリティ面で設定する必要があります。

まずは、SSHに必要な設定を行います。

  • rootでのログインを禁止する
  • パスワード認証を禁止する
  • 公開鍵認証のみ許可する
まず、インストール直後は、SSHがインストールされており、リモートからrootでログイン可能な状態なので、リモートからrootでログインします。

※以下、PuTTYで操作しています。

以下の通り、最初は警告が表示されますが、そのまま[はい]をクリックします。


  1. root 以外のユーザーを作成
    rootでのログインを禁止するわけですから、root以外のユーザーを作成する必要があります。
    # useradd -d /home/hoge -c HOGE -u 1001 hoge
    # passwd hoge
    Changing password for user hoge.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
  2. root でのログインを禁止
    以下の設定を実施し、rootでログインできないこと、作成したユーザーでログインできることを確認します。
    # vi /etc/ssh/sshd_config
    :
    #PermitRootLogin yes ← 標準はデフォルトがyes
    PermitRootLogin no
    :

    # service sshd restart ← 設定反映
    sshd を停止中: [ OK ]
    sshd を起動中: [ OK ]
  3. 公開鍵作成
    パスワード認証を禁止する前に公開鍵認証を設定します。公開鍵認証前にパスワード認証を禁止するとログインできなくなっていまいますから・・・ :-)
    $ ssh-keygen -b 2048 -t rsa -C hogehoge
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/hoge/.ssh/id_rsa):
    Created directory '/home/hoge/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/hoge/.ssh/id_rsa.
    Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
    The key fingerprint is:
    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx hogehoge
  4. 公開鍵を authorized_keys へ追加
    $ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
    $ chmod 600 authorized_keys ← パーミッションを600に変更
    $ ls -l authorized_keys
    -rw------- 1 centuser centuser 398 7月 17 09:20 authorized_keys
    $ rm id_rsa.pub ← 不要なので削除
  5. id_rsa を保存
    id_rsa をターミナルソフトを起動するクライアントへ保存します。これがなくなってしまうと公開鍵の作成からやり直しになるので要注意です。
  6. id_rsa の変換(PuTTY の場合)
    TeraTerm 等では、id_rsa がそのまま使えるので、変換は特に必要ありません。PuTTY の場合は必要になるので、以下の通り変換しておきます。
    • PuTTYgen を起動します。
    • [PuTTY Key Generator]画面で、[Conversions]-[Import key]で保存した id_rsa を開きます。
    • [PuTTYgen: Enter Passphrase for key]画面で、パスフレーズを入力します。
    • [PuTTY Key Generator]画面で、[Save private key]をクリックし、id_rsa.ppk を作成します。
  7. ターミナルソフトで公開鍵認証で接続
    ターミナルソフトで公開鍵認証で接続できることを確認します。
  8. パスワード認証を禁止
    公開鍵認証での接続が成功することを確認して、パスワード認証を禁止します。
    設定後、パスワード認証できないことを確認します。
    # vi /etc/ssh/sshd_config
    :
    #PasswordAuthentication yes ← 初期設定では yes なのでコメントアウト
    PasswordAuthentication no
    :

    # service sshd restart ← 設定反映
    sshd を停止中: [ OK ]
    sshd を起動中: [ OK ]
これで、リモートからは、root 以外のユーザーで、公開鍵認証の設定可能なターミナルからのみログインできるようになりました。

ひとつ気になるのは、PuTTY でパスワード認証をチャレンジすると
No supported authentication methods available
と表示されて、拒否されます。動作は満たしていますが、パスワード認証を禁止しているということがわかってしまいます。これはできれば隠匿したいですね。パスワード認証時のエラーを返すほうがいいと思いますが、そういう動作をさせると問題あるんでしょうかね。

2008年7月15日火曜日

自宅サーバ構築 No.001(CentOSインストール)

特に何をするわけでもないのですが、自宅サーバを構築してみたいと思います。

あまったPCが1台あるので、構築してみます。電気代が思った以上に掛かるようなら運用しないかもしれません。その程度の意気込みです。 :-)

サーバ用途なので、まずは最少インストールです。以下のページを参考にしました。

CentOS5 インストール方法

以下、netinstall版のCDを使用しています。

  1. boot: で [Enter] を押します。
  2. [Choose a Language]画面で、‘Japanese’を選択し、[OK]を押します。
  3. [Language Unavailable]画面で、[OK]を押します。
  4. [Keyboard Type]画面で、‘jp106’を選択し、[OK]を押します。
  5. [Installation Method]画面で、‘FTP’を選択し、[OK]を押します。
  6. [Networking Device]画面で、使用するNICを選択し、[OK]を押します。
  7. [Configure TCP/IP]画面で、以下の通り設定し、[OK]を押します。
    [*] Enable IPv4 support
    (*) Manual configuration
  8. [Manual TCP/IP Configuration]画面で、IPv4 address、Gateway、Name Serverを設定し、[OK]を押します。
  9. [FTP Setup]画面で、以下の通り設定し、[OK]を押します。
    FTP site name: ftp.riken.jp
    CentOS directory: /Linux/centos/5/os/i386
  10. [次]をクリックします。
  11. パーティション設定で、‘カスタムレイアウトを作成します。’を選択し、[次]をクリックします。
  12. 適当にパーティションを設定し、[次]をクリックします。
  13. ブートローダ設定で、‘GRUBブートローダは、/dev/hda 上にインストールされます。’を選択し、[次]をクリックします。
  14. ネットワークの設定で、FTPサイトを指定した時の設定が引き継がれているので、ホスト名以外は、そのままで、[次]をクリックします。ホスト名は、適当に設定します。
  15. 時刻設定で、‘アジア/東京’を選択し、‘システムクロックでUTCを使用’をチェックし、[次]をクリックします。
  16. パスワード設定で、適当なパスワードを指定し、[次]をクリックします。
  17. パッケージ選択画面で、すべてのチェックを外し、‘今すぐカスタマイズする’を選択し、[次]をクリックします。
  18. パッケージ選択画面で、以下の通りパッケージを選択し、[次]をクリックします。
    • アプリケーション
      ■エディタ
    • 開発
      ■開発ツール
    • ベースシステム
      ■ベース (firstboot-tuiを明示的に外す)
      ※firstboot-tuiは、最初にCentOSのセットアップをするためのパッケージ
    • 言語
      ■イギリス語のサポート
      ■日本語のサポート
  19. [次]をクリックします。
  20. [再起動]をクリックします。
インストールとしては、以上です。パッケージの内容等は精査できていないので、インストール後の設定で、追加設定をしながら確認します。