GMOサマーインターン参加しました

概要

サマーインターンには開発コース・インフラコース・セキュリティコースがあり僕はセキュリティコースに参加しました

コースの概要は以下となっていました。 気になったのがGMOの公式ページに詳細な情報が無いことでした。結構ちゃんと探さないとサマーインターンの情報がなくて大変でした

■セキュリティコース セキュリティエンジニアの業務を1Dayインターンよりもさらに実践的な体験を行っていただけます。 ※1Dayインターンシップは別コースとなっておりますので、イベントページをご確認ください。 サイバー攻撃の調査体験や、脆弱性を含むウェブサイトへの攻撃体験を行っていただく予定です。 また、CTFを利用してチーム戦も予定しています。インターン生同士で協力して課題解決を目指してください!

やったこと

日付別で行なったことは以下のようになっています

  • 1日目:インターン説明、オフィス案内、脆弱性診断体験、画面遷移図の作成
  • 2日目:DVWAでの脆弱性診断、自動診断体験
  • 3日目:インシデントハンドリング演習、自動ツールでの脆弱性診断体験
  • 4日目:Splunkについて解説、ログ分析の解説、BOTSを利用したCTF演習
  • 5日目:CTF演習、OSINT、インターン報告会

1日目

インターン説明、オフィス案内の後にburp suiteのBadStoreというやられサイトに対して画面遷移図の作成と脆弱性診断体験を行いました。 画面遷移図の作成の経緯としては開発チームとセキュリティチームが別であり、確認漏れを防ぐためとのこと 脆弱性診断では手動で脆弱性がないかを確認した後にOWASP ZAPを使用して自動診断を行ないました。 こちらも実際の業務では自動診断と手動診断の両方を行なっていると説明していました

2日目

初日と同じようにDVWAというやられサイトを使用しての演習でした。 ここではCTF形式でDVWAに攻撃をし答えとなるflagを入手する形でした。

3日目

インシデントハンドリングでは、運用するサービスに攻撃が来たというシナリオで防御側に回ってサービスの復旧に向けた演習を実施しました。 また一次被害と二次被害が存在しており、それぞれで議論が行われました 主に意識してやったことは以下のようになっています

  • 一次被害を受けて限られた情報の中から考えられる原因を列挙 他部署(開発チーム、インフラチーム)に該当箇所の確認を依頼(回答はその場で返ってくる) サービスを止めないといけないのか、アナウンスに止まらせるのかの判断

一次被害だけでは考えられる原因が多くあったが他部署にできる質問は2〜3個であった。これは実際に攻撃された時にこのくらいの個数の確認でないと時間がかかり対応が間に合わない為とのこと また、原因の特定だけでなく今後もサービスを利用してもらうためにクライアントへの案内も同時に考えないといけないことがかなり大変でした

4日目

splunkを使用したログ分析では、どのようにうまく絞り込みをしていくかを考えながら侵入されたログや攻撃の手法を特定しました。 使用した環境はsplunkが提供しているBoss of the socという防御側を想定したCTFのイベントです。 攻撃を特定するために不審なアクセスログをドリルダウン形式で調査し、答えを特定したのですが最終的な検索クエリでも候補が複数個出る場合などがあり、分析の難しさを知れました。 本番ではしっかりとした根拠のもと原因となるログを一つに絞らないといけませんからね、、、

5日目

全問OSINTのCTFを解きました。CTFの分野としては知っていましたが今まで2問くらいしかといたことがなかったためとても新鮮でした。

感想

対面式のインターンでオフィス案内もあったことからGMOの社員の方々がどのような環境で働いているのか、会社付近の街並みなどを知ることが出来ました。(就職を考えるなら結構大事だと思う) 特に社員の方は優しく、僕の結構突っ込んだ質問にも快く答えてくれましたし、歳の離れている社員同士のやりとりを見てても 硬い感じはなく働きやすそうなチームだと感じました。

