Home > サーバー関連 Archive
サーバー関連 Archive
VirtualBox install CentOS to Mac
- 2010-02-17 (水)
- サーバー関連
いつもミドルウェアのインストールはapt-getやらyumやらportやらで楽していたので、丁度環境構築する機会があったのでソースからのインストールでやってみました。以下その作業ログです。
CentOSのインストール過程は下記のサイトに詳しく記載されています。必要最低限のものしか設定したくない人にはうってつけの参考サイトです。
CentOS5インストール
ちょっとはまりました。ネットワークに繋がらなかったので以下のコマンドを叩きました。
ifdown eth1
ifup eth1
こんな設定ありなのか・・・
ホストOSからゲストOSにsshとhttpの接続をする設定。かなりはまりました。以下のサイト通りに行えばできます。ネットワークの設定の箇所とiptablesの設定の箇所です。
VirtualBox 2.2 と CentOS 5.3 でローカル開発環境
ちょっと余談。ここまでくる間に使えそうな情報を見つけたので載せておきます。
FireWallとSELinuxの設定画面を再表示するコマンド
$ system-config-securitylevel-tui
コマンドラインからVirtualBox立ち上げ
$ VBoxManage startvm “仮想マシン名” –type headless
コマンドラインからVirtualBox止め
$ VBoxManage controlvm “仮想マシン名” poweroff
では、やっとお目当ての者たちを取り込みます。
apacheインストール
まず、必要なライブラリインストール
yum -y install gcc
yum -y install openssl-devel
ソースの置き場所はこちら:http://ftp.riken.jp/net/apache/httpd/
# cd /usr/local/src/
# wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.14.tar.gz
# tar xvfz httpd-2.2.14.tar.gz
# cd httpd-2.2.14
# ./configure –prefix=/usr/local/apache2 –enable-module=so –enable-so –enable-ssl –enable-rewrite
起動スクリプトの作成
参考サイト:CentOS 5.3にApache をインストールの起動スクリプトの作成以降を同じことやりました。
ちょっとつまづいたのは、参考サイトの中にある実行ユーザを作成したあと、httpdを起動しようとしたら以下のエラーが吐かれました。
httpd を停止中: [失敗]
httpd を起動中: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs [失敗]
すでに使用しているポートに働きかけしてるから失敗?
同じサイトなのかな。解決方法が載ってます。apacheの再起動でエラー (98)Address already in use: make_sock: could not bind to address [::]:80とても参考になりました。ありがとうございました。
MySQLのインストール
ソースはこちら:http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/
参考サイトはこちら:http://wiki.livedoor.jp/callistoiv/d/MySQL%20Memo
http://tatsunet.net/contents/linux/centos4/lamp/
必要なもの取得
# yum -y install ncurses-devel
# wget http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/mysql-5.1.41.tar.gz
ユーザ作成
# groupadd mysql
# useradd mysql -g mysql -M -s /sbin/nologin
インストール作業
# tar xvfz mysql-5.1.41.tar.gz
# cd mysql-5.1.41
# ./configure –prefix=/usr/local/mysql –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=all –with-readline –with-mysqld-user=mysql
# make
# make install
DB初期化
# ./scripts/mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/var/
# /usr/local/mysql/bin/mysqld_safe –user=mysql &
# /usr/local/mysql/bin/mysqladmin -u root password ‘XXXXXXXXXX’
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
MySQLの自動起動の設定
# cp support-files/mysql.server /etc/rc.d/init.d/mysql
# chmod 755 /etc/rc.d/init.d/mysql
# chkconfig –add mysql
# chkconfig –list mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# /etc/rc.d/init.d/mysql start
では次に、PHPインストール
ソースの置き場所はこちら:http://www.php.net/downloads.php
参考サイト:http://sj6.org/vmware_setup_by_centos/
必要なものインストール
# yum install libxml2*
# yum install libjpeg*
# yum install gd-devel
# yum install openldap-devel
# yum install libxslt-devel
# yum -y install curl-devel
# yum -y install libmcrypt-devel
# wget http://jp.php.net/get/php-5.3.1.tar.gz/from/this/mirror
# tar xvfz php-5.3.1.tar.gz
# cd php-5.3.1
# ./configure –prefix=/usr/local/lib/php5 –with-apxs2=/usr/local/apache2/bin/apxs –with-pear=/usr/local/lib/php5/pear –enable-zend-multibyte –enable-mbstring –enable-mbregex –with-xsl –with-mysql=/usr/local/mysql –with-pdo-mysql=/usr/local/mysql –with-curl –with-curlwrappers –with-zlib-dir –with-zlib –with-gd=shared –with-png-dir –with-jpeg-dir –with-ttf –with-ldap=shared –with-mcrypt
# make
# make install
# cp php.ini-development /usr/local/lib/php.ini
次に、/usr/local/lib/php.iniを編集します。編集内容は参考サイトにある通りにしました。
最後に/usr/local/apache2/conf/httpd.confに.phpがphpだと分からせるようにする設定を記述します。
<IfModule dir_module>
DirectoryIndex index.html index.php # index.phpを追加
</IfModule>
・・・・・
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php # この行を追加
/usr/local/apache2/htdocs/phpinfo.phpを作成したりして動作確認。
以上です。ふぅ、かなり時間かかった。
ではでは
- Comments: 0
- Trackbacks: 0
Ubuntu Postfix (TLS + SMTP AUTH) と Dovecot 構築
- 2009-08-12 (水)
- サーバー関連
とても分かり易くお世話になったサイト
メールサーバの設定 - postfix & dovecot
PostfixによるSMTPサーバの構築(CentOS標準版編)
Ubuntu 8.04 によるサーバーの構築 >Postfix (SMTPサーバー)の構築
どうもありがとうございました。
以下私のログです。
必要なパッケージをインストール
sudo apt-get install postfix dovecot sasl2-bin
Postfix最低限〜SMTP AUTH設定
/etc/postfix/main.cfを編集
# ドメイン名の指定
mydomain = yourhost.com
# Fromアドレスに付加されるドメインの指定
myorigin = $mydomainmyhostname = mail.yourhost.com
# メールの配送を許可する宛先ドメイン名を指定します。
mydestination = $myhostname, localhost.$mydomain, localhost, $myorigin# ここで指定したネットワークからのメールは、無条件に配送されます
# mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks = 192.168.0.0/24, 127.0.0.0/8# メールヘッダに記載されるMTAの表示に関する設定
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)# TLS parameters 前回のsslで設定の際、作成した証明書と鍵を使用
smtpd_tls_cert_file= /etc/ssl/key/server.crt
smtpd_tls_key_file= /etc/ssl/key/server.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scachealias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliasesrelayhost =
mailbox_size_limit = 51200000
recipient_delimiter = +
inet_interfaces = all
mtpd_banner = $myhostname ESMTP unknown
home_mailbox = Maildir/
# SMTP認証の設定
# SMTP認証を有効にするには、smtp_sasl_auth_enableをyesにし、smtpd_recipient_restrictionsにpermit_sasl_authenticatedを加える。参考サイト抜粋
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes # sasl_authに対応していないメーラに対応
smtpd_sasl_security_options = noanonymous # 匿名認証を許可しない
次に、PostfixでSMTP認証の監視を行うsaslauthdの設定を行います。まず、PostfixにSMTP認証のチェッカーとしてsaslauthdを使うように設定するため、/etc/postfix/saslディレクトリ以下にsmtpd.confというファイルを作成して*1抜粋、以下を追加
# vim /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
なお、この設定でUnixユーザーアカウントのアカウント名およびパスワードでSMTP認証できます。
試してないので不確実なのですがpwcheck_method: pwcheckでも同じ設定になるのではないかと思います。余談としてUnixユーザーアカウントではなく、sasl認証ユーザ用のアカウント作成方法を*1の本に載っているので参考にして下さい。
UbuntuにインストールされているPostfixは、標準でchroot環境になっており、/var/spool/postfixをルートディレクトリとして使うようになっています。しかし、saslauthdは/var/run/saslauthdを使おうとするため、挙動がおかしくなってしまします。この問題を解決するため、saslauthdサービスの設定ファイルである/etc/default/saslauthdファイルを書き換えて、新しくsaslauthd用のディレクトリを/var/spool/postfix以下に作成する必要があります。*1
よって以下の作業が必要になります。
# vim /etc/default/saslauthd
#START=no
START=yes ←起動時にsaslauthdを動作させるようにする
# OPTIONS= “-c -m /var/run/saslauthd”
OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd”
sudo rm -r /var/run/saslauthd/
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run
sudo chgrp sasl /var/spool/postfix/var/run/saslauthd
sudo adduser postfix sasl
saslauthdデーモンを起動
/etc/init.d/saslauthd start
Postfix設定の確認
postfix check
問題がなければ、Postfixに設定を反映
postfix reload
TLSの設定
TLSはSSLを利用した暗号化通信技術ですかね?TLSによりデータを暗号化することができるため、SMTP_AUTHで利用するデータを盗聴から保護することが可能になります。
/etc/postfix/main.cfの次の設定がTLSを利用する設定です。
# TLS parameters 前回のsslで設定の際、作成した証明書と鍵を使用
smtpd_tls_cert_file= /etc/ssl/key/server.crt
smtpd_tls_key_file= /etc/ssl/key/server.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
TLSを使うために以下も修正。
# vim /etc/postfix/master.cf
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
# サブミッションポートの設定
submission inet n - - - - smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
tlsmgr unix - - n 1000? 1 tlsmgr
これらをすべてコメントアウトをはずす
再度、Postfixに設定を反映。
Dovecotの設定
# vim /etc/dovecot/dovecot.conf
protocols = pop3 pop3s imap imaps
disable_plaintext_auth = no
sl_cert_file = /etc/ssl/key/server.key
ssl_key_file = /etc/ssl/key/server.key
mail_location = maildir:~/Maildir
Dovecotを起動
# sudo /etc/init.d/dovecot start
サーバの設定は以上です。
あとはメーラの設定です。
メーラの設定では必ずTLSを利用するに設定しなければいけません。
あとメーラからメールが送れなかったらSMTPサーバの使用ポートを587に変更してください。サブミッションポートの設定により、送れないことが原因だと思います。
とりあえず行ったことは以上になります。
*1 参考図書:図解でわかる Linuxサーバ構築・設定のすべて
余談1
下記4行を追加してTCPの110番ポート(pop)とTCPの143番ポート(imap)を開放します。
IP制御をしてローカルネットワーク内と特定の外部からのみ接続できるようにします
その条件を説明してくれているサイト
抜粋
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 110 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 110 -s xxx.xxx.xx.xx(外部IPアドレス)/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 143 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 143 -s xxx.xxx.xx.xx(外部IPアドレス)/24 -j ACCEPT
余談2
APOP使うときには参考になる
外部からメールサーバを使えるようにする
ただAPOP使うには注意。プロトコル上の問題で惰弱性があることを認識しておく。
- Comments: 0
- Trackbacks: 0
SSL接続のサーバ構築 設定編
- 2009-08-09 (日)
- サーバー関連
RedminをSSLで構築していきます。
では、まずSSLを構築していきましょう。
流れは前回の説明した順序でやっていきます。
1. 自前の認証局(CA)で証明書(CACERT)を作成
debianコマンド、make-ssl-certは使いませんでした。理由は前回の疑問の通り。
以下のように自前の認証局と証明書を作成しました。
# cd /usr/lib/ssl/misc
# ./CA.sh -newca
以下の入力はここを参考にさせて頂きました。
CA certificate filename (or enter to create) ← Enter
Enter PEM pass phrase: ←パスワードを入力
Verifying password - Enter PEM pass phrase: ←再度パスワードを入力
Country Name (2 letter code) [AU]:JP ←国コードを入力JP
State or Province Name (full name) [Some-State]:Osaka ←都道府県名を入力
Locality Name (eg, city) []:HigashiOsaka ←市区町村名を入力
Organization Name (eg, company) [Internet Widgits Pty Ltd]:←会社名、団体名等を入力。私は入力しませんでした
Organizational Unit Name (eg, section) []:Hoge ←部門名・部署名等を入力。私は入力しませんでした
Common Name (eg, YOUR name) []:*****.com ←正確にドメイン名を入力しなければならない
Email Address []:←私は何も入力しませんでした
すると、
/usr/lib/ssl/misc/demoCA/cacert.pem
/usr/lib/ssl/misc/demoCA/private/cakey.pem
が生成されます。
安全のため、秘密鍵を他人に見られないようにパーミッションを設定します
# chmod 600 /usr/lib/ssl/misc/demoCA/private/cakey.pem
# chmod 700 /usr/lib/ssl/misc/demoCA/private
以下のコマンドで、作成した証明書が正しくできたかどうか確認できます。
私は確認してませんけど。。
# openssl x509 -in cacert.pem -text
2. サーバ秘密鍵(Key)と証明書署名要求(CSR)を作成
サーバ秘密鍵の生成 (私はホームディレクトリで作業しました。どこでもいいと思います)
# cd ~
# openssl genrsa -out server.key 1024
# ls
# server.key ← ファイルが生成されているはず証明書署名要求(CSR)の作成
# cd ~
# openssl req -new -key server.key -out server.csr
上で行った作業と一緒でいいと思います。
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]: Osaka
Locality Name (eg, city) []:HIgashiOsaka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:←私は何も入力しませんでした
Organizational Unit Name (eg, section) []:←私は何も入力しませんでした
Common Name (eg, YOUR name) []: *****.com ←正確にドメイン名を入力しなければならない
Email Address []:←私は何も入力しませんでしたPlease enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:←私は何も入力しませんでした
An optional company name []:←私は何も入力しませんでした# ls
server.key server.csr
3. 自前の認証局で証明書署名要求(CSR)に署名し証明書を作成
続いて、CSRに対して認証局が署名します。これによってサーバ証明書が生成されます。
ちなみに、通常はベリサインなどの第三者認証局げCSRを送って証明書に署名を入れてもらいます。今回は自前の認証局を立てて、自己署名する方法で行っていきます。
# cd /usr/lib/ssl/misc/
# openssl ca -out serverca.crt -infiles ~/server.csr
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem: ←1で入力したパスワード
Check that the request matches the signature
Signature ok
省略
Certificate is to be certified until Aug 8 01:17:21 2011 GMT (730 days)
Sign the certificate? [y/n]:y ← yを入力
1 out of 1 certificate requests certified, commit? [y/n]y ← yを入力
Write out database with 1 new entries
Data Base Updated
サーバ証明書serverca.crtが作成されました
4. サーバ証明書と秘密鍵(Key)をApacheサーバにインストール
# mkdir /etc/ssl/key
# cp serverca.crt /etc/ssl/key/ ←サーバ証明書
# cp ~/server.key /etc/ssl/key/ ←秘密鍵# cd /etc/apache2/sites-available
# cp default-ssl ssl
# emacs ssl<IfModule mod_ssl.c> <VirtualHost _default_:443> serverName redmine.cypher-works.com:443 ← depends on you ServerAdmin ***** ← depends on you DocumentRoot /var/www/redmine/public ← depends on you <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/redmine> Options FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/ssl_access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> SSLEngine on SSLCertificateFile /etc/ssl/key/serverca.crt ← サーバ証明書を指定 SSLCertificateKeyFile /etc/ssl/key/server.key ← 秘密鍵を指定 #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt #SSLCACertificatePath /etc/ssl/certs/ #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt #SSLCARevocationPath /etc/apache2/ssl.crl/ #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl #SSLVerifyClient require #SSLVerifyDepth 10 #<Location /> #SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \ # and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ # and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \ # and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \ # and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \ # or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ #</Location> #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost> </IfModule>
そして次にsslがapacheで使えるようにするために
# a2enmod ssl
Enabling module ssl.
さきほどのVirtualHostで設定したものを有効にするために
# a2ensite ssl
Enabling site ssl.
apache再起動と文法的に間違ってないか確認
# apache2ctl restart
# apache2ctl -t
Syntax OK
port443が開いているか確認
# netstat -a | grep https
tcp 0 0 *:https *:* LISTEN
5. クライアントのブラウザに自前の認証局の証明書(CACERT)をインストールして信頼させる
# cd /usr/lib/ssl/misc/
# openssl x509 -inform pem -in demoCA/cacert.pem -outform der -out demoCA/ca.der
ここからはRedmineのインストール。
svnからチェックアウトしたもので構築していったときなぜか500 Internal server errorになってしまいました。解決方法を探しに検索すると、だいたいtmpとlogのパーミッションを変更しろというものでしたが、解決しませんでした。
圧縮ファイルから解凍してのインストールだとうまくいきました。理由は分かりませんが以下そのログです。
# wget http://rubyforge.org/frs/download.php/56909/redmine-0.8.4.tar.gz
# tar xvfz redmine-0.8.4.tar.gz
# mysql -u root -p****
> create database redmine character set utf8;
>¥q
# cp config/database.yml.example config/database.yml
database.ymlを編集してください
# rake db:migrate RAILS_ENV=”production”
# rake load_default_data RAILS_ENV=”production”
Select language: bg, ca, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sk, sr, sv, th, tr, uk, vn, zh, zh-tw [en] ja
chmod -R 666 tmp/
chmod -R 666 log/
apache+passengerで構築していますがその詳細はこちらにあります。
最後にBasic認証をしています。以下のその例です。
# cd /etc/apache2/sites-available/
# emacs ssl
以下を追加<Location /> AuthType Basic AuthName "Redmine" AuthUserFile /etc/apache2/.htpasswd AuthGroupFile /dev/null Require valid-user </Location>
次に.htpasswdを作成
# cd /etc/apache2/
# htpasswd -c .htpasswd ユーザ名
パスワード入力
# apache2ctl restart
ちなみにssl(https)で構築するとdigest認証は成立しないのでしょうかね。
sslで暗号化しているから、digest認証でも暗号化すると暗号に暗号を重ねることになって成立しなくなるのでしょうか。う〜ん。知りたい。
以上で完了です。
ではでは
参考サイト
apache+opensslで自前SSL
WebサーバのSSL対応
etch/park2/10_apache2
パーソナルWeb共有をhttps接続できるようにしよう
- Comments: 0
- Trackbacks: 0
SSL接続のサーバ構築 疑問編
- 2009-08-07 (金)
- サーバー関連
参考サイト
OpenSSLで認証局(CA)構築とApache+mod_sslでサーバ認証
UbuntuでApache2+SSLしてみる
apache+opensslで自前SSL
自前SSLのサーバ構築はだいたい下記の流れのようである。
1.自前の認証局(CA)で証明書(CACERT)を作成(3のときに実行しても良いけど、認証局がサーバより先にあるというのが一般的なので)
2.Apacheサーバで秘密鍵(Key)と証明書署名要求(CSR)を作成
3.自前の認証局で証明書署名要求(CSR)に署名し証明書(CERT, certificate)を作成
4.証明書(CERT)と秘密鍵(Key)をApacheサーバにインストール
5.クライアントのブラウザに自前の認証局の証明書(CACERT)をインストールして信頼させる
debianにはmake-ssl-certというコマンドがあって検索するとだいたい下記のようにたたく。
mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
そうすると、/etc/apache2/sslディレクトリ以下にapache.pemが作成されて、
apache.pemには秘密鍵と証明書の両方の内容が記述されているようです。
ここで疑問なのだが、make-ssl-certをたたいたとき、上記の作成フローの3番まで一気に行ってしまうのか、2番でストップするのかどっちなのか分からない。
もし、3番まで実行してしまうなら、ベリサインなどのCAに証明書発行要求が出来ないのではないか。
う〜ん。分かったらまたエントリを書きます。
ではでは
- Comments: 0
- Trackbacks: 1
ubuntu iptables設定 辞書攻撃対策
- 2009-07-20 (月)
- サーバー関連
辞書攻撃された。
やろぉ。
犯人はこいつ。
http://www.projecthoneypot.org/ip_****
ちょうどログを監視してたからすぐ対応できました。
dovecot宛になにかしろしてたので、devecotを一旦stopしました。
こういう経験あるとセキュリティーに関して熟知しないとな、と強く感じます。
やられたからには、対策を。(本当はやられる前に対策を。)
ファイアーウォールの設定で辞書攻撃用の対策を施します。
iptablesを使うのでインストールされてないかたインストールを。
$ sudo apt-get install update
$ sudo apt-get install iptables
元ネタはここから
sshへの総当り攻撃をiptablesの2行で防ぐ方法
お世話になりました。
他、参考にさせて頂いたサイトです。
Ubuntu/iptables(firewall)説明に流れがあり分かり易かったです。
iptables (netfilter) のインストール方針が勉強になりました。
iptablesでサーバーのファイアウォールを構築するCommentsAdd Star記述する内容が詳しく説明されています。
専用サーバを構築するときにまず行う4つの設定 ウノウさん。こういう記事があると流石と思います。
では、設定を。180秒間に5回ssh接続を試みたIPアドレスをシャットアウトする。あとログに残す
$ sudo iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name ssh_attack
$ sudo iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 180 –hitcount 5 –rttl –name ssh_attack -j LOG –log-prefix ‘SSH attack: ‘
$ sudo iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 180 –hitcount 5 –rttl –name ssh_attack -j DROP
上記が設定されて、保存をします。
$ sudo iptables-save > /etc/iptables.rule
/etc/iptables.ruleに先ほど設定した内容が生成されました。
これを起動時にも反映されるように、
$ sudo vim /etc/network/if-pre-up.d/iptables-up
以下記述内容
#!/bin/shiptables-restore < /etc/iptables.rule
$ sudo chmod 700 /etc/network/if-pre-up.d/iptables-up
$ sudo vim /etc/network/if-post-down.d/iptables-down
以下記述内容
#!/bin/shiptalbes-save > /etc/iptables.rule
$ sudo chomod 700 /etc/network/if-post-down.d/iptables-down
以上が、辞書攻撃対策でした。
ではでは
- Comments: 0
- Trackbacks: 0
ubuntu cronの設定
- 2009-07-20 (月)
- サーバー関連
はまってしまった。。
下記サイトを参考にさせてもらいましたが、
http://d.hatena.ne.jp/satake7/20080615/p1
cronの設定方法の注意
コマンドには「> /dev/null 2>&1」を付けて、標準出力も標準エラー出力も /dev/null に捨てないとうまくいかないそうです。(事前にググっていて対処済みだったため、付けないとどうなるかは未確認ですが)
という記述があったので「> /dev/null 2>&1」を付けてたんですけど、これがあると実行されなかったので、とっちゃいました。
とってやっとこさcronは正常に動いてくれました。
結局やったことはrootでcrontab -eをしてcronで実行したいものを記述
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h dom mon dow command
5 0 * * * /usr/bin/php /var/www/****/****.php
SHELLやらPATHやらの記述はenvコマンドを打つと分かります。とりあえず記述しときました。
PHPも絶対パスでやっときました。
/etc/init.d/cron restartでcronを再起動
結局これだけだと思います。(cronの再起動も必要あるのかどうか)
あとはログからcronが動いているか確認。
ubuntuは/var/log/syslogに残るみたいです。
いろいろ調べて試したもの
cronの状態
/etc/init.d/cron status
cronの再起動
/etc/init.d/cron restart
/var/log/cron.logの設定(失敗→特に生成されない)
$ emacs /etc/syslog.conf
cron.* /var/log/cron.log
↑を追加
/etc/syslog.confの反映
ps aux | grep syslog
kill -HUP ****
ではでは
- Comments: 0
- Trackbacks: 0
ubuntu 時刻設定
- 2009-07-20 (月)
- サーバー関連
時刻を合わせますー。
まずは同期の設定をするようです。下記サイトに詳しく載ってます。お世話になりましたー。
http://tobysoft.net/wiki/index.php?Ubuntu%2F%BB%FE%B9%EF%A4%CE%C6%B1%B4%FC
内容は
まずは同期の設定をする
$(#) sudo vim /etc/default/ntpdate
同期サーバーがntp.ubuntu.comになっていますが、
国内用に以下のように変更します。
(設定はこれと同じでも大丈夫です。詳細→NTP - wiki@nothing)#NTPSERVERS=”ntp.ubuntu.com”
NTPSERVERS=”ntp.nict.jp ntp.jst.mfeed.ad.jp ntp.ring.gr.jp”手動で合わせてみる
$(#) sudo /etc/network/if-up.d/ntpdate
これで日本時間になったかな?とdateコマンドで確認。結果まだみたい。
日本時間にするにはタイムゾーンの設定をしなければいけない。
それは下記サイトが教えてくれました。
ご教授ありがとうございますー。
http://wiki.bonnou.com/Linode%20%E3%81%B8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%20Ubuntu%20%E3%81%AE%E8%A8%AD%E5%AE%9A
http://memoro.cocolog-nifty.com/blog/2008/01/ubuntutimezone_4774.html
内容は、dpkg-reconfigure tzdataを打つ。
$(#) dpkg-reconfigure tzdata
こんな画面がでる

で、Asia → Tokyoと設定する。
で、dateコマンドで確認すると、ちゃんと日本時間になってました。おけー。
では、PHPのdate関数とかで生成される時間も、このシステム時間使われるのかなと確認したところ違うみたい。
PHPはphp.iniの設定を変更しなければいけないみたいですね。
$(#) vim php.ini
[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Tokyo
↑
追加
これでphpの処理も日本時間になりましたとさ。
ではでは
- Comments: 0
- Trackbacks: 0
shindigとpartuzaというかVirtual Host
- 2009-07-08 (水)
- サーバー関連
opensocialの開発を容易に出来ないものかと思案した結果、
shindigとpartuzaの環境構築がメジャーな例としてあるみたいですね。
では、環境構築して試してみたいと思います。
OpenSocial入門を例に私は構築しました。以下その図書です。
その図書からは、http://shindigやhttp://partuzaのようにアクセスするとなっていたので、
Virtual Hostの設定からやります。
まず、httpd.confのVirtual Hostを利用できるように設定を変更します。
私の環境では以下、/opt/local/apache2/conf/httpd.confを変更
下記のコメントアウトをはずす
;Include conf/extra/httpd-vhosts.conf
↓
Include conf/extra/httpd-vhosts.conf
そして、httpd-vhosts.confを編集します。
私の環境では/opt/local/apache2/conf/extra/httpd-vhosts.confにあります。
こんな感じです。
<VirtualHost *:80>
DocumentRoot /opt/local/apache2/htdocs
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /Library/WebServer/Documents/shindig/php
ServerName shindig
DirectoryIndex index.php index.html
<Directory /Library/WebServer/Documents/shindig/php>
AllowOverride All
Options All
Allow from All
Order deny,allow
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /Library/WebServer/Documents/partuza/html
ServerName partuza
DirectoryIndex index.php index.html
<Directory /Library/WebServer/Documents/partuza/html>
AllowOverride All
Options All
Allow from All
Order deny,allow
</Directory>
</VirtualHost>
余談なんですが、Virutal Hostを設定している途中でoptions Indexesに差し掛かったとき、
ApacheのCGIの設定、Optionsディレクティブの詳細を備忘録のために書き留めたいな、
と思ってたので、この機に書こうと思います。
Optionsディレクティブのおもなオプション
| オプション | 説明 |
|---|---|
| Indexes | ブラウザからのURLのリソース指定がディレクトリの場合、そのディレクトリ直下にDirectoryIndexesで指定したファイルがなければ、ディレクトリ一覧の出力をおこなうことを許可します |
| FollowSymlinks | シンボリックリンクのリンク先に辿れることを許可します |
| ExecCGI | CGIプログラムの実行を許可します |
公開サーバではディレクトリの出力を非表示にする必要があります。
以前、indexesの記述をすべて削除して見えなくしようとしましたが、非表示になりませんでした。
そんなときはautoindexのモジュールが効いているかもしれないので無効にしましょう。
下記サイトが参考になるかと思います。
http://www.kishiro.com/apache/disable_autoindex.html
私の環境は、ubuntsなのでa2disホニャララのコマンドが効きます。
a2disautoindexでディレクトリの非表示ができました。
余談終わります。
あと、Virtual Hostの設定は/etc/hostsをイジリーします。
127.0.01 localhost shindig partuza
でapacheの再起動します。(まだshindigとpartuzaを配置してない場合はそりゃエラーになります。)
以上でVirtual Hostの設定は終わりです。
Virtual Hostの設定したときに、立ち寄ったサイトです。
その他サーバ・アプリの設定も簡潔に記述されていて読み易いサイトです。
http://wiki.gaspanik.com/install-amp
で、本題?のshindigとpartuzaの設定でお世話になったサイトです。
リクルートのメディアラボさんのラボサイトはOpenSocial入門の誤記を指摘してくれているので必須でした。
誠にありがとうございます。
http://www.openpne.jp/archives/630/
http://mtl.recruit.co.jp/blog/2009/01/opensocialopensocialpartuza.html
この二つのサイトで事足りちゃいます。ので私は説明しません。
ちょっと補足を。
PartuzaDbFetcher.phpにDBの設定をしてほしいとの記述があるのですが、
記述するところはないので私はしませんでした。それで正常に動いています。
以上になります。
ではでは。
- Comments: 0
- Trackbacks: 0
Home > サーバー関連 Archive
- Search
- Feeds
- Meta