arashi1977さんの助け合いフォーラム投稿一覧
HTTPSを使用する場合には、HTTPSの機能でリプレイ攻撃ができないので、タイムスタンプを付加する
必要はないとの理解であっているでしょうか。
別の質問につけている話そのままですが、「パケットをそのまま取得してそのまま送りつける」だけの攻撃なので、HTTPSで暗号化されていようが丸々再利用(リプレイ)してうまく攻撃があたればラッキー、って感じで考えると良いと思います。
※セキュリティって「必要あるかどうか」じゃなくて「そもそも仕組みとして利用する」ものなんですよね。IPsec使ってるからSSHじゃなくてtelnetでいい、みたいな話にはならないかなと。
リクエストにタイムスタンプを付加することで、上記(2)は、攻撃者が(A)の内容をコピーして再利用する攻撃は防げるものの
(B)を盗聴してトークンを入手し、それをコピーして利用する攻撃は、防げないとの理解であっているでしょうか。
うーん、解説のこの部分がその辺の悩みの元ですかね?
リプレイ攻撃とは、攻撃者が正規ユーザの認証データをコピーして、その認証データをそのまま使って不正アクセスを行う攻撃です。
「認証データをコピー」って言うから違和感があるんだと思うのですが、REST APIを使う場合って「応答=トークン」ではなく、その前の認証段階でトークンを取得し、そのトークンを「認証済みって証拠はこれです」ってつけてAPIにリクエスト送るんですよね。
上記ドキュメントを例にすると、リプレイ攻撃のイメージは
登録されているデバイスの数を取得
$ curl -k -H "Authorization: Bearer $TOKEN" "${BASE_URL}${DLM_INVENTORY_API}/v1/nodes/count"
{"number_of_nodes":6}
ここのリクエストパケットを丸々盗んで、それをもう一度投げつける感じです。認証の手続きもクソもなく、$TOKEN
がパケットに含まれているのでそのまま使えるって話です。また、ここでは取得(show系)のやつですがデバイス削除のAPIだったりすれば、何度もこのパケット投げつけることでAPIによっては1台ずつデバイスが空になるまで削除し続けることができる、と言う攻撃なんですよね。
ここで「リクエストにタイムスタンプがついていれば、リクエストしてレスポンスも返したのに(たとえば10分以上前の)同じ内容のリクエストが来るのはおかしい、と判断できる」と言うのがタイムスタンプの話かなと思います。
Routerはデフォルトでは受信したCoS値を保存せず、そのパケットを出力する際にはCoS値=0で送出する認識なのですが、正しいでしょうか。
そうですね、CoS値を変更するのであれば、MQCでset cos
とかしなきゃいけなかったかと思います。
この問題で、RouterがCoS値を保存する前提とされており
ここはどこに記述されているものを持ってそう判断されたかが不明なので、なんとも言えないところです。
正解は「【3】CoS値=5」とされている
ここは設問の書き方の問題のような気はしますが、「PCがCoS=5で送ったフレームを受け取って処理する時点ではCoSはどうなっているか」と言う意図なんじゃないかなと思います。「受け取ったデバイスが送出するフレームのCoS」が何かを聞かれてるのではないと思います。多分…
質問の意図がうまく読めないので、間違ってたらごめんなさい。
Fa0/0間のOSPF経路が通常使用経路でそのバックアップがTu0間のOSPF経路の形になっている様に見えます。
いや、何も考えずにTunnel0もOSPF有効にしただけの構成だと思います。なぜなら、Tu0のGREパケットはFa0/0間を流れるので、バックアップにすらならない(Fa0/0間のどこかがdownしたらその時点で疎通不能になる)からです。
どちらかというと、Tunnelインターフェースの動作検証のために構成作ったはいいものの、何も考えずcost変更して経路いじったら変なメッセージでた、と言うCCNAからちょっと毛が生えた感じの人が作業ミスして陥る状況について触れているというイメージに受け取りました。
なので、「この設問のための特殊な構成」とかあまり難しく考えず「ルーティングループになったらこう言うメッセージが出る場合がある」と言うのを学習する問題であって、この設問のような構成が実際に使われるかと言われると「設計次第では?」って感じになるかなと思います。
うーん、そもそもIOSの挙動としてup/downとなる理由は問題、回答の通りだと思うのですが…参考URLの先の文書でも同じことが書かれてるっぽいですし。
ちなみにその時の show ip route
とか見ても4.4.4.4のconnected経路は存在しないし、192.0.2.1に到達可能な経路(default含む)もないし、その前提でTunnel0のshut / no shut
やっても同じ結果ですか?
そもそも設問が
以下のJSONデータについて正しく説明しているものはどれか
なので、
オブジェクトの最終行は","を使用しないため
と言われても設問のデータのオブジェクトの最終行に ,
がついてしまっているのでちょっとポイントが違うんじゃないかなーと思います。
あと試験テクニック的な観点で言うと、この選択肢は3つにグルーピングされていて
- データ形式に問題があるかないか(データ形式が不正、書式に問題はない)
- 問題があるとしたらどこか(最後のキーと値のペアにカンマは不要、すべての行はカンマで終わってはならない)
- 問題がないとしたらこのデータについて何が言えるか(オブジェクトは3つある、interfacesの行の「3」は文字列)
3つ目の「オブジェクトは3つある」は {}
が1つしかないので誤り、3は ""
で囲まれていないので文字列ではない、とすると「問題がない」とする選択肢が全滅するので、最初の「書式に問題はない」が排除されるんですよね。
そしたらあとは「問題があるとしたらどこか」のどちらが正解かですが、
- 最後のキーと値のペアにカンマは不要(1つしかない場合、または複数ある場合の最後はつけなくても良い、と言う意味になる)
- 全ての行 はカンマで終わっては ならない (「カンマで終わっている行があるJSONデータ」は全て書式誤りとなる、と言う意味になる)
で、前者は設問のJSONデータについてはマッチしますが、後者は「name, type, interfaces
の行末に ,
をつけているからおかしい」と言う回答になるので、不正解、と言うことかと思います。
日本語的な話ですかね。問題では
リソースが使用中のためアンマウントできなかった。使用中のプロセスを特定
とあるので、「リソースを使用中のプロセスを特定」したいって意図かと思います。ですので、nagutabbyさんのご説明通り「psコマンドでは、そのプロセスがどのリソースを使用しているかは表示しない」ので誤り、となるんですね。
+
のあるなしで挙動が違うんですよね。 +
なしだと
# chmod 222 testfile
# stat testfile | grep Access
Access: (0222/--w--w--w-) Uid: ( 0/ root) Gid: ( 0/ root) ←パーミッションは222
Access: 2023-03-13 17:15:34.725184019 +0900
# chmod 755 testfile
# stat testfile | grep Access
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) ←パーミッションが指定通り755になっている
Access: 2023-03-13 17:15:34.725184019 +0900
で、+
ありだと
# chmod 222 testfile
# stat testfile | grep Access
Access: (0222/--w--w--w-) Uid: ( 0/ root) Gid: ( 0/ root) ←パーミッションは222
Access: 2023-03-13 17:15:34.725184019 +0900
# chmod +755 testfile
# stat testfile | grep Access
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) ←パーミッションが222+755なので777になっている
Access: 2023-03-13 17:15:34.725184019 +0900
と、755のつもりだったのに777になってしまうんですよね。755になって欲しいのに777になるなんて!
この問題で言うと、Wは省いて「LED_」という文字列で検索して良いという意味なのでしょうか。
そうですね。というか解説の以下の部分に続くところでどのような文字列が検索文字列となるかが記載されています。
'i%LEDW%ライト%'
設問の文字パターンでは、2つ目の「_」がワイルドカードでは無く、文字のアンダーバーとして扱われます。
この文字パターンは、以下のような文字列を表します。
超シンプルに言えばESCAPE '\'
だったら \
になるはずのエスケープ文字がこの問題ではW
になってる、ってだけの話ですね。
最適解でない認識なのですがいかがでしょうか。
というだけだとちょっと判断つかないので、何が「最適解」となりそうか示していただけるとありがたいです。
この設問では、単に「show log
で出力されたSYSLOGが"起動後のいつ発生したものか」がわかるようにしているだけですが、Ciscoルータは再起動したら基本的にログが消えるので、再起動したら新しい(まっさらからの)SYSLOGが新しいuptimeベースで記録されるのでとりあえず「いつ発生したか」は確認できるようになるかなとは思います。
参照URLの注として書かれてる以下の関連ですかね?
注:この設定では、 match external 1 external 2 入力されたコマンドは redistribute ospf 1 match external. OSPFは自動的に追加されるため、これは正常です external 1 external 2 を設定します。OSPF の external 1 と external 2 の両方のルートに一致し、両方のルートが BGP に再配布されます。
機械翻訳だと意味わからないので英語の方も
https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/5242-bgp-ospf-redis.html
Note: The configuration shows match external 1 external 2 and the command entered was redistribute ospf 1 match external. This is normal because OSPF automatically appends external 1 external 2 in the configuration. It matches both OSPF external 1 and external 2 routes and it redistributes both routes into BGP.
kamui44さんの言われる通り match internal external
って入れても、自動的に match internal external 1 external 2
に変換されるってなってるので何もおかしくないですし、選択肢の match internal
もしくは match external 1(2)
では回答として不足してるので、設問の要件を満たすものは match internal external 1 external 2
だけになるってだけかと。
「算術式」っていうと難しいですけど、結局は「式(expression)」のことですね。
https://docs.oracle.com/cd/F35743_01/sqlreferencefornosql/group-clause.html
具体例はここの記事を参照いただくと良いかと思います。
https://taityo-diary.hatenablog.jp/entry/2018/06/25/230207
設問の条件に
・宛先:「2001:DB8:1234:4::4」へのホストルート
があるので、フルビット(IPv4なら/32
, IPv6なら/128
)で指定する必要があります。なので実際の回答通りで問題ないと思います。
ちなみに、「正しいと思われる」で /64
とされている理由はなんでしょうか?そこが説明できると理解度も上がるかなと思います。
この問題の前提は
# mount -t xfs /dev/sdb2 /data
コマンドでマウントした /dev/sdb2
をアンマウントすることなので、それ以外のことを考慮することは求められていないんじゃないかなと思います。
仮定の話で回答を考えると、
- 選択肢のコマンド実行前にすでにマウントしてあるので、アンマウントができないことだってありうる(問題文の通りにならない)
- 実は選択肢にはコマンドだけが書いてあって「実行ユーザー権限」が考慮されていないので、どれもコマンド実行権限がなくてエラーになる(=正答なし)
とかありえますよね。
試験勉強としては問われているものを回答することを第一に考えて、しかし実運用の際はbuildさんのように十分注意(考慮、検討)してコマンド実行するというのが良いんじゃないかな、と思います。
コマンド実行に関する注意点を意識できてるの、とても良いと思います!
BGPの仕様としてMEDは隣接する「単一のAS」に対して経路制御に用いるパスアトリビュートの認識です。
65002・65003の異なるASからMED値を受け取った場合、経路制御においてMEDは有効に機能することは無く、優先経路も冗長化されない認識なのですが…
はい、だから解説でも記載がある通り、RAで以下の(仕様とは異なる挙動をさせる)追加設定が必要になるんですね。
なお、異なるASからの情報を比較させたい場合は「bgp always-compare-med」コマンドを使用します。
この辺りは以下の公式ドキュメントの「最適パス アルゴリズムの仕組み」の6番を見てもらうのが良いかなと思います。
https://www.cisco.com/c/ja_jp/support/docs/ip/border-gateway-protocol-bgp/13753-25.html#anc2
10.1.1.0/24の経路をネイバ198.51.100.6を対象にしたin方向のディストリビュートリストを設定
そうすると、RC(AS3)から受信した10.1.1.0/24の経路情報をフィルタリングするということになるかと思いますが…
設問とは想定される状況が異なるので「フィルタリングは可能だがそれが意図した設定になるか」は別の話になりそうです。
insertはdepartment_id = 1でないとエラーになるようですが、updataは条件以外のレコードでもよいということなのでしょうか
問題のVIEWのポイントって
SELECT department_id, employee_id, employee_name, salary
FROM employees
WHERE salary > 250000 AND salary < 800000
AND department_id = 1
ですよね。要件としては
- 部署ID(
department_id
)が1 - 給与(
salary
)が250000から800000の間
です。
当たり前ですが、INSERTする時には「この条件に当てはまる行の挿入」となるので、どちらも満たさないと絶対エラーになりますよね。ですがUPDATEは「この条件に当てはまるものを指定した内容に更新」するよう指示しているだけです。改めて後者(UPDATEの方ですよね?)をみると
UPDATE v_emp SET salary = 500000 WHERE department_id = 3;
となっており、「部署IDが3の行のsalaryを一律500000にせよ」という指示なので、部署IDが3のものを見つけて更新しようとしますがVIEWの定義により部署ID:3のレコードはヒットしない(VIEWのWHERE句に含まれない)ので「対象レコードが見つからず更新できない=実行した結果0件更新できたよ」となるだけでエラーにはならないというだけのことです。
INSERT時は範囲外の値をセットすると「範囲外の値は入力できない(エラー)」となりますが、UPDATE時は更新指示自体がエラーになるのではなく「処理を実行した結果0件でした」となるのだよ、という違いですね。
そもそもRouterDをBGPピアに指定する条件
この条件がなくてもこの問題は成立すると思うのですが、何を疑問に思われているのかもう少し補足いただくことは可能でしょうか?
Cisco 機器にはControl Plane Policing(CoPP) という機能があり、
コントロールプレーンでポリシングを行うことが行うことができることを知りました。
ポリシングはQoS の一種だと思いますので、QoS も正解になる可能性があるでは、と思われましたが、いかがでしょうか。
ポリシングはQoSの一種だという点は納得できるのですが、CoPPがQoSだというのはなんかピンと来ないんですよね。おそらくQoS(Quality of Service)のServiceをどう捉えるかという点なのかなとは思っています。
↑で提示したドキュメントでも
CoPP 機能は、不要なトラフィックおよび Denial of Service(DoS)攻撃から CPU を保護することでデバイスのセキュリティを向上させます。
と記載があるようにCoPPは「セキュリティ(コントロールプレーン機能の保護)」の目的のものなんですよね。
では「コントロールプレーンの機能」といったときに「セキュリティ」目的の機能が「QoS」として分類できるものなのか?って言われると、私はなんか違うかなぁと感じてます ^^;