makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

カテゴリ : サーバー

お問合せフォームや独自のメール配信システムからメールを送った場合、相手に届かなかったり迷惑メールに振り分けられてしまうことがたまにあります。この様な不具合を回避するためのチェックポイントをまとめました。

  1. Fromのドメインが存在していて返信可能か
  2. メールヘッダにエンベロープFrom(Return-path)が正しく記述されているか
  3. エンベロープFromに記述したサーバが存在しているか
  4. そのドメインのDNSにMXレコードが記述されているか
  5. そのMXレコードに記述されているMTA(メールサーバ)にメールが到達可能か
  6. ドメインのDNSにSPFレコード(送信サーバのIPアドレスやネットワーク)が記述されているか
  7. 送信サーバのIPアドレスに逆引きDNSが定義されているか
  8. MTA(メールサーバ)の正引きDNSと逆引きDNSが一致しているか
  9. 送信サーバのIPアドレスがブラックリスト(Spamhaus等)に登録されていないか
  10. 送信サーバのIPアドレスにプライベートアドレスを使用していないか
  11. メール形式にHTMLやjavascriptを使用していないか
  12. メール形式にマルチパート(multipart/alternative)を使用していないか
  13. メール本文にリンクを多用していないか
  14. メール本文にSPAMによくあるキーワードが使用されていないか
  15. 共有サーバを使用していてIPアドレスが行儀の悪い他サイトと共通になっていないか

ステージングと本番系に分けた構成のWordpressサイトの同期手段としてwordmoveを使用していますが、しばらく運用していたところ、Webアクセスとは無関係にサーバ負荷が異常上昇する現象が発生しました。wordmoveの設定についてはこちらを参照。

accsess_logやtopコマンドで確認したところ、同期を実行してから間もなくしてサーバ自身からのHEADメソッドによるローカルリクエスト起きていることが判明し、その数なんと23万件以上ありました。ロードアベレージも20を超えサーバがパンクする事態となりまして、原因が分かるまでは対処療法として負荷を監視してhttpdを自動的に再起動するなどの応急処置でしのいでいました。

現象がpingバック機能に似ていたことからWP Total Hacksを始めいくつかのプラグインを試して禁止するように設定しましたが効果はありませんでした。

お手上げです。。

そこで、一時的にすべてのクエリーログを吐き出すように設定して調査したところ、負荷上昇時に気になるSQLが発行されていることが分かりました。それが以下のSQLです。
SELECT ID, post_content, meta_id FROM wp_posts, wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = '_pingme' LIMIT 1
SELECT * FROM wp_postmeta WHERE meta_id = 22663
DELETE FROM `wp_postmeta` WHERE `meta_id` = 22663
SELECT pinged FROM wp_posts WHERE ID = 874
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'gaobijo-title_fuku-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'gaobijo-title_fuku-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'kumaayaka04-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC

詳しくは分析していませんが、pingバックを禁止しているにも関わらずページ内のリンクをすべてパースして何か処理を行っているようです。そしてついにこの処理を行っていると思われるコードを発見しました。それがdo_all_pings()という関数です。この関数はwp-cron.phpという疑似バッチのトリガーから呼び出されるwp-include/default-filters.phpにてadd_actionでフックされています。同期の実行からしばらく経過してから異常が発生する現象ともつじつまが合います。
add_action( 'do_pings',    'do_all_pings',    10, 1 );

この部分をコメントアウトすることでやっと不可解な自ホストに対してのHEAD呼出し現象が止まりました。なおdefault-filters.phpはパッケージのアップデートなどにより更新されてしまうので、add_actionを無効化するスクリプトをプラグイン化して設置する方が良いそうです。以下サンプルphpです。

<?php
/*
Plugin Name: No Do Pings
Plugin URI:
Description: Remove Actions and Filters
Author: Makoto Fujimoto
Version: 1.00
Author URI:
*/
remove_action( 'do_pings', 'do_all_pings' );
?>
この様なPHPプログラムをwp-content/plugins/以下に設置して管理画面で有効化してください。

Samba内臓のDNSを使用してAD構築した場合、ラウンドロビンが正常に動作しないなどの問題があったのでBINDを使用する様に設定したメモです。

OS      : CentOS release 6.7 (Final)
パッケージ : EnterpriseSAMBA ver4.2
ネットワーク : 192.168.123.0/24
種類     : ドメインコントローラー
ドメイン名  : TEST.LOCAL
DNS     : BIND 9.8.2

