Android

コンピュータ関連のことを、出来る時に、出来ることだけ。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
前回でLAN内から接続できたので、インターネットから接続できるようにします。

インターネット接続環境は以下のとおり。
・回線
 NTT東日本 フレッツ光ネクスト
・プロバイダ
 インターリンク ZOOT NEXT for フレッツ光
・ルータ
 RT-S300NE(NTTのレンタル品)
※詳細な設定方法は「RT-S300NE機能詳細ガイド」をダウンロードし参照しました。

1.ルータ設定
RT-S300NEの設定方法はメーカー固有のものだと思うので、概要だけ。

「ZOOT NEXT for フレッツ光」は固定IPを割り当てられるサービスなので、既にルータには固定IPが振られている状態です。

固定IPマスカレード機能を使用し、固定IPの22番ポートへのアクセスを、sshサーバのIPアドレスの22番ポートに送信されるよう設定します。あわせてフィルタリング設定で、同様の通信を許可します。
※「機能詳細ガイド」の「設定例」→「外部にサーバを公開するには」に則って設定しました。


2.接続テスト
Android端末のWiFiをOFFにしてモバイルネットワークからインターネットに接続できる状態にし、LAN内と同様、固定IP:22番ポートに向けて、公開鍵認証で接続したところ・・・無事接続できました。
固定IPさえ持っていれば、特に難しいことはなさそうです。
sshクライアントは前回からいくつか試してみて、「VX ConnectBot」というツールが使いやすかったのでそれを使ってます。


3.iptables設定
とりあえずAndroid端末からの接続はできましたが、サーバを立てた状態で半日も放っておいたら、/var/log/secureに以下のログが100件弱記録されました。
「Received disconnect from xxx.xxx.xxx.xxx: 11: Bye Bye」
xxxの部分は接続元IPアドレスで、接続元は中国、インド、アメリカなど。どうやらログインを試みて失敗している様子。

公開鍵認証なので鍵ファイルが流出しない限りログインは出来ないと思いますが、念のためある程度は絞っておきたいところ。

今回はスマートフォンからの接続のみに絞ることにします。

現在のキャリアはソフトバンクなので、技術情報からスマートフォンの接続元IPアドレス範囲を確認。

126.163.0.0/16
126.192.0.0/16
126.193.0.0/16

上記IPアドレスからのssh接続を許可するように、iptablesに設定します。
# vi /etc/sysconfig/iptables

以下の記述を削除
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT ①

以下の記述を追加
-A INPUT -s 192.168.x.x/24 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ②
-A INPUT -s 126.163.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③
-A INPUT -s 126.192.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③
-A INPUT -s 126.193.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③


それぞれの意味は以下のとおり。
①tcp22番ポート宛の新規の接続を許可(IPの指定は無しなので何処からでも接続可能)
 コレは削除します。
②LAN用の設定。送信元IP(192.168.x.x=ローカルIP)からのtcp22番ポート宛の
 新規接続を許可。
③スマートフォン用の設定。事前に調べた送信元IPからのtcp22番ポート宛の
 新規接続を許可。

上記設定を入れてから1日確認しましたが、怪しい接続は無くなりました。


これで外出先からでもスマホを使ってサーバにログインできるようになりました♪

本来はフィルタリングはルータでやったほうが、より入り口に近いので望ましいんでしょうね。ただ高機能なルータでもないですし、サーバ側でフィルタリングすると、出先のPCから接続したいときとかに、スマホでちょいとiptablesの設定追加してあげれば接続できるようになるので、結構便利かなとも思ってます。

とりあえず以上、またスマホと連携していろいろやってみたいです。
スポンサーサイト
久々に更新

ふと、外出先のAndroid端末から自宅サーバを操作してみたい!と思いまして、試してみます。

AndroidのベースはLinuxなので、sshクライアントがあってネットワークが繋がっていれば、なにも特別なことは必要ないはずです。インターネットに公開することになるので、セキュリティにちょっと気を付けるくらい。

環境は以下のとおり
・sshサーバ
 CentOS6/Openssh5.3
・端末
DELL Streak SoftBank 001DL
・回線キャリア
 SoftBank
・Android2.2

1.サーバの設定
(1)sshdの設定
Opensshは大抵インストールされていると思うので、とりあえず設定から。
さすがにパスワードだと不安なので、公開鍵認証で接続するようにします。また、使わない機能はすべてOFFにします。
項目の詳細は以下のURLを参照しました。
SSHD_CONFIG (5)

vi /etc/ssh/sshd_config
・PubkeyAuthentication yes
→公開鍵認証を有効(デフォルトはコメントアウト)
・HostbasedAuthentication no
→ホストベース認証は無効(デフォルトはコメントアウト)
・PasswordAuthentication no
→パスワード認証は無効(デフォルトはyes)
・PermitRootLogin no
→rootでのログインは無効(デフォルトはコメントアウト)
・AcceptEnv ...
→クライアントから送られる環境変数のうち、使用するものを指定する・・らしいですが、Androidから接続する際に意味があるとは思えないので、すべてコメントアウトしました。
・X11Forwarding no
→リモートからsshを使用してのGUIアプリの使用は無効(デフォルトはyes)
・#Subsystem sftp /usr/libexec/openssh/sftp-server
→sftpは使うかどうか分からないので、とりあえずコメントアウトしました。

設定が終わったら、sshdを再起動します。
/etc/init.d/sshd restart


(2)rootにsuできるユーザの制限
公開鍵認証で接続したユーザ以外、rootユーザにsuできないようにします。
vi /etc/pam.d/su
以下の行のコメントアウトを外す
#auth required pam_wheel.so use_uid

usermod -G wheel <ユーザ名>
rootにsuできるユーザをwheelグループに追加

(3)sshdを再起動
再起動して設定を反映します。
/etc/init.d/sshd restart


(4)鍵ペアの作成
公開鍵認証で使用する鍵ペアを作成します。
ログインしたいユーザで作業します。

こちらを参照しました。

$ ssh-keygen -t rsa
パスフレーズを入力
$HOME/.ssh/に秘密鍵id_rsaと公開鍵id_rsa.pubの鍵ペアが作成される

$ cd $HOME/.ssh/
$ cat id_rsa.pub >> authorized_keys
autorized_keysファイルを作成

$ chmod 600 authorized_keys
パーミッションを変更

2.クライアントの設定
(1)sshクライアントのインストール
Marketから「Telnet 1.2.0」をダウンロードしてインストールしました。
他にも使いやすいソフトはあるかもしれませんが、とりあえずシンプルそう
なソフトにしました。

(2)公開鍵の準備
1.(4)で作成した秘密鍵id_rsaをAndroid端末に転送します。
 方法はなんでも良いですが、僕は一旦WindowsマシンにWinSCPで転送したあと、
 WifiでLANに接続したAndroid端末に、Windowsファイル共有で移動させました。


3.接続
まずはLAN内から接続できるかテスト。
「Telnet」でポートをsshに指定、秘密鍵ファイルを使って接続したところ、
問題なく接続できました。

あとはインターネットからつなげることが出来れば完成です。
それはまた次回♪

 | Copyright © ふたごパパのサーバ構築日記 All rights reserved. | 

 / Template by 無料ブログ テンプレート カスタマイズ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。