セキュリティ対策」カテゴリーアーカイブ

【prompt】iPhoneやiPadでSSHでの認証鍵接続をする【iSSH】

prompt

前回、認証鍵接続の設定法を書いたけど、このままだとiPhoneやiPadで認証鍵接続ができない。

当然鍵を持ってないからね。

さすがにこれだと不便なので、認証鍵を読ませて接続させるように設定する。

関連記事

【鍵なしは】ssh接続を認証鍵方式にしてみた【シャットアウト】

続きを読む

【鍵なしは】ssh接続を認証鍵方式にしてみた【シャットアウト】

key

VPSにログインする時、今まで頑なに認証鍵方式を導入せずにパスワードでログインしていたんだけど、やっぱりセキュリティ的にちょいと不安なので導入してみた。

キーが無ければログイン出来ないってのはやっぱり安心だよね。

※注意

下記設定を終了してから行なって下さい。

VPSセキュリティ設定

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

認証鍵方式とは

読んで字のごとく、サーバーにログインするための鍵が必要になるログイン方式。

キーを持っている端末じゃないと一切ログイン出来なくなる。

恐ろしいほどセキュリティが強固になるが、逆に言うと鍵をなくすとログイン出来なくなるので注意が必要。

認証鍵を作る

とりあえず鍵を作らないと始まらない。

認証鍵を作る。

Macの場合

ターミナルを起動する。

起動したら下記コマンドを入力。

$ ssh-keygen エンターキー

するとどこに鍵を作るか聞かれるので、そのままエンターを返す。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): エンターキー

パスワードを聞かれるので、パスワードを返す。

Enter passphrase (empty for no passphrase): パスワードを入力

2度聞かれるので同じパスワードを返す。

これで鍵は作成された。

Finderを開いてCommand+Shift+Gを押し、フォルダの場所を入力:に

~/.ssh

と入力し、.sshフォルダに移動。

key

.sshフォルダは隠しフォルダのため、通常の設定だと見ることが出来ないのでこういう移動をする。

.sshフォルダを開いたら、フォルダ内のid_rsa.pub(公開鍵)をテキストエディタで開く。

key-1

中のテキストをコピーする。

Windows(TeraTerm)の場合

TeraTermを開き、設定→SSH鍵生成(N)…をクリック。

key

生成(G)をクリックし、鍵を作ったら鍵のパスフレーズ:とパスフレーズの確認:に同一のパスワードを入力し、公開鍵の保存、秘密鍵の保存をクリックして鍵を保存する。

鍵を保存する場所を聞かれるが、今回はドキュメント上に保存。

key

ドキュメントフォルダ内にあるid_rsa.pub(公開鍵)をテキストエディタで開き、中のテキストをコピーする。

VPSでの設定

公開鍵用ディレクトリの作成

ログインしてもrootにならず、まずディレクトリの作成。

[kuzunoha@ ~]$ mkdir .ssh エンターキー

ディレクトリ.sshが作成された。

公開鍵の作成

先ほど生成した公開鍵をVPSにコピーする。

[kuzunoha@ ~]$ vi ~/.ssh/authorized_keys エンターキー

まっさらなファイルが開くので、コピーした公開鍵のテキストをペーストする。

貼り付けたら:wqで保存。

必ず間違い無くコピーされているか確認すること!

間違っているとログイン出来ず、悲惨なことになる。

権限をrootに変更

【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

での設定によりsshでのrootログインを禁止したので、スーパーユーザー(root)に権限を昇格させる。

[kuzunoha(ユーザー名)@ ~]$ su エンターキー

rootバスワードを入力する。

[root@ kuzunoha]#

になればrootに変更された。

カレントディレクトリに移動。

[root@ kuzunoha]# cd エンターキー

カレントディレクトリに移動し、rootでログインした時と同じ

[root@ ~]#

になる。

パーミッションの変更

さっき作ったディレクトリと公開鍵のパーミッションを変更する。

[root@ ~]# chmod 700 /home/ユーザー名/.ssh/  エンターキー

[root@ ~]# chmod 600 /home/ユーザー名/.ssh/authorized_keys エンターキー

これでパーミッションは変更された。

sshdの編集

sshdを認証鍵に対応させる。

[root@ ~]# vim /etc/ssh/sshd_config エンターキー

42行目あたり

#PermitRootLogin no

#を削除し、

PermitRootLogin no

に変更。

47行目あたり

#RSAAuthentication yes

#を削除し、

RSAAuthentication yes

に変更。

48行目あたり

#PubkeyAuthentication yes

#を削除し、

PubkeyAuthentication yes

に変更。

49行目あたり

#AuthorizedKeysFile .ssh/authorized_keys

#を削除し、

AuthorizedKeysFile .ssh/authorized_keys

に変更。

64行目あたり

#PasswordAuthentication yes

#を削除してyesをnoに変更し

