Linux

目次

CentOS5.4

インストール(グラフィカルモード)

  1. 言語を "japanese" に
  2. キーボード "日本語" を選択
  3. ドライブ初期化について確認されるので[はい]
  4. パーティション設定は何も変更せず[次]。本当にすべてを削除しますか と確認されるので[はい]
  5. ネットワーク設定画面
    1. ネットワークデバイスの[編集]を押下
      • IPv4側…[Manual Configuration]を選択し、IPアドレスとサブネットマスクを入力
      • IPv6側…Enable~のチェックを外す
    2. ホスト名、ゲートウェイ、プライマリDNSを入力して[次]
  6. タイムゾーンは "アジア/東京"を選択
  7. rootのパスワードを設定して[次]
  8. インストールパッケージ選択画面で[今すぐカスタマイズする]にチェックして[次]
  9. インストールカスタマイズ画面で以下を実行して[次]
    • "デスクトップ環境" - "GNOME" のチェックを外す
    • "アプリケーション" の全てのチェックを外す
    • "開発" - "開発ツール" のチェックを入れる
    • "サーバー" - "印刷サポート" のチェックを外す
    • "ベースシステム" - "ベース" だけチェックを入れて、他全てのチェックを外す

初回起動

初回起動時のSetup Agentで下記設定を行う

  • ファイヤウォール設定:無効化
  • ネットワーク設定:IPアドレスなど確認
  • 起動サービス設定:不要サービスを停止

初期設定

不要サービス停止

  • acpid
  • anacron
  • apmd
  • atd
  • bluetooth
  • cups
  • hidd
  • ip6tables
  • mcstrans
  • netfs
  • nfslock
  • pcscd
  • restorecond
    # service cups stop
    # chkconfig cups off
    # chkconfig --list
    cups            0:off   1:off   2:off    3:off    4:off    5:off    6:off ←ランレベル2,3,4,5を確認
    
    ※不要サービス停止についてはここも参考に

ファイヤウォール

  • 無効化する
    # service iptables stop
    # chkconfig iptables off
    

SELinux

  • 無効化する
    # setenforce 0
    # getenforce
    Permissive ←確認
    # vi /etc/sysconfig/selinux
    SELINUX=disabled ←disabledにして無効化
    

アクセス制限

# vi /etc/hosts.deny
ALL:ALL
# vi /etc/hosts.allow
ALL:192.168.1.

ユーザ

  • 管理用ユーザ作成、パスワード設定
    # useradd admin
    # passwd admin
    
  • アプリ用グループ作成
    # groupadd appgroup
    
  • アプリ用ユーザ作成、パスワード設定
    # useradd -G appgroup appuser
    # passwd appuser
    
  • rootになれるのを管理用ユーザのみにする
    # usermod -G wheel admin
    # vi /etc/pam.d/su
    auth       required     pam_wheel.so use_uid ←コメント記号#を外す
    
    • rootにだけなれなくする という場合はこう↓
      # vi /etc/pam.d/su
      auth       required     pam_wheel.so root_only ←root_only と記述
      

sudo

  • sudo許可ユーザ追加
    # visudo
    %wheel        ALL=(ALL)       ALL ←コメント除去 wheelグループはsuでrootになれるから許可
    
    hoge   ALL=(ALL)       ALL ←パスワードなしで何でも許可
    hoge   ALL=(ALL)       PASSWD:ALL ←パスワード必須にする場合(普通はこっち)
    
  • syslog設定
    # visudo
    Defaults syslog=local3
    # vi /etc/syslog.conf
    local3.*    /var/log/sudo.log
    # service syslog restart
    

prelink

  • 止める
    # vi /etc/sysconfig/prelink
    PRELINKING=no
    # prelink -ua
    

yum

yum-updatesdサービスを削除する

# service yum-updatesd stop
# yum -y remove yum-updatesd

インストール済みパッケージをyumで自動更新

# yum -y update

yum-cronをインストールしサービス起動、自動起動設定

# yum -y install yum-cron
# service yum-cron start
# chkconfig yum-cron on

rpmforgeリポジトリ導入

# 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
# vi /etc/yum.repos.d/rpmforge.repo
#enabled = 1
enabled = 0 ←デフォルトでは有効にならないようにする

ntp

インストール

# yum -y install ntp

手動で時刻合わせ

# ntpdate ntp.dnsbalance.ring.gr.jp

サービスを起動して、自動起動設定

# service ntpd start
# chkconfig ntpd on

SSH

