投稿

4月, 2016の投稿を表示しています

サーバーのSSL/TLS設定を見直す

イメージ
1年半ぐらい前に設定したときの覚書(下書きに埋まってた)。SSLv3の脆弱性が報告され、攻撃者が通信の内容を複合できる。更新:SSL 3.0 の脆弱性対策について(CVE-2014-3566):IPA 独立行政法人 情報処理推進機構Nginxでもデフォルトで有効になっているので設定する必要がある。Protecting NGINX and NGINX Plus from the POODLE Attack最近の設定はこんな感じ#
# SSL
#
ssl on;
ssl_certificate      /etc/nginx/ssl.d/2016/cert.pem;
ssl_certificate_key  /etc/nginx/ssl.d/2016/key_nopass.pem;
ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_prefer_server_ciphers   on;
#ssl_stapling on;
#ssl_stapling_verify on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;下記サイトでまるっとチェックできる。SSL Server Test (Powered by Qualys SSL Labs)無料でSSLを発行できるLet's Encryptが正式版になったのでSSLの設定作業はデフォルトになりそう。下記サイトも詳しそうなので今度設定するときにじっくり読む。光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita< Related Posts >ロードバランサーのNginxにキャッシュさせる設定NginxにSSL(VeriSign)をInstall、設定OpenSSLで認証局(CA)構築とApache+mod_sslでサーバ認証

PostfixにSPFとDKIMと暗号化の設定まとめ

イメージ
キャリアメール宛てに通知メールが届かないとクレームが入って調べたときの覚書。auが一番厳しいらしい送信ドメイン認証SPFレコードについて | EZwebへメール送信する際の注意事項:サービス・機能 | au基本はSPFレコードを設定していること。記述の仕方は下記サイトなどを参考にIPA 独立行政法人 情報処理推進機構:なりすましメール撲滅に向けたSPF(Sender Policy Framework)導入の手引き確認するのは下記サイトで。SPF Query ToolIPアドレスと送信元メールアドレスを入れて「Test SPF Record」をクリックするとチェックしてくれる。ちなみにクレームの原因は送信元メールを本番用に変更するのを忘れてたから。さらにDKIM(Domainkeys Identified Mail)を設定しておくと信頼性が上がる。設定方法は前の記事を参考にPostfixにDKIMを設定して送信メールサーバーの信頼度を上げる最近Gmailだと鍵マークが表示されるようになったので暗号化も対応する。前の記事を参考にCentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめ< Related Posts >CentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめメール送信時にエラー。複数サーバー構成でのSPF設定を見直す[Google Apps]DNSのSPFとDKIMを設定してSecurityを高める(送信Domain認証)

Aipoの起動スクリプトを作成。再起動しても自動起動するように

イメージ
サーバーを再起動したときにAipoの起動を忘れるので自動起動できるようにしたときの覚書。環境: CentOS 6.7, Aipo 7.0.2.0参考サーバー再起動時にAipoを自動起動するには?|無料グループウェア「アイポ」起動スクリプト作成。Gistに置いた
# vi /etc/rc.d/init.d/aipostartup script for aipo. | Gist実行権限付与
# chmod +x /etc/rc.d/init.d/aipo起動テスト
# /etc/rc.d/init.d/aipo start自動起動するように登録
# chkconfig --add aipo
# chkconfig aipo on
# chkconfig --listそのままだとstartup.shにsudoが書かれている影響で自動起動できないので、rootはttyなしでsudo出来るようにする。
# vi /etc/sudoers.d/aipoDefaults:root !requiretty再起動して確認
# reboot< Related Posts >グループウェア「Aipo」を別サーバーに移行CentOS6にRedmine 3.0をInstallして2.5から移行

GitLabを別サーバーに移行

イメージ
GitLabを別サーバーに移行したときの覚書。移行元: CentOS 6.7, Git 2.6.4, Ruby 2.2.2p95, GitLab 8.6.6
移行先: CentOS 6.7, Git 2.8.1, Ruby 2.2.4p2301.移行先へGitLabをインストール前の記事を参考にCentOSにGitLabをInstallして設定いくつかハマったポイントgitlab-ctl reconfigureするときはgitlab-ctl startの状態でやらないと下記エラーになる[execute] psql: could not connect to server: No such file or directory
            Is the server running locally and accepting
            connections on Unix domain socket "/var/opt/gitlab/postgresql/.s.PGSQL.5433"?redisをGitLab付属ではなく、インストール済みのredis serverを使う場合はTCP socketを使うように設定しておかないと500エラーになった。
