Windows Firewall 設定 再入門

Windows Firewall をなんとなく分かったつもりで使ってましたが、根本的に誤っていることに最近気付きました。誤りやすい箇所を解説します。

 環境:Windows 10 64bit 1909  バックアップ ファイアウォール

受信の規則

 受信とは、ダウンロード方向の通信を意味しているわけではありません。サーバーとして動作する(Listenできる)ことを許可する規則となります。ですので、受信の許可をポップアップで求められる場合、サーバーアプリであったり、ファイル共有機能を利用するアプリでなければ、許可する必要性は少ないです。もしもこのダイアログでキャンセルした場合、ブロックとして規則に追加されます。ブロックのポップアップが出る場合、必ず受信規則のブロック通知です。送信ブロックは、通知の対象になっていません。受信規則通知に限り、非表示にすることもできます。下記手順で受信規則の通知表示を変更できます。

 ①Windows ファイアーウォールの詳細設定画面を出し、ルート項目を右クリックし、プロパティを選択する。

f:id:russianble:20200322190236j:plain

 ②対象のプロファイルタブを選択し、設定グループのカスタマイズをクリックします。

f:id:russianble:20200322190358j:plain

③通知を表示するの設定を変更します。

f:id:russianble:20200322222818j:plain

送信の規則

  送信とは、特定のポートへのデータ送信をブロックする規則です。具体的には、クライアントのインターネット接続を許可することになります。ですが、Windowsのデフォルト設定では、送信の規則は、規則に登録されてないものは、全て許可する設定になっています。また、登録済の規則も接続を許可するルールである為、規則自体、意味の無い状態になっています。(何もブロックされていません)下記手順でデフォルトで全接続を許可するか、ブロックするか設定できます。また、この設定は、プロファイルごとに存在するので、どのプロファイルに対して設定しているか注意してください。

下記は、デフォルトで送信をブロックする場合の設定方法です。

Windows ファイアーウォールの詳細設定画面を出し、ルート項目を右クリックし、プロパティーを選択する。

f:id:russianble:20200322190236j:plain

 ②デフォルトで送信の規則の通信をブロックする場合、「送信接続」を「許可」から「ブロック」に変更します。この設定を変更すると、システムで許可されている通信以外は、全てインターネットアクセスできなくなり、問題が出るソフトが多数でてきます。WindowsUpdateでも問題となります。必要がなければ、「許可(規定)」をおすすめします。デフォルトでルール以外の送信をブロックする場合、インターネットアクセスが必要なアプリは、全て手動で対象プログラムを指定して許可のルールを追加する必要があります。デフォルトで送信を許可して、必要なものだけブロックする方が楽かもしれません。

f:id:russianble:20200322190358j:plain

ブロックのポップアップを再表示させるには

 ファイアーウォールで初めてアプリをブロックした場合、通知が表示されますが、この後、OK とすると、ファイアーウォールの規則が追加され、2度と表示されなくなります。キャンセルを選んでも追加されます。再度表示させるには、下記画面から、「Windows Defender ファイアーウォールを介したアプリまたは機能を許可」 を選択し、対象アプリの許可を削除します。Windowsのプリセットルールは削除できませんが、ユーザーが新規に追加したルールは、削除できます。また、ここで項目を削除すると、関係するファイアーウォールの規則も削除されます。この設定の対象は、多分、受信の規則のみです。

①コントロールパネルのファイアーウォール設定で下記をクリック。

f:id:russianble:20200322184344j:plain

UACのブロックをボタンを押して許可後、対象アプリを選択して項目自体を削除します。

f:id:russianble:20200322184429j:plain

 

Firewall設定のエクスポート

ファイアウォールの詳細設定画面を出し、ツリービューのルートを右クリックすると、下記のメニューが出ます。ここで 「ポリシーのエクスポート」 を選択すると、現在の設定がエクスポートされます。設定変更する場合、一旦エクスポートしておけば、以前の設定を復元する助けになると思います。多分、「ポリシーのインポート」を選択すれば、復元できると思います。うまくいくかは、試していないので保証できません。また、設定がおかしくなった場合、"規定のポリシーの復元"を選択すれば、デフォルトに戻せると思います。これも試してません。