(1)  samba4をインストールする
まずリポジトリの作成
# vi /etc/yum.repos.d/sernet-samba-4.2.repo
※ 参考 https://portal.enterprisesamba.com/
# yum install sernet-samba-ad

サーバの基本設定はこちらを参考にしてください。
Samba4によるAD構築メモ1

(2) samba4のAD設定 
# samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm [TEST.LOCAL]:
 Domain [TEST]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:BIND9_DLZ
Administrator password:********

(3) bindの設定(/etc/named.conf)
-----------------------------------------------------------
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { 192.168.123.0/24; localhost; };
        allow-transefer     { 192.168.123.0/24;}; #冗長構成にする場合
        recursion yes;
        forwarders {
            8.8.8.8; 8.8.4.4;
        };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/var/lib/samba/private/named.conf";
-----------------------------------------------------------
# chown named:named /var/lib/samba/private/dns.keytab

(4) /var/lib/samba/private/named.confの確認
bindのバージョンに合ったsoが有効になっているか
-----------------------------------------------------------
dlz "AD DNS Zone" {
    # For BIND 9.8.x
     database "dlopen /usr/lib64/samba/bind9/dlz_bind9.so";

    # For BIND 9.9.x
    # database "dlopen /usr/lib64/samba/bind9/dlz_bind9_9.so";

    # For BIND 9.10.x
    # database "dlopen /usr/lib64/samba/bind9/dlz_bind9_10.so";
};
-----------------------------------------------------------
# service named restart

(5) samba-toolを使用したゾーンレコードの編集方法
Aレコードの追加
# samba-tool dns add  localhost test.local sales-ns A 192.168.123.12
NSレコードの追加
# samba-tool dns add  localhost test.local sales NS sales-ns.test.local.
逆引きゾーンの作成
# samba-tool dns zonecreate test.local 123.168.192.in-addr.arpa
PTRレコードの追加
# samba-tool dns add localhost 123.168.192.in-addr.arpa 12 PTR sales-ns.test.local.
ゾーンの確認
# samba-tool dns query localhost test.local @ ALL
# samba-tool dns query localhost test.local sales ALL

ちなみに、Windows管理ツールのDNSマネージャーでゾーンレコードを編集することも可能ですが、単純な設定しかSamba4には対応していないようです。しかもADのデータベースが不整合を起こす可能性もあるので使用はお勧めしません。

(6) サブドメインの名前解決を他のDNSに委任する場合
ADで利用するドメインは概ねローカルドメインになるかと思いますが、ルートヒントから委任先を辿ることができません。したがって/etc/named.confに以下の様にフォワーディング設定を追加します。一見samba-toolで委任のNSレコードを追加すれば解決できそうな気もしますがうまくいきませんでした。
-----------------------------------------------------------
zone "sales.test.local"
{
        type forward;
        forward only;
        forwarders
        {
            192.168.123.12; #委任先DNSのIPアドレス
        };
};
-----------------------------------------------------------
# service named restart

【追記】
ADサーバをインターネットに接続していない環境かつサブドメインを別のDNSに委任している場合、D
NSSECが悪影響を与えるようですので明示的に無効にした方が良さそうです。
dnssec-enable no;
dnssec-validation no;
この設定を行ったところ、(6)のゾーン設定が不用になりました。

Apacheのconf設定でIPアドレスによるアクセス制限を行うとステータス403が返ります。これをURLの存在を分からなくする為に404として返す必要があったのですが少し難しかったのでメモを残しておきます。

<Directory "/var/www/html">
    AllowOverride All
    Options -Indexes FollowSymLinks
    Order deny,allow
    deny from all
    allow from ***.***.***.***
</Directory>

#上記で拒否された403を404に書き換え
ErrorDocument 403 /403.html  #実態は不要
ErrorDocument 404 /404.html  #Not Foundページを用意
<Location ~ "/40(3|4).html">
    Order allow,deny
    allow from all
</Location>
RewriteEngine on
RewriteRule /403.html - [R=404,L]

ちなみに最近は.htaccessファイルを使用してカジュアルにアクセス制限やURLの書き換えを行うことが多いのですが、FTPアカウントなどで簡単に変更ができてしまうので、セキュリティに関わる設定は静的なconfファイルに記述することをお勧めします。

