ケータイ端末プロファイルデータ(無償版)

ケータイ端末プロファイルデータ(無償版)
http://r.impressrd.jp/iil/k-taiprofile/

ウェブサイトにアクセス可能なすべてのケータイ端末※1のプロファイルデータを収集いたしました。

『ケータイ端末プロファイルデータ(無償版)』※2は、各端末の画像サイズや文字数、対応アプリケーションなどの詳細なプロファイルデータをCSV形式で提供するものです。「端末プロファイル」「画面情報」「USER_AGENT情報」の3種類のファイルからなっており、エクセルなどの表計算ソフトや各種分析ソフトで読み込むことができるので、お客様ご自身の手で、さらに詳細に、独自の軸での集計・分析ができます。

『ケータイ端末プロファイルデータ(無償版)』に収録されている詳細なプロファイルデータを分析することで、汎用性の高いコンテンツを効率的に制作することが可能となります。データは、新機種が発売されるタイミングで更新され、ダウンロード可能となります。

※1スマートフォンおよび国内で発売しているSIMロックフリー携帯電話を除く

※2有料版の『ケータイ端末プロファイルデータ』から、実際の市場で稼動している端末のシェアデータである「アクセスシェア情報」を除いた仕様となります。

携帯向けコンテンツ変換Apacheモジュール

mod_chxj

