CentOS」カテゴリーアーカイブ

ホスト名の設定/変更

サーバのホスト名の確認、変更を行います。

現在のホスト名(hostname)を確認する

$ su

# hostname

ホスト名(hostname)を変更する

下記例では、 ホスト名を example.com に変更します。

$su

# hostname example.com

システム時間を自動更新する

システム時間を自動的に時刻合わせするシステムを構築します。

念のため、確認します。

$ su

# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
=================================================================
*ntp1.sakura.ad. .GPS.  1 u  499 1024  377  8.946  -0.069  0.001
 LOCAL(0)       .LOCL.   10 l   63   64  377  0.000  0.000  0.001

インストールされていないようであれば、インストールを行います。

NTPサーバー構築(ntpd) こちらが参考になります。

ファイアーウォールを設定

ファイアーウォールを設定して、外部からのアクセスを制限します。

ファイアーウォールを設定するにあたって、下記のサイト様を参考にされると良いです。

ここでは、読み進めていくにあたっていくつかポイントを書くに留めます。

※ SSHのポートを変更している場合は、22番ポートでないことを忘れないようにします。

iptablesのインストールを確認

インストールされていれば、下記のようにistalledが返ります。

# yum list installed | grep iptables
iptables.x86_64            1.3.5-5.3.el5_4.1   installed
iptables-ipv6.x86_64      1.3.5-5.3.el5_4.1   installed

iptablesをインストール

インストールされていない場合はインストールします。

# yum install iptables

iptablesの設定状況を確認

初期状態では、下記のように何も設定されていないかと思います。

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target    prot opt source    destination

Chain FORWARD (policy ACCEPT)
target    prot opt source    destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source    destination

iptablesの設定

/etc/sysconfig/iptables を編集(存在しなければ新規作成)して、ファイアーウォールの状態を細かく設定します。

詳細な設定につきましては、上記でご紹介したサイト様に委ねることにします。

iptablesの自動起動設定

$ su

# /sbin/chkconfig --list iptables
# /sbin/chkconfig iptables on
# /sbin/chkconfig --list iptables

iptablesを起動する

$ su

# /etc/init.d/iptables start

以下、自分メモ

ここからは、私が普段行う手順の覚書になります。

最初の最初の準備

iptables でファイアーウォール構築 「自宅サーバー Fedora」で、配布されている「firewall.sh」と「abroad_filter.cron」をダウンロード。

両ファイルを、あらかじめ編集します。

私の場合、目的別にいくつか用意し、サーバに設置するwebサービスに応じてファイルを選ぶようにしています。

設定別ファイルの置き場所(※自分用メモ)

F:wwwfirewall 以下に次のように保管

  • F:wwwfirewallfullabroad_filter.cron
  • F:wwwfirewallfullfirewall.sh
  • F:wwwfirewallfullreadme.txt

上記3ファイルを1セットとして、目的別にフォルダ分けしています。readme.txtには、覚書として設定内容のメモを残します。

サーバごとのiptableの設置手順

サーバにて運用するwebサービスの目的に応じて、保管している設定ファイルをデスクトップなどにコピーし、編集をします。

firewall.shの SSHのポート番号に気をつけ、その他は運営するwebサービスの目的次第で調節します。

firewall.shの末尾に下記を加えると、設定を保存し、再起動まで行えます。

/etc/init.d/iptables save
/etc/init.d/iptables restart

サーバ側のファイルの置き場所

設定ファイルの準備ができたら、サーバにアップします。

  • /root/firewall/firewall.sh
  • /root/firewall/abroad_filter.cron

ファイルの所有者と、パーミッションを変更

$ su

# chown -R root:root /root/firewall/
# chmod -R 700 ./firewall

abroad_filter.cron を実行し、 iptablesの設定を更新します。(時間が掛かります)
※ abroad_filter.cron の中で、firewall.sh が呼ばれます。
※ abroad_filter.cron の中で、iptables の再起動コマンドが実行されます。

$ su

# /root/firewall/abroad_filter.cron
Flushing firewall rules:                               [  OK  ]
Setting chains to policy ACCEPT: filter       [  OK  ]
Unloading iptables modules:                      [  OK  ]

※ save やrestart を行うかによって返るメッセージが変わりますが、[ OK ] ならば OKです。

