ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2019年2月22日金曜日

GCEのCent OSへログインするSSHポートを22番から変更する

Google Cloud Platform(以下GCP)のGoogle Compute Engine(以下GCE)で作成したVMインスタンスへアクセスする際のSSHポートを変更する。
今回は「22」から「20055」へ変更する。


GCEはVMインスタンスの上位にFWがあるため、設定変更箇所は下記の4箇所となる。

・GCPのファイアウォールルールに追加してVMに適用
・Cent OSのSELinuxにポリシー追加
・Cent OSのfirewalldに設定追加
・sshdにポート番号追加

その後疎通確認してから22番ポートを閉じていく。



■GCPのファイアウォールルールに追加する。

メニューの「VPCネットワーク」 - 「ファイアウォールルール」から「ファイアウォールルールを作成」から新規ルール作成画面に移る。

設定するのは下記の項目。

FW


名前」はわかりやすいように「allow-ssh20055」に設定

ターゲットタグ」を名称と同じにして、VMインスタンスへ適用する際にわかりやすくしてみた。任意なので自分がわかりやすければOK。

ソースIPの範囲」は「0.0.0.0/0

プロトコルとポート」は「指定したプロトコルとポート」から「tcp」にチェックを付けて「20055」を入力して保存。


VMインスタンスの編集から設定画面を開いて「ネットワークタグ」に先程作成したルールの「ターゲットタグ」を入力する。
VM


これでGCP上のファイアウォールルールでTCPの20055番ポートが空いた。




■SELinuxにポリシー追加

SELinuxの設定を変更するためVMにSSHでログインしてroot権限に移行する
$ sudo su -

SELinuxの状態を確認する。
# getenforce

Enforcing」と出れば有効化されているので作業を続ける。
設定がややこしいからと言って無効化するような無粋なことはしない。

SELinuxの設定変更には「semanage」コマンドを利用するが、今回立てたVMインスタンスのCent OSではすでにインストール済みだった為このまま続ける。

まずはSELinuxが許可しているSSHのポートを確認する。
# semanage port --list | grep ssh
semanage


tcpの22番ポートが許可されているので、これに今回追加する20055を追加する。
--add」オプションでポリシーを追加する。
# semanage port --add --type ssh_port_t --proto tcp 20055

設定が追加されているかを確認する。
# semanage port --list | grep ssh
SELinux20055


これでSELinuxのポリシーに20055番ポートの設定が追加された。
22番ポートが残っているが他の設定があるから一旦このままで。




■firewalldに設定追加

次にfirewalldの設定を変更する。
firewalldの稼働状況の確認から。
# systemctl status firewalld
firewalld


Active:の値がactive(running)となっているのでファイアウォールは有効になっている。
eth0のところにWARNINGが出ているが今回は無視しよう。

現状の確認としてファイアウォールが外に向けて公開しているサービスを確認する。
# firewall-cmd --list-services --zone=public --permanent
firewalld ssh


開放するポートを設定するが、この設定が入っているファイル「/usr/lib/firewalld/services/ssh.xml 」ではなく、
/etc/firewalld/services/」に「ssh.xml」を配置して設定を記述する必要がある。

既存のファイルを/etc/firewalld/services/にコピーする
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/


コピーした先のファイルに2005番ポートの設定を追加する。
# vi /etc/firewalld/services/ssh.xml
/etc/firewalld/services/ssh.xml


設定が完了したらfirewalldの設定を再読込させる。
# firewall-cmd --reload
reload


■sshdにポート番号を追加

最後にsshdにポート番号を追加する。
設定ファイルは「/etc/ssh/sshd_config」に記述されているのでこちらを編集する。

# vi /etc/ssh/sshd_config
上の方に#でコメントアウトしてある「#Port22」を下記に修正
Port 22
Port 20055
sshd_config


vimだとコメントアウトした文字色が背景色に近く見辛かったので今回はviで編集。
またその内vimの設定イジるか。

これで22番と20055番でsshへアクセスできるようになったはずなので、設定を再読込する。
# systemctl restart sshd


クライアントPC側の「.ssh」フォルダにある「config」ファイルのポート番号も忘れずに新しいポート番号に書き換えて、新しいポート番号でアクセスしてみる。
ssh20055


ここまでで新しく設定した20055番ポートでSSH接続できるようになった。
あとは残っている22番ポートの設定を無効化していけばいい。




■GCPのファイアウォールルールに追加

冒頭で行った新しいポート番号を登録する要領で22番ポートを拒否するルールを作成して、VMインスタンスへ適用する。
deny-ssh22


