Top » LINUXサーバー構築 サーバーアプリの設定メモ

LINUXサーバー構築 サーバーアプリの設定メモ

 デスクトップとして使用(実は殆ど使ってなかったが)していた、ノートlinuxマシンをサーバー仕立て直す事にしました。最終的にはデータベースを使ったアプリが動作するWEBサーバーに仕上げるのが目標です。マシンとしては今となっては非力のペンタマシンですが、SSDシリコンディスクに換装してますので、小規模サーバーなら十分だと思ってます。完成したら固定IPを取得して公開するのをゴールとしています。稼働させるサービスは取りあえず以下の通り。尚、インストールされているLINUXは、Vine Linux 5.2 (Palmer)です。この記事を書き始めた2014年9月時点で、6.2がリリースされているようですが、如何せん非力なマシンですので、5.2でサーバー仕立てにしようと思います。サーバーの設定しながらこのページを更新しているので、しばらくは頻繁に更新されます。
telnet(2014年9月20日稼働)
 telnetはサーバを端末から操作できるようにする仮想端末ソフトウェア(プログラム)。但し通信を暗号化せずに平文のまま送信する為セキュリティーに問題があります。最近は殆ど使われないようですが、簡単に設定できるのでサーバー立ち上げ時は立ち上げておくと何かと便利です。サーバーがある程度構築出来たら、telnetからSSHに切り替えます。
 Windows環境からtelnet接続する場合、Tera Term等のターミナルソフトが必要です。win8.1のコマンドプロンプトでは、telnetは使えなくなっているようです。かつては、telnet接続できたんですけど。
Proftpd(2014年9月20日稼働)
 サーバーにおいて基本中の基本サービス FTPサーバーを稼働させます。Webサーバーにする場合は、htmlファイルや画像ファイルの転送が必要なので、ftpは必須のサービスです。但し、webサーバー用途で立ち上げているので、今のところanonymousサービスは使用しません。
DNS
 LAN内部から名前ベースのURLを指定すると、ルーターその物に接続されてしまうので、内部専用のDNSサーバーにより所定のWEBサーバーの名前解決できるようにするために必要となります。またバーチャルホスト仕様でWEBサーバーを仕立てようと思っているので、LAN内部のクライアント機から通常操作で接続するためにも、必要なサービスとなります。
WEBサーバー(Apache)
SSH
DHCP
 ルーターにもDHCP機能あるのですが、単にIPアドレスを割り振るだけでドメイン名、特定のDNSサーバー指定等は出来ないようです。仕方なくですが、Linuxサーバー側でDHCPDを稼働させる積りです。

ネットワークパラメーターの設定

 Linuxを端末として使用するだけなら、インストールしたデフォルト状態で十分ですが、サーバーとして仕上げようとすると各ネットワークパラメーターを適切に設定する必要あります。今回サーバーIPアドレス、ホスト名、ドメイン名は以下で設定しました。
 固定IPアドレス: 192.168.0.123 (プライベートIP)
 ホスト名   : mamiha2
 ドメイン名  : mmh-project.com (LAN側のみの使用となるのでなんでもOK)
 LinuxのGUI環境にもネットワークパラメーター設定用のツール用意されているようですが、使い方よく理解していないので、よく理解できておらず、今回は各種設定fileを直接編集することにしました。以下のように各設定fileを編集しました。

 /etc/sysconfig/network
[root@mamiha2 ~]# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mamiha2.mmh-project.com
DOMAINNAME=mmh-project.com
 /etc/sysconfig/network-scripts/ifcfg-eth0
 インストール済のVineだったので、GUI環境で作成されたものと思われる。赤字のパラメータが自分の設定とあっているか確認。