# less /etc/redis.confport 6379
unixsocket /tmp/redis.sock
unixsocketperm 770gitユーザーをredisグループに参加させる
# usermod -a -G redis git接続テスト
# sudo -u git -H redis-cli -s /tmp/redis.sock ping「PONG」が表示されれば接続できている。参考Gitlab - ArchWiki2.移行元でバックアップ → 移行先でリストア公式サイトを参考にバックアップコマンド実行
# gitlab-rake gitlab:backup:create/var/opt/gitlab/backups/にバックアップファイルが作られる。これを移行先へ持っていく。# mv ~/1461141784_gitlab_backup.tar /var/opt/gitlab/backups/
# gitlab-rake gitlab:backup:restore BAC…

Redmineをgit pullしてUpdate

イメージ
前の記事でRedmineをgit pullして最新に更新できるようにしたけど、実際やってみたらエラーになったときの覚書環境: CentOS 6.7, Ruby 2.2.4p2301.Rubyアップデートrbenvを使ってRubyを2.2.4にアップデートGitをSourceからBuildしてRubyの最新版をInstall確認してインストール
# rbenv install -l
# rbenv install 2.2.4
# rbenv global 2.2.4gem自体をアップデート
# gem update --systembundlerをインストールし直し
# gem install bundler確認
# gem list2.Redmineアップデート実はエラーになってからRuby 2.2.4に上げたので、エラーになった時はRuby 2.2.2。Redmineのリポジトリに移動してgit pull
# cd /opt/redmine
# git pullバンドルされているのをアップデート
# bundle updateエラー(下記エラーはRuby 2.2.2でbundle updateしたとき)Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.
Fetching gem metadata from http://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from …

HTTPS(SSL) + session.resave=false + cookie.secure=trueの環境でセッションが使えない?

イメージ
Titaniumで開発したアプリを本番環境で動かしたときにログインしたあとセッションが持続できない現象を調査したときの覚書。アプリ環境: Titanium SDK 5.5.2.GA
サーバー環境: CentOS7, nginx 1.8.1, Node.js v4.4.2, express 4.13.4サーバーのAPIはNode.jsで実装していて、nginxからリバースプロキシしている。他のプロジェクトはsession.resave=trueにして常に保存するようにしていた。resaveについては公式ドキュメントで。app.use(session({
  key: APP.Config.cookie.key,
  path: APP.Config.cookie.path,
  secret: APP.Config.cookie.secret,
  cookie: {
    secure: true
  },
  resave: true,
  saveUninitialized: true
}));今作っているアプリはログインせずにゲストでもいろいろ出来るので、resave=falseにして不要なセッションは作らないようにしてみた。開発環境では問題なく動作していて、本番環境のHTTPS(SSL)で動かしてみるとセッションが維持できない。ハマったのはiOSではセッションが維持出来たので(←気のせいだった)、Androidアプリ側の問題かと思っていた。Cookieを使ったセッションの場合、サーバー側でセッションを保存するとレスポンスヘッダーの「Set-Cookie」に値が入る。TitaniumだとHTTPClientのonload時にレスポンスヘッダーを見ればCookieに保存するかわかる。console.log(this.getResponseHeader('Set-Cookie'));nginxのリバースプロキシするときにちゃんとhttpsの通信だというのを指定する必要があった。location /api/1/ {
    rewrite ^/api/1/(.*)$ /$1 break;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_…

CentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめ

イメージ
カゴヤ・クラウド/VPSを借りて最小構成から環境構築したときの覚書。
CentOS6をセットアップしたときの記事を参考に
SE奮闘記: カゴヤ・クラウドVPS(CentOS)の初期設定
目次
初期設定 nginxをインストール PHP7をインストール MariaDBをインストール phpMyAdminをインストール Node.jsをインストール postfix + DKIM(送信ドメイン認証)をインストール cronをインストール
1.初期設定 前の記事を参考に
SE奮闘記: CentOS7を最小構成からセットアップ このときの記事から変えたこと。
VPS上で時刻合わせは出来ないらしい。
# yum remove chronySELinuxはgetenforceコマンドがなかったので飛ばした
< 2019/01/20 追記 >
前と変わっていたので別記事にした。
SE奮闘記: カゴヤ・クラウドVPS(CentOS7)の初期設定

2.nginxをインストール公式ドキュメントに従ってYUMリポジトリを追加
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1# yum install nginx
起動、自動起動ON、確認
# systemctl start nginx
# systemctl enable nginx
# systemctl list-unit-files -t service | grep nginx
前の記事を参考にCPU数に合わせて設定する
SE奮闘記: Nginx+PHP-FPMのTuning設定
3.PHP7をインストール remiリポジトリのphp7を編集
# less /etc/yum.repos.d/remi-php70.repo
[remi-php70]
enabled=1 インストール
# yum install php php-fpm php-devel php-cli php-mysqlnd php-mbstring php-gd php-mcrypt
起動、自動起動ON、確認
# systemctl start php-fpm
# s…