Apache 同一IPからの同時複数接続制限

Apacheに対してダウンローダーなどで同時に複数接続してくる数を制限する設定について書きます。

同一IPからのApacheの接続を制限する拡張モジュール mod_limitipconn を使います。

■ mod_limitipconn インストール

(1) インストール

# yum install mod_limitipconn

(2) 設定

/etc/httpd/conf.d/limitipconn.conf


LoadModule limitipconn_module modules/mod_limitipconn.so

ExtendedStatus On

<IfModule mod_limitipconn.c>
    MaxConnPerIP 5
</IfModule>

※上記の例では、同一IPから同時には5接続まで許可します。

※サーバーへのアクセスは人単位では識別できず、接続元IPアドレスでしか識別できないことに注意が必要です。同じ地域に住む同じインターネット接続プロバイダのアクセスポイントを利用する複数の人々を1と数えるので、同一IPから1接続などあまり少ない接続数で制限すると問題です。せめて3~5以上にする必要があると思われます。

Tomcat 7 インストールと設定

CentOS/RHELに Tomcat 7 を yum でインストールする方法と、初期設定、デプロイの方法を書きます。

■ yum リポジトリ追加

準備として yum-priorities が必要

# yum install yum-priorities

yum リポジトリは JPackage

http://www.jpackage.org/
http://www.jpackage.org/browser/rpm.php?jppversion=6.0&id=13826

# rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm

続きを読む

gcc/C言語コンパイル環境インストール

大抵のレンタルサーバーには最初からC言語コンパイル環境(gccやlib)はインストールされていますが、VPSなどに自分でOSをインストールすると、そのときのパッケージの選択によってはgcc等の開発環境がインストールされない場合もあります。

■ gcc/C言語コンパイル環境インストール

# yum install make gcc gcc-c++

これだけです。

Webサイトのアクセス数増加と必要メモリ

Webサイトのアクセス数が増加するのは単純に嬉しいものです。
商用サイトなら売り上げに関わってきますのである程度の認知度とアクセス数は必要不可欠と言えます。
アフェリエイト目的(広告収入目的)のサイトは特にアクセス数増加が収入に比例してくるので何が何でも増やしたいところでしょう。

ところで、Webサイトのアクセス数と、それに耐えうるサーバーのスペックについて、一般の方々はどれくらいの認識を持っているでしょうか?

大抵の人は、とても夢見がちです。

よくあるレンタルサーバー(専用サーバーじゃなく、root権限のないサーバー、他のユーザーと同居の共用サーバー)を使用していて、「あなたのホームページはサーバーに負荷をかけるから」ということで上位プランへ変更のお願いや、やんわりと出て行ってくれるように勧告を受けた人が、次にVPSや専用サーバーに移るとき、10万ページビューとか、ゆくゆくは100万ページビューなんてことを考えている場合があります。
専用サーバーで1ユーザーで独占使用になるのだから、最低クラスよりちょっと上のクラスを借りておけば大丈夫かな、なんて思うようです。

ところが現実は厳しいです。

Webサイトのアクセス数増加に耐えられるサーバーとして考えるべき点は、大きく3つ、メモリとCPUとディスクの速さがあります。
今回はメモリについて書きます。

■ Webサイトのアクセス数と消費メモリ

まず必要なメモリの問題があります。
これは単純でわかりやすい話です。
続きを読む

DNSラウンドロビンで負荷分散

複数のサーバーに同じコンテンツを置いて、DNSラウンドロビンで負荷分散する方法について書きます。

複数のサーバーに同じコンテンツを置くには、それぞれのサーバーにFTPでアップロードするか、なんらかの方法で同期させます。
lsyncd + rsyncd を使って自動同期させる方法もあります。別の投稿で書いていますので参考にしてください。

■ DNSラウンドロビン

DNSラウンドロビンとは、非常に単純な方法です。

設定としては、DNSサーバーあるいはレンタルDNSのゾーン設定において、1つのホスト名のゾーンタイプ A (IPアドレスの指定)を複数行設定し、1つのホスト名に複数のIPアドレスを割り付けます。

これだけです。

例)

domain.com.zone


...
...

www 	IN	A	111.111.111.111
www 	IN	A	111.111.111.222
www 	IN	A	111.111.111.333

A を複数設定しておくと、DNS正引きに対して設定されたIPアドレスのいずれかが返されます。

この例で、http://www.domain.com へのアクセスは、ときに 111.111.111.111、またときには 111.111.111.222 または 111.111.111.333 のサーバーへのアクセスになります。
完全にではありませんが、まあまあ、おおよそ均等にアクセスされると期待できますので負荷分散になります。

続きを読む

lsyncd+rsyncd でサーバー間の自動同期

lsyncd + rsyncd を使った異なるサーバー間のデータの自動同期の設定について書きます。

rsync コマンドを使った異なるサーバー間のデータ同期については別の投稿で書きましたが、今回は、片方のサーバーにアップロードしたら自動的に別のサーバーへ同期転送される環境を予め作っておく方法です。
送信側(マスター側)で lsyncd というデーモンを起動しておき、受信側(スレーブ側)で rsyncd というデーモンを起動しておきます。