また、インターンの内容は実際の業務をもとに作成しているとのことで自分がこの分野に興味があるのかを短期間で確認できるような良いインターンでした。ありがとうございました。

推しの狸の話

推しの狐とはgitlabです。タイトルでふざけてみたかっただけです。

また、本記事はAdvent Calendar 2021年度版!! の25日目の記事です

adventar.org

先日のlog4j 2から脆弱性に興味を持った人も多いのではないでしょうか。

結構前の話になるのですが、gitlabがDDos攻撃に悪用されたインシデントがあるので紹介しようと思います。

概要

2021年4月に公開されたCVE-2021-22205が悪用され、10月下旬から11月上旬にかけて全世界で稼働しているgitlab 6万台のうち半分の3万台のgitlabが攻撃に使用されました。

CVE-2021-22205について

この脆弱性に対するスコアであるCSVVは満点の10.0です。
脆弱性の説明としては「ファイルパーサーに渡された画像ファイルを適切に検証していなかったため、リモートコマンドが実行される」とあります。

これはどういう意味かというと、gitlabにはExifToolというCLIアプリケーションがあり、画像のメタデータを取得したり追加したり変更したりできます。

使用例としては以下のような感じで画像のメタデータを出力してくれます。ctfで画像が投げられた時にとりあえず使用されるツールです。
このデータの中にフラグが隠されている場合もあります。

$exiftool river.jpg
ExifTool Version Number         : 12.30
File Name                       : river.jpg
Directory                       : .
File Size                       : 414 KiB
File Modification Date/Time     : 2021:12:25 05:57:23+09:00

.
.
.

今回脆弱性を突かれたのはこのExifToolの削除機能で、 DjVuファイルに対して検証不備があり、任意のコードが実行できてしまいまうそうです。

また、発見当時は攻撃に認証を必要としていたらしいのですが、10月に認証不要な攻撃方法が公開されていたようです。

対象となったgitlabのバージョン

GitLab Community Edition, GitLab Enterprise Edition: - 11.9.0~13.8.8
- 13.9.0~13.9.6
- 13.10.0~13.10.3

攻撃方法

まず対象のバージョンのgitlabではデフォルトでユーザー登録が許可されており、登録時のメールもデフォルトでは検証されない為新しく作成されたユーザーは自動的にログオンできます。

次にgitlab apiを用いてプロジェクト一覧を取得し、その中の一つのプロジェクトに対してDjVu形式の画像を投げ任意のコードを実行していたようです。

最後に

この脆弱性のパッチは4月に適用されている為、半数のgitlabが被害を受けたという事は半数のgitlabがパッチを当ててないということになります。
勿論、このパッチを当ててない全てのgitlabがこの情報を知らなかったとは思いませんが、運用しているサービスの脆弱性の情報は収集する必要があると感じました。
また面白そうなセキュリティニュースなどあればまとめてみたいと思います。

追記

コメントで教えて頂いたのですがgitlabのアイコンは狐では無く狸らしいです。 間違った情報を載せないように気を付けていたのですがまさかタイトルが間違ってるとは、、、、 firefoxと同じような色だったので狐と勘違いしてました。 mktさんありがとうございます。

lessコマンドの罠

先日作業をしている時にハマってしまったのでそちらを書いていこうと思います。

状況

作業というのはデータベースのダンプファイルから必要な情報を取得し、整形しファイルに書き出すというスクリプトを書いていた。

その時に、生成したファイルをlessで確認すると...skipping...が表示されていた。

最初は整形するスクリプトに問題があり、どこかでループしているせいでファイルに表示されているのかと思い調べてみたがスクリプトに原因はなかった。

色々試行錯誤していると先生が教えてくれて分かったのだが、問題はlessコマンドにあり、文字が多い場合などは...skipping...で間の文字列は省略されるそう、、、

しかもこの現象手元の機器などで確認してみたが再現性がなく、なぜこのような表記になったのかがよくわからなかった。 でも頭の片隅に置いておくといつか役に立ちそう

log4j 2の脆弱性