CRONを設定して、定期的に更新するようにします。
次の例では、 毎週日曜午前3時0分に実行します。

$ su

# crontab -e

0 3 * * 0 /root/firewall/abroad_filter.cron

Linux起動時に自動実行するようにする。

$ su

# /sbin/chkconfig --list iptables
# /sbin/chkconfig iptables on
# /sbin/chkconfig --list iptables

SSH接続を終了し、再度アクセス

ファイアーウォールの設定ができたところで、一旦SSHの接続をログアウトし、接続しなおします。

いつものようにログインできることを確認します。

システムを更新する

Linuxのシステムアップデートを行います。

OSインストール直後、VPS、専用サーバ契約直後の状態は、システムのアップデートを行いパッケージリストを最新版にします。

$ su

# yum check-update
# yum update

途中で何度か止まる場合は、 y [enter] で進めていきます。

Linuxを再起動する

 

$ su

# shutdown -r now

Linuxの再起動を行うと、SSHの接続が切れますので、再起動完了後、SSHにてログインをしなおします。

SSHのポート番号を変更する

SSHのデフォルトのポート番号は、22 です。デフォルト以外のポートに設定し安全性を高めます。

※ 設定を間違えると、SSHを使って外部からログインできなくなりますのでご注意ください。

万が一、SSHでログインできなくなっても、さくらインターネットのVPSだとコントロールパネルからログインができるので安心です(^^)

SSHのポート番号を変更

/etc/ssh/sshd_config を編集します。

$ su

# vi /etc/ssh/sshd_config

次のように書き換えます。

設定するポート番号は、0 から 65535 の範囲が有効ですが、実際には 10000から65535の範囲で決めると良いです。

※ 例として、新しいポート番号を、 10022 に変更するとします。

#Port 22
Port 10022

sshdの設定に誤りがないことを確認します。

# /usr/sbin/sshd -t

sshdを再起動して設定を反映します。

# /etc/init.d/sshd restart

iptablesの設定を変更

iptables(ファイアーウォール) を設定している / 設定するつもりの方は、SSHのポート番号が変わっていることにご注意ください。

既に iptables を設定して動かしている方は、次の作業を行います。

まだiptablesを動かしていない場合は、後で構いません。

/etc/sysconfig/iptables を編集します。

# vi /etc/sysconfig/iptables

下記のような、 もともとのポート番号 (22) を、新しいポート番号に書き換えます。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY

iptablesを再起動します。

/etc/rc.d/init.d/iptables restart

SSHのポート変更後の確認

※ ここまでの間、設定変更に使用しているターミナルはまだ終了させないことをオススメします。

現在のターミナルはそのまま残し、新しくターミナルを立ち上げます。

次に、新しいポート番号を指定して、ログインができることをご確認ください。

もし、ログインができないようですと、なんらかの原因が考えられますので、もともと作業をしていたほうのターミナルより問題点を修正してください。

ログインできなかったときの原因として考えられるケース

  • そもそも、ポート番号の指定を間違えた
  • その時にかぎって、ユーザー名やパスワード(秘密鍵)を間違えた
  • サーバ側でファイアーウォールによりブロックされた
  • sshd_confなど、変更を施したファイルに間違いがある

無事ログインできることを確認できたなら、一旦、両方のターミナルを終了させて、もう一度ログインしなおしてみます。

パスワードによるログインを禁止

SSHなど外部からのアクセスは公開鍵認証のみ許可するため、パスワードによるログインを禁止します。

ちなみに、公開鍵認証を設定しただけでは、公開鍵認証でもログインできるし、これまでどおりパスワードを使ってもログインできる状態になっています。

/etc/ssh/sshd_config を編集します。

$ su

# vi /etc/ssh/sshd_config

次のように書き換えます。

#RSAAuthentication yes
RSAAuthentication yes

#PubkeyAuthentication yes
PubkeyAuthentication yes

#AuthorizedKeyFile   .ssh/authorized_keys
AuthorizedKeyFile   .ssh/authorized_keys

#RhostsRSAAuthentication no
RhostsRSAAuthentication no

#PasswordAuthentication yes
PasswordAuthentication no

#PermitEmptyPasswords no
PermitEmptyPasswords no

#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

sshdの設定に誤りがないことを確認します。

# /usr/sbin/sshd -t

sshdを再起動して設定を反映します。

# /etc/init.d/sshd restart