複数のサーバーでコンテンツが自動同期される仕組みを構築できれば、今度はそれをDNSラウンドロビンなどに利用できます。
(DNSラウンドロビンは、また別の機会に)

■ rsyncd (受信側サーバーの設定)

(1) インストール (yum配布版rpm)

rsyncd は xinetd というデーモン経由で rsync を起動することです。
もし rsync コマンドがなければそれも入れます。

# yum  -y install rsync
# yum  -y install xinetd

(2) 設定

/etc/xinetd.d/rsync

service rsync
{
        disable = no ................... ここを no に変更
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

続きを読む

rsync でサーバー間のデータ同期

rsync を使った異なるサーバー間のデータ同期、ファイル転送の方法について書きます。

コピーするだけなら、rcp や scp というコマンドがありますし、FTPという方法もあります。
しかし手数が少なく、ファイルのオーナー、パーミッションもそっくりそのままコピーし、さらに転送元になく転送先にあるファイルを削除して完全に同期させることができるのがこのコマンドの特徴です。

サーバー移転(お引越し)をするときには定番、必須。
これなくしてサーバーのお引越し作業はありえません。

■ rsyncインストール (yum配布版rpm)

# yum -y install rsync

■ rsyncの使い方

(1) コマンドシーケンス

# rsync [オプション] コピー元 [コピー元 ...] コピー先

簡単な例
# rsync -av /home/user1/* user1@host.com:~/.

続きを読む

proftpd で SFTPの設定

セキュリティ意識が高まる昨今、FTPも通信経路が暗号化されるSFTPを使いたいという要望が多くなっています。
SFTPに対応したFTPクライアントもFileZillaなどのフリーウェアが出現して身近になったこともあります。

SFTPは、’FTP’という単語が付いていますがそのプロトコルは、SSHです。
ですから、サーバー側は、SSHサーバーが稼動していれば特に設定は必要ないのですが、それではちょっと使い勝手が悪い面があります。
そのままだと接続したユーザーホームディレクトリより上位のディレクトリが見えてしまいますし、通常のSSHとSFTPで別々のポート番号を使い分けたいと思ってもそれはできません。
また、iptableでSSHの接続元IPを制限していると、それがそのままSFTPでもIP制限されてしまいます。

そこで、FTPサーバーの拡張機能でSFTPを実現できればもっと便利です。
CentOSの標準的なFTPサーバーであるvsftpdが既にインストール済みだった場合、vsftpdにはSFTP機能がないので、SFTP機能があるproftpdをインストールし直します。

続きを読む

iptables で簡単OP25B対策

独自ドメインのメールアドレスを使いたい諸氏にとって接続プロバイダの OP25B というやつはうっとおしい障壁です。
自分のサーバーがVPSか専用サーバーで、root権限があるのなら、最も簡単なOP25B対策方法を紹介します。

それは iptables のポートリダイレクトを使う方法です。

前提条件として iptables は普通に使える環境であるものとします。

■ ポートリダイレクト

iptables の nat の設定で PREROUTING REDIRECT を使います。

書き方はいたって簡単。

/etc/sysconfig/iptables


# *filter の COMMIT の後に以下を追加

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 587 -j REDIRECT --to-ports 25
COMMIT

これだけです。
このサーバーの 587 ポートに接続に来たら内部では 25 に来たことになり、SMTPが普通に使えます。

めでたしめでたし。

※これができないVPSもたまにあるようです。
※さくらのVPSはできることを確認済みです。

iptables インストールと設定

サーバー内の設定だけでできるファイアウォール iptables の基本設定について書きます。

■ インターネットの脅威

インターネット上に公開されたサーバーはファイアウォールなしの場合、必ず(#ここ強調します。例外なく100%) クラッキング(ハッキング)やDoS攻撃などアタックされるものです。

サーバー運営初心者の方々は、はじめ結構なめてますが、アタックは必ず来ます。多ければ連日。

私もかつて初めてサーバーというものを自分で構築したとき、それは目立たないひっそりとした自宅サーバーなのに、まだろくにホームページも公開していないのに、たった数日でクラッキング(ハッキング)されて内部のプログラム/usr/binの中などがすり替えられました。
そのとき思ったものです。…. 怖い … インターネット怖い~。

アタックそのものが来ないようにする方法はありませんが、破られないように防ぐ方法はあります。
(家を建ててドアがあれば、コソ泥にドアノブを触らせないようにはできないけど鍵は掛けられます)

何か最低限のセキュリティ対策は必要です。

■ ファイアウォール

ファイアウォールとは、予め決めたIPアドレスとポートのみに接続を許すように制限することです。

専用機器を使ったファイアウォールのサービスは通常有料で金額も少々お高いです(毎月数千円~数万円)。

しかし専用機器を使ったファイアウォールがなくてもサーバーには iptables という機能が備わっており、自分でファイアウォールが立てられます。

無料でサーバー内の設定だけでできるファイアウォール、これはしておいて損は無いです。

少なくとも使わないポートは閉じて、必要に応じて SSH などの危険なものは数分間に数回しか許さない、などの対策もあればなおよいでしょう。

続きを読む