ヘッダーイメージ 本文へジャンプ
日記

2011年04月13日 09時26分
CentOSの設定
以前に「さくらのVPS」を借りて CentOS の設定をした時のメモです

CentOS はまず最小構成でセットアップしました

--------------------------------------------------------
・まずはモジュール類のアップデート
yum update

--------------------------------------------------------
・セキュリティーがきついと色々設定しにくかったので selinux は disable に設定
/etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted

# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0

--------------------------------------------------------
・NTP を設定してみた
yum install ntp
chkconfig ntpd on

/etc/ntp.conf の server の処に書いてあるサーバーにとりあえず時間を合わす
ntpdate 0.centos.pool.ntp.org

最後にサービススタート
/etc/rc.d/init.d/ntpd start

しばらくして ntptrace で、localhost 以外が出ていればOKと思われる

--------------------------------------------------------
・なんで cron や at が入ってないかな・・・
yum install vixie-cron
chkconfig crond on
/etc/rc.d/init.d/crond start

yum install at
chkconfig atd on
/etc/rc.d/init.d/atd start

--------------------------------------------------------
・キーボードマップの変更(私は英語キーボードを使っているので・・・)
/etc/sysconfig/keyboard の KEYTABLE を us に変更して再起動

--------------------------------------------------------
・人まねでファイヤーウォールの設定
/etc/sysconfig/iptables を設定して通してもよいポートだけ開く設定


 *filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ここに開いておくポートを並べる
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

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

--------------------------------------------------------
・ssh でパスワード認証を禁止
※クライアント認証キーを作ってから、パスワードなしでログインできるのを確認してからにすること
/etc/ssh/sshd_config の PasswordAuthentication を no に変更(追加)
/etc/init.d/sshd restart

--------------------------------------------------------
・ホスト名の変更
/etc/sysconfig/network の HOSTNAME を変更

--------------------------------------------------------
・ロケールの変更
(時代に反して、昔からSJISを使っているので・・・)
/etc/sysconfig/i18n の LANG を ja_JP.SJIS に変更
localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
~/.exrc に 「set fileencodings=utf8,cp932,latin」を追加

--------------------------------------------------------
・タイムゾーンの変更
cp -p /usr/share/zoneinfo/Japan /etc/localtime
これだけ?

--------------------------------------------------------
・ftp が入ってない・・・
yum -y install vsftpd
chkconfig vsftpd on

・chroot する設定
/etc/vsftpd/vsftpd.conf の以下を修正
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

/etc/vsftpd/chroot_list ファイルを空で作っておく

・パッシブモードを有効に
/etc/vsftpd/vsftpd.conf の以下を修正
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10009
※ファイヤーウォールの設定をしているので、使用ポートを限定しないといけないので、ポートの設定をする。その後ファイヤーウォールのポートの設定も行う

・最後に起動
/etc/init.d/vsftpd start

--------------------------------------------------------
・apache のインストール
yum -y install httpd
/etc/httpd/conf/httpd.conf を編集
chkconfig httpd on

・suexec のエラーが出てたので、とりあえず使用しない方向で・・・
/usr/sbin/suexec のリネーム(無かったら使わないらしい)

・昔使ってた http用のカウンターの設定
http://www.yolinux.com/TUTORIALS/LinuxTutorialWWW-PageCounter.html でソースをダウンロード
適当なところに展開してビルド
./build --without-database --prefix=/home/www/Counter --with-cgi-bin-dir=/home/www/http/bin

※/home/www/Counter : カウンターのデータファイルなどの置き場所
※ /home/www/http/bin : カウンターのバイナリーの置き場所

・cgiparse これも昔から使っている変数のパーサー(CRENのサーバーについてたやつ)
https://www.w3.org/Daemon/Implementation/ で CGIParse.c をダウンロードしてコンパイル
その時エラーをつぶしながらコンパイルするけど、HTUnEscape が見つけれなかったので、自作

void HTUnEscape(char *arg){
int i; int h; char hex[ 3 ];
for ( i = 0 ; arg[ i ] != 0 ; i ++ ) {
if ( arg[ i ] == '%' ) {
hex[ 0 ] = arg[ i + 1 ];
hex[ 1 ] = arg[ i + 2 ];
hex[ 2 ] = 0;
h = strtol( hex , NULL , 16 );
sprintf( arg + i , "%c" , h );
for ( h = i + 1 ; arg[ h + 2 ] != 0 ; h ++ ) arg[ h ] = arg[ h + 2 ];
arg[ h ] = 0;
}
}
}
 

上記以外は、普通のCの書き方にすればコンパイルは通りました
BOOL -> bool とか

たぶんヘッダファイル
#include "HTUtils.h"
#include "HTParse.h"
に書いてあるだあろう BOOL や ARG2,ARG3 のマクロを作れば良いのだと今更ながら思う・・・

--------------------------------------------------------
・sendmailの設定(私は sendmail 派なんです!)
yum install sendmail-cf

以下を編集
/etc/mail/sendmail.mc
/etc/mail/access
/etc/mail/domaintable
/etc/mail/mailertable
/etc/mail/virtusertable
/etc/mail/local-host-names
makemap hash virtusertable < virtusertable
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/aliases ※ これを編集したら newaliases
service sendmail start