PasswordAuthentication no

に変更。

65行目あたり

#PermitEmptyPasswords no

#を削除し、

PermitEmptyPasswords no

に変更。

96行目あたり

#UsePAM no

#を削除し、

UsePAM no

に変更。

97行目あたり

UsePAM yes

に#をつけてコメントアウトし、

#UsePAM yes

に変更。

すべて変更したら:wqで保存。

sshdの再起動

変更を適用するため、sshdを再起動する。

[root@ ~]# service sshd restart エンターキー

エラーも出ず再起動すればVPSの設定は終了。

まだターミナルのセッションは閉じず維持しておく事!

ログインしてみよう

Macの場合

コンソールでログインする場合は、いつもどおりログインする。

$ ssh -p 10022 ユーザー名@IPアドレス エンターキー

Moshの場合、キーの場所をConfigに書き入れる必要がある。

$ vi ~/.ssh/config エンターキー

開いたら下記のようにIdentityFile ~/.ssh/id_rsaを書き足す。

Host vps
HostName VPSのIPアドレス又はドメイン名
User VPSログインユーザー名
Port 10022
IdentityFile ~/.ssh/id_rsa

パスフレーズを聞かれるので、キーを作った時のパスワードを入力してログインする。

うまくログインできたら成功。

出来なかったら再度見直す。

そのために設定終了後も修正できるよう、セッションを閉じていない。

Windowsの場合

TeraTermでログインする時に、パスフレーズは認証鍵を作った時のパスワードを入力し、RSA/DSA鍵を使うにチェックを付け、秘密鍵の場所を指定する。

ドキュメントフォルダに保存していれば、秘密鍵(k):ボタンを押せば一発で出てくると思う。

key

ログイン出来れば成功。

短いパスワードの人はやっておいたほうがいい

VPSは常日頃から攻撃されているので、しょぼいパスワードにしているとクラックされる。

そんなことをされたら個人情報をたっぷり抜き取られるので、パスワードを長くするか、認証鍵方式でのログインをおすすめする。

でも、鍵は無くさないようにSDカードにでも保存して大事な物入れにでも入れておこう。

秘密鍵を別のMacでも使う場合は、認証鍵id_rsaを別のMacの~/.ssh/にコピーした後、

$ chmod 600 ~/.ssh/id_rsa エンターキー

を行なってパーミッションの変更するのを忘れずに。

しないとログイン出来ない。

stunnelに正規のSSL証明書を適用する

stunnel


せっかく正規のSSL証明書をゲットしたので、imotenの送信メールをSSL化してくれているソフトStunnelにも適用してみよう!
という記事。
ま、別に正規のSSL証明書にしても対して意味は無いんだけどw
実用性は特になく、自己満足の世界なので別にしなくても構いません。



※注意

この設定はブログ主はさくらインターネットのVPS(CentOS6)での環境で行なっています。


【iPhone】imotenの送信メールをSSL化する【docomoメール】


VPSに無料の認証済みSSL証明書をインストールする



権限をrootに変更


【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

での設定によりsshでのrootログインを禁止したので、スーパーユーザー(root)に権限を昇格させる。


[kuzunoha(ユーザー名)@ ~]$ su エンターキー


rootバスワードを入力する。


[root@ kuzunoha]#


になればrootに変更された。

カレントディレクトリに移動。


[root@ kuzunoha]# cd エンターキー


カレントディレクトリに移動し、rootでログインした時と同じ


[root@ ~]#


になる。



ルート証明書と中間証明書の結合


Stunnelにルート証明書と中間証明書を認識させるため、一つにまとめる。

証明書を保存しているディレクトリに移動。

[root@ ~]# cd /etc/pki/tls/certs/ エンターキー


ディレクトリcertsへ移動した。



証明書の結合


中間証明書sub.class1.server.ca.pem ルート証明書ca.pemを結合した証明書stunnel.pemを作成する。


[root@ certs]# cat sub.class1.server.ca.pem ca.pem > stunnel.pem エンターキー


stunnel.pemが作成された。



stunnelに証明書を適用


stunnelに正規の証明書を適用する。


[root@ ~]# vi /etc/stunnel/stunnel.conf エンターキー


以下2行を一番上に挿入。


CAfile=/etc/pki/tls/certs/stunnel.pem
key=/etc/pki/tls/certs/server.key


以下を書き換え。


cert=/etc/pki/tls/certs/startssl.crt


:wqで保存。


stunnelを再起動する。


[root@ ~]# /etc/init.d/stunnel start エンターキー


[OK]が出れば成功。



iPhoneでの設定


設定→メール/連絡先/カレンダー→imotenのアカウント→送信メールサーバーのSMTPをタップ。

送信メールサーバーのホスト名をマイドメインに変更。


Stunnel



送信テストし、届けば成功。



あまり意味は無いけどね