[root@mamiha2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:13:A9:05:AA:6D
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=yes
PEERROUTES=yes
DHCP_HOSTNAME=mamiha2.mmh-project.com
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
IPADDR=192.168.0.123
NETMASK=255.255.255.0
DNS1=127.0.0.1
GATEWAY=192.168.0.1
IPV6INIT=no
USERCTL=no
 /etc/hosts
>  サーバー構築の初期段階ではDNSも稼働しておらず、名前解決が出来ずにエラーが出るサービスがあります。後述のProftpd等がその一例ですが、色んなサービスを立ち上げて行く上で、余計なトラブルにハマらないようにするためにも、以下赤字のように/etc/hostsに自分自身の名前情報登録しておきます。
[root@mamiha2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost.localdomain localhost mamiha2
192.168.0.123 mamiha2.mmh-project.com

telnetの設定

 最近はセキュリティーの問題で殆ど使われなくなってしまったサービスですが、サーバー立ち上げ時に端末からサーバーに簡単に接続する方法として便利なので、まずtelnetを使用できるようしておきます。サーバーが安定稼働するようなったら、SSHへ切り替えます。
 telnet関係のパッケージがインストールされているか確認
[dareka@mamiha2 ~]$ rpm -qa | grep telnet

telnet-server-0.17.x-31vl5   ←telnet-server-***が無いなら以下手順でインストール
telnet-0.17.x-31vl5
 telnet-serverのインストール方法
 suコマンド等でrootになり、
  apt-get install telnet-server
 を実行。以下のような実行画面になります。デフォルトインストールだとスーパーサーバー xinetdもインストールされていないようです。telnet-serverの追加パッケージとして xinetdもインストールされました。
[root@mamiha2 ~]# apt-get install telnet-server

パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下の追加パッケージがインストールされます:
xinetd
以下のパッケージが新たにインストールされます:
telnet-server xinetd
アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 0 個
160kB のアーカイブを取得する必要があります。
展開後に 269kB のディスク容量が追加消費されます。

続行しますか? [Y/n]y    ←続行しますか?と聞かれるので「y」を押す。

取得:1 http://updates.vinelinux.org 5.2/i386/main xinetd 2.3.14-1vl5 [129kB]
取得:2 http://updates.vinelinux.org 5.2/i386/main telnet-server 0.17.x-31vl5 [31.2kB]
160kB を 0s 秒で取得しました (541kB/s)
変更を適用しています...
準備中 ############################## [100%]
更新/インストール中
xinetd-2.3.14-1vl5.i386 ############################## [100%]
telnet-server-0.17.x-31vl5.i386 ############################## [100%]
完了
 telnet-serverの設定
 以下4stepの作業となります。
  ① /etc/xinetd.d/telnetの変更
  ② /etc/hosts.allowの変更
  ③ linuxマシンセキュリティレベルの設定変更
  ④ スーパーサーバー xinetd の起動
① /etc/xinetd.d/telnetの変更
[root@mamiha2 ~]# vi /etc/xinetd.d/telnet

# default: on
# description: The telnet server serves telnet sessions; it uses \
#    unencrypted username/password pairs for authentication.
service telnet
{
    flags      = REUSE
    socket_type   = stream
    wait       = no
    user       = root
    server      = /usr/sbin/in.telnetd
    log_on_failure += USERID
    disable     = no   ←デフォルトは「yes」。noに書き換える。
}
② /etc/hosts.allowの変更
[root@mamiha2 ~]# vi /etc/hosts.allow

# hosts.allow  This file contains access rules which are used to
#        allow or deny connections to network services that
#        either use the tcp_wrappers library or that have been
#        started through a tcp_wrappers-enabled xinetd.
#
#        See 'man 5 hosts_options' and 'man 5 hosts_access'
#        for information on rule syntax.
#        See 'man tcpd' for information on tcp_wrappers
#
in.telnetd:192.168.0.  ←ここを追記。IPアドレスは各自の設定で変更してください。
③ linuxマシンセキュリティレベルの設定変更
 ファイヤーウォール設定に慣れていれば、iptablesの直接編集できるのですが、GUI環境だと「セキュリティレベルの設定変更」のツールが提供されているので、それを利用しました。
左画面は、GUIデスクトップ 左上メニュー
  システム → システム管理 → セキュリティレベルとファイヤーウォールの設定
と進んで、管理者(root)のパスワードを入れると出てくるので、telnetにチェック入れてOKをクリック。

④ スーパーサーバーxinetdの起動
 telnetはスーパーサーバーxinetdの制御でサービスが提供されるので、xinetdを起動させます。
[root@mamiha2 etc]# /etc/rc.d/init.d/xinetd restart

xinetdを停止中:                         [ OK ]
xinetdを起動中:                         [ OK ]

chkconfigコマンドで、xinetdが自動起動となっているか確認します。
[root@mamiha2 etc]# chkconfig --list

           ・
           ・
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
      ↑ランレベル3(テキストログイン)とランレベル5(グラフィカルログイン)がonになっていることを確認する。
           ・
           ・

xinetd ベースのサービス:
    chargen:    off
    chargen-udp:  off
    cups-lpd:    off
    daytime:    off
    daytime-udp:  off
    echo:      off
    echo-udp:    off
    rsync:     off
    services:    off
    telnet:     on   ←xinetdベースサービスでtelnetがonとなっていることを確認
    time:      off
    time-udp:    off
 xinetdが自動起動設定されていない場合は、
  chkconfig xinetd on --level 35  ランレベル3と5で自動起動とする設定
で自動起動するようにしておく。apt-getでtelnet-serverをインストールした場合は、デフォルトでxinetdが自動起動するようになっているようです。
 これでtelnet接続できるようになるはずです。Tera Term等の端末ソフトで接続できました。win8.1のコマンドプロンプトでは、telnet使えなくなっているようです。かつては、telnet接続できたんですけど。

Proftpdの設定

 サーバーにおいて基本中の基本サービス FTPサーバーを稼働させる。Webサーバーにする場合は、htmlファイル転送が必要なので、必須のサービス。Vine5.2ではデフォルトでProftpdはインストールされている。今回はanonymousサービスは使用しない。
 Proftpdパッケージがインストールされているか確認
[root@mamiha2 etc]# rpm -q proftpd

proftpd-1.3.2e-3vl5    ←proftpd-が表示されていることを確認
 インストールされていない場合は、
[root@mamiha2 etc]#apt-get install proftpd
でインストールする。
 /etc/proftpd.confの編集(ルート権限で)
ServerName   "FTP server"
 /etc/proftpd.confのデフォルトは、ServerNameが"ProFTPD Default Installation"になっているが、少なくともサーバーソフトを分からなくするだけでも、多少はセキュリティー強化になるので。私は単に"FTP server"とした。
#<Anonymous ~ftp>
#
#  User ftp
#  Group ftp
#
#  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias anonymous ftp
#
#  # Limit the maximum number of anonymous logins
#  MaxClients 10
#
#  # do not require shells listed in /etc/shells (user ftp do not have
#  # shell...)
#  RequireValidShell no
#
#  # We want 'welcome.msg' displayed at login, and '.message' displayed
#  # in each newly chdired directory.
#  DisplayLogin welcome.msg
#  # DisplayFirstChdir .message
#  DisplayChdir .message
#
#  # Limit WRITE everywhere in the anonymous chroot
#  <Limit WRITE>
#   DenyAll
#  </Limit>
#
#</Anonymous>
 anonymousサービスは使用しない方針なので、<Anonymous ~ftp>~</Anonymous>各行の先頭に#を追加し、コメントアウトする。
以下のパラメーターを追加する。

UseReverseDNS off
IdentLookups off    ←早く接続する。onにするとDNSを引いてくる間は待たされる。
ExtendedLog /var/log/proftpd.log   ←ログを取るので追記。
RootLogin off    ←Rootログインさせない
MaxClientsPerHost 2   ←同一IPからの同時接続数の設定
MaxHostsPerUser 2   ←同一ユーザー名の同時接続数の設定
 linuxマシンセキュリティレベルの設定変更
 ファイヤーウォール設定に慣れていれば、iptablesの直接編集できるのですが、GUI環境だと「セキュリティレベルの設定変更」のツールが提供されているので、それを利用しました。
左画面は、GUIデスクトップ 左上メニュー
  システム → システム管理 → セキュリティレベルとファイヤーウォールの設定
と進んで、管理者(root)のパスワードを入れると出てくるので、ftpにチェック入れてOKをクリック。
 Proftpdの起動
[root@mamiha2 ~]# /etc/rc.d/init.d/proftpd start

proftpdを起動中:              [ OK ]
注意
 Proftpdはホスト名の解決が必要なサービスのようです。「ネットワークパラメーターの設定」で記述したように /etc/hosts にサーバー機の情報を書いておかないと、Proftpdの起動が失敗するようです。失敗しても、単に「失敗」とだけ表示され、内容が表示されないので、解決するのにかなり苦労しました。/var/log/messagesにも「起動失敗」のエラー関係出力されていませんでした。かつてのversionでは起動失敗するとエラー内容が表示されていたような記憶あります。ここは特に注意必要です。
 Proftpdの自動起動設定
[root@mamiha2 etc]# chkconfig --list

           ・
           ・
proftpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
      ↑ランレベル3(テキストログイン)とランレベル5(グラフィカルログイン)がonになっていることを確認する。
           ・
           ・
 xinetdが自動起動設定されていない場合は、
  chkconfig proftpd on --level 35  ランレベル3と5で自動起動とする設定
で自動起動するようにしておく。