- 投稿日:2020-09-16T23:08:41+09:00
Ubuntu20.04とRaspberry PiでIPsecゲートウェイの簡易VPN構築 - 1.StrongSwan導入
前提と準備
Linuxサーバー構築の記事
- Sambaでファイルサーバー構築(CentOS 8.1・openSUSE 15.1・Ubuntu 20.04)
- LinuxでApache2.4+PHP7.4をソースコンパイル - 1.Apache導入 /【Raspberry Pi】
- LinuxでApache2.4+PHP7.4をソースコンパイル - 2.PHP導入 /【Raspberry Pi】
- LinuxでApache2.4+PHP7.4をソースコンパイル - 3.MySQL導入/【Raspberry Pi】
- LinuxでApache2.4+PHP7.4 - 4.セキュリティ(chownとfirewalld)
- LinuxでIPsecゲートウェイをVPN構築 - 1.StrongSwan導入 /【Ubuntu 20.04+Raspberry Pi:この記事】
- LinuxでIPsecゲートウェイをVPN構築 - 2.VPNへの接続確認 /【Ubuntu 20.04+Raspberry Pi】
前回は、CentOS 8 + ラズパイopenSUSEで、IPsecゲートウェイをStrongSwanのソースコンパイルで構築しました。これをUbuntu 20.04とRaspberry Pi OSでできないかもやってみたよ(˶ ・ᴗ・ )੭⚐⚑
環境
- IPsecプログラム:StrongSwan 5.9.0(ソースコンパイル)
- IPsec交渉受信側:Raspberry Pi 3B+ / Raspberry Pi OS(2020/08版)(armhf(v7)、32bit)
- IPsec交渉発信側:Hyper-V(第2世代)のx64仮想機 / Ubuntu 20.04(x86_64)
前提
- OSは最小限のインストール。また、最新の状態でOSをアップデートしていること
- ユーザーはrootでインストール(私の検証ではadminという管理者アカウントにて、そこからsudoで処理しています)
- どのディストリビューションでも、ファイアウォールはufwを使う(ラズパイのRaspberry Pi OSでは、firewalldについて、IPv6周りの連動が糞だったので、Debian系標準のufwを使用することにしました)
サーバー条件
IPアドレスとネットワーク構築図
IPsec交渉受信側ゲートウェイ(下の図の左、Raspberry Pi):
- インターネット側(eth0):192.168.1.22
- VPN領域側(eth1):192.168.2.1
IPsec交渉発信側ゲートウェイ(下の図の右、Ubuntu 20.04):
- インターネット側(eth0):192.168.1.18
- VPN領域側(eth1):192.168.5.1
ネットワークセグメント:
- インターネット接続可能:192.168.1.0/24
- Raspberry Pi(図の左の交渉受信側)セキュアセグメント:192.168.2.0/24
- Ubuntu 20.04(図の右の交渉発信側)セキュアセグメント:192.168.5.0/24
IPsec領域関連:
※ 図の左の「openSUSE」はRaspberry Pi OSに、右の「Linuxルーター CentOS 8」はUbuntu 20.04に読み替えてください。
パッケージを個別ダウンロードしてインストールする機能とバージョン(2020年9月時点)
- zlib-1.2.11.tar.gz
- strongswan-5.9.0.tar.gz
それ以外の必要なパッケージは、ディストリビューションの標準パッケージコマンド(dnfやaptなど)でインストールし、個別ダウンロードは不要です。
ダウンロードについては、公式サイトにアクセスして、そこからダウンロードしてFTPで転送するか、ダウンロードファイルのURLさえわかれば、wgetで入手することもできますが、入手方法は省略しています。
作業手順
準備
makeやcmake、パッケージ解凍機能のインストール
Hyper-V仮想マシンとラズパイでディストリビューションごとのインストールをします(ソースコンパイルは両方とも同じ)
Ubuntu20.04(Hyper-V/x64)# apt-get -y install make cmake tar bzip2RaspberryPiOS(2020.08)# apt-get -y install make cmake tar bzip2GCCとC++コンパイラのインストール
Ubuntu20.04(Hyper-V/x64)# apt-get -y install gcc build-essentialRaspberryPiOS(2020.08)# apt-get -y install gcc build-essentialzlibのソースインストール
zlibの配置場所はデフォルトのまま変えないでインストールしました。ソースコンパイルはHyper-V仮想マシンとラズパイで同じです
# cd [zlibの書庫ファイルが置いてあるディレクトリ] # tar zxvf zlib-1.2.11.tar.gz # cd zlib-1.2.11/ # ./configure # make # make installIP転送の有効化
IPsecゲートウェイとして動作するためには、IP転送を有効化しなければならないので、有効化します。コマンドだとやはりsysctl.dの設定ファイルに追加して読み込ませる必要があるそうですね(openSUSEだと親切にSSHからでもYaSTで設定しやすい)
# cat /proc/sys/net/ipv4/ip_forward 0 # vi /etc/sysctl.d/01-ipv4fwd.conf/etc/sysctl.d/01-ipv4fwd.conf# Controls IP packet forwarding net.ipv4.ip_forward = 1VPN領域のネットワークアダプタの増設
Hyper-V仮想マシンとRaspberry Piともに、IP転送の有効化+ネットワークアダプタを増設するため、いったん電源を切ります。私の場合は、ラズパイはUSBでVPN向けの有線LANアダプタを増設し、Hyper-Vは設定で、ネットワークアダプタを増設しました。
増設後は「eth1」が追加されているか確認しますが、もちろんIPアドレスはまだ割り振られていません。
# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether [最初からあるネットワークアダプタのMACアドレス] brd ff:ff:ff:ff:ff:ff inet 192.168.1.18/24 brd 192.168.1.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 [最初からあるネットワークアダプタのIPv6アドレス] scope global temporary dynamic valid_lft 14043sec preferred_lft 12243sec 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether [増設ネットワークアダプタのMACアドレス] brd ff:ff:ff:ff:ff:ff inet6 [増設ネットワークアダプタのIPv6アドレス] scope link noprefixroute valid_lft forever preferred_lft forever # ip route default via 192.168.1.1 dev eth0 proto static metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.18 metric 100再起動後は、コマンドでIP転送の有効化を操作しているので、有効(ip_forwardが1)になっているか確認をします。
# cat /proc/sys/net/ipv4/ip_forward 1 # sysctl --system …(中略) * Applying /etc/sysctl.d/01-ipv4fwd.conf ... net.ipv4.ip_forward = 1 …(中略)StrongSwanをコンパイルするために必要なパッケージをディストリビューション標準パッケージコマンドでインストール
注意:面倒くさくても実行しないと、パッケージがない、とエラーが出てコンパイルが中止されるんです(´•ω•̥`)
Ubuntu20.04(Hyper-V/x64)# apt-get -y install libgmp-dev libssl-devRaspberryPiOS(2020.08)# apt-get -y install libgmp-dev libssl-devStrongSwan 5.9.0のソースコンパイルのインストール
Hyper-V仮想機とラズパイ共通です。この作業は結構時間がかかりました(特にRaspberry Piだと、20~30分かかりました)
configureとmake
# cd [strongswan-5.9.0.tar.gzが置いてあるディレクトリ] # tar xvzf strongswan-5.9.0.tar.gz # cd strongswan-5.9.0/ # ./configure --prefix=/usr --sysconfdir=/etc --enable-openssl # make # make installエラーなくコンパイルできれば、インストールは完了です♪(*˘︶˘*).。.:*♡
StrongSwanの環境設定
ソースコンパイルでStrongSwanをインストールすると、設定ファイルは/etc/ipsec.confに格納されるので、その中にIPsecの接続設定を行います。
[Apacheの基本設定] # vi /etc/ipsec.confIPsecを確立する側(確立を発信する方)、そう、まずはHyper-VのUbuntu 20.04の設定を行います。「サーバー条件」の項にある通り、Hyper-Vマシン側からは、自分のIPアドレスが192.168.1.18、確立相手のRaspberry Piが192.168.1.22になるので、その対を設定ファイルに書き込みます。
「left」は確立を交渉発信する自分を、「right」は確立相手の情報を書き込むとのことです(StrongSwan公式のマニュアルから)
Ubuntu20.04(Hyper-V/x64)… # 以下を追記する conn [識別名 例:linux-2-linux] authby=secret auto=start # IPsec交渉を発信する closeaction=restart dpdaction=restart left=192.168.1.18 # leftは自分側のIPsecゲートウェイ leftid=192.168.1.18 # IPsec交渉するのに自分を識別するID leftsubnet=192.168.5.0/24 right=192.168.1.22 # rightは相手側のIPsecゲートウェイ rightid=192.168.1.22 # IPsec交渉相手を識別するID rightsubnet=192.168.2.0/24 …ちなみにIDは、私の場合は簡単のためIPアドレスを使用しましたが、文字列でもOKです。そんでleftsubnetとrightsubnetというのは、自分側と相手側の受け持つVPN領域なので、leftsubnetは自分の持っているVPN領域なので192.168.5.0/24を、rightsubnetは相手のラズパイのVPN領域なので192.168.2.0/24を入れました。
続いて、ラズパイの設定も行います。「サーバー条件」の項にある通り、確立を受ける自分のIPアドレスが192.168.1.22、確立してくる相手側のHyper-V Ubuntu20.04が192.168.1.18になるので、Hyper-V(Ubuntu20.04)とは逆の内容を設定ファイルに書き込みます。
RaspberryPiOS(2020.08)# 以下を追記する conn [識別名 例:linux-2-linux] authby=secret auto=add # IPsec交渉を受信する closeaction=clear dpdaction=clear left=192.168.1.22 leftid=192.168.1.22 leftsubnet=192.168.2.0/24 right=192.168.1.18 rightid=192.168.1.18 rightsubnet=192.168.5.0/24要は、auto=addとすることで、IPsec確立交渉を受信する側に設定し、leftの内容とrightの内容を真逆にするというところだね。そうすれば、識別名(connの後ろの文字列)が一致すれば、IPsecの接続を確立できる、ということ
StrongSwanのデフォルトでは、PSK方式で、標準でAES/SHA暗号方式を採用しています。それ以外の暗号方式を設定する必要がある場合はまた別途設定するが、ここでは省略。
余談ですが、この時点でのStrongSwanはNAT-Tに対応していて、IPsecをNATに適用させることもできる(かつてはIPsecをNATに適用することができなかった)ので、インターネットでNATが使われている空間でさえも、StrongSwanで構築されたVPNをインターネット越しに通信できるそうです(実験したことはありませんが…)
[StrongSwanの鍵の設定] # vi /etc/ipsec.secrets/etc/ipsec.secrets… : PSK "[適当な文字列:例…kazumi75kitty]" …デフォルトのPSK方式を使っているので、Hyper-V仮想マシンとラズパイともに同じにします。
StrongSwanの起動
サービスの起動スクリプト作成&有効化
StrongSwanに必要な環境設定がそろったので、起動できるようにしたいと思います。起動スクリプトはSystemdなので、/etc/systemd/systemに作成します
# cd /etc/systemd/system # vi strongswan.servicestrongswan.service[Unit] Description=strongSwan [Service] Type=forking ExecStart=/usr/sbin/ipsec start ExecStop=/usr/sbin/ipsec stop [Install] WantedBy=multi-user.targetここではSystemdのスクリプトは詳しく説明しませんが、起動と停止は親プロセスからはバックグランドで実行されるため、strongSwanでは[Service]のTypeはforkingとなっています。
ufwの設定
ufwもfirewalldのときと同様に、IPsecを受け付けます。ipsecが使うポートは500・4500のTCP/UDPポート番号と、AH・ESPプロトコルを使用しているそうです。ただしここでの設定だと、トンネリングをかます192.168.1.0/24内部限定を明記していなく、ほかのネットワークセグメントからもIPsecのパケットが通行可能であれば受信できてしまいます。しかしここまで対策すると煩雑になるので今回は簡単のためIPsecの許可のみとします。
# ufw allow 500 # ufw allow 4500 # ufw allow to any proto ah # ufw allow to any proto esp # ufw status numbered Status: active To Action From -- ------ ---- [ 1] 30303/tcp ALLOW IN 192.168.1.0/24 [ 2] 5900:5999/tcp ALLOW IN 192.168.1.0/24 [ 3] 500 ALLOW IN Anywhere [ 4] 4500 ALLOW IN Anywhere [ 5] Anywhere/esp ALLOW IN Anywhere/esp [ 6] Anywhere/ah ALLOW IN Anywhere/ah [ 7] 500 (v6) ALLOW IN Anywhere (v6) [ 8] 4500 (v6) ALLOW IN Anywhere (v6) [ 9] Anywhere/esp (v6) ALLOW IN Anywhere/esp (v6) [10] Anywhere/ah (v6) ALLOW IN Anywhere/ah (v6)Hyper-V仮想マシンとラズパイの両方で共通のコマンドです。
起動と動作確認
それでは、起動します。enableでの常時起動有効化&statusで「Active」「Running」になっていることを確認。
まずはIPsec確立交渉を受信する側からStrongSwanを起動したのちに、IPsec確立を発信する側の順に起動させています。ここではラズパイのStrongSwanを起動後に、Hyper-V仮想マシンのStrongSwanを起動させています。
# systemctl start strongswan # systemctl enable strongswan # systemctl status strongswanHyper-V仮想マシンとラズパイで「Active」「Running」になっていることを確認し、いよいよIPsecトンネリングが確立されているかをチェック。
Ubuntu20.04(Hyper-V/x64)# /usr/sbin/ipsec status Security Associations (1 up, 0 connecting): linux-2-linux[1]: ESTABLISHED 2 minutes ago, 192.168.1.18[192.168.1.18]...192.168.1.22[192.168.1.22] linux-2-linux{1}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: ********_i ********_o linux-2-linux{1}: 192.168.5.0/24 === 192.168.2.0/24 # ip xfrm policy src 192.168.5.0/24 dst 192.168.2.0/24 dir out priority 375423 ptype main tmpl src 192.168.1.18 dst 192.168.1.22 proto esp spi 0x******** reqid 1 mode tunnel src 192.168.2.0/24 dst 192.168.5.0/24 dir fwd priority 375423 ptype main tmpl src 192.168.1.22 dst 192.168.1.18 proto esp reqid 1 mode tunnel src 192.168.2.0/24 dst 192.168.5.0/24 dir in priority 375423 ptype main tmpl src 192.168.1.22 dst 192.168.1.18 proto esp reqid 1 mode tunnelRaspberryPiOS(2020.08)# /usr/sbin/ipsec status Security Associations (1 up, 0 connecting): linux-2-linux[1]: ESTABLISHED 2 minutes ago, 192.168.1.22[192.168.1.22]...192.168.1.18[192.168.1.18] linux-2-linux{1}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: ********_i ********_o linux-2-linux{1}: 192.168.2.0/24 === 192.168.5.0/24 # ip xfrm policy src 192.168.2.0/24 dst 192.168.5.0/24 dir out priority 375423 ptype main tmpl src 192.168.1.22 dst 192.168.1.18 proto esp spi 0x******** reqid 1 mode tunnel src 192.168.5.0/24 dst 192.168.2.0/24 dir fwd priority 375423 ptype main tmpl src 192.168.1.18 dst 192.168.1.22 proto esp reqid 1 mode tunnel src 192.168.5.0/24 dst 192.168.2.0/24 dir in priority 375423 ptype main tmpl src 192.168.1.18 dst 192.168.1.22 proto esp reqid 1 mode tunnelIPsecトンネリングが、Hyper-V仮想マシンとラズパイでちゃんと確立されてました(˶ ・ᴗ・ )੭⚐⚑
おまけ(ipsec.confのIDにドメインなど文字列を指定)
StrongSwanの設定ファイル/etc/ipsec.confで、leftidやrightidで、IPアドレスではなく文字列を使った場合もキャプチャ画面を載せておきます(*´꒳`*)
たぶんこっちのほうがわかりやすいかもしれません。画面はCentOS+openSUSEですが、動作的にはUbuntuなどでも同じだと思います。
例では「raspberrypi」と「testonly@kazumi-jam」を識別させています
補足(IPsecトンネリングがNATを経由する場合)
わかりやすい画像はまだないけど、ipsec.confでのleftとrightのIPアドレスは、それぞれ自分自身のIPアドレスと、自分から見たNAT変換後の相手のIPアドレスを入れます。その際、leftidとrightidは、必ず自分と相手で対に一致していることが必要になります。
例:
192.168.1.0/24 → 192.168.120.0/28 がNATで仕切られている場合IPsecGW-1(192.168.1.0/24内)
left=192.168.1.22
leftid="gw1"
right=192.168.1.18
rightid="gw2"
IPsecGW-2(192.168.120.0/28内)
left=192.168.120.1
leftid="gw2"
right=192.168.120.3
rightid="gw1"という風に、IPアドレスはNATを考慮したものを入れることでIPsecが確立できるけど、詳しくはまた後で載せてみます。
次回
一通りのStrongSwan導入で、Raspberry PiとHyper-V上のUbuntu 20.04でも、CentOSの時と同様に、IPsecゲートウェイの構築が完了しました。次はUbuntu下でもそのIPsecゲートウェイにつながったVPNにクライアントとサーバーを接続して、互いに接続できるかを試します( ˶˙ᵕ˙˶ )
- 投稿日:2020-09-16T15:51:18+09:00
[資格取得]LinuC Level1に合格したので、勉強方法とか取ってどうだったかを書いていく
[資格取得]LinuC Level1に合格したので、勉強方法とか取ってどうだったかを書いていく
先日、LinuC Level1を受けて、101試験、102試験両方とも無事に合格することができ、晴れてLinuC Level1を取得しました。
※ LinuCはLPICから分裂した資格で、ほとんどLPICと内容は変わらないですLinuCとはなにか?
Linux技術者の成長に貢献する資格です。
Level1(101, 102)、Level2(201, 202)、Level3(300, 303, 304)とレベルが別れており、それぞれで難易度が変わっていきます。
Level2以降はそれよりも下のLevelに合格する必要があるので、まずはLevel1から勉強を始めましょう。試験公式サイト
公式サイトに概要がのっております!LinuC Level1の内容紹介
Linuxシステムの構築・運用・管理を目的として作られたレベルの試験です。
101試験と102試験の両方に受からないとLevel1認定はされません。
ちなみに、一つの試験で約15,000円程かかるので落ちないように勉強しましょう!Level1の勉強を行うと下記のようなことが身につきます。
- 実務で必要なLinuxの基本操作とシステム管理が行える。
- Linuxサーバー環境の構築・運用・保守をするための必要な操作とシステム管理ができる。
- Linuxディストリビューションを利用するために必要な知識がある。
- 基礎的なLinux操作について、知らないところ及び覚えないといけないところを確認し、習得できる。
試験時間は90分で問題数は60問、大体6割強取れたら合格ができると思います。
全国にあるテストセンターで受験でき、合否は問題回答後、すぐに結果が出てきます。(正直、最後の送信ボタンを押すときはビビリますw)上記は一部公式サイトから抜粋しております。
なぜ受けようと思ったのか
- インフラ障害対応時に効率よく調査や原因究明ができるようになりたかった
- 普段意味がわからず打っていたコマンド(特にオプションですが)もしっかりと覚えたかった
- 点でしか覚えていなかったことを線で結んで知識を定着させたかった
(あと、後輩が受けるということで負けたくなかったから)勉強方法
まずは101合格を目指しました。
本を購入して一通りぱらぱら読んでみて、気になったコマンドがあれば実際にPCで打ってみました。
途中、練習問題がありますが、LinuCでは記述問題もあるので実際に打っておかないと忘れてしまう可能性が高いです・・次にPing-tを利用して101範囲の問題を全部金色にしました。
金色にする際に、最初の銅→銀は問題に答えてから答えをみて解説、という形ですべて銀色まで持っていき、その後銀→金は答えを見ずにすべて答えて金色にしました。
この時に、おすすめは20問セットにして回答したらダレなく、振り返りもすぐにできていいかなと思います。すべて金色にしたら模擬試験を行います。
模擬試験は全部の問題からランダムで出されて60問セットとなります。
自分の場合、大体正答率80%~100%の間を行ったり来たりしておりました。
模擬試験ですが、Ping-tの場合は記述式が問題の中に入っていないので、当日の試験でいうと正答率がPing-tの正答率から10%~15%ぐらい下がるかなと思います。
したがって、デッドラインは75%を切ると当日の合格は怪しいかなと言う感じです・・!(あくまで個人の感想です)102についても同様の勉強法を行いました。
102は試験問題が体感記述式が多いので、実際にLinux環境をみて勉強したほうが記述式にも対応できるかなと思います。ちなみに、Ping-tではコマ問(コマンド問題の略かな?)というコンテンツも用意されておりますが、僕はあまり行いませんでした。
それよりも実際にLinuxマシン(僕はMacでしたが)のターミナルで実際にコマンドを打ったりして確認、ファイルの確認とかを行ったほうが身にもなって勉強にもなって一石二鳥かなと思います。最後に、テキストは下記を購入しました
最短突破 LinuCレベル1 合格教本 [101試験, 102試験対応]合格して役に立ったこと
普段の仕事はエンジニアマネージャーをしているので、バリバリコーディングするわけではないですが、障害対応になると別です。
緊急対応として1分1秒でも早く障害の原因から対応をするために動いていきます。
やはり調査に対してコマンドを知っているかどうかは大きく変わってくるなという印象です。また、Linuxシステムを理解できているので、パッケージをインストールする際とかにエラーを吐き出されたときの原因調査にも役に立つことができました。
まとめ
こういった類の資格はテストに受かるためというよりも、自分自身の身になることを主たる目的と捉えてやったほうがいいなと思います。
とはいえ、色々な事情で資格に合格しないと行けなかったり、実力確認として
その時に、本記事を参考に勉強してみると、合格かつ身になる勉強ができるかなと思います。では、よいLinuxライフを!
- 投稿日:2020-09-16T10:56:56+09:00
【WSL2】CentOS8のVScode設定メモ
動作環境
PowerShell$ wsl --list --verbose NAME STATE VERSION * centos8 Running 2CentOS$ cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core)参考サイト
- Windows 10 用 Windows Subsystem for Linux のインストール ガイド
- Windows Subsystem for Linux で Visual Studio Code の使用を開始する
VScodeの設定
1.WindowsにVScodeをインストール。
2.VScodeに『Remote Development』をインストール。
CentOSの設定
CentOS$ sudo yum update $ sudo yum install wget
- 投稿日:2020-09-16T10:00:27+09:00
Linuxサーバー構築リンクまとめ(CentOS7)
Linux(CentOS7)リンクまとめ
Centos old
http://vault.centos.org/Linux bash
https://courses.cs.washington.edu/courses/cse390a/13sp/bash.htmlLinux JNI
http://a4dosanddos.hatenablog.com/entry/2013/06/17/232839
https://qiita.com/kiida/items/9d26b850194fa1a02e67Linux java
https://51flya.com/linux/380.html
http://netlog.jpn.org/r271-635/2015/04/java_compile_exec.htmlLinux コンパイラインストール
http://yohshiy.blog.fc2.com/blog-entry-292.htmlLinux コマンド
https://qiita.com/0xfffffff7/items/028ff8c920a6a8c67dc5Linux network
https://st40.xyz/one-run/article/537/Linux tomcat
https://stackoverflow.com/questions/38172756/apache-tomcat-8-5-3-manager-app-403-error
http://www.lesstep.jp/step_on_board/tomcat/1285/Wireshark
https://knowledge.sakura.ad.jp/6286/linux instructons
http://masatolan.com/internet/linux-free-textbook/ネットワークセキュリティの設定
https://www.turbolinux.co.jp/products/server/11s/user_guide/tcpwrapperconf.htmlcentos6 eth0
http://mukaer.com/archives/2012/08/21/centosniceht0/
https://server.etutsplus.com/centos-disable-persistent-net-rules/
https://www.linuxquestions.org/questions/linux-networking-3/device-eth0-has-different-mac-address-than-expected-516793/centos manual
https://www.server-world.info/query?os=CentOS_6&p=initial_conf&f=3samba
https://www.rem-system.com/centos-samba/tripwire
https://zero-config.com/centos/install-epel.htmlsnort(下のリンクが正)
https://upcloud.com/community/tutorials/installing-snort-on-centos/
https://www.rootlinks.net/2018/04/22/install-snort-on-centos-7/nmap
http://pcmemorin.blog.fc2.com/blog-entry-1315.htmlNessus
https://anditoyugowicaksono.wordpress.com/2016/10/28/install-nessus-di-centos-7/
https://centossrv.com/nessus.shtml
- 投稿日:2020-09-16T02:42:38+09:00
多段 SSH で秘密鍵を「ローカルに持つ」パターンと「踏み台に持つ」パターン
はじめに
多段 SSH の設定方法はググればたくさんでてきますが,「踏み台に秘密鍵を持つ」パターンの情報が少なくて躓いたので,今後のためにメモしておきます。
Special Thanks: @chitoku
ローカルに持つ場合
通常はこちらの方法が望ましいです。
[A] ----> [B] ----> [C] | "~/.ssh/id_rsa_for_B" "~/.ssh/id_rsa_for_C"Host B Hostname B.example.com User user_b IdentityFile ~/.ssh/id_rsa_for_B Host C Hostname C.example.com User user_c IdentityFile ~/.ssh/id_rsa_for_C ProxyJump B参考: linux - SSH from A through B to C, using private key on A - Server Fault
踏み台に持つ場合
秘密鍵の漏洩リスクがあるためあまり推奨されませんが,踏み台の秘密鍵を全ユーザで共有している場合などには有効です。
[A] ----> [B] ----> [C] | | | "~/.ssh/id_rsa_for_C" | "~/.ssh/id_rsa_for_B"Host B Hostname B.example.com User user_b IdentityFile ~/.ssh/id_rsa_for_B Host C Hostname C.example.com User user_c ProxyCommand ssh -o 'ForwardAgent yes' B 'ssh-add ~/.ssh/id_rsa_for_C && nc %h %p'参考: linux - SSH from A through B to C, using private key on B - Server Fault
- 投稿日:2020-09-16T01:11:32+09:00
Linuxで簡易WebDAVサーバ構築
はじめに
コンテスト中にもっと簡単に素早くファイルサーバ立てれたらいいのになあと思い始めたのがきっかけ。目指すのは、WinSCPのようなクライアントで手早くアクセスとファイル転送やファイルオープンができる環境です。
プロトコルの選定
- SFTPは?
SSHサーバを下手にいじって壊すとログインできなくなるため、コンテストではアンタッチャブルな世界(もちろん触れないように設定されているはずではある)- FTPは?
SSHポート転送を間に入れることになった場合に、少し手間(できなくはないはず)- WebDAVは?
SSHポート転送にも耐え、重大な環境破壊を起こす可能性は少なそうということで、WebDAVサーバをたてる方向で模索することにしました。
選ばれたのはWsgiDAVでした
- Nginxは(個人的に)慣れているので簡単だが、デフォルトだとモジュールが足りないのでソースビルドしないといけない。
- Apacheだと不慣れであることと、触る設定ファイルが多くてよくわからない。もしコンテストでApacheが必須だった場合上手く共存させる自身がない。
ということでメジャーなWebサーバは諦めました。
調べてみたところ、WsgiDAVがとても手軽。
https://github.com/mar10/wsgidav※動作確認はUbuntu20.04行いましたが、Pythonが入ってるならwindowsでもMacでも大丈夫なはず。
インストール
$ pip install wsgidav cheroot実行
動作確認。環境によってはsudoいるかも。
$ wsgidav --host=0.0.0.0 --port=8080 --root=/home/ --auth anonymousあとはブラウザなりWinSCPなりでアクセスしてみる。
動作確認が終わったら、nohupをつけて実行。
$ nohup wsgidav --host=0.0.0.0 --port=8080 --root=/home/ --auth anonymous > /dev/null 2>&1 &感想
簡単すぎました。