f:id:russianble:20200322190236j:plain

Firewallログの取り方

 受信の規則で説明したダイアログで、ロググループのカスタマイズボタンを押すと、下記画面が出ます。(ここで注意ですが、カスタマイズボタンは、パブリック、プライベートなど各プロファイルごとに存在します。正しいプロファイルを選択しているか確認してボタンを押して下さい。)破棄されたパケットをログ、正常な接続をログ の各項目を"はい"に設定すると、C:\Windows\System32\LogFiles\Firewall にログが作成されます。ログは、常時システムにより開かれているので、適当な場所にコピーを作成して開きます。開くときにも注意があり、ログファイルはアクセス許可が設定されており、管理者権限で起動したアプリでしか開けません。メモ帳などを管理者権限で起動し、ドラック&ドロップしないで、開くメニューでログを開くと、ファイルを参照できます。ドラック&ドロップできない理由については、ログ取得について詳しく説明されている、下記のリンクを参考にして下さい。

f:id:russianble:20200322214045j:plain

www.haruru29.net

answers.microsoft.com

Android スマホのSSLパケットを解析する方法

 burp proxy と呼ばれる無料のパケット解析ソフトがあります。proxyとして動作するのでandroidiphone のパケットを解析することができます。android からwifi接続でproxyアクセスするように設定すると、burpproxyが通信を仲介してパケットのログを取得してくれます。接続を仲介している為、SSLパケットを復号することもできます。対応しているプロトコルは、http とwebsocketです。それ以外のパケットの解析はできません。類似のソフトにFiddlerがあります。こちらでも同様のことが可能です。また、burp proxy は、javaで動作しており、インストーラjavaのパッケージが含まれています。javaの環境を別途用意する必要はありません。

f:id:russianble:20200302161528j:plain

burp proxy を利用してandroidのパケットを解析する場合、上図のように同一の無線LAN親機を利用するPCが必要になります。親機からPC,Android双方にDHCPでIPが割り振られて入れば、AndroidからBurpProxyに接続できます。この方法を用いるとMITM proxyのような環境を容易に構築できます。導入方法は、下記手順となります。

 mitm リバースproxy reverse

導入方法(PC側)

①下記サイトから、Burp Proxy CommunityEditionをダウンロードします。Community版は、脆弱性の調査機能や、パケット改ざん機能に制限がありますが、パケット解析は可能です。下図のようにCommunityEditionのWindows64bit版を選択し、ダウンロードをクリックします。ここでは、Windows 64bitの環境として説明を進めていきます。

https://portswigger.net/burp/releases/community/latest 

 

f:id:russianble:20200302123647j:plain

 

インストーラーを起動し、Burp proxyをPCにインストールします。ウィザードに従ってインストールしてください。注意点は特にありません。

インストール後、スタートメニューに下記のプログラムが登録されます。

f:id:russianble:20200302123726j:plain

③スタートメニューから上記のburp proxy を起動します。

下記画面が表示されます。今回は、一時的なプロジェクトを選択してNextのボタンを押します。

f:id:russianble:20200302123746j:plain

④設定はデフォルトを選択し、StartBurpを押します。デフォルト設定で起動した場合、127.0.0.1 ポート番号8080としてProxyサーバーが開始されます。この後の手順で一部設定を変更します。

f:id:russianble:20200302123640j:plain

 

⑤BurpProxyを起動すると、下記メイン画面が表示されます。proxyが稼働した状態で左上のCapturing スイッチがオンであれば、パケットがキャプチャされます。まず、デフォルトの設定を一部変更します。メニュー下にあるタブからProxyタブをクリックします。

f:id:russianble:20200302123701j:plain

 

⑥Proxyタブをクリックすると、下記画面が表示されます。デフォルト設定では、Intercept On となっているので、クリックし、Offにします。Intercept On になっていると、proxyが仲介するデータを一旦保持して、通信が止まった状態になります。パケットを改変したりしたい場合、この機能を使います。今回は、必要ない為、Offにしておきます。