sshd_configの設定

  • 鍵方式ログインのみを許可する場合
    # vi /etc/ssh/sshd_config
    Protocol 2  ← #を削除して 2 に変更(SSH2でのみ接続を許可)
    PermitRootLogin no  ← #を削除して no に変更(スーパーユーザでのログインを禁止)
    PasswordAuthentication no  ← #を削除して no に変更(通常のパスワードではなく鍵方式に変更)
    PermitEmptyPasswords no(空パスワードの禁止)
    AuthorizedKeysFile     .ssh/authorized_keys  ←#を削除(公開鍵ファイルの場所をユーザのホームディレクトリ下の .ssh にする)
    AllowUsers hoge  ←SSH接続許可ユーザ
    
  • パスワードログインも許可する場合
    # vi /etc/ssh/sshd_config
    Protocol 2  ← #を削除して 2 に変更(SSH2でのみ接続を許可)
    PermitRootLogin no  ← #を削除して no に変更(スーパーユーザでのログインを禁止)
    PasswordAuthentication yes  ← #を削除
    PermitEmptyPasswords no(空パスワードの禁止)
    AllowUsers hoge  ←SSH接続許可ユーザ
    

鍵の作成・配布

  • ssh-keygen
    $ ssh-keygen -t rsa
    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:
    73:21:a5:f6:d5:d5:ac:1b:7c:7f:fd:3d:5c:46:7a:7d hoge@hogeserver.jp
    $ ls -la /home/hogeuser/.ssh/ ←鍵の作成先確認
    

公開鍵をauthorized_keysに追加

$ cat /home/hoge/.ssh/id_rsa.pub >> /home/hoge/.ssh/authorized_keys
$ rm -f /home/hoge/.ssh/id_rsa.pub

鍵の配布

クライアントに秘密鍵をコピーする

セキュリティ強化

Clam AntiVirus

  • インストール
    # yum -y --enablerepo=rpmforge install clamd
    
  • 設定
    # vi /etc/clamd.conf
    rootで動作するようにする 設定ファイル編集
    #User clamav
    
  • ウイルス定義の有効化(初回)
    # cd /tmp←/tmp/clamd が無いとか怒られたので作成
    # mkdir clamd
    # chmod 700 clamd
    # freshclam
    
  • サービス起動、自動起動設定
    # service clamd start
    # chkconfig clamd on
    
  • 日次処理登録(日次起動スクリプト作成)
    # vi clamscanDaily.sh
    #!/bin/bash
    
    PATH=/usr/bin:/bin
    
    # excludelist
    excludelist=/root/clamscan.exclude
    
    if [ -s $excludelist ]; then
        for i in `cat $excludelist`
        do
            if [ $(echo "$i"|grep \/$) ]; then
                i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
                    echo i["$i"]
                excludeopt="${excludeopt} --exclude-dir=$i"
                    echo excludopt["$excludeopt"]
            else
                excludeopt="${excludeopt} --exclude=$i"
                    echo excludopt["$excludeopt"]
            fi
        done
    fi
    
    CLAMSCANTMP=`mktemp`
    freshclam > /dev/null←clamavインストール時に別途cronでの日次処理設定されるのでいらんかも
    clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
    [ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
    grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
    rm -f $CLAMSCANTMP
    
  • 除外対象を記載したファイル作成
    # vi clamscan.exclude
    /proc/
    /sys/
    /tmp/
    
  • 日次処理化
    # mv clamscanDaily.sh /etc/cron.daily/
    

chkrootkit

  • インストール
    # yum -y --enablerepo=rpmforge install chkrootkit
    
  • chkrootkit確認 下記chkrootkit実行結果として"INFECTED"という行が表示されなければ問題なし
    # chkrootkit | grep INFECTED
    
  • 実行用スクリプト作成
    # vi chkrootkit
    #!/bin/bash
    
    PATH=/usr/bin:/bin
    
    TMPLOG=`mktemp`
    
    # chkrootkit実行
    chkrootkit > $TMPLOG
    
    # ログ出力
    cat $TMPLOG | logger -t chkrootkit
    
    # SMTPSのbindshell誤検知対応
    if [ ! -z "$(grep 465 $TMPLOG)" ] && \
       [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
            sed -i '/465/d' $TMPLOG
    fi
    
    # rootkit検知時のみroot宛メール送信
    [ ! -z "$(grep INFECTED $TMPLOG)" ] && \
    grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
    
    rm -f $TMPLOG
    
    # chmod 700 chkrootkit
    
  • 日次cron化
    # mv chkrootkit /etc/cron.daily
    
  • chkrootkitで使用する安全なコマンドの確保
    chkrootkitが使用するコマンド群が既に改竄されていた場合、rootkitを正常に検出できなくなるので、chkrootkitが使用するコマンド群をコピーしておき、必要な場合にはそのコマンド群を使用してchkrootkitを実行する。
  • 退避
    # mkdir chkrootkitcmd
    # cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` chkrootkitcmd/
    
  • 退避したコマンドが安全かを確認。結果が何も表示されなければOK
    # chkrootkit -p /root/chkrootkitcmd|grep INFECTED
    

screen

インストール

# yum -y install screen

sysstat

インストール

# yum -y install sysstat

疑問点

  • sshdのchkconfigが自動起動になっているにもかかわらず、OS起動時に開始されない
最終更新:2010年04月09日 15:04