名前」はわかりやすいように「deny-ssh22」に設定

一致したときのアクション」を「拒否」に設定

ターゲットタグ」はこれも名前と同じモノに

ソースIPの範囲」は「0.0.0.0/0

プロトコルとポート」は「指定したプロトコルとポート」から「tcp」にチェックを付けて「20055」を入力して保存。

同様にVMインスタンスの編集から設定画面を開いて「ネットワークタグ」に先程作成したルールの「ターゲットタグ」を入力する。


また、ブラウザからのSSH接続はこのままでは出来ないが、
VMインスタンスのSSHの右にあるプルダウンメニューから「ブラウザウィンドウでカスタムポートを開く」を実行して、新しく設定した20055を入力すれば問題なく接続できた。
cloudshell 20055


実際の挙動としてはこれをやるだけで外部からの22番ポートでのSSH接続はできなくなる。

だからといって他の設定を置いておくのも気持ち悪いので22番ポートの設定を無効化していく。




■sshdから22番ポートを無効化

上で編集した「/etc/ssh/sshd_config」を編集する。

# vi /etc/ssh/sshd_config
22番ポートの情報をコメントアウト
#Port 22
#Port 22


設定を再読込する。
# systemctl restart sshd




firewalldから22番ポートを無効化

上で編集したファイルから22番ポートの記述を削除する。
# vi /etc/firewalld/services/ssh.xml
ssj.xml 22deny


firewalldの設定を再読込させる。
# firewall-cmd --reload




■SELinuxのポリシーから削除(出来なかった)

削除する場合は「semanage」コマンドで「--delete」オプションを利用する。
# semanage port --delete --type ssh_port_t --proto tcp 22
SELinux delete

とやってみたものの、
「ポート tcp/22 はポリシーに定義されているため、削除できません」
との事で削除出来なかった。


まぁこれで22番ポートのアクセスが出来ないことは確認できたので良しとしようか。

2019年2月19日火曜日

Windows10のPowerShellからGCPへのSSH接続

TwitterでWindows10 バージョン1803からOpenSSHが実装されてるらしいとの情報を見たので少し確認。

アプリと機能」から「オプション機能の管理」を確認すると確かに「OpenSSHクライアント」がインストールされている。

OpenSSH



せっかくなのでGoogle Cloud Platform(以下GCP)に無料枠でVMを作成してSSHで繋げて見ようかと。


GCP」に移動して自分のプロダクトへ移動して
Compute Engine」 - 「VMインスタンス」 から新規作成。

スペックはGCPの無料枠である「Always Free」の範囲内に収めるために以下の構成で。

リージョン:us-west1
ゾーン:us-west1-b
マシンタイプ:f1-micro(CPU:0.6GHz、メモリ:0.6GB)
OS:Cent OS 7 30GBの標準の永続ディスク

VM


ついでに外部公開用の固定IPもVMに紐付ける1個だけなら無料らしいので一緒に作成する。
global


作成したVMの右側にあるSSHを選べばブラウザからSSHでのアクセスは可能。
VMSSH



でもまぁコレじゃ面白くないのでWindowsから接続できるように準備する。
一応「OpenSSH」のマニュアルページを参照。


PowerShellを起動して以下コマンド実行
> ssh-keygen -t rsa -b 4096

-t で暗号方式を RSA に指定
-b で鍵の長さを 4096 に指定(デフォルト値は2048)
ssh-keygen


これでユーザフォルダ直下に「.ssh」フォルダが作成され、公開鍵と秘密鍵が生成された。
.ssh


以下コマンドを実行して公開鍵の内容を表示する。
> cat ~/.ssh/id_rsa.pub
rsa

ssh-rsa ** ~ ** == (ユーザ名)の様な表記で表示されるので全てコピペする。
もちろん該当ファイルをテキストエディタなどで開いても同様の物が見れる。


SSHで繋げたいVMを選んで編集画面に入ると「SSH認証鍵」の項目があるので、こちらの空欄に先程の文字列をそのままペーストする。


公開鍵


自動的に空欄の左側にSSHでのログイン用ユーザ名が表示されるが、
このVM内にも同じユーザ名で自動的にユーザを作成してくれる。

便利だ。

内容を確認したら保存ボタンで設定内容を更新。


PowerShellから下記コマンドでアクセスできるかを確認する。
> ssh (ユーザ名)@(IPアドレス) -i ~/.ssh/id_rsa




これでPowerShellからGCPのVMへSSHでログインできるようになったものの、毎回コレを入力するのは面倒なので「config」ファイルを作成する。