メール送信の時にいちいちWarningが出るわけじゃないので、変えても変えなくても使い勝手は変わらない。

完全に自己満足の世界だけど、どうしても正規のSSL証明書を使いたい!という方はどうぞ。


VPSに無料の認証済みSSL証明書をインストールする

startssl


難産!!圧倒的難産!!

自分の知識不足のせいでひどい目にあったものの、なんとかSSL証明書をインストールできた。

非常に快適だわ。

いちいち注意書き出てこないのが良すぎ。

しかも、Textasticのような公的証明書しかWebDAVに接続できないアプリも接続できた。

超絶快適です。


※注意!


ブログ主はさくらインターネットのVPS(CentOS6)での環境で行なっています。

今回の設定は下記の設定を終了したものとして書いています。


【SSL証明書】VPSにメールサーバーを設定する【取得用】


【VPSに】ドメインを取ろう【割り当て】


【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】


【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】


【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】


【オレオレ証明書】自作WebDAVサーバーにWindows7で接続する【Windows7】



StartSSLにアクセス


まず、無料でSSL証明書を発行してくれるありがたいサイト、StartSSLにアクセスし、StartSSL Freeをクリックする。


Startssl



Certificate Control Panel.をクリック。


Startssl 1



Sign-upをクリック。


Startssl 2



個人情報の入力


個人情報を入力。

すべてローマ字で入力すること。


First, Last Name:名前 苗字

Complete Home Address(Street, House, Number):市町村や区、町村、番地の順

Zip, Locality/Place:郵便番号

Country:国

State/Region **:都道府県

Phone:電話番号


書き方が外国仕様。

例)0123−45−6789だと、+81−123−45−6789になる。

Email *:適当なメールアドレス。自分のメールサーバーでなくて良い。


Startssl 3



すると登録したメールにStartSSLからコードが書いたメールが届くので、それを貼り付ける。


Startssl 4



貼りつけたらcontinue。


Startssl 5



StartSSLとメールでやり取り


6時間以内にメールするよ!みたいなメッセージが出てくるので、しばらく待つとメールが届く。


This electronic mail message was created by StartCom’s Administration Personnel

Thank you for registering with StartSSL! It seems that you provided us the address details of an organization. However our terms and conditions require from our subscribers to disclose the correct and complete address of residence. Please reply to this message and send us your personal details including correct phone number!


※葛葉訳


ヘイ!Youの個人情報がマジもんなのかこのメールにさっき送った個人情報を返信して証明してみてくれ!


ってことなので、個人情報を入力した時に入力したすべての情報を入力して返信する。

文章は多少違うのが届くかもしれないが、内容は同じ。

不安ならGoogle翻訳でも使ってくれればわかると思う。


自分の場合は、

Hallo, XXX XXXX.(担当者)

My address is

katsushikaku kameari 1-1-1
125,0061
japan
tokyo
+81-3-1234-5678

Regards,
Kyoji Kuzunoha


と返信した。

すると、ブログ主の場合は、


Hello,

Is this your home address?!


と疑いのメールが届いたので、


Hello,

Yes.It’s my home address.


と返したら信じてくれた。

すると、


Your request for an account at StartSSL™ (www.startssl.com) has been approved and is available during the next 24 hours at the following location:

https://www.startssl.com/?app=12&action=release&id=400399&auth=xxxxxxx

The verification code in order to continue the process is xxxxxxxx

Thank you!


とメールが届くので、長いURLをクリックする。



StartSSLへのログイン用SSL証明書の作成


StartSSLにログインするための証明書を作る。

この時に作成した証明書がインストールされているマシンでしかStartSSLにログイン出来ないので気をつける事!

暗号化セキュリティレベルはデフォルトの高でよい。

気になるなら最高にしたらいいと思う。

ブログ主は高で設定しているので、変えて繋がらない!とか言われても知りません。


Startssl 6



installをクリックすると、そのマシンにログイン用SSL証明書がインストールされる。


Startssl 7



Finichをクリックして終了。



Startssl 8



Validations Wizardでの設定


今度はAuthenticateをクリック。


Startssl 9



Validations Wizardをクリック。


Startssl 10


Domain Name Validationを選択してcontinueをクリック。


Startssl 12



取得したドメイン名を入力。


Startssl 13



ここで前作ったメールサーバーが必要になる。

メールアドレスが4択だが、決められたものになっているので、前回作ったアカウント、hostmaster@マイドメインを選択してcontinue。


Startssl 14



すると、hostmaster@〜にメールが届く。