プライベートアドレスのサーバからルータ経由でメールを送信する場合、相手先のメールサーバによっては送信元が信用できないと判定されて届かない場合があります。

そのような場合はプロバイダから割与えられているアカウントを使用し、サブミッションポート(587)でSMTP認証を行った上で送信する方法があります。これはパソコンのメーラーからメールを送るプロセスと基本的に同じです。

以下はCentOSのPostfixにて設定を行った際の手順メモです。

# cd /etc/postfix

# vi main.cf

変更
#mydomain = domain.tld
mydomain = shinkaku.jp

変更
#myorigin = $mydomain
myorigin = $mydomain

変更
inet_interfaces = localhost
inet_interfaces = all

追加
# リレーホストのための設定
relayhost = [bzmail.plala.or.jp]:587
# リレーホスト先のbzmail.plala.or.jpのSMTP-AUTHのための設定
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth_conf
smtp_sasl_mechanism_filter = CRAM-MD5

sasl認証ファイルの作成
# vi smtp_auth_conf
bzmail.plala.or.jp UserID:password

sasl認証ファイルのハッシュ化
# postmap smtp_auth_conf

パッケージの追加
# yum install cyrus-sasl-md5

postfixの再起動
# service postfix restart

送信テスト
# /usr/lib/sendmail -t email
Subject: test
test
[Ctrl+d]

これでメールが届けば完了ですが、いくつかのドメインや端末宛てに送信テストすることをおススメします。

こちらはWindows7のドメイン設定編です

Samba4のインストール編はこちら

--------------------------
Step1: Windows7クライアントのドメイン参加ユーザを作成
--------------------------
Samba4サーバのsamba-toolでユーザ作成

# /usr/local/samba/bin/samba-tool user add ユーザ名
 →パスワード入力

管理ツールからの操作を可能にする場合は管理者グループに加える

グループにユーザを追加
# /usr/local/samba/bin/samba-tool group addmembers 'Domain Admins' ユーザ名


--------------------------
Step2: Windows7 PCをドメインに参加
--------------------------
DNSサーバーをSamba4サーバに変更
[コントロールパネル]→[ネットワークと共有センター]→[ローカル エリア接続]
 [プロパティ]→[インターネット プロトコル バージョン 4]
  優先DNSサーバー 192.168.100.123 (Samba4サーバ IPアドレス)
 ※[インターネット プロトコル バージョン 6]を停止

所属するグループをワークグループからドメインに変更
[コントロールパネル]→[システム]
 「コンピュータ名、ドメインおよびワークグループの設定」
  「コンピュータ名を変更したりドメインに参加させたり...」 『設定の変更』をクリック
 「所属するグループ」をワークグループからドメインに変更
  ドメイン名を入力 testdomain.local
   →ドメイン認証 administrator / (Aamba4の管理者パスワード)

再起動してSamba4に作成したユーザ名でログイン


--------------------------
その他: Windows7からSamba4サーバを管理する
--------------------------
RSATのインストール
 Windows 7 Service Pack 1 (SP1) 用のリモート サーバー管理ツール
  http://www.microsoft.com/ja-jp/download/details.aspx?id=7887

RSATを利用可能にする
 [コントロールパネル]-[プログラム]-[Windowsの機能の有効化または無効化]
   [リモートサーバー管理ツール]にチェックを入れて有効にする

[コントロールパネル]-[システムとセキュリティ]-[管理ツール] から起動


CentOSでSamba4ベースにしたActiveDirectoryを構築する際のメモです

2013年11月の時点ではsamba ver4系の公式rpmは出回っていないようなのでソースからコンパイルしました。
------------------------------
Step 1: Sambaの入手
------------------------------
# cd /usr/local/src
# wget http://ftp.samba.org/pub/samba/samba-4.1.1.tar.gz


------------------------------
Step 2: Sambaのコンパイル
------------------------------
# tar zxvf samba-4.1.1.tar.gz
# cd samba-4.1.1
# ./configure --enable-debug --enable-selftest
 (中略)
# time ( make -j3 ; make quicktest ) | tee -a make.log
 (中略)
ALL OK (2061 tests in 310 testsuites)
#


------------------------------
Step 3: Sambaのインストール
------------------------------
# make install

インストール完了


------------------------------
Step 4: Sambaの設定
------------------------------
ADドメイン名を担保するために/etc/hostsと/etc/resolv.confを調整