f:id:russianble:20200302123656j:plain

 

⑦proxyタブのサブのタブでoptionタブを選択します。

Editボタンを押します。

f:id:russianble:20200302123713j:plain

 

Proxyサーバーのアドレスを設定するダイアログが表示されます。

今回は、Androidからアクセスできるように、DHCPから振られたアドレスに変更します。spcific address にチェックを付け、コンボボックスの▼ボタンを押すとアドレスの候補が出ます。DHCPからPCに振られたアドレスがあれば、それを選択します。その後、OKボタンを押します。

f:id:russianble:20200302123722j:plain

 

⑨変更したIPアドレスでProxyが再起動します。Firewallのブロック画面が出るので許可してください。

f:id:russianble:20200302123652j:plain

 

SSLパケットの解析の必要がないなら、設定はこれで完了です。SSLパケットも解析する場合、次の手順でパケット解析用のSSL鍵を用意します。

先ほどのProxyタブのoptionサブタブを表示します。

今度は、import/export CA Certification のボタンを押します。

f:id:russianble:20200302123717j:plain

 

⑪表示されたダイアログでCertificate in DER format をチェックし、Nextを押します。

f:id:russianble:20200302123738j:plain

⑫証明書の出力ファイルパスを入力します。例では、デスクトップにcecert.cer という証明書を出力します。このファイルは、後でAndroid側で使用されます。

PC側の設定は、これで終わりです。

f:id:russianble:20200302123742j:plain

 

proxyサーバーで通信が発生した場合、下記のProxyタブのサブタブである、HTTP historyタブと TargetタブのSitemapに通信ログが表示されます。

f:id:russianble:20200302123708j:plain

f:id:russianble:20200302123733j:plain

 

 導入方法(Android側)

Androidのproxy設定を変更します。例では、Android6.0を利用してますが、ご使用の環境に読み替えて設定してください。

まず設定アプリを立ち上げ、WiFiを選択します。

f:id:russianble:20200302123904p:plain

 

②接続しているAPポイントを長押しし、"ネットワークを変更"をタップします。

f:id:russianble:20200302123910p:plain

 

③プロキシ設定を手動に変更します。

f:id:russianble:20200302123808p:plain

 

④設定をスライドさせると、IPアドレスとポート番号の設定箇所がります。今回の環境では、192.168.11.7 と8080のポート番号を設定します。ご使用の環境に合わせて入力してください。プロキシポートは、薄い色で8080と表示されていますが、8080を入力し直さないと保存できないので注意してください。

f:id:russianble:20200302123816p:plain

 

SSLパケットを解析する場合、証明書のインストールを行います。

(PC側の設定で作成した証明書ファイルをSDカードもしくは、USBケーブル等を利用して端末にコピーしておいてください。ここでは、SDカードのdownloadフォルダに格納しました。)

設定アプリのセキュリティをタップします。

f:id:russianble:20200302123829p:plain

 

⑥認証情報ストレージの"SDカードからインストール"をタップします。

f:id:russianble:20200302123837p:plain

 

⑦ここでは、SDカードのDownloadフォルダに格納してるcecert.cerをタップします。

f:id:russianble:20200302123844p:plain

 

⑧証明書名を指定する画面が出ます。任意の名前を入力してください。ここれは、burpと入力しておきます。

f:id:russianble:20200302123851p:plain

 

⑨証明書の登録を確認します。先程の認証情報ストレージの画面から"信頼できる認証情報"をタップします。表示された画面で"ユーザー"をタップします。PortSwigger と表示されていれば、証明書のインストールが完了しています。(証明書を削除したい場合、この画面で証明書をタップし、表示されたポップアップの最下部にある削除ボタン押して下さい。)

設定は、以上で完了です。あとは、chrome 等でwebページを閲覧すれば、BurpProxy の画面にパケット解析ログが表示されます。

f:id:russianble:20200302123858p:plain
f:id:russianble:20200302123822p:plain

 より詳しい情報は、下記公式サイトを参考にしてください。

getting started with burp suite