先程のログインで「known_hosts」ファイルが作成されていることも念の為確認。
こちらは接続したサーバ側のSSHサーバ証明書が格納されている。



.ssh」フォルダの直下に「config」ファイルを作成してテキストエディタで下記内容を入力

Host (任意の名称)
HostName (IPアドレス or ドメイン名) 
User (ユーザ名)
Port 22(接続ポート)
IdentityFile ~/.ssh/id_rsa(秘密鍵のパス)


今回はHost名をmail-srvに設定した。その内メールサーバにしたい。
これでPowerShellから
> ssh mail-srv(設定したHostの名称)でアクセスして問題なければ大丈夫かな。


GCPの無料枠は中国やオーストラリアからのVM宛の通信は無料枠対象外だから、気が向いたらSSHのポートを初期の22から別に変更しよう。


~ブログ更新~

設定してみた。

2019年2月9日土曜日

Raspberry Pi 3 model b+へのリモート接続設定

Raspberry Piへモニタもマウスもキーボードも繋げてはいるものの、画面切り替えて操作するのもやはり効率が悪いので、PCやスマートフォンからリモート接続できるように設定を行う。


■GUIであれば画面右上のメニューから

設定」 - 「Raspberry Piの設定」を選んで設定画面を表示。
インターフェース」タブを選択して「SSH:」と「VNC:」のラジオボタンを「有効」に切り替えてOKをクリックして設定完了。
GUI1

これだけで設定完了。非常に楽だ。




■一応CLIでの設定方法も確認

ターミナルから sudo raspi-config で設定画面を表示させる。
設定画面に切り替わるので「5Interfacing Options」を選択
CLI2


画面が切り替わったら、まずは上から順に「P2 SSH」を選択。
CLI2


Would you like the SSH server to be enabled?」と聞いてくるので<はい>を選択。
CLI3


The SSH server is enabled」と表示されるので、<了解>を選択。
CLI4


また設定画面に戻るので同様に「5Interfacing Options」を選択
CLI1


次は「P3 VNC」を選択。
CLI2


Would you like the VNC server to be enabled?」と聞いてくるので<はい>を選択。
CLI5


The VNC server is enabled」と表示されるので、<了解>を選択。
CLI6


あとは設定画面に戻って<Finish>を選択すれば設定が完了してターミナルに画面が戻る。
CLI1




PC側のSSH用ソフトはよくある「Tera Term」を利用する。
VNCはREALVNCの「VNC Viewer」を利用。


Raspberry PiのIDとPWを利用してテストログイン。
どちらも問題なく動いていることが確認できた。
GUI2


今回Raspberry Pi 3 model B+にインストールしたRaspbianは始めからSSHもVNCもインストール済みで、有効にするだけで使えるのは手軽で良いな。

2019年2月8日金曜日

Raspberry Pi3 へのsav-linux-freeのインストール(失敗)

Raspberry Pi 3 model b+もアンチウィルスとかいるかなぁと思いつつ、
とりあえずSophos Antivirus for Linux Free Editionをインストールしてみようかと実験。

そもそもハードウェア的に対応していないのは理解した上でやった無駄作業だった。


SOPHOS - 無償ツール
画面最下部のSophos Antivirus for Linux Free Editionからダウンロード
細かい入力は割愛




ダウンロードしたファイルをtmpフォルダに移動して解凍
$ tar zxvf sav-linux-free-9.tgz


sophos-av/フォルダが作成されその中に無事解凍された。



意気揚々とコマンド打ってインストール実行してみたがエラー。
$ sudo ./sophos-av/install.sh

エラーメッセージ:
Installation aborted: linux/armv7l not supported by this package



そのCPUには対応してないとのこと。

わかってたことだけど一応 
$ lscpu
で確認すればもちろんarm系CPU


まぁ固定IP割り当てる予定もポート開放して使う予定もないから問題ないか。
外からのアクセスはルータのOpenVPNで接続してローカルからアクセスするし。

2019年2月6日水曜日

LibreOfficeの日本語化と日本語入力IMEのインストール

Raspberry Piに入っているLibreOfficeが英語表記のままだったので日本語化を行う。

英語表記のままでもまぁ使えないこともないけど。


以下コマンド実行
 apt-get install libreoffice-help-ja


このコマンド一つで画面の表示とヘルプ含めてまとめて日本語化できた。


普段はWindowsからもAndroidからもGoogleのスプレッドシートを使っているけど、ローカル環境のOfficeソフトが使いたい場合もある。

今更MicrosoftのOfficeを導入するのも考えもの。