# vi /etc/hosts
-----
127.0.0.1       localhost.localdomain   localhost
192.168.100.123   dctest.testdomain.local  dctest
-----

# vi /etc/resolv.conf
-----
search testdomain.local
nameserver 192.168.100.123
-----

samba-tool domain provision 設定情報
Realm : TESTDOMAIN.LOCAL
 Domain : TESTDOMAIN
 Server Role : dc
 DNS backend : SAMBA_INTERNAL
 DNS forwarder IP address : 192.168.100.1 (LANから通常使用するDNSなど)
Administrator password : ******

※パスワードは数字、英大文字、英小文字、記号のうち3種を使用すること

domain provision に失敗した場合は以下のファイルを削除してやり直し
# rm -rf /usr/local/samba/private/*
# rm -rf /usr/local/samba/etc/smb.conf


samba-tool の実行
# /usr/local/samba/bin/samba-tool domain provision --interactive --function-level=2008_R2

Realm [TESTDOMAIN.LOCAL]:
 Domain [TESTDOMAIN]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.100.1]:
Administrator password: ******
Retype password: ******
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=testdomain,DC=local
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=testdomain,DC=local
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              dctest
NetBIOS Domain:        TESTDOMAIN
DNS Domain:            testdomain.local
DOMAIN SID:            S-1-5-21-366560596-18017407-*************

#
-----------------------------------------------------------------------------------

生成された smb.conf をコピー
# cp /usr/local/samba/etc/smb.conf /etc/samba


Kerberosの設定を編集
# vi /etc/krb5.conf
----------
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = TESTDOMAIN.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = true

[realms]
 TESTDOMAIN.LOCAL = {
  kdc = dctest.testdomain.local
 }

[domain_realm]
 .testdomain.local = TESTDOMAIN.LOCAL
 testdomain.local = TESTDOMAIN.LOCAL
----------


------------------------------
Step 5: シングルモードによるテスト
------------------------------

# /usr/local/samba/sbin/samba -i -M single
samba version 4.1.1 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
/usr/local/samba/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure
../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_UNSUCCESSFUL
-----------------------------------------------------------------------------------

Kerberosをテスト
# kinit administrator@TESTDOMAIN.LOCAL


------------------------------
Step 6: Sambaの動作確認
------------------------------
クライアントアプリのバージョン確認
# /usr/local/samba/bin/smbclient -V

クライアントアプリから動作確認
# /usr/local/samba/bin/smbclient -L localhost -U%

管理者ログイン
# /usr/local/samba/bin/smbclient //dctest.testdomain.local/netlogon -Uadministrator


------------------------------
Step 7: DNSの動作確認
------------------------------

名前解決の確認
# host -t SRV _ldap._tcp.testdomain.local.
_ldap._tcp.testdomain.local has SRV record 0 100 389 dctest.testdomain.local.
# host -t SRV _kerberos._udp.testdomain.local.
_kerberos._udp.testdomain.local has SRV record 0 100 88 dctest.testdomain.local.
# host -t A dctest.testdomain.local.
dctest.testdomain.local has address 192.168.1.201
# host -t A www.sgi.com (forwarderを経由しての外部IPアドレス検索)
www.sgi.com has address 192.48.178.134
----------


------------------------------
Step 8: 自動起動スクリプトの登録
------------------------------
(参考)
http://www.oss-d.net/samba4/ad#ee305c57

# vi /etc/init.d/samba4
----------
#! /bin/bash
#
# samba4       Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions

if [ -f /etc/sysconfig/samba4 ]; then
    . /etc/sysconfig/samba4
fi

CWD=$(pwd)
prog="samba4"

start() {
      # Attach irda device
      echo -n $"Starting $prog: "
    /usr/local/samba/sbin/samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
      echo
}
stop() {
      # Stop service.
      echo -n $"Shutting down $prog: "
    killall samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
      echo
}
status() {
    /usr/local/samba/sbin/samba --show-build
}

# See how we were called.
case "$1" in
start)
    start
      ;;
stop)
    stop
      ;;
status)
    status irattach
    ;;
restart|reload)
    stop
    start
    ;;
*)
      echo $"Usage: $0 {start|stop|restart|status}"
      exit 1
esac

exit 0
---------


# chmod 0755 /etc/init.d/samba4
# ln -s /etc/init.d/samba4 /etc/rc3.d/S80samba4
# ln -s /etc/init.d/samba4 /etc/rc5.d/S80samba4

