金曜日, 6月 06, 2025

nftablesでiptablesのhashlimitの代わりをしようとしたら世の中の情報もChatGPTも間違ってた話

まぁタイトルのとおり。beepcapです。
日本語どころか英語の文献も調べたのに正解がないのでみんなdebian系のnftables真面目に使ってないんじゃないかと思う。

要件

要件は以下の通り。

  • sshへのnewアクセスを制限したい 
  • sshへはipv4以外からのアクセスを遮断している
  • 1時間に5回以上のアクセスを検知したら遮断
  • 遮断判定したIPアドレスは24時間アクセスを拒否

対応

まず、nftables.confのtable inet内にblacklistをsetする。

set ssh_blacklist {
    type ipv4_addr
    timeout 24h
}

そして、さらにchain input 内に処理を追加する。

ip saddr @ssh_blacklist log prefix "Deny SSH access:" drop
tcp dport 22 ct state new limit rate over 5/hour add @ssh_blacklist { ip saddr } log prefix "SSH blocked due to excessive access:" drop

これだけ。良かったね、僕が記事を書いたあとに対応する人は楽で。

説明

まず、setしたblacklistがアクセス過多の相手のIPアドレス(v4)を記録する。timeoutに24hを指定しているので、登録された情報は24hで消去されまたアクセスができるようになる。
set ssh_blacklist {
    type ipv4_addr
    timeout 24h
}
次にsource addrがssh_blacklistに含まれている場合にdropする。
ip saddr @ssh_blacklist log prefix "Deny SSH access:" drop

最後に情報がなかった回数を検出する処理だが、nftはコマンドの連携で成り立つ機能であるため要素を分解して説明する。

今回はssh(port 22)へのアクセスを受信側のportで判定する。

tcp dport 22

次に接続時のstateが新規(TCP SYN)かを確認する。

ct state new

そして、一時間に5回のアクセスを超えているかを確認する。このlimit rateはnftablesの機能であり簡単にiptablesのhashlimitのような対応ができるが、実はこの指定は60sec(たぶん)で自動的に解消されてしまう。なので遮断時間が60secの要件の場合しか使えないのだ。この辺を理解してない記事がwebには非常に多い。overを付けないと5回以下の場合に条件マッチするので注意。

limit rate over 5/hour

これまでの条件に合致したIPアドレスをssh_blacklistに追加する。
add @ssh_blacklist { ip saddr }

ログはおまけ

log prefix "SSH blocked due to excessive access:"

最後にこれらの条件にマッチしたパケットを落とす

drop

とこのようになっている。

考察

そもそもなんでwebにちゃんとした情報がないかを考察する。まずfirewallをCUIで設定している人が少ないのではないか、特にlimit rateの時間制限はまずくてこれで十分としている記事は非常に多いし、limit rateそのものの説明も非常に少ない。最終的に情報として頼れたのはman nftだけであった。hashlimitの採用例が少ない可能性もある。多くの場合過剰アクセスのログインの遮断は認証処理側で行われている場合も多い(webページなど)。
当然の帰結として、ChatGPTも嘘ばかり教えてくれた。役に立たんやつである。

土曜日, 11月 19, 2022

Twitterが終わった後の連絡先

 Twitterがサ終することは無いとおもってますけど、一応連絡先書いておきますね。

メールアドレス: beepcap@gmail.com


以上

火曜日, 3月 16, 2021

真面目な人にはちょっと言えない話

どうもbeepcapです。
今回も年に一回の発作でblogが書きたくなってしまったので書こうと思います。

さて、最近こんなツイートをしたら結構ナイーブな反応があったんですよ。
https://twitter.com/beepcap/status/1371601605007532033

で、なんで飲み会に参加しない人がいわゆる無能と判断される率が高いのか持論があるのでそれを書こうかと思います。
が、ここで確認しなければならないことがあります。
以下の人は多分この文書は毒なので読まないほうが良いとおもいます。

  • 真面目に生きることが大事だと思っている人
  • 努力することに美徳を感じる人
  • 公正な世界を期待している人

あと、これらに該当しない人にとっても毒にはなっても薬にはなりませんので、そのつもりでどうぞ。


日曜日, 7月 26, 2020

サルシッチャ作るぞ

まだ作成前のメモ

ひき肉、塩(5%)、ハーブ
よく混ぜて冷蔵庫で小分けにしながら熟成(およそ1週間以上)

食べるときは茹でて焼くか
パスタの材料などにする

土曜日, 7月 04, 2020

(自作)冷製たらこパスタのオリジナルレシピ

色々と試した結果の自分用のメモ

材料:
  • オリーブオイル おおさじ2
  • にんにく 1片
  • たらこ 2腹
  • 日本酒 おおさじ1
  • パスタ 1人前(100~150g?)
  • 大葉 一枚分