https://portswigger.net/support/getting-started-with-burp-suite

documentation

https://portswigger.net/burp/documentation

スリープ解除されないようにスリープする

スリープ解除タイマが有効な場合、スリープを勝手に解除されることがあります。常にスリープを解除させたくない場合であれば、下記設定で、スリープ解除タイマを無効にすれば解決できます。

電源オプション⇒詳細な電源設定の変更⇒スリープのスリープ解除タイマの許可

もし、一時的にだけ、スリープ解除させたくない場合、下記のスクリプトを使うと便利です。SetSuspendState関数 を使っているのですが、引数を変えるとスリープ解除タイマを無効にしてスリープさせることができます。利用するには、下記のsleep.bat と sleep.ps1 を使います。2っのファイルをCドライブ直下のtestフォルダに移動し、batファイルをダブルクリックするとスリープします。

Universal Orchestrator

sleep.bat の中身

PowerShell.exe -ExecutionPolicy RemoteSigned "C:\test\sleep.ps1"

sleep.ps1の中身

$signature = @"
[DllImport("powrprof.dll")]
public static extern bool SetSuspendState(bool Hibernate,bool ForceCritical,bool DisableWakeEvent);
"@
$func = Add-Type -memberDefinition $signature -namespace "Win32Functions" -name "SetSuspendStateFunction" -passThru
$func::SetSuspendState($false,$false,$true)

 

sleep.ps1 は、下記サイトを参考にさせていただきました。

winscript.jp

 

タスクスケジューラでスリープ解除タイマが動作しない場合の改善方法

タスクスケジューラのタスクを登録する際、条件タブで"タスクを実行するためにスリープを解除する"にチェックした場合、コンピュータがスリープ状態であっても復帰してタスクを実行できます。ですが、Windows10では、うまく動作しなくなったようです。

そこで解決方法がないか探した結果、下記の条件をクリアすれば、スリープ解除できることが分かりました。 スリープ解除タイマ 動作しない スリープ解除しない

条件

 トリガー時の操作として"プログラムの開始"を選択し、その際実行されるプログラムは、即座に終了するのもを指定する。

下記設定のようにプログラムを指定すると、スリープ解除できました。わずかな時間でプログラムを終了しないとスリープ解除が始まらないのかもしれません。下記、英語のサイトの記述を参考にしました。

superuser.com

f:id:russianble:20200116213038j:plain

 設定の補足

条件タブは、スリープ解除できるようにチェックをつける必要があります。

f:id:russianble:20200116214010j:plain

一般タブは、下記のようにしています。"ユーザーがログオンしているかどうかにかかわらず実行する"を選ばなくても解除されました。こちらを選ぶ場合は、"バッチジョブとしてログオン"の権利が必要になります。システム管理者であれば、この権限を持っています。また、この自動ログオンでタスクが起動される場合、バックグラウンドジョブとして動作するため、UI画面が表示することはできません。session0で起動されます。この場合も、上記のようにすぐ終了するプログラムを指定しなければ、スリープ解除できません。一旦スリープ解除したあとに別のタスクを動作させれば、起動時間の長いタスクも処理できると思います。

f:id:russianble:20200116214006j:plain

トリガー条件は、テスト環境では、下記のようにしています。

f:id:russianble:20200116213041j:plain

 その他の注意点として、コントロールパネルで下記を有効にする設定も必要です。

電源オプション⇒詳細な電源設定の変更⇒スリープのスリープ解除タイマの許可

詰め替えそのまま PS-2 説明書

三輝 詰め替えそのままのパッケージにセット手順とポンプのクリーニング方法が書かれています。捨ててしまった方の為にスキャンを置いておきます。sanki 使い方 液漏れ 目詰まり ポンプ

大きい画像

f:id:russianble:20191229145302j:plain

 

大きい画像

f:id:russianble:20191229145311j:plain



 

広告ブロック アドオン uBlock Origin の使い方

uBlock Originとは