This mail is intended for the person who requested verification of domain control at StartSSL™ (http://www.startssl.com).

Your verification code is XXXXXXXXXXX
Copy and paste this code now into the form at your open browser window.

Thank you!


アクティベーションコードが書いてあるので、貼り付けてcontinueをクリックすると、ドメインが認証されるのでFinishをクリック。


Startssl 15



server.keyの確認


ここでいきなりVPS。


権限をrootに変更


【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

での設定によりsshでのrootログインを禁止したので、スーパーユーザー(root)に権限を昇格させる。


[kuzunoha(ユーザー名)@ ~]$ su エンターキー


rootバスワードを入力する。


[root@ kuzunoha]#


になればrootに変更された。

カレントディレクトリに移動。


[root@ kuzunoha]# cd エンターキー


カレントディレクトリに移動し、rootでログインした時と同じ


[root@ ~]#


になる。



server.csrを開く


WebDAVを設定した時に作った秘密鍵server.csrを開く。


[root@ ~]# vim /etc/pki/tls/certs/server.csr エンターキー


すると、


—–BEGIN RSA PRIVATE KEY—–
N1gir26eVoRgdIfAlNYPSXx1YTWexVga8cD+IdEcN3hjDziVsa4jIFg3eFD3Bgwz
vST7W/gc870X63+Ec2WDSseBK23bY2xDUl6nOEXTx78uwVfMYoMZOXVq99ow6eSq
cKbqJNJ+XqWBJRiNQ6ba2P7MSAgZllNhTtfCp2QZaf6yc/5TahOC3vmcw7wVQaTM
nw1qehBsk+6x8cIeBkRRO03RWgzw0ETLLdEEbD6uU7jcvImWR8AgfsOphxCzAcJa
QOtaXxkAqQ7AopuJKF0EYWB7bdBTsSwr6VDHEc0W0UnQzkrplaJ9cjEHPdLDqC9E

—–END RSA PRIVATE KEY—–


と訳の分からないコードが書いてあるが、


—–BEGIN RSA PRIVATE KEY—–

から

—–END RSA PRIVATE KEY—–


までをすべてコピーし、メモ帳にでも貼り付けておこう。


とりあえずVPSはここまで。

またStartSSLに戻る。



Certificates Wizardでの設定


Certificates Wizardをクリックする。


StartSSL 16



Web Server SSL/TLS Certificateを選択。


Startssl 17



Skipをクリック。


Startssl 18



VPSで確認したserver.csrのコードを貼り付けてcontinueをクリック。


Startssl 18 1



多分マイドメインが選択されていると思うが、確認してcontinueをクリック。


Startssl 21



サブドメインの入力。

なんでも良い。

ブログ主はwwwを指定した。

StartSSLはmydomain.comの他に、xxx.mydomain.comのxxxの部分(サブドメイン)までSSL化してくれる。

一つしか指定できないが、なにか指定しなければならないのでwwwとでも入力しておこう。


Startssl 22



continueをクリック。


Startssl 23



ToolBoxでの設定


しばらくメール待っとけっていう英文が出てくるので、しばし待つと下記のようなメールが届く。


This mail concerns the digital certificate you requested from the StartCom Certification Authority (http://www.startssl.com). Your certificate with serial number 1111111 has been signed and is available at the Control Panel:

https://www.startssl.com/?app=12

Please login to your account and select from the Tool Box tab the section Retrieve Certificate. The pending certificate is marked with a green colored label.

Thank you!


届いたらツールボックスを開く。


Startssl 24



Retrieve Certificateをクリック。


Startssl 25



www.マイドメイン(Server – Class 1 – 〜)

を選択してcontinue


Startssl 26



ここに書いてあるコードが認証済みSSL証明書になる。

これをすべてコピーし、メモ帳に貼り付け。

startssl.crtと言う名前で保存する。


Startssl 27



認証済み証明書をVPSにアップロード


ここからまたVPS。


startssl.crtをVPSにアップロードし、ディレクトリ/etc/pki/tls/certs/に移動する。

WebDAVに入れてもいいし、Cyberduckを使うなりしてアップロード。

startssl.crtがあるディレクトリで


[root@ ~]# cp startssl.crt /etc/pki/tls/certs/ エンターキー


certsディレクトリにコピーされた。



中間証明書とルート証明書をダウンロード


SSL証明書があるディレクトリへ移動。


[root@ ~]# cd /etc/pki/tls/certs/ エンターキー


ディレクトリcertsへ移動した。


中間証明書とルート証明書をダウンロードする。


[root@ certs~]# wget https://www.startssl.com/certs/ca.pem エンターキー

[root@ certs~]# wget https://www.startssl.com/certs/sub.class1.server.ca.pem エンターキー


ルート証明書ca.pem、中間証明書sub.class1.server.ca.pemがダウンロードされた。



アクセス権の変更


証明書のアクセス権を変更する。


[root@ certs~]# chmod 400 startssl.crt エンターキー

[root@ certs~]# chmod 400 ca.pem エンターキー

[root@ certs~]# chmod 400 sub.class1.server.ca.pem エンターキー


証明書用にアクセス権が変更された。



Apacheのssl.confの書き換え


最後にApacheにSSL証明書を認識させる。


[root@ ~]# vim /etc/httpd/conf.d/ssl.conf エンターキー


105行目

SSLCertificateFile /etc/pki/tls/certs/server.pem

105 SSLCertificateFile /etc/pki/tls/certs/startssl.crt

に書き換え。


121行目

#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

SSLCertificateChainFile /etc/pki/tls/certs/sub.class1.server.ca.pem

に書き換え。

#も消すこと。


127行目

#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

SSLCACertificateFile /etc/pki/tls/certs/ca.pem

に書き換え。

#も消す。

:wqで終了。


変更を反映させるため、Apacheを再起動する。


[root@ ~]# service httpd restart エンターキー


きちんと起動すれば認証済み証明書のインストールは完了。



アクセスしてみよう


いつも出る鬱陶しいエラーが出なければ見事に適用されてる。

オレオレ証明書に対応していないアプリでも見事に認識するので、死蔵してたアプリでも試してみよう。

何かミスがあったらコメント下さい。


DTIのVPSにiptables(ファイアウォール)を適用する

firewall

DTIのVPSにimotenを設定してdocomoメールが送受信出来るようになったのはいいが、そのまま放置しておくと悪意のあるユーザーに乗っ取られる可能性もある。
可能性を減らすためにもファイアウォールくらいは設定しておこう。

セキュリティを高く保ち、乗っ取りを防ぐのはVPSユーザーの大切な義務。
必ず適用してセキュリティを高く保つ努力をしよう。


※注意

下記設定のどちらかを終了したものとして書いています。

【Gmail】CentOS5.x(32bit)でimotenを設定して@docomo.ne.jpメールを使う【主にDTI編】

【imoten】SIMフリーiPhoneで、iモードメール@docomo.ne.jpを使ってみた。設定編【yahoo!版】



iptables(ファイアウォール)のインストール


VPSにiptablesにiptablesをインストールする。

[root@ ~]# yum -y install iptables エンターキー

これでiptablesがインストールされた。



iptablesの編集


[root@ ~]# vi /etc/sysconfig/iptables エンターキー

何も書いていないまっさらなファイルが開くので、下記をコピペする。


—ここから—

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FIREWALL – [0:0]

-A INPUT -j FIREWALL
-A FORWARD -j FIREWALL
-A FIREWALL -i lo -j ACCEPT
-A FIREWALL -s 10.0.0.0/8 -j DROP
-A FIREWALL -s 172.16.0.0/12 -j DROP
-A FIREWALL -s 192.168.0.0/16 -j DROP
-A FIREWALL -d 255.255.255.255 -j DROP
-A FIREWALL -d 224.0.0.1 -j DROP
-A FIREWALL -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 4 -j ACCEPT
-A FIREWALL -p udp –sport 53 -j ACCEPT
-A FIREWALL -p icmp –icmp-type any -j ACCEPT
-A FIREWALL -p 50 -j ACCEPT
-A FIREWALL -p 51 -j ACCEPT
-A FIREWALL -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A FIREWALL -p udp -m udp –dport 631 -j ACCEPT
-A FIREWALL -p tcp -m tcp –dport 631 -j ACCEPT
-A FIREWALL -m state –state ESTABLISHED,RELATED -j ACCEPT

# imoten 587, SSH 3843
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 587 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 3843 -j ACCEPT

-A FIREWALL -j REJECT –reject-with icmp-host-prohibited

COMMIT

—ここまで—


-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 3843 -j ACCEPT

ここの部分はリモートログインをするためのポートを指定している。
TeraTermでログインする時のポートと言うところに記入する数字。
SSHのポートはDTIでの初期設定の3843にしてあるが、別の番号にしているのならその番号を記入すること。

ここを間違うと遠隔ログインができなくなって泣きを見る。


-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 587 -j ACCEPT


ここの部分はメールのやり取りに使うポートを指定している。
メールは587のポートを介して使っているが、送信メールをSSL化している場合は465に変えよう。

コピペをするときに注意したいのは、コードに無駄なスペースがあってはならない。
COMMIT以降には改行もあってはならない。

これだけは注意すること!
無駄なスペースや改行があるとエラーが出て起動しない。



iptablesの再起動


[root@ ~]# /etc/rc.d/init.d/iptables start エンターキー


でiptablesをリスタートする。


iptables: ファイアウォールルールを適用中:       [ OK ]


と出れば成功。
もし失敗したら、iptablesのなかに無駄なスペースがないか探し、再起動する。


[root@ ~]# /etc/rc.d/init.d/iptables restart エンターキー


iptables: ファイアウォールルールを消去中:       [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter   [ OK ]
iptables: モジュールを取り外し中:           [ OK ]
iptables: ファイアウォールルールを適用中:       [ OK ]

と出力されれば成功。


[root@ ~]# iptables -L エンターキー


を行い、ずらっと文字列が出てくれば起動している。



実は結構攻撃されているVPS


借りたままだとなんのセキュリティ設定もされていない。
乗っ取られるとスパムメールをビシバシ送られたりするので気をつけよう。


【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】

root

ファイアウォールも設定し、VPSサーバーもなかなか堅牢になってきた。
ただし、自分が遠隔でログイン出来るということは、パスワードさえわかれば誰でもログイン出来てしまうということなんだよね。
しかも、rootを開放していれば、ユーザー名がrootとわかっているんだから、パスワードさえ解析すればログインで来てしまう。
これはあまりいい状態とは言えない。
なので、別ユーザーを作り、そのユーザーでログインしてからrootになるように変更する。
そうすると、ユーザー名もわからないとログイン出来ないし、そのユーザー名がルートになれるかどうかもわからないから、ハッキングする側にとってはかなりハッキングがしにくくなる。

※注意
今回の設定は下記の記事の設定を終了したものとして書いています。

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【Gmail】CentOS6.x(64bit)でimotenを設定して@docomo.ne.jpメールを使う【主にさくらインターネット編】

【iPhone】imotenの送信メールをSSL化する【docomoメール】

【オレオレ証明書】自作WebDAVサーバーにWindows7で接続する【Windows7】

【WebDAV】VPSをミュージックストリーミングサーバーにする【Subsonic】

【MyCloud】さくらVPSをAirVideoサーバーにする【ストリーミング】

【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】

ユーザーの作成とパスワードの設定

まず、ログインユーザーを作成する。

[root@ ~]# useradd nao(作成するユーザー名)

これでユーザー kuzunoha が作成された。
作りたいユーザー名で作成しよう。
新しく作ったユーザーにパスワードを設定する。

[root@ ~]# passwd nao(パスワードを設定するユーザー名)

ユーザー kuzunoha のパスワードを変更。
新しいパスワード:
と出てくるので、パスワードを入力。
なるべく長いものが望ましい。
新しいパスワードを再入力してください:
と出てくるので、もう1度入力する。
passwd: 全ての認証トークンが正しく更新できました。
と出れば正しく設定された。

ユーザーがrootになれるように設定する

ユーザーをwheelグループに追加

新しく作ったユーザーをwheelグループに追加し、root権限を取得できるようにする。

[root@ ~]# usermod -G wheel nao(wheelグループに追加するユーザー名)

ユーザーnaoはwheelグループに追加された。

rootになれるグループをwheelのみに設定

su(スーパーユーザー)の設定を変更する。

[root@ ~]# visudo

テキストが開くが、126行目(下から14行目)の

# %wheel   ALL=(ALL) ALL

の#を消し、

%wheel   ALL=(ALL) ALL

にし、:wqで保存する。

wheelグループのみをスーパーユーザー(root)になれるよう設定

[root@ ~]# vi /etc/pam.d/su

開いたテキストの、

#auth include system-auth

の#を消し、

auth include system-auth

にする。

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
#auth            include         system-auth ←ここの#を消す
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so


:wqで終了。

新しく作ったユーザーでログインしてみよう

実際作ったユーザーでログインする。
rootではなく、ユーザー名でログインし、ログイン出来るか確認しよう。
ログイン出来れば

[nao(ユーザー名)@ ~]$ 

と、別アカウントでログインされる。

スーパーユーザー(root)になってみよう

一般ユーザーをrootへ昇格させる。

[nao@ ~]$ su

rootのパスワードが求められるので、rootのパスワードを入力。

[root@ nao]#

これでrootになった。

rootログインの停止

一般ユーザーからログイン→root化が確認できた所で、sshでのrootログインを停止する。
sshdの設定ファイルを編集する。

[root@ ~]# vi /etc/ssh/sshd_config

42行目にある、

PermitRootLogin yes

PermitRootLogin no

に変更する。

sshdを再起動する

変更を適用するため、再起動する。

[root@ ~]# service sshd restart
sshd を停止中:       [  OK  ]
sshd を起動中:       [  OK  ]

これで変更は適用された。

sshからrootでログインしてみよう

パスワードが求められ、あれっ?って思うが、何度入力してもログインできないはずだ。
これで設定は完了。
これからは、一般ユーザーでログイン後、root化するように変更された。
rootになるにはログインするたびにsuをしなければならないが、セキュリティアップのため我慢。

インターネット上にあるサーバーであることを忘れずに

VPSは非常に自由で便利である反面、常に誰かに狙われているということも忘れずに。
機密データなどは絶対にローカルに保存し、インターネットに上げてはならない。
便利さは危険さを伴う。
面倒でも大事なデータは手元に保存すること。

【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】

firewall


VPSにデータを突っ込んで楽しく使えるようになったけど、自由な分、すべての管理を自分でやらなきゃいけない。
セキュリティを高く保ち、乗っ取りを防ぐのはユーザーの大切な義務。
必ず適用してセキュリティを高く保つ努力をしよう。

※注意

今回の設定は下記の記事の設定を終了したものとして書いています。
特にSSHの設定ポートの変更はセキュリティ上大変重要なので、必ず行っておいてください。
imotenを使っている人は送信メールのSSL化を必ず終わらせてください。

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【Gmail】CentOS6.x(64bit)でimotenを設定して@docomo.ne.jpメールを使う【主にさくらインターネット編】

【iPhone】imotenの送信メールをSSL化する【docomoメール】

【オレオレ証明書】自作WebDAVサーバーにWindows7で接続する【Windows7】

【WebDAV】VPSをミュージックストリーミングサーバーにする【Subsonic】

【MyCloud】さくらVPSをAirVideoサーバーにする【ストリーミング】



iptables(ファイアウォール)の設定


さくらのVPSにはiptablesがすでにインストールしてあり、自動起動もするのだが、設定は何もされていない。
全くの無意味な存在。
なのでパケットフィルタリングの設定をする必要がある。



iptablesの編集


[root@ ~]# vi /etc/sysconfig/iptables エンターキー


何も書いていないまっさらなファイルが開くので、下記をコピペする。


—ここから—

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FIREWALL – [0:0]

-A INPUT -j FIREWALL
-A FORWARD -j FIREWALL
-A FIREWALL -i lo -j ACCEPT
-A FIREWALL -s 10.0.0.0/8 -j DROP
-A FIREWALL -s 172.16.0.0/12 -j DROP
-A FIREWALL -s 192.168.0.0/16 -j DROP
-A FIREWALL -d 255.255.255.255 -j DROP
-A FIREWALL -d 224.0.0.1 -j DROP
-A FIREWALL -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 4 -j ACCEPT
-A FIREWALL -p udp –sport 53 -j ACCEPT
-A FIREWALL -p icmp –icmp-type any -j ACCEPT
-A FIREWALL -p 50 -j ACCEPT
-A FIREWALL -p 51 -j ACCEPT
-A FIREWALL -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A FIREWALL -p udp -m udp –dport 631 -j ACCEPT
-A FIREWALL -p tcp -m tcp –dport 631 -j ACCEPT
-A FIREWALL -m state –state ESTABLISHED,RELATED -j ACCEPT

# HTTPS 443, mail 465, SSH 10022, Subsonic 4040, AirVideo 45631
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 465 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 10022 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 4040 -j ACCEPT
-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 45631 -j ACCEPT

-A FIREWALL -j REJECT –reject-with icmp-host-prohibited

COMMIT

—ここまで—


このコピペだとSSHのポートは10022に変更してあるが、別の番号にしているのならその番号を記入すること。
ここを間違うと遠隔ログインができなくなって泣きを見る。
SSHの設定ポートの変更の記事は10022にしてあるから10022にしてある。

SubSonicのデフォルトポートが8080、AirVideoが45631なので、そのまま記述している。
変えているのならそこも変更。

Webサーバーにもしていないので、80番も閉じている。
穴は少ないほうがいい。
WebDAVは443、メールは465のSSLポートを介して使う。


もし送信メールのSSL化なんてイラネって人は、

-A FIREWALL -m state –state NEW -m tcp -p tcp –dport 587 -j ACCEPT

を#HTTPS 443〜の下の行に足そう。


コピペをするときに注意したいのは、コードに無駄なスペースがあってはならない。
COMMIT以降には改行もあってはならない。

これだけは注意すること!
無駄なスペースや改行があるとエラーが出て起動しない。



iptablesの再起動


[root@ ~]# /etc/rc.d/init.d/iptables restart エンターキー


でiptablesをリスタートする。


iptables: ファイアウォールルールを消去中:       [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter   [ OK ]
iptables: モジュールを取り外し中:           [ OK ]
iptables: ファイアウォールルールを適用中:       [ OK ]


と出れば成功。


[root@ ~]# iptables -L エンターキー


を行い、ずらっと文字列が出てくれば起動している。



実は結構攻撃されているVPS


sshを22番のままにしておくと、自動攻撃ツールが22番にビシバシ攻撃してきている。
パスワードを解析されると乗っ取られてしまうので、可及的速やかにポートだけでも変更しよう。


【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

performance

さくらインターネットの社長ブログを読んでいたら、VPSサーバーのパフォーマンスを向上させる方法が書いてあったので、自分なりに書き換えて記事にしてみまする。

この人は18歳でレンタルサーバー会社を創業してここまでやってきたってのは凄いもんだね。
大したもんです。

あくまで抜粋なので、証明書云々の部分は削除してます。
あの設定をするとiPhoneアプリでリモートログインができなくなってしまうので。
参考記事はこれです。
さくらのサーバーだけでなく、DTIのサーバーを借りている人も参考になると思います。

※注意!
imotenの設定記事に目を通し、Viエディタの使い方がある程度わかるものとみなして書いています。

セキュリティレベルを上げる設定

sshのポートを変える

ターミナルでログインをする時は、初期設定ではsshを使って22番ポートに接続するようになっている。
22番はsshですよ、と公開されているポートで、実際sshでしか使用することはできない。
そういうふうに決まっている(割り振られている)ポートなんだよね。

だから、クラッカーもそこを狙って攻撃してくるわけ。
だからそのポートそのものを変え、sshのポートを22番から別の数字に変更し、22番ポートを攻撃しても無駄ってことにしてしまおうというのがこの変更の趣旨。

不安なら、別にしなくてもいい。

まず、ターミナルにログインし、sshのコンフィグを開く。

[root@ ~]# vi /etc/ssh/sshd_config エンターキー

色々ズラズラ出てくるので、#Prot 22 の下に

Port 10022

と付け加える。

Ssh

これで終了。
:wqでviエディタを終了させる。
サーバーの再起動をすれば適用される。

ログインするときはポートを10022に変更してターミナルでログインしよう。

不要なプロセスを起動しないよう設定する

CentOSは結構使っていないプロセスも立ち上がっているので、それをすべて起動しないように設定し、使用できるメモリ領域を増やす。

さくらのVPSの場合はすでに無効化されている。

[root@ ~]# chkconfig auditd off エンターキー

[root@ ~]# chkconfig autofs off エンターキー

[root@ ~]# chkconfig avahi-daemon off エンターキー

[root@ ~]# chkconfig bluetooth off エンターキー

[root@ ~]# chkconfig cups off エンターキー

[root@ ~]# chkconfig firstboot off エンターキー

[root@ ~]# chkconfig gpm off エンターキー

[root@ ~]# chkconfig haldaemon off エンターキー

[root@ ~]# chkconfig hidd off エンターキー

[root@ ~]# chkconfig isdn off エンターキー

[root@ ~]# chkconfig kudzu off エンターキー

[root@ ~]# chkconfig lvm2-monitor off エンターキー

[root@ ~]# chkconfig mcstrans off エンターキー

[root@ ~]# chkconfig mdmonitor off エンターキー

[root@ ~]# chkconfig messagebus off エンターキー

[root@ ~]# chkconfig netfs off エンターキー

[root@ ~]# chkconfig nfslock off エンターキー

[root@ ~]# chkconfig pcscd off エンターキー

[root@ ~]# chkconfig portmap off エンターキー

[root@ ~]# chkconfig rawdevices off エンターキー

[root@ ~]# chkconfig restorecond off エンターキー

[root@ ~]# chkconfig rpcgssd off エンターキー

[root@ ~]# chkconfig rpcidmapd off エンターキー

[root@ ~]# chkconfig smartd off エンターキー

[root@ ~]# chkconfig xfs off エンターキー

[root@ ~]# chkconfig yum-updatesd off エンターキー

エンターキーがゲシュタルト崩壊してくるけど着にせず自動起動プロセスをOFFにしていく。
これでもうこれらのプロセスは次回起動時に立ち上がらない。

使っていないコンソールプログラムを無効にする

使っていないプログラムをOFFにすることで、CPU使用率を引き下げる。

※さくらインターネットのVPSの場合はすでに無効化されている。

[root@ ~]# vi /etc/inittab エンターキー

下記のコードのあたまに#をつけ、使用しないようにする。

2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6


#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

に変更。

Inittab
:wqで終了。

selinuxを無効にする

同様にselinuxもOFFにする。

※さくらインターネットのVPSの場合はすでに無効化されている。

[root@ ~]# vi /etc/sysconfig/selinux エンターキー

いろいろ文字が出てくるので、下記の部分をdisabledに変更。

SELINUX=disabled

Selinux

:wqで終了。

サーバーをリブートしてチューニング設定は終了。

[root@ ~]# shutdown -r now エンターキー

これでVPSサーバーのメモリ領域とパフォーマンスは改善されたはず。
フリーズしやすいDTIのサーバーはやったほうがいい。

次回ログイン時にポートの変更を忘れずに

ターミナルでのログインポートが22番から10022番に変更されているので、ログイン時はターミナルのポート番号の変更を忘れずに。

Macの場合はターミナルの新規リモート接続の下の欄に、

ssh -p 10022 root@IPアドレス

と入力すればログイン出来る。

Ssh 2

Windows(TeraTerm)の場合はTCPポート#(P)の欄に10022と入力すればログイン出来る。

Ssh 1

これでDTIを使っている人も安定すればいいけど。
ま、docomoがMMSに対応する気が全く無いので、VPSサーバーとは長い付き合いになりそうだし、大事に使ってやらないとね・・・(-_-;)w