本記事はAdvent Calendar 2021年度版!! の12日目の記事です

adventar.org

当初は推しの記事を書こうと思ってたのですが最近Twitterで面白いニュースを見つけたのでそちらを紹介していきたいと思います。

紹介するのはlog4j 2の脆弱性についてです。
また、少し探せば攻撃用のコード例が出て来るくらい有名ですが本記事ではコードを掲載しない形とさせていただきます。

log4j 2とは

javaプログラム用のログAPIです。 log4j 2はlog4jのアップグレード版であり、2とはバージョンのことのようです。

log4j 2の脆弱性

log4jにはLookupという機能があり、これはログとして入力された文字列を置換するものです。
例えば、実行中のjavaのバージョンを出力したい場合は

${java:tuntime}

とログに出力させるようにする事で${java:tuntime}がjavaのバージョンに置換されるようです。

その中でもJNDI Lookupというものがあり、ネットワークを通じて変数にあたる値を取得し置換するAPIで、LDAPにも対応しています。
また、上記の機能ではログに出力する部分を特定の形式にする事で、置換するだけでなく任意のLDAPサーバーからjava classファイルをダウンロードし読み込むことができてしまうそう。

つまり、攻撃者は自前で用意したLDAPサーバーを用意し、なんらかの形で悪意あるログ出力させることで自前のLDAPサーバーから任意の処理を対象のサーバーで実行させることができます。

なぜここまで有名になったのか

log4j 2はjavaで使用されるlogライブラリの中でも有名である事やユーザー(攻撃者)がログに出力される文字列を操作可能なだけで実行できる1、ゼロデイ脆弱性で対策が見つかっておらず攻撃し放題だったなどの理由が挙げられます。

対象バージョン

対象となるバージョンはLog4j 2.14.1より前の2系のバージョン

対策・回避策

Log4j 2.15.0へのバージョンアップ(Log4j 2.15.0からはデフォルトでJNDI lookupが無効になっているそうです。)
また、すぐにバージョンアップできない場合でも、後からJNDI lookupを無効にする事で問題は回避できるとのこと。

最後に

間違いや表現が間違っている所があれば教えていただけると幸いです。

参考文献

Apache log4j 1.2 - Short introduction to log4j

Log4j – Apache Log4j 2

第 10 章 JNDI リソース

log4jの脆弱性について


  1. log4j 2が使用されているjava製のサービスである事とJNDI lookupが有効である事が前提です。

セキュリティキャンプ2021応募課題晒し

今更なのですが、先日修了書を貰ったと言うことでセキュリティキャンプの応募課題を晒していきたいと思います。

僕が参加したのはDトラックの「セキュリティイシュートラック」です。

問1

あなたが最近目にしたニュース記事・ブログ記事、あるいは炎上した記事の中で、セキュリティ情報の伝え方に関して「これはちょっとおかしいな」と感じたものがあれば、その理由とともに教えてください。

ワクチン大規模接種東京センターの予約システムのSQLインジェクションに関する記事です。リンクを以下に貼ります。

https://news.yahoo.co.jp/articles/e3cd31c100652095e1479568e5988303a1cbcf2a?page=3
その記事ではネットで取得した情報を元にサーバーに対して実際に攻撃をしており、また記事内でその行為を犯罪とは明言せずに不具合に対して煽るような発信をしています。

まず記事を公開した段階で攻撃が出来てしまうのに攻撃方法を載せてはいけないと思います。理由としてはその記事を見た人が実際に攻撃をする可能性があるためです。

また同じ理由から記事内でこれらの攻撃は犯罪行為だと書かない事も問題があります。

問2

サイバーセキュリティのマンガを作成する場合、何をテーマに訴えるマンガにしたいですか? 1コマ/4コママンガ、または最大4ページでおさまる長さのマンガを想定して、作りたいマンガのテーマとあらすじ(またはアイディア)を書いてみてください。

オンラインゲームに関するセキュリティをテーマにしたいです。