手順:
  1. オリーブオイル(おおさじ2程度)に芽を取り除いて潰したにんにくを入れ、弱火にかけて香りを抽出する。
  2. 金属のボールを二重にし、下のボールに氷水を入れる。(生クリームを泡立てる時と同じ)
  3. 上のボールに香りを抽出したオリーブオイルを入れ、冷やしておく。(あらかじめ火を消した後、粗熱を取ってから入れた方が氷がすぐ融けず不足しにくい)
  4. オリーブオイルが冷めたら、たらこ2腹の皮を包丁で割き、中身を上のボールに加える。
  5. 日本酒おおさじ1を上のボールに加え混ぜておく。
  6. 細めのパスタ1人前を1.5%ほど塩を加えたお湯で既定の時間より1分ほど長く茹でる(湯で時間は目安、お好みで調整可、ただしパスタは冷やすと少し硬めの食感になる。)
  7. 茹でたパスタのお湯を切って、上のボールに加える。
  8. よく和えて、刻んだ大葉を乗せ完成。
備考:
手順5で溶かしバターや醤油、魚醤などを加えてもいいが、パスタの塩気とたらこの量を調整しないと塩辛くなる。
日本酒は代替が見つからなかった。臭みを消せるのならもしかしたら中国酒とかならいけるかも。ワインは僕には合わなかった。


追記:
日本酒のアルコールが残ってしまうので、まだ油が熱いうちに入れてアルコールと水分を飛ばすなどの確認は今後の研究項目。

火曜日, 11月 05, 2019

GNU コーディング標準 C言語編(多分前編)

どうもどうもbeepcapだよ。

Twitterにてバカにしたのだが、意外とみんな知らなそうなのでもしかしてと思って調べたら日本語訳が無い。
そりゃ知らん人が多いわけだ。

ということで簡単に訳してみる。(一部超訳)
原文は: GNU Coding Standards: Making The Best Use of C

水曜日, 6月 27, 2018

無敵の人なんていない

無敵の人なんていない

beepcap

2018/06/27

最近殺人事件が起きて世間を騒がせている。 事件の被害者の方のご冥福を祈るばかりだが、 この事件では加害者が「40代のニート」であって、 守る物が何もないから起きたと分析する向きもあるようだ。 こういう人たちを、黒子のバスケの脅迫事件の犯人のセリフから、 「無敵の人」と呼ぶことが多くなってきた。

曰く、「『無敵の人』はすべてを失っているからもう何も守る必要がない、 そう社会性の根源たる法律もだ!」という理屈なわけだ。 なるほど、一理あるように見える。 すべての失って何も捨てる物がなければ、ほんのわずかなバランスで殺人の犯す、 理屈が通っているように見える。

が、本当にそうだろうか?

まず前提として、彼らはすべてを失っているだろうか? 職が無い? 友人や家族がいない? そんな人間くさるほどいるし、それでも楽しく生きている人間も それなりに見かけないか? ネットの世界ではよく居るような気さえしないか? 今回の犯人も、インターネットでは暴れ者として有名だったようだ。 少なくとも彼らの居場所はインターネットにあったようだ。 「すべて」を失っているわけではないように見える。

また、すべてを失った人は人を殺しに行くか?という問題もある。 孤独死の件数が昨今増えているという報道があるが、 彼らとて、孤独に死ぬくらいなのだから、世間に恨みの一つや二つはあるだろう。 しかし、孤独死をしそうな人間のモラルが急激に低下したといったような... 少なくとも今回の事件につながるような類型の事件は起きていない。 半面、新幹線斧事件もそうであるように、何らかの要因と共に、 事件は発生している。 そして、これは誰しもが経験があるとは思うが、 人は世間とのつながりをすべて失ってしまったと、(それが誤解でも) 認識してしまったら、自殺してしまうのではないか? 「すべて」を失ってしまった人は、犯行を起こす動機も失ってしまうように見える。

僕はだから、「無敵の人」などというものはいないと考えている。 では彼らは何なのか、何が要因で「普通の人」なら考え付きもしないような、 凄惨な事件を起こせるのか。

僕は彼らが、「世間とのつながりが先鋭化した人たち」ではないかと予測している。 カンダタのように、細い細い蜘蛛の糸で世間とつながっている人たちだ。 今回のブロガー殺人事件では、その細い糸が「はてな」だったのではないか?

皆は「はてな」を凍結されただけで、殺人を犯すなんて酷いという。 しかし、もしも、人生に於ける世間との最後の繋がりが、 彼の正義や社会性のありかが「はてな」だったのだとしたら...

彼の行為は許されるものではない。 しかし、彼は決して「無敵の人」ではない、 さいごの砦を守る、孤独の人だったのではないだろうか。

About this document ...

無敵の人なんていない

This document was generated using the LaTeX2HTML translator Version 2017.2 (Released Jan 23, 2017)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 無敵の人なんていない.tex

The translation was initiated on 2018-06-27



自己紹介

自分の写真
NetRadioDJ ...since 2003, Programer ...since 1994