・rbl の設定も入れておこう
/etc/mail/sendmail.mc に以下の1行を追加
FEATURE(dnsbl,`all.rbl.jp',`"554 Rejected " $&{client_addr} " found in all.rbl.jp"')dnl

--------------------------------------------------------
・popのインストール
yum install dovecot
/etc/dovecot.conf で first_valid_uid = 150 を設定
※ ユーザーIDの一番若いのを指定する。これをしないと繋がらなかった!

chkconfig dovecot on
/etc/rc.d/init.d/dovecot start

--------------------------------------------------------
・pop befor smtp のインストール

適当なディレクトリーでにモジュールをダウンロードして展開
wget https://sourceforge.net/projects/popbsmtp/files/Source%20tar/1.42 /pop-before-smtp-1.42.tar.gz/download
tar xzvf pop-before-smtp-1.42.tar.gz
cd pop-before-smtp-1.42
cp pop-before-smtp.init /etc/rc.d/init.d/pop-before-smtp
cp pop-before-smtp /usr/sbin/
cp pop-before-smtp-conf.pl /etc
cp contrib/popauth.m4 /usr/share/sendmail-cf/hack

perl のスクリプトなので必要なモジュールをインストール
perl -MCPAN -e shell
(いろいろ質問が出されますが、基本的にはEnterキーで進めばOKらしい)
cpan> install Time::HiRes
cpan> install File::Tail
cpan> install Date::Parse
cpan> install Net::Netmask
cpan> install BerkeleyDB

/etc/pop-before-smtp-conf.pl を編集
$logto = '/var/log/pop-before-smtp'; ※出力ログの設定
$grace = 10*60; ※有効な時間
$file_tail{'name'} = '/var/log/maillog'; ※監視するログ
※ まず基本の設定

=cut #------------------------- Sendmail SMTP -------------------------START-
=cut #------------------------- Sendmail SMTP ---------------------------END-
上記2行の先頭の「=cut」をはずして間の行を有効にする

最後に
# For Dovecot POP3/IMAP when using syslog.
$pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
#$out_pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
# 'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';

の部分のコメントをはずすんですが、下の2行を有効にすると、時間がたってもIPのリストが消えなかった

chkconfig dovecot on
/etc/rc.d/init.d/dovecot start

sendmail の方の設定
/etc/mail/sendmail.mc の追加
define(`POP_B4_SMTP_TAG', `')dnl
HACK(popauth)

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
service sendmail restart

#アドレスの確認
makemap -u hash /etc/mail/popauth.db

--------------------------------------------------------
・spamassassin を入れてみた
yum install spamassassin
chkconfig spamassassin on
/etc/cron.daily/spamassassin-update の作成
(https://tlec.linux.or.jp/がアクセスできないので、http://www.flcl.org/~yoh/user_prefs をダウンロードして加工する)

#!/bin/bash

# TLEC(http://tlec.linux.or.jp/)よりSpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://www.flcl.org/~yoh/user_prefs
cp user_prefs local.cf

# スパム判断したメールを添付形式にしないように設定
echo "report_safe 0" >> local.cf

# メール件名に「[SPAM]」の文字列を付加するように設定
echo "rewrite_header Subject [SPAM]" >> local.cf

# SpamAssassin再起動
/etc/rc.d/init.d/spamassassin restart > /dev/null


/etc/cron.daily にコピーして毎日実行

/etc/sysconfig/spamassassin 修正
SPAMDOPTIONS="-d -c -m5 -H"

SPAMDOPTIONS="-d -c -m5 -H -u smmsp"

/etc/rc.d/init.d/spamassassin start
wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/ x86_64/dag/RPMS/spamass-milter-0.3.1-1.el5.rf.x86_64.rpm
rpm -ivh spamass-milter-0.3.1-1.el5.rf.x86_64.rpm
/etc/sysconfig/spamass-milter の修正
EXTRA_FLAGS="-u smmsp -r 30 -i 127.0.0.1,192.168.0.2"

chkconfig spamass-milter on
/etc/rc.d/init.d/spamass-milter start

/etc/mail/sendmail.mc 編集
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl

define(`confINPUT_MAIL_FILTERS', `spamassassin')dnl
define(`confMILTER_MACROS_ENVRCPT',`r, v, Z, b')dnl

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
service sendmail restart

--------------------------------------------------------
・SMTP AUTH を入れてみる
(今回 /etc/shadow を使用するので、cram-md5 方式や digest-md5 方式は設定できないらしいです)

yum install cyrus-sasl
yum install cyrus-sasl-md5
yum install cyrus-sasl-gssapi
yum install cyrus-sasl-plain
yum install cyrus-sasl-devel

/etc/sysconfig/saslauthd
MECH=shadow
saslpasswd2 -c -u xxxx ※/etc/sasldb の作成 これは不要だと思う
chkconfig saslauthd on

service saslauthd start

※AL-MAIL を使っている人は https://www.almail.com/op25b.html ここで PLAIN 対応版をダウンロードすれば使えました



・CentOSの設定
・SPFレコードのチェック
・CGI が動かなくなる
・CentOSのバージョンアップ
・PostgreSQLのバージョンアップではまった
・Postgresql の互換性
・Java Web Start の互換性(?)

カテゴリー:日記
目次へ戻る


フッターイメージ