あらすじとしては実際にSNS上に攻撃方法がアップされている問題などについてとりあげます。そこで沢山の人がその攻撃をサーバーに対してしているが捕まってないだけでその行為が犯罪であるということを伝える漫画にします。

理由としてはこのような攻撃を実行する人はまだ情報リテラシーが十分にない学生に多いと感じているからです。実際にSNSでそのサイバー攻撃を用いて仲間を不正に勝たせ、その報酬としてお金をもらっている学生がいました。今の社会では普及している技術に対してセキュリティ意識が低いと思いこのような構成にしました。

問3

ディープラーニングベースの顔認証システムのメリット/デメリットを、セキュリティの観点から教えてください。 また、デメリットを改善する方法も教えてください。

<メリット>

まず顔認証のメリットとしては従来の認証と違い不正アクセスがされにくい事があります。従来の認証方法だとショルダーハッキングによってスマホや講座、マンションのパスワードを盗み見られる脆弱性がありますが顔認証だとその心配はありません。

<デメリット>

デメリットに関しては従来の認証方法ではパスワードが流失した場合速やかに変更する事で悪用されることを防げますが顔は一般的に変える事ができないので悪用されてしまいます。対処法としては顔認証とパスワード認証の両方を用いてより堅牢にする事が挙げられます。

<改善案>

また、ディープラーニングは中身がブラックボックスなため顔認証システムにセキュリティホールが見つかった際に対応が困難という問題があります。改善策としては顔認証のみに頼らず他の認証も同時に運用することです。

ディープラーニングベースだと学習の方向性を思うように決めれない為、別の人の顔でログインできてしまう可能性があります。

改善案としてはリリースまで十分に時間をとってどのように学習しているかを調査し、実際にテストを試し製品としての完成度を高めることです。

問4

サイバーセキュリティに関する犯罪の一つに、不正アクセス禁止法があります。

①どのような行為が不正アクセス禁止法違反になりますか?具体的に記載してください。

本来は接続できる権限のないユーザーが他人のIDやパスワードを用いたりサービスの脆弱性をついたりして不正に利用できる状態にする事です。 有名な例としてはセブンペイの不正アクセスが挙げられます。この事件では攻撃対象のサイトとは別のサイトで漏洩したIDとパスワードのリストを使い、攻撃対象のサイトへ不正ログインを行なっています。

脆弱性スキャンツールを使用することやペネトレーションテスト(攻撃者視点による侵入テスト)が不正アクセス禁止法違反に該当する場合はどのような調査をした場合でしょうか。挙げられるだけ挙げてください。
なお、勝手にスキャンツールやペネトレーションテストを他人のサーバに実施するだけでは同法違反になるかは不明ですので、当該ツールのどのような行為が不正アクセス禁止法違反になるかを具体的に記載してください。

・該当するペネトレーションテストが運営・管理側からの了承を受けてない場合

・運営元から了承を得ているがペネトレーションテストの過程を誰でも見ることのできる記事してあげる。

・自身のパスワードを忘れたことを理由に脆弱性スキャンツールなどを用いてパスワードを不正に取得した場合。

・Nmapを用いて他者の運営するサービスにスキャンをかける。また、稼働しているサービスの脆弱性をついて攻撃をする、空いてるポートを調べる。

・攻撃の意思がなくてもOWASP ZAPを攻撃モードにして無差別に攻撃を行う

問5

ファイルを持たないマルウェア(いわゆるファイルレスマルウェア)が流行っていますが、対策が困難とされている理由を考察してください。

まず対策に関して考察するにあたって普通のマルウェアウイルス対策ソフトについて整理してみます。マルウェアとは攻撃対象に有害な動作を行う目的で作成されたプログラムやソフトのことを示します。またマルウェアの対策としてはウイルス対策ソフトの導入うなどが挙げられます。ウイルス検知の手法としてはマルウェアや感染したファイルに見られるデータのパターンをデータベース化し、コンピュータ上のファイルに同様のデータパターンがないかスキャンを行って確認するものや未知の攻撃に対して有効なプログラムの動きを検知してウイルスと判断する振る舞い検知が挙げられます。