# chkconfig --level 35 samba4 on
# service samba4 start
sambaが立ち上がることを確認


------------------------------
Step 9: その他(iptablesの調整)
------------------------------
簡易FWとしてiptables等を使用している場合は以下のようにADに必要なポートを解放する必要があります。

# vi /etc/sysconfig/iptables

以下を追加してiptablesを再起動
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 88 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 88 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 135 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 389 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 464 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3268 -j ACCEPT



→続いてWindows7のドメイン設定編はこちら

久々のエントリーなのにしょうもない内容ですが、FTPクライアントやサーバ設定でいつも引っかかる小ネタメモ。

FTPプロトコルにはPASVすなわちパッシブモードと非パッシブモードがある。

非パッシブモードには正式な名称が無いようなので便宜上アクティブモードとする。

アクティブモードはサーバの21番ポートをコマンド等の制御に使用し、20番ポートをデータ転送に使用する。

パッシブモード(PASV)はサーバの21番ポートをコマンド等の制御に使用し、任意のポートをデータ転送に使用する。

それでどちらがよりセキュアかというと、使用するサーバポートが21番と20番に限られるアクティブモードつまり非パッシブモードの方が安全と言うことになりますね。

したがってサーバ側ファイアウォールで21番と20番を解放しただけではパッシブモード(PASV)は使用できません。この環境でPASVモードのFTPクライアントを使用すると、ログインは出来てもファイル一覧すら表示できません。

結論
FTPクライアントのPASVモードのチェックは外して使いましょう。

他のサイトで流出したアカウント情報によって、自社サイトが不正ログイン攻撃を受けること(パスワードリスト攻撃)を予防するために、Apacheのmod_evasiveモジュールの導入がある程度有効だと思います。

mod_evasiveのDos防御機能は、同一アクセス元から単位時間あたりのページリクエスト回数に制限をかけることが可能で、閾値を超えた際に403(Forbidden)を返すことができます。したがって、ログインプログラムに対し短時間に多くのログインを試みるような攻撃を早々に撃退してくれることを期待できます。

ただし不正アクセス間隔が閾値に引っかからないようにのんびりとしている場合(10秒に一回とか)は攻撃とみなされず、全く役に立たないことも付け加えておきます。

ちなみにファイアウォール装置の基本機能として上記のような防御機能を持っているものもあるようです。

以前、サーバの安全なお引越しでサーバを移設する際の手順について書きましたが、実際の作業でコンテンツ・アプリケーションやミドルウェアの動作確認を重点的に行うのは当然として、意外と見落としがちなチェックポイントがあるのでまとめてみました。

  1. cron設定
    運用関連の処理でバッチプログラムが淡々と仕事をしているかもしれませんので、/etc/cron.*や/var/spool/cronフォルダに入っているユーザアカウントの設定ファイルを確認してください。ここで実行されているスクリプトなども移設が必要な場合があります。なおユーザアカウントを削除するとcron設定も消えてしまうので注意が必要です。

  2. ホームディレクトリは安易に消さない
    サーバ移設の機会に、不要なユーザアカウントを整理することがあります。しかし安易にユーザアカウントをホームディレクトリごと消去してしまうと、旧担当者が管理していた重要なファイルを消してしまう可能性があります。

  3. セキュリティ設定の引き継ぎ
    参考: VPSを借りたら真っ先にやるべきセキュリティ対策
    参考: VPSのファイアウォール設定について(iptablesの例)

  4. ログローテーション設定
    /etc/logrotate.d
    ログの記録方式をカスタマイズしている可能性があります。

  5. メールエイリアス
    /etc/aliases
    root宛てのメールなどを管理者宛てに転送設定している場合があります。

  6. ドメイン管理者情報の更新
    サーバ管理とともにドメイン管理も業者に一元管理させていた場合、管理者情報等の変更や管理アカウント権限の移譲を行っていないと、有効期限通知メールなどが届かずに、最悪失効してWebサービスが停止してしまう可能性があります。またネームサーバについても管理責任の帰属先を確認しておいた方が良いです。

  7. プログラムからの通知メール等
    お問合せフォームや各種ユーザ操作の動作確認などで、運用担当者宛てにメールが通知される仕様になっているシステムが良くあります。送信の有無と宛先が適切か確認しましょう。ログから確認する場合は/var/log/maillogが参考になります。

このページのトップヘ