uBlock Origin は、ブラウザの機能を拡張するアドオンで広告ブロック機能を強化することができます。開発は、オープンソースで行われており透明性も高く、評価も良いです。スクリプトをブロックするのでなく、接続自体をブロックできるので柔軟に動作をカスタマイズできます。現時点で、SafariGoogle ChromeChromiumMicrosoft EdgeMozilla FirefoxOperaVivaldi とほぼ全てのブラウザに対応しています。スマホ用のアドオンも存在します。ABP Ad Blocker

おすすめする理由

uBlock Originをお勧めする一番の理由は、不要なJavaScriptをブロックするだけでなく、サイトへの接続自体をブロックできる為です。NoScriptを使った場合、Script単位でブロックを指定しますが、uBlockの場合、接続先URL単位でブロックします。この場合、広告サイト自体にまったくアクセスしないでトラッキングを防げます。これは推測ですが、サードパーティークッキーをオフにしてもfacebookのいいねボタンを表示すると相手にIPでばれてしまうのではないかと思います。訪問中のサイトからfacebook等へのアクセスを完全にブロックできれば、閲覧履歴を収集されることもないと思います。uBlockでは、訪問先のサイトごとにブロック設定をカスタマイズできます。この設定は、ローカルのブロックとして処理されます。全てのサイトに対して有効なブロックはグローバルのブロックと呼んでます。facebookをグローバルでブロックし、facebookのサイトを訪問している場合だけ、ローカルでブロックを許可するようにすると、facebook以外のサイトを表示している時だけ、facebookのアクセスをブロックできます。

www.nikkei.com

導入方法

FireFoxの場合、アドオン検索でuBlock Originを検索して、uBlock Originのページに移動し、[FireFoxへ追加] を押すだけです。デフォルトで広告フィルタのリストが搭載されているので、後は自動で広告サイトやトラッキングをブロックしてくれます。ブロックした場合、ツールバーに表示されるuBlockのアイコンにブロック数が表示されます。デフォルトの動作は、基本モードです。デフォルトで最適な設定になっている為、特別にカスタマイズしたいことがなければ設定タブの内容を変更する必要はありません。

 

uBlock Origin – 🦊 Firefox (ja) 向け拡張機能を入手

f:id:russianble:20191210004407j:plain

 

モードについて

基本モードと上級者モードがあります。

基本モード

広告サイトのドメインごとにブロックのカスタマイズができなく、フィルタリストに従って自動でブロックするモードです。唯一できることは、サイトによってブロック機能のON、OFFを切り替えることです。あと、scriptやビデオ再生といった機能単位の制限はできます。

上級者モード

サイト内のサブドメインや、サードパーティードメインごとにブロックするか個別に指定できます。ですが、設定を誤るとサイトの動作がおかしくり、広告ブロックが正しくできないようになることがあります。上級者向けです。細かく設定したい場合、こちらをおすすめします。

 

モードの切り替え方法

モードの切り替えは、uBlockのメニューから①の設定ボタンを押し、設定画面で [私は上級者です] のチェックを切り替えるだけです。変更後は、リロードが必要です。

f:id:russianble:20191210003204j:plain

 

f:id:russianble:20191210004028j:plain



基本モード操作方法

 基本モードは、下図のようにブロック結果が表示されます。①がの列がブロック結果を表し、がブロック、が許可、色はブロックと許可が混在していることを表します。②の列は、ブロックの内訳を表します。+が許可、-がブロックを表します。+は、1~9の要素をブロック、++は、10~99の要素をブロックとおおまかな数を表しています。色の場合、+と-が混在してます。③のボタンを押すことでフィルタリングを有効、無効に切り替えられます。ここで変更した設定は、即座に記憶され次回に表示した時も適用されます。④の「すべて」をクリックすると、ブロック結果を折りたたむことができます。折りたたむとトップレベルドメインだけ表示されます。

f:id:russianble:20191210010141j:plain

上級モード操作方法

上級モードでは、ベーシックモードと同じフィルタが適用されます。カスタマイズしなければ同じ動作ですが、訪問サイトごとに設定を書き換えることができます。