しかしそのどれもファイルレスマルウェアを対策するのには十分ではないと考えます。その理由としてファイルレスマルウェアはマシンに元々入ってるソフトの脆弱性を利用して不正なプログラムを走らせて攻撃する為です。

マルウェアとの違いはマシンにファイルを残さない所にありその為ウイルスソフトでの検出が難しいと考えます。

またプログラムの動作を検知する手法でも正常な動作と間違えてしまう可能性があり検知が難しくなっています。

問6

1)以下のURLからPowerShellスクリプトをダウンロードし、フラグ(フォーマット:FLAG{xxxx})を見つけてください。

https://gist.githubusercontent.com/Sh1n0g1/e42100f2a8e7d767706b4e2c88a2c45d/raw/b02088c51a4639671bf796d9f60ca56645c35146/obf.ps1

念のため以下に出題されたコードを載せます。

${-}="";${-}+=[char](-211+313);${-}+=[char](44577/381);${-}+=[char](584-474);${-}+=[char](-95+194);${-}+=[char](55216/476);${-}+=[char](-707+812);${-}+=[char](1047-936);${-}+=[char](17380/158);${-}+=[char]([int][Math]::sqrt([Math]::pow(32,2)));${-}+=[char](47034/702);${-}+=[char](-272+376);${-}+=[char](21715/215);${-}+=[char](59+40);${-}+=[char](-102+209);${-}+=[char](482-402);${-}+=[char](32592/336);${-}+=[char](-18+133);${-}+=[char](876-761);${-}+=[char](-652+771);${-}+=[char](35076/316);${-}+=[char](33516/294);${-}+=[char](96800/968);${-}+=[char](442-402);${-}+=[char](-781+817);${-}+=[char](-521+633);${-}+=[char](195-98);${-}+=[char](543-428);${-}+=[char](-586+701);${-}+=[char](90678/762);${-}+=[char](95571/861);${-}+=[char](-202+316);${-}+=[char](329-229);${-}+=[char](6068/148);${-}+=[char](86592/704);${-}+=[char](793/61);${-}+=[char](9390/939);${-}+=[char](219-187);${-}+=[char](-665+697);${-}+=[char](11234/137);${-}+=[char](67771/671);${-}+=[char](251-135);${-}+=[char]([int][Math]::sqrt([Math]::pow(117,2)));${-}+=[char](72390/635);${-}+=[char](-768+878);${-}+=[char](736/23);${-}+=[char](-867+903);${-}+=[char](651-539);${-}+=[char](44717/461);${-}+=[char](75670/658);${-}+=[char](-860+975);${-}+=[char](365-246);${-}+=[char](69264/624);${-}+=[char](-16+130);${-}+=[char](-737+837);${-}+=[char](824-792);${-}+=[char](219-174);${-}+=[char](722-653);${-}+=[char](741-628);${-}+=[char](948-916);${-}+=[char](-530+564);${-}+=[char](204-117);${-}+=[char](17442/342);${-}+=[char](58644/543);${-}+=[char](303-204);${-}+=[char](-621+669);${-}+=[char](98645/905);${-}+=[char](-905+956);${-}+=[char](519-424);${-}+=[char](73196/631);${-}+=[char](-885+933);${-}+=[char](74+21);${-}+=[char](-875+958);${-}+=[char](49011/961);${-}+=[char](-387+486);${-}+=[char](501-402);${-}+=[char](1040/20);${-}+=[char](831-722);${-}+=[char](-578+690);${-}+=[char](-454+504);${-}+=[char](-595+643);${-}+=[char](698-648);${-}+=[char](-736+784);${-}+=[char](-456+490);${-}+=[char](77-64);${-}+=[char](-261+271);${-}+=[char](-265+390);${-}|iex