mod_chxjオープンソースの携帯向けコンテンツ変換Apache2.x用モジュールであり、CHTML(DoCoMo i-Mode用CHTML5.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。Cookie非対応端末、Refer非対応端末のために、Set-CookieCookieヘッダやRefererヘッダをシミュレートすることもできます。

http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/modchxj/mod_chxj/doc/modchxj.html?view=co

mod_ktai

Apache上で動くアプリケーションに対して、開発言語を問わず携帯サイト作成のための様々な機能を提供することができます。mod_ktaiを使用することで、携帯サイトを作成する上で必要ないくつかの処理をApache側で行なうことが可能です。

http://labs.yumemi.co.jp/labs/mod/man_contents.html

CentOS アンチウィルスソフト導入(Clam AntiVirus)

毎日定期的に全ファイルのウィルススキャンを行い、ウィルスを検知した場合のみroot宛にメールが送られるよう設定する。

# Clam AntiVirusインストール
yum -y install clamd

# clamd設定ファイル編集(root権限で動作するようにする)
vi /etc/clamd.conf
User clamav
↓
#User clamav

# ウィルスデータベース更新設定ファイル編集(ウィルスデータベース入手元を日本に変更)
vi /etc/freshclam.conf
# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
#DatabaseMirror db.XY.clamav.net
DatabaseMirror db.jp.clamav.net

# clamd起動
/etc/rc.d/init.d/clamd start

# clamd自動起動設定
chkconfig clamd on

# clamd自動起動設定確認
chkconfig --list clamd

# ウィルス定義ファイル更新機能の有効化
sed -i 's/Example/#Example/g' /etc/freshclam.conf

# ウィルス定義ファイル最新化
freshclam

# ウィルススキャンテスト
clamscan --infected --remove --recursive

# ウィルススキャン実行スクリプト作成
vi clamscan
    
#!/bin/bash PATH=/usr/bin:/bin # clamd update yum -y update clamd > /dev/null 2>&1 # excludeopt setup 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` excludeopt="${excludeopt} --exclude-dir=$i" else excludeopt="${excludeopt} --exclude=$i" fi done fi # signature update freshclam > /dev/null # virus scan CLAMSCANTMP=`mktemp` clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1 [ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \ # report mail send grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root rm -f $CLAMSCANTMP
# ウィルススキャン実行スクリプトへ実行権限付加 chmod +x clamscan # ウィルススキャン実行スクリプトを毎日自動実行されるディレクトリへ移動 mv clamscan /etc/cron.daily/

CentOS ファイアウォール構築

1.iptables設定

# ファイアウォール設定スクリプト作成
vi iptables.sh
    
#!/bin/bash #---------------------------------------# # 設定開始 # #---------------------------------------# # インタフェース名定義 LAN=eth0 #---------------------------------------# # 設定終了 # #---------------------------------------# # 内部ネットワークのネットマスク取得 LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d` # 内部ネットワークアドレス取得 LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '` LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK # ファイアウォール停止(すべてのルールをクリア) /etc/rc.d/init.d/iptables stop # デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定 iptables -P INPUT DROP # 受信はすべて破棄 iptables -P OUTPUT ACCEPT # 送信はすべて許可 iptables -P FORWARD DROP # 通過はすべて破棄 # 自ホストからのアクセスをすべて許可 iptables -A INPUT -i lo -j ACCEPT # 内部からのアクセスをすべて許可 iptables -A INPUT -s $LOCALNET -j ACCEPT # 内部から行ったアクセスに対する外部からの返答アクセスを許可 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf # ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf # ICMP Redirectパケットは拒否 sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf done # Source Routedパケットは拒否 sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf done # フラグメント化されたパケットはログを記録して破棄 iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : ' iptables -A INPUT -f -j DROP # 外部とのNetBIOS関連のアクセスはログを記録せずに破棄 # ※不要ログ記録防止 iptables -A INPUT -s ! $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP iptables -A INPUT -s ! $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP iptables -A OUTPUT -d ! $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP iptables -A OUTPUT -d ! $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP # 1秒間に4回を超えるpingはログを記録して破棄 # ※Ping of Death攻撃対策 iptables -N LOG_PINGDEATH iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : ' iptables -A LOG_PINGDEATH -j DROP iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH # 全ホスト(ブロードキャストアドレス、マルチキャストアドレス)宛パケットはログを記録せずに破棄 # ※不要ログ記録防止 iptables -A INPUT -d 255.255.255.255 -j DROP iptables -A INPUT -d 224.0.0.1 -j DROP # 113番ポート(IDENT)へのアクセスには拒否応答 # ※メールサーバ等のレスポンス低下防止 iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset # ACCEPT_COUNTRY_MAKE関数定義 # 指定された国のIPアドレスからのアクセスを許可するユーザ定義チェイン作成 ACCEPT_COUNTRY_MAKE(){ for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'` do iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT done } # DROP_COUNTRY_MAKE関数定義 # 指定された国のIPアドレスからのアクセスを破棄するユーザ定義チェイン作成 DROP_COUNTRY_MAKE(){ for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'` do iptables -A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_COUNTRY] : ' iptables -A DROP_COUNTRY -s $addr -j DROP done } # IPアドレスリスト取得 . /root/iptables_functions IPLISTGET # 日本からのアクセスを許可するユーザ定義チェインACCEPT_COUNTRY作成 iptables -N ACCEPT_COUNTRY ACCEPT_COUNTRY_MAKE JP # 以降,日本からのみアクセスを許可したい場合はACCEPTのかわりにACCEPT_COUNTRYを指定する # 中国・韓国・台湾※からのアクセスをログを記録して破棄 # ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く) # http://www.cyberpolice.go.jp/detect/observation.htmlより iptables -N DROP_COUNTRY DROP_COUNTRY_MAKE CN DROP_COUNTRY_MAKE KR DROP_COUNTRY_MAKE TW iptables -A INPUT -j DROP_COUNTRY #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここから) # #----------------------------------------------------------# # 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ許可 # ※SSHサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY # 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可 # ※外部向けDNSサーバーを運用する場合のみ iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT # 外部からのTCP80番ポート(HTTP)へのアクセスを許可 # ※Webサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 外部からのTCP443番ポート(HTTPS)へのアクセスを許可 # ※Webサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 外部からのTCP21番ポート(FTP)へのアクセスを日本からのみ許可 # ※FTPサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY # 外部からのPASV用ポート(FTP-DATA)へのアクセスを日本からのみ許可 # ※FTPサーバーを公開する場合のみ # ※PASV用ポート60000:60030は当サイトの設定例 iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_COUNTRY # 外部からのTCP25番ポート(SMTP)へのアクセスを許可 # ※SMTPサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 25 -j ACCEPT # 外部からのTCP465番ポート(SMTPS)へのアクセスを日本からのみ許可 # ※SMTPSサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY # 外部からのTCP110番ポート(POP3)へのアクセスを日本からのみ許可 # ※POP3サーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY # 外部からのTCP995番ポート(POP3S)へのアクセスを日本からのみ許可 # ※POP3Sサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY # 外部からのTCP143番ポート(IMAP)へのアクセスを日本からのみ許可 # ※IMAPサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY # 外部からのTCP993番ポート(IMAPS)へのアクセスを日本からのみ許可 # ※IMAPSサーバーを公開する場合のみ iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY # 外部からのUDP1194番ポート(OpenVPN)へのアクセスを日本からのみ許可 # ※OpenVPNサーバーを公開する場合のみ iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY # VPNインタフェース用ファイアウォール設定 # ※OpenVPNサーバーを公開する場合のみ [ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここまで) # #----------------------------------------------------------# # 拒否IPアドレスからのアクセスはログを記録せずに破棄 # ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと # (/root/deny_ipがなければなにもしない) if [ -s /root/deny_ip ]; then for ip in `cat /root/deny_ip` do iptables -I INPUT -s $ip -j DROP done fi # 上記のルールにマッチしなかったアクセスはログを記録して破棄 iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : ' iptables -A INPUT -j DROP iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : ' iptables -A FORWARD -j DROP # サーバー再起動時にも上記設定が有効となるようにルールを保存 /etc/rc.d/init.d/iptables save # ファイアウォール起動 /etc/rc.d/init.d/iptables start # ファイアウォール設定スクリプトへ実行権限付加 chmod 700 iptables.sh # ファイアウォール設定スクリプト外部関数作成 vi iptables_functions # IPアドレスリスト取得関数定義 IPLISTGET(){ # http://nami.jp/ipv4bycc/から最新版IPアドレスリストを取得する wget -q http://nami.jp/ipv4bycc/cidr.txt # 最新版IPアドレスリストが取得できなかった場合 if [ ! -f cidr.txt ]; then if [ -f /tmp/cidr.txt ]; then # バックアップがある場合はその旨をroot宛にメール通知して処理を打ち切る echo cidr.txt was read from the backup! | mail -s $0 root exit 1 else # バックアップがない場合はその旨をroot宛にメール通知して処理を打ち切る echo cidr.txt not found!|mail -s $0 root exit 1 fi fi # 最新版IPアドレスリストを /tmpへバックアップする /bin/mv cidr.txt /tmp/cidr.txt }


2.IPアドレスリスト更新チェック
IPアドレスリストは頻繁に更新されるので、毎日自動でIPアドレスリストの更新有無をチェックし、更新がある場合はファイアウォール設定スクリプトを再起動するようにする。

# IPアドレスリストチェックスクリプト作成
vi /etc/cron.daily/iplist_check.sh
    
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # チェック国コード COUNTRY_CODE='JP CN KR TW' # iptables設定スクリプトパス IPTABLES=/root/iptables.sh # iptables設定スクリプト外部関数取り込み . /root/iptables_functions # IPアドレスリスト最新化 rm -f IPLIST.new IPLISTGET for country in $COUNTRY_CODE do if [ -f /tmp/cidr.txt ]; then grep ^$country /tmp/cidr.txt >> IPLIST.new else grep ^$country /tmp/IPLIST >> IPLIST.new fi done # IPアドレスリスト更新チェック diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1 if [ $? -ne 0 ]; then /bin/mv IPLIST.new /tmp/IPLIST $IPTABLES > /dev/null else rm -f IPLIST.new fi
# IPアドレスリストチェックスクリプトに実行権限付加 chmod +x /etc/cron.daily/iplist_check.sh


3.iptables起動

# ファイアウォール設定スクリプト実行
./iptables.sh

# iptables自動起動設定
chkconfig iptables on

# iptables自動起動設定確認(ランレベル2〜5のonを確認)
chkconfig --list iptables

CentOS SELinuxの無効化

# SELinux状態確認(Enforcing:有効、Permissive:無効)
getenforce

# SELinux無効化
setenforce 0

# SELinux状態確認(Enforcing:有効、Permissive:無効)
getenforce

# SELinux設定ファイル編集
vi /etc/sysconfig/selinux
    
SELINUX=enforcing # ↓システム起動時にSELinuxを無効化 SELINUX=disabled

CentOS ユーザ作成

# 一般ユーザcentosの作成
useradd centos

# centosのパスワード設定
passwd centos

# 一般ユーザcentosの削除
userdel -r centos


# rootになれるユーザを管理者のみにする
# 管理者ユーザをwheelグループに追加
usermod -G wheel centos

vi /etc/pam.d/su
    
#auth required pam_wheel.so use_uid ↓コメント削除 auth required pam_wheel.so use_uid

CentOS5 NTPサーバーインストール

NTPサーバーを構築して、サーバーのシステム時刻を日本標準時間に自動的に合わせる。


プロバイダ別 NTPサーバリスト (公式アナウンスあり)
http://wiki.nothing.sh/page/NTP/%A5%D7%A5%ED%A5%D0%A5%A4%A5%C0%A1%A6%B5%A1%B4%D8%CA%CC#content_1_0

# NTPサーバーインストール
yum -y install ntp


# ntp設定ファイル編集
vi /etc/ntp.conf
 
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# ↑ 追加(内部からの時刻同期を許可)

 Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
# ↓ 時刻同期先NTPサーバーを変更
server -4 ntp.nict.jp # 日本標準時を提供しているNTPサーバー(stratum 1)
server -4 ntp.jst.mfeed.ad.jp # 上記サーバーと直接同期しているNTPサーバー(stratum 2)
server -4 プロバイダのNTPサーバー名 # プロバイダのNTPサーバー


# 手動で時刻を合わせる
# NTPサーバー起動時に大幅に時刻がずれているとNTPサーバーが起動できないので、手動で時刻を合わせる。
ntpdate ntp.nict.jp

# NTPサーバー起動
/etc/rc.d/init.d/ntpd start

# NTPサーバー自動起動設定
chkconfig ntpd on

# NTPサーバー自動起動設定確認
chkconfig --list ntpd

# NTPサーバーへの時刻同期状態確認
ntpq -p

# NTPサーバー名の前が空白の場合は時刻同期中の状態
# 約10分後、再度NTPサーバーへの時刻同期状態確認
# NTPサーバー名の前に*または+が表示されれば時刻同期完了の状態

ntpq出力内容の説明
【1カラム目】
 ' '(reject)     距離が遠くて捨てられたサーバー
 'x'(falsetick) falseticker検査で捨てられたサーバー
 '.'(excess)     参照サーバーが多くて捨てられたサーバー
 '-'(outlyer)    クラスタリング検査で捨てられたサーバー
 '+'(candidat)   接続テストに合格し、いつでも参照可能なサーバー
 '#'(selected)   同期距離が遠いが参照可能なサーバー
 '*'(sys.peer)   同期中であると宣言されたサーバー
 'o'(pps.peer)   同期中であると宣言されたサーバー(同期はPPS信号から間接的に行なう。)

【2カラム目以降のラベルの意味】
 remote          リモート・サーバーのホスト名
 refid           参照ID(不明の場合は、0.0.0.0)
 st              stratum番号、サーバーが第何階層かを表します。
 t               階層タイプ(l:local,u:unicast,m:multicast,b:broadcast)
 when            最後のパケットを受け取ってからの時間(単位:秒)
 poll            ポーリング間隔(単位:秒)
 reach           到達可能なレジスタを(8進数表現)
 delay           ポーリングインターバルの遅延見積もり(単位:ミリ秒)
 offset          階層のオフセット(単位:ミリ秒)
 disp            階層の分散(単位:ミリ秒)