マクロが組み込まれてるファイルを操作する必要が出れば、妻のPCを借りるか最悪Office365を1ヶ月だけ契約するのもありだろうか。



日本語入力用のIMEもついでにインストール
sudo apt-get install fcitx-mozc

インストールが完了したらリブート
$ sudo reboot



画面左上のメニューの「設定」内に「Mozcの設定」が追加されているのを確認したら、
画面右上のキーボードメニュー右クリックしてメニュー表示
「現在の入力メソッドの設定」をクリックして設定画面へ。
初期値のものとMozcが表示されているので、初期値のものを選択してウィンドウ左下(隠れてる)にある「-」ボタンで削除して、Mozcだけの状態に変更。


これでキーボードから文章を入力する際も日本語変換が可能になった。

2019年2月5日火曜日

Raspberry Pi 3 model B+のアップデート等

先の作業でNW設定を終わらせてインターネットには繋がるようになったので、
とりあえず最新へのアップデートを行う。
Raspberry Pi 3 model B+のセットアップ


まずは現状のバージョンを確認。

$ uname -a
Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux


パッケージ情報を更新
$ sudo apt-get update

インストール済みのパッケージを更新
$ sudo apt-get upgrade

ディストリビューションを更新
$ sudo apt-get dist-upgrade

Raspberry Piのファームウェアを更新
$ sudo rpi-update

再起動
$ sudo reboot


起動を確認したら改めてバージョンを確認。
$ uname -a
Linux raspberrypi 4.14.94-v7+ #1193 SMP Tue Jan 22 15:34:30 GMT 2019 armv7l GNU/Linux


これでひとまず最新の状態にはアップデートされたかな。

あとはviが使いづらいのでついでにvimもインストールしておく。
$ sudo apt-get install -y vim

2019年2月4日月曜日

Raspberry Pi 3 model B+のセットアップ

特に意味もなくRaspberry Piを衝動買したので設定のメモ等。

まずは初期の立ち上げと、ネットワーク設定として有線LANのIPアドレス固定、Wi-FiとBluetoothの無効化を行う。


用意したのは下記
・Raspberry Pi 3 model B+
・32GB MicroSD Card(Transcend製)
・USBケーブル + ACアダプタ(3A)
・Cat6 LANケーブル1.5m
・HDMIケーブル 1.5m
・USB切替器(マウス、キーボードの2系統用)


接続環境は下記図の通り
SSHでリモート接続すれば問題ないけど、何かの時に直接操作できるように物理的に接続してみた。


今回利用するOSは「Raspbian」
Raspberry Piのサイトから直接ダウンロードする。
Raspberry Pi - Downloads

いくつか種類があるけど、今回は全部入りの「Raspbian Stretch with desktop and recommended software」

ダウンロード時点でのバージョンは下記の通り
Version: November 2018
Release date: 2018-11-13
Kernel Version:4.14

ZIP形式を適当なところにダウンロードして解凍しておく。


次にMicroSDCardを下記ソフトウェアを利用してフォーマットする。
Raspberry Pi財団の推奨らしいので大人しくコレを使う。
SDメモリカードフォーマッター


解凍したISOファイルを下記ソフトウェアを利用してMicroSDCardに書き込み
DD for Windows


■初期立ち上げ

正常に終了したら諸々をRaspberry Pi本体に組み込んで電源ON

Raspberry Piの初期画面が表示され、言語設定と初期PWの設定がGUIで行える。
Wi-Fi設定とソフトウェアアップデートも同時にダイアログに表示されるものの、ここでは設定しないのでスキップして再起動。




■IPアドレスの固定

リモートアクセスやVNCを利用する前提なのでIPアドレスは固定してしまう。
GUIだと画面右上からも設定可能。

コマンド打つ場合は下記の通り。
$ vi /etc/dhcpcd.conf

下記の内容を記述

#Static IP Address
interface eth0

#IP Address
inform 192.168.*.*/**

#Default Gateway
static routers=192.168.*.*

#DNS Server
static domain_name_servers=192.168.*.*

(*部分は各環境によりけりで)


■Wi-Fi、Bluetoothの無効化
下記ファイルに2行追記するだけで行けるらしい。

$ vi /boot/config.txt

ファイルの末尾に追記
#Wi-Fi無効化
dtoverlay=pi3-disable-wifi

#Bluetooth無効化
dtoverlay=pi3-disable-bt



ひとまずこれで起動完了して自宅のNWに接続完了。


図に使ったイラストは下記サイトから
CMANインターネットサービス - 無料素材サービス