$password=Read-Host -Prompt 'Input the password'
Write-Host "Checking your password..."
Start-Sleep 5
If (CheckPassword($password)){
  Write-Host "The password is correct.`nHere is the flag`n`n"
  Write-Host "+----------------------------+"
  Write-Host "|FLAG{$password}|"
  Write-Host "+----------------------------+`n`n`n"
}Else{
  Write-Host "The password is wrong!"
}

FLAG{W3lc0m3_t0_S3cc4mp2020}

2)どのように解析したかを簡潔にまとめてください。フラグが見つかっていない場合でも、分かった箇所について、解説してください。

まずスクリプトを読んだ際にchar型Unicode変換を思いつきました。またスクリプトを見た際に空の文字列にどんどん文字を追加しているように見えたのでこのコードを実行してみようと考えました。 powershellは使った事がないのでdockerでpowershellのコンテナをたて、その中で文字列をechoしました。

結果は

function CheckPassword($password){

Return $password -Eq "W3lc0m3_t0_S3cc4mp2020"

}

となっておりパスワードがわかりました。

なので下半分のコードをまた実行してパスワードを入力する事でフラグが取得できました。

Micro Hardening v2に参加しました。

2021 5/4に行われたMicro Hardeningに参加したので感想などを書いていきます。

microhardening.connpass.com

軽くMicro Hardeningについての説明

そもそもHardeningプロジェクトには以下の三種類あり今回はその中でもカジュアルに参加出来るMicro Hardeningに参加しました。

種類 時間 対象サーバー
Hardening 8時間 20台
MINI Hardening 3時間 4台
Micro Hardening 45分(複数セット) 1台

Micro Hardeningとは「セキュアなハードニングをカジュアルに競技形式で学ぶ勉強会」であり、セキュリティの堅牢化の競技です。 実際に何をするかというと

提供されたECサイトに対する様々なサイバー攻撃に対処する。参加者は次々と発生するサイバー攻撃を防御し、停止したECサイトを復旧することで売上を稼ぎ、さらに防いだ攻撃に応じたボーナス得点(追加のクローリング)を得ることができます。Micro Hardeningの評価は単純に稼いだ得点のみを対象としています。

引用: Micro Hardening v2 2021/5/4@オンライン - connpass

意気込み

私が現在所属する研究室がインフラ・セキュリティ分野を専門としており、そこの先輩からこちらのイベントを教えて頂き参加しました。 Hardeningプロジェクトに参加するのは初めてですが学内で実施されたHardeningに参加した事があったり、外部公開したサーバーを構築した事もあるので以下のようなセキュリティの堅牢化の基本は知っていました。

  • 不要なサービスの停止
  • 不要なユーザーの削除
  • 使っていないポートを閉じる
  • 使用するツール・ユーザーの初期パスワード変更

なので現段階で自分の知識がどのくらい通用するのか、このイベントを通して新たな学びや知識を付けたいと思い参加しました。
また、GWという事もあり参加者のほとんどが学生だと思っており、点数を稼ぐというよりか試行錯誤しながらセットを重ねる毎に得点をアップしていこうと考えていました。

実際にどんなことをしたか

実際に私が参加したチームメンバーは全員が初参加で6人中3人が社会人、残りが学生となっていました。
また競技開始前に社会人のメンバーの方がやる事をまとめており、開始時にはそれらを役割分担し防御できなかった攻撃が来るか、新たに脆弱性を見つけるまでログ監視をするといったものでした。
その為チームメンバーが慌てる事もなくそれぞれが余裕を持って役割をこなす事ができました。

結果

その為、1セット目でかなり高いスコアを出しており、かなり順調な滑り出しでした。(私のチームは13)
しかし2セット以降はどこに攻撃が来ているのか、自分で必要なサービスを止めたのかの調査に時間を当てたせいもあり思ったよりスコアを伸ばせなく最終的には中間の順位でした。 f:id:oruta-12638:20210511190014p:plain

参加してみて