上級モードの画面は下記になります。基本モードと同じで、①がブロック結果を表します。②は、グローバルのブロック設定と結果、③は、ローカルのブロック設定と結果をあらわします。②、③の列にカーソルを近づけると、下記例では、ファーストパーティースクリプトのように3色の帯が表示され、クリックする色により許可()、デフォルト設定()、ブロック()を個別のサイトごとに設定できます。グローバルは、全てのサイトに対してブロックを設定し、ローカルは、訪問先のURLにのみ設定されるフィルタを決定します。ここで設定を変更すると一時的に反映された状態となり、下図2番目のように左上に2っボタンが出てきます。ここで右の鍵ボタンを押すと設定が保存されます。保存ボタンを押さないままブラウザを終了するとカスタマイズした設定はクリアされます。また、設定変更した場合、保存したかに関係なくリロードしないと反映されません。

f:id:russianble:20191210012527j:plain

f:id:russianble:20191210011617j:plain

ここで、下図を例にブロック状態の見方について説明します。②、③の列のセルの色は、カスタマイズされた設定を表します。下記を例にすると、amazon.co.jp がローカルで許可、amazon-adsystem.com がローカルで許可、doubleclick.netがグローバルでブロック、facebook.comがグローバルでブロックされる設定になっています。1rx.io などは、①の列を見るとブロックされているのが分かりますが、これは、カスタマイズによる設定ではないので色となっています。ですが、ブロックされているので-の印は表示されています。このブロックは、フィルタリストによるものです。カスタマイズの設定を誤ってしまうと、②や③の列がでも①のブロック結果がとなってブロックされていない事があります。②③列の色は、ブロックされていることを表しているわけではありません。ここで設定した値は、オプションのMyルール設定に書き出されます。万一設定を誤って動作がおかしくなってもMyルール設定を元の状態に戻せば完全に元に戻ります。

 f:id:russianble:20191210012527j:plain


 設定画面のその他のタブについて

フィルタ設定

基本モード、上級者モードのベースに利用するフィルタを選択します、私はデフォルト設定のまま使ってます。カスタムフィルタを自分で作成したり、外部サイトで配布されているフィルタを適用したりできます。

f:id:russianble:20191210021714j:plain

Myルール設定

上級者モードでカスタマイズした設定がここに表示されます。一時設定で保存してない場合、右のペインに一時設定が表示されます。通常は、左右どちらも同じ設定が表示されています。

rule_sample.txt   // テスト用のサンプルです。正しく表示できないページもあります。

f:id:russianble:20191210021706j:plain

ホワイトリスト設定

 電源ボタンを押してフィルタ機能自体をオフにした場合、ここに除外サイトとして登録されます。フィルタオフは、一時的ではなく即保存されるので注意しましょう。

f:id:russianble:20191210021721j:plain

 おまけ

uBlockには、動作ログを表示できる機能があります。表示方法は、uBlockのメニューからリクエストログをクリックするだけです。その後、ログを取りたいページをブラウザでリロードすると、uBlockの通信ログが記録されます。うまくページが表示できない場合や、ブロックした要素を調べたい時に便利です。

f:id:russianble:20191210213853j:plain

f:id:russianble:20191210213843j:plain

以上です

詳しい説明は、英語ですが下記サイトにドキュメントがあります。

Dynamic filtering: quick guide · gorhill/uBlock Wiki · GitHub

SQLite Unixtimeの数値で表された日付から日付文字列に変換する方法

SQLiteでは、日付を保存する型が無い為、REALやINTEGERに日付を保存するそうです。INTEGERでUnixtime形式で保存した数値を日付表示する場合、工夫が必要となります。10桁のUnixtimeを表す文字列があれば、下記の記述で日付文字列を取得できます。

SELECT datetime(1092941466, 'unixepoch');

 私の場合、16桁の数値から表示したかった為、INTEGERを一旦文字列に戻して10桁に変換しました。例としてtable1のdateaddedというinteger型のカラムから値をとってきてます。※とりあえず表示はできましたが、詳しくないので最適かは分かりません

select datetime( substr(printf('%d',dateadded),1,10),'unixepoch','localtime') from table1

 参考ページ

SQLite Query Language: Date And Time Functions