タグ

Linuxに関するroid123のブックマーク (30)

  • x86上のLinuxとFreeBSDにおいて、メモリキャッシュを無効にするカーネルモジュールを書いた話 - alphakai’s tech blog

    どうも、前回の記事が思っていたよりも反響があり、Blogを書くモチベーションが高まり、また記事を書くことにします。 ↑とか書いたんですが、このへんまで書いて50日くらい記事を書くのを放置していたので、ちゃっちゃと書き上げることにします。 今回はx86なCPUに存在するControl Registerのうち、CR0に存在するCache Disableフラグを操作するカーネルモジュールをLinux、FreeBSDのそれぞれ向けに作ったのでそれについて記述します。 それでは、続きからどうぞ。 はじめに、作成したカーネルモジュールのリポジトリへのリンクを掲載します。 Linux版のカーネルモジュール(procfsとして実装) cr0cd FreeBSD版のカーネルモジュール(キャラクタデバイスとして実装)cr0cd_fbsd そもそもこれはなに 一言で言うと、メモリのキャッシュ(L1, L2, L

    x86上のLinuxとFreeBSDにおいて、メモリキャッシュを無効にするカーネルモジュールを書いた話 - alphakai’s tech blog
  • Linux メモリ管理を理解したい - Qiita

    Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ

    Linux メモリ管理を理解したい - Qiita
  • Linuxカーネルのソースコードを機能とレイヤーで分類して表示してくれる「Linux kernel map」

    Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactive map of Linux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。 Interactive map of Linux kernel http://www.makelinux.net/kernel_map/ サイトにアクセスし、ロードが終わると下の画像のように6列6行の表が表示されます。列が機能の分類を表しており、「インターフェース」「システム」「処理」「メモリー」「ストレージ」「ネットワーク」という分類になっています。行はレイヤーを表しており、上からシステムコールなどの「ユーザースペースインターフェース」、「バーチャル」、「ブリッジ」

    Linuxカーネルのソースコードを機能とレイヤーで分類して表示してくれる「Linux kernel map」
  • Linuxサーバ上でホスト間コネクションを集約表示するツール lstf をつくった - ゆううきメモ

    概要 netstatやssコマンドにより、あるホストと他のホストとのコネクションを一覧表示できる。しかし、Webシステムの場合、クライアントが並行接続するため、 同一ホストから複数のポートを介してコネクションを確立しているケースが多い。コネクション数が大きい場合は、1万以上のコネクションが表示され、ホスト間のコネクション状況を人間の目で概観することが難しかった。 そこで、同一ホストとのコネクションを集約表示し、コネクション状況を概観する 「lstf」 (「えるえすてぃーえふ」)コマンドをつくった。 github.com lstfの特徴は以下の通り。 コマンド実行ホストを起点に、active openコネクションかpassive openコネクションを判定する。つまり、接続をする側かされる側かを判定する。 各ホストフローごとにコネクション数を表示する Goで実装されているポータビリティ。i3

    Linuxサーバ上でホスト間コネクションを集約表示するツール lstf をつくった - ゆううきメモ
  • 『Linuxのしくみ』を読みました - スベリミナル効果

    OSCにて、著者様ご人から直接売って頂いた『Linuxのしくみ』ですが、読むの遅くてモタモタしてましたが無事読み終わりましたので軽く感想など書かせていただければと思います。遅かったのは花粉症とMHWのせいだ。 [試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識 作者: 武内覚出版社/メーカー: 技術評論社発売日: 2018/02/23メディア: 単行(ソフトカバー)この商品を含むブログを見る 読んだ人 Linux触り出してそろそろ10年目(マジかウソだろおい…) だいぶ前に職場でカーネル2.6解読室とかの輪講とかはやってたけど「お、おう」くらいな理解度だった Kernelのコードまで読んだ経験はあまり無い 難易度の高くないLAMP周りをボチボチ(高負荷になることが無い簡素なUIとか) iptablesとかnetfilter周りをボチボチ OSSでVPN繋ぐ

    『Linuxのしくみ』を読みました - スベリミナル効果
  • The OOM CTF

    カーネルのバージョンやシステムの構成や実行するタイミングなどの変動要因により、結果が異なる場合がありますことを予めご了承ください。 0.3 自己紹介:熊Linux との関わりについて OSレベルでのセキュリティ強化 2003年4月から2012年3月までは、 TOMOYO Linux という Linux システム向けのアクセス制御モジュールの開発に携わってきました。バッファオーバーフロー脆弱性やOSコマンドインジェクション脆弱性を撲滅できない状況で、当初は SELinux という難解なアクセス制御モジュールしかありませんでした。 TOMOYO Linux のメインライン化にまつわる苦労話は、セキュリティ&プログラミングキャンプ2011の講義資料を参照していただければと思います。 TOMOYO Linux から始まって AKARI や CaitSith に至るまでの変遷は、セキュリティ

    The OOM CTF
  • facebookのosqueryがキモすごい - rochefort's blog

    プロセスとかハードウェアの情報をSQL likeに取得できるすごいツール。 詳しく読んでないですが、CLIだけでなくdaemonとして動かして結果も記録できるとのこと。 osquery | Easily ask questions about your Linux, Windows, and macOS infrastructure 物によってはコマンド打つより、見やすくていいかもしれない。 こんな感じ SELECT DISTINCT process.name, listening.port, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid WHERE listening.address = '0.0.0.0'; 他には 以下にテーブ

    facebookのosqueryがキモすごい - rochefort's blog
  • Linuxカーネルを読む前にやったこと - komukomo’s diary

    「カーネルのコードがよくわからない。Linuxカーネルに関するを読んでもいまいちしっくりこない。」 から、「読めば理解できそう..!」 になるまでにやったことのまとめ。 はじめに 低レイヤの話がわかるようになりたかった。 カーネルの中身が知りたかった。 とりあえずを読もうと思い詳解 Linuxカーネル 第3版を読んだが知識がなさ過ぎてよくわからない。 知らない用語だらけで都度調べればなんとなくはわかる気もするが、いまいち頭に入ってこない。 今思うとそもそもCPUの話なのかカーネルの話なのかさえよくわからない状態で読んでいたような気がする。 そんな状態を克服するためにやったことをまとめておく。 学習前 学習前の自分の知識はこんな感じだった。 知っていた データ構造とアルゴリズム 論理回路 C言語(研究室で数値計算に使える程度。構造体やポインタくらいならわかる。) よく知らなかった OSが

    Linuxカーネルを読む前にやったこと - komukomo’s diary
  • インストール不要!WindowsでLinuxコマンドを使う - Qiita

    (2018/11/17更新) 記事公開から3年経過し、WindowsにおけるLinuxコマンドの扱いについて取り巻く環境が変化してきたため内容をアップデートしました。合わせてWindows上でシェルスクリプトを実行するためのTipsも追加。 前置き Linuxなどの環境を使いはじめて慣れてくると、シェルや各種Unix系コマンドの使いやすさが手放せなくなってきます。そんなときにWindowsでデータの編集や解析などを行おうとすると、大変不便に感じてしまいます。 Windowsにも元々コマンドプロンプトや、PowerShellといった環境はあります。しかしこれらを駆使してLinuxと同等のことがしたい、と思ったものの挫折した経験を持たれている方は少なくないのではないでしょうか。(私の場合は、コマンドプロンプトやバッチファイルの貧弱さではどうしようもなく。PowerShellは学習コストが高そう

    インストール不要!WindowsでLinuxコマンドを使う - Qiita
  • カーネルエクスプロイト入門2 - 特権モードを利用した権限昇格の仕組み - - るくすの日記 ~ Out_Of_Range ~

    0. はじめに カーネルエクスプロイト入門記事part2です。 前回part1では、環境構築とLinuxカーネルのメモリ管理の基礎について、実際のエクスプロイトでのユースケースを通して説明しました。 rkx1209.hatenablog.com さて、part2では実際にLinuxカーネルエクスプロイトを書いて行きます。 とはいえ既存の脆弱性を利用するエクスプロイトを記述するのはあまりよろしくないので、今回は学習用に脆弱なドライバを用意し、エクスプロイトを書いていきます。 まあ基的なロジックは実際の脆弱性のそれと同じなので、意義はあるはずです。 学習用ドライバとエクスプロイトコードは以下のレポジトリに置いてありますので、各節ごとに逐次参照 してください。 github.com 1. 特権モードでの権限昇格 脆弱性を悪用して権限昇格を行うにはいくつか常套手段があり、中でも典型的な物がスタッ

    カーネルエクスプロイト入門2 - 特権モードを利用した権限昇格の仕組み - - るくすの日記 ~ Out_Of_Range ~
  • カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~

    0. はじめに 記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基的にカーネルはシステム内で最高権限を持つ特権モードで動作しているので、ここを悪用されるとシステムの大部分(ほぼ全て)を掌握されてしまいます。 エクスプロイトと言うと、普通はユーザー空間で動作しているアプリケーションのバグをつく物が多いですが、これだと限られたレベルの権限しか奪えません。 SELinuxやjailを始めとする、OSレベルでの保護機構に阻まれるとたちまち効力を失ったりします。 しかし、カーネル自体の脆弱性をつくカーネルエクスプロイトを利用すると最高権限での任意コード実行が可能なため、大抵の保護機構はものともしません。 このカーネルエクスプロイトが特に効力を発揮

    カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~
  • ptraceとELFとLinuxレジスタ : sonots:blog

    ptraceとELFとLinuxレジスタ : sonots:blog
  • LinuxカーネルのTCPスタックとシステムコールの組み合わせによる手法よりも高速にポートのListenチェックを行う - 人間とウェブの未来

    まずは前回の記事で盛大な誤認をしていたことを訂正しなければなりません。 hb.matsumoto-r.jp 前回の記事では、高速にリモートホストのポートチェックを3パケットで実現する実装を行うために、RAWソケットとユーザランドの簡易TCPスタックを実装してパケットを放出しましたが、カーネルのTCPスタックによって自動的にRSTパケットが返されるため、RSTパケットが返されるよりもはやくrecvfromしないとSYN+ACKを受け取れないと述べました。 しかし、以下のようにご指摘を頂き、 @matsumotory LinuxのSOCK_RAW+IPPROTO_TCPの場合、カーネルがRSTを送出したとしても同マシン上の既存raw socketに対するrecvfrom()が0を返すことはないと思うのですが、検証されているカーネルのバージョンはいくつでしょうか?— Hiroki Sato (@

    LinuxカーネルのTCPスタックとシステムコールの組み合わせによる手法よりも高速にポートのListenチェックを行う - 人間とウェブの未来
  • dockerではなくsystemd-nspawnを利用するシチュエーション - Solist Work Blog

    dockersystemd-nspawnについて考えます。 サイトが成長することを考慮するとKubernetesなどの強力なクラスタ管理システム を使うことはほぼ必然になると思うのでdockerは欠かせなくなるツールだから使ったほうがよいですが、 dockerを普通の単一サーバーの実験用のコンテナとして使うのは色々めんどくさい感じなので 単一サーバーの実験用コンテナはsystemd-nspawnを使うことにします。 単一サーバーにおけるビルドテストとCIにだけdockerを使うならまだ話はわかるのですが、 このような場合においてさえdockerを使うのは、肉じゃがを作るときに和泉守兼定を使うようなものだと思います。 単一サーバーで運用する場合はサイトが成長したらKubernetesAWS Fargateを使用するためにdockerを使う方針でよいでしょう。 デファクトスタンダード sy

    dockerではなくsystemd-nspawnを利用するシチュエーション - Solist Work Blog
  • 知っておくべきUnixユーティリティー : lsof | Yakst

    ファイルがどのようなプロセスやユーザなどに使われているのかを表示する lsof コマンドの使い方を網羅的に書いた記事。基的なものから複数条件を指定したちょっと複雑な使い方まで。 これは、知っておくべきUnixやLinuxのユーティリティーに関するシリーズの3番目の記事です。この記事では、便利な lsof ツールについてお伝えしようと思います。 netcat がネットワーク接続のスイスアーミーナイフ(訳注 : 何でもできる便利なツールの意味)なら、 lsof はUnixのデバッグのスイスアーミーナイフであると言いたいところです。 lsof はUnix哲学に忠実に従っています。ひとつのタスクだけを完璧にこなす、つまり、プロセスによって開かれているファイルの情報を一覧にするだけです。開かれているファイルとは、通常のファイル、ディレクトリー、NFSのファイル、ブロックファイル、キャラクタースペシ

    知っておくべきUnixユーティリティー : lsof | Yakst
  • カーネルモジュール作成によるlinuxカーネル開発入門 - 第一回 hello world - Qiita

    はじめに 記事の内容はUbuntu16.04でのみ確認しています。同名の電子書籍においてはUbuntu 18.04に対応しています。 記事の目的は、linuxのカーネルモジュール(以下カーネルモジュール)というものの作成を通じてlinuxカーネル(以下カーネル)の開発に最低限必要な知識をつけることです。C言語のポインタがわかる程度の開発スキルがあれば多分読めると思います。 記事は、過去にセキュリティ&プログラミングキャンプ2010というイベントの中のLinux開発者育成コースにおいて使用した資料を加筆、修正したものです。1つの記事に納めるのは無理がある分量なので、(不定期)連載という形式をとることにしました。 記事に記載されているコードを実際に試すためには、仮想化機能を持つCPUを搭載したPCにインストールされたUbuntu16.04が必要です。CPUの仮想化機能を持っているどうか

    カーネルモジュール作成によるlinuxカーネル開発入門 - 第一回 hello world - Qiita
  • LinuxのARPとL2スイッチのお話 - masayoshiの日記

    この記事は、はてなエンジニアアドベントカレンダー2016の12月19日の記事です。 developer.hatenastaff.com 昨日はid:taketo957くんの 10ms以下のレスポンスタイムを支える継続的負荷テスト - taketo957の日記 でした! Webオペレーションエンジニアのid:masayoshiです。 2016年に入社後、基盤チームとして仮想化、ネットワーク周りを中心に見ています。 さて、この記事ではLinuxのARPの挙動とその挙動から起こった問題を紹介しようと思います。 長々と記事を読みたくない人向けに結論をまとめるとLinuxのARPはTCP通信で使われ続ける限りキャッシュが飛ばないという挙動になるので、複数のL2スイッチにまたがったセグメントや非対称ルーティングをしている場合は気をつけましょうという話が書かれています。 今回紹介する事例自体は別に新規性

    LinuxのARPとL2スイッチのお話 - masayoshiの日記
  • ビルドしたLinuxカーネルをブートできる最低限の環境を用意する(with Busybox & qemu) - 豆腐の豆腐和え

    最近Linuxカーネル周りを触り始めています。Linuxカーネル周りを触り始めたといってもそもそもLinux歴が浅く、menuconfigを格的にいじりながらビルドするのは今回が初めてだったりしてブートするだけでも大変でした。そこらへんをまとめます。 カスタムビルドしたLinuxカーネルをブートできる環境を簡単に用意する 今更何だという感じですが、Linuxとは正確にはカーネルの部分だけのことを指していて、ユーザーランドを含みません。巷でよく言われるアレですね。(もしあなたが十分に信心深いなら、Linuxシステム全体をLIGNUXと呼んでもよいです。) なのでkernel.orgから引っ張ってきたカーネルソースをビルドしても、すぐには起動して試すことができません。ubuntuなどのディストリのカーネルを入れ替える形でブートさせてもいいのですが、 カーネルソース自体をいじっていてテストをし

    ビルドしたLinuxカーネルをブートできる最低限の環境を用意する(with Busybox & qemu) - 豆腐の豆腐和え
  • あなたの知らない less の世界 - Qiita

    最近 prezto 入れたんですよ。prezto。そしたらいつものシェル世界が見違えるほど使いやすくなって身長も 3 メートルくらい伸びたんですが、それは余談でして、prezto 入れた後に less 使ってみたら余りの変わりっぷりに驚いたんです。 これを機に man page を読み直してみたら更に驚き。less ってこんなスゴイ物だったのか!みたいな。今回はそんな less の底力を紹介します。 環境変数 $LESS less には様々なオプションがあるのですが、これを予め環境変数 $LESS に設定しておくと、毎度 less ファイル名 と打つだけでそれが有効になります。更に、後述しますが、この設定は less 起動中にオン・オフして切り替えることが可能です。 # 最低限でもこれくらいは設定しておこう export LESS='-i -M -R' # 僕は後述の物を全部付けてます(-

    あなたの知らない less の世界 - Qiita
  • 全訳!fishシェル普及計画

    デフォルト の設定が貧弱→fishならば 無設定で便利機能満載 シェルスクリプト が苦手→fishスクリプトならば シンプル でわかりやすい 無駄に 多機能 で覚えきれない→fishは必要な機能を 厳選 している マニュアルが わかりづらい →fishのマニュアルは 具体例満載 でわかりやすい 設定ファイル を書くのが面倒→fishならば Webブラウザ で設定できる! 補完設定 を書くのが面倒→fishならばmanページを解析して 自動で 補完設定をしてくれる シングルクォート 中にシングルクォートを書けない→fishならば \’ と書ける 関数や環境変数を保存 するのに設定ファイルの書換えが面倒→fishならばその場で 永続化 できる 和訳 マニュアルがない→fishの 最新版公式文書を全訳済 他にもこんな便利機能があります。 Webブラウザのような Auto suggestion ま

    全訳!fishシェル普及計画