事前にメンバーの方がやる事をまとめてくれていたがその中でも初めて聞くサービスや知らない用語、デコードされたエラーログの存在など自分の知らない事があり、まだまだ勉強不足だと感じました。
一方で、競技中にいくつか脆弱性を見つけ修正する事ができたのは日頃の勉強の成果だと感じました。
またHardeningプロジェクトが開催される時は更に高いスコアが出せるよう勉強していこうと思いました。

ufwの設定を書くときは慎重に

awsから学科のvmにサービスを引っ越す作業でやらかしたので備忘録として残します。

備忘録なんでやったことも色々書いていきますー

サーバーの環境

ubuntu 20.04

サーバー移行作業

まずやったこととしてmysqlのインストールから初期設定まで、以前書いたgolangapiでDBを使用するのでその設定ですね
初手安定のaptアップデート

sudo apt update

次に、mysql-serverパッケージをインストールします。

sudo apt install mysql-server

はいってるか確認

root@ubuntu:~$ mysql --version
mysql  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

なんか普通はmysqlのセキュリティスクリプトなんかを設定するらしいけど今回はなしで、、、
mysqlのrootユーザーでログイン

sudo mysql

そこからgormで使うDBuserとDBを作っていく(tableは自動で作成されるためスキップ)
てかgithubにREADEMEを書いてたのでそれをコピペ参考に書いていきます。

まずmysqlのユーザーを作成してください。ユーザー名、パスワードは任意です。 以下のコマンドで作成可能です。

CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'password'

その後作成したユーザーに対してallの権限を付与してください。

grant all on *.* to 'user_name'@'host_name'

最後にmysqlのDBを作成して下さい。

create database "DB_NAME";

以上でMySQLの設定は終了です!

golangのインストール及びデーモン化

gitでプログラム自体は移行できたのにgolangのインストールを忘れてましたね、ごめんねgopherくん
公式のパッケージからインストール

wget https://dl.google.com/go/go1.15.3.linux-amd64.tar.gz

展開して配置する

sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz

goコマンドのパスを通す。.profileに書きましょう

export PATH=$PATH:/usr/local/go/bin

バージョンの確認

root@ubuntu:~$ go version
go version go1.15.3 linux/amd64
デーモン化(Supervisor使用)

次にgoのコードの実行ファイルでgo buildします。するとバイナリファイルができるはず

go build ファイル名

Supervisorのインストール

sudo apt-get install supervisor

/etc/supervisor/conf.dのなかに*.confファイルを作り設定を書く。

[program:go-auth]
command=実行ファイルの絶対パス
autostart=true
autorestart=true
startsecs=5
user=root
directory=実行ファイルまでの絶対パス
redirect_stderr=true
stopasgroup=true
stdout_logfile=/var/log/supervisor/supervisord.log

最初はsupervisorは起動してないので

root@ubuntu:~$ sudo service supervisor status
supervisord is  not running.

以下のコマンドで起動

sudo service supervisor start

起動した後にちゃんとサービスが動いてるか確認

root@ubuntu:~$ sudo supervisorctl
プロジェクト名                          RUNNING   pid 55078, uptime 6:57:43

本題

まじでここまで長かった、設定の備忘録でこんなに長くなるんか
タイトルにもある通りufwで設定をする時には慎重になろうという話でっす。

まず何をしたかというとsshのポート変更をしようとしていました。
sshの設定ファイルは以下の通り

/etc/ssh/sshd_config

おそらく#Port 22と書いてる場所があるのでその下に変更したいポートを書いてあげましょう。

ここからが大事!!!

設定ファイルを書き換えたあとはちゃんと読み込んであげよう!じゃないと変更後のポートが読み込まれない

systemctl reload sshd.service

この後にufwで新しいポートを開けて22番ポートを閉じよう!
できればターミナルで接続したままのタブを残した状態で新しいタブを開いてそこでssh接続テストをしようね。

解決方法

僕の場合はvirsh consoleを使ってアクセスし解決できました。(先輩ありがとうございます)
これやると他のアクセス方法ないかぎり詰むらしいので気をつけて、、、

ではまた