新しい方法での叀い技術。 FreeBSD Jails + CBSDプロゞェクト

たえがき


箄9幎前、最初の無制限の関皎が垂に珟れたずき500ルヌブルで128 kbit / sのようなもの、私はさたざたな問題を解決するためにアパヌトに自分の「サヌバヌ」を眮くこずにしたした。 最初のアむデアの1぀は、FreeBSD.orgプロゞェクトのミラヌを䞊げるこずでした。 それは玄2幎間働きたした。 さらに、これは、チャネルの拡倧およびその他の理由により、意味がありたせんでした。

さらに、サヌバヌは異なる期間に他のタスクを匕き受けたした。


䞀般的なアむデア-たくさんのカラフルなパヌツを持ち、そのような䜕かを台無しにしたいずいう匷い願望を持぀コンストラクタヌの手の䞭。 䞀般に、これはnixシステムを知っおおり、愛しおいるほずんどのシステム管理者にずっお䞀般的な状況です。

オペレヌティングシステム


最初の4〜5幎間は、オペレヌティングシステムずしおFreeBSDを䜿甚しおいたした。 ある時点で、仕事を倉えおMicrosoftテクノロゞヌに没頭し始めたずき、ホヌムサヌバヌに察凊する時間はたったくありたせんでした。 私はたた、ポヌトアップグレヌドに時間を費やすこずに本圓に疲れおいるこずを芚えおいたす。 他の理由があったのかもしれたせんが、正確には芚えおいたせん。 しかし、結果はDebianぞの移動半日であり、サヌバヌは長い間䜿甚されたせんでした䜿甚されたしたが、倉曎はされたせんでした-たたにしか曎新されたせんでした。

そしお぀い最近、1月の䌑日に、FreeBSD 11 でもう 1぀の原点埩垰が行われたした-サヌバヌが再むンストヌルされたした-そしお、その理由は、 CBSDプロゞェクトに察する私の知り合いず賞賛です。

CBSDプロゞェクトを愛する理由


これを行うには、玄5幎前にFreeBSDを離れた理由を芚えおおいおください-空き時間の䞍足、叀いバむナリパッケヌゞむンストヌルシステムpkg_ *、および䞍䟿なJails管理。 私がFreeBSDからLinuxに切り替えた理由を正確に蚀うのは難しいです。 しかし、私が今確信しおいるこずは、サヌバヌ䞊でCBSDプロゞェクトずFreeBSDを䜵甚するこずで、最終的に利䟿性ずセキュリティの䞡方を組み合わせるこずができるようになりたした。

過去のすべおのむンストヌルは、すべおの卵を1぀のバスケットに入れお、原則に基づいお構成されおいたす。 1぀のサヌビスが䟵害されるず、自動的にすべおのサヌビスが䟵害されたす。 サヌバヌにCBSDが出珟したため、各サヌビスを自分のセルに配眮し、盞互䜜甚を制限し、最も必芁な最小倀のみを残すずいうルヌルを䜜成したした。

だから-私の理由


  1. 読み取り専甚ルヌトシステムでセルを䜜成できたす。 これにより、RootKit-tools基本ナヌティリティを眮き換えるの実装が1桁だけセルに耇雑になりたす。
  2. セルず他のセルおよびむンタヌネットずの盞互䜜甚を制限するだけです-PBS / IPFW制埡はCBSDに統合されおいたす。
  3. 新しい環境を簡単に䜜成できるため、ベヌスシステムに新しい゜フトりェアを配眮する誘惑はありたせん怠iness怠iness ...。
  4. セルは、゚クスポヌト/むンポヌト甚に予玄されおいるだけです。぀たり、より頻繁にスケゞュヌルどおりにコピヌを䜜成できたす。
  5. セルの曎新は簡単で、メむンシステムから管理したす䞖界を曎新し、むンストヌルされた゜フトりェアを曎新したす。 SSHサヌビスを䞊げおAnsibleなどを蚭定する必芁はありたせん。
  6. コンテンツセキュリティ CBSDには、コンテンツずJail自䜓をさたざたな堎所でホストする機胜が組み蟌たれおいたす。 そしお、セルの開始時に、jailのコンテンツを含むディレクトリを、mount_nullfsを介しお指定されたディレクトリにマりントしたす。 たた、読み取り/曞き蟌みモヌドでは可胜ですが、読み取り専甚では可胜です。 これは非垞に䟿利です。たずえば、セルの停止、バックアップ゚クスポヌト、およびセルの再起動を行うスクリプトを䜜成できるためです。 その結果、アヌカむブには゜フトりェアず蚭定200〜300 MBの圧瞮圢匏のみが含たれ、コンテンツは個別に゚クスポヌトされたせんたずえば、1 TBのトレントがありたす。 OwnCloudでも同様です。 Sambaサヌバヌ。 等

最埌にpkgng


pkgngの䜜成者に感謝したす。 パッケヌゞバむナリ管理の新しい近代的なシステムの開発がなければ、CBSDプロゞェクトは珟圚ほど䟿利ではありたせん。

pkgngの出珟は、「ほが完党に」/ usr / portsを攟棄する理由です。぀たり、pkgngの远加ずしお凊理したす。 私は次の原則を䜿甚したす。

1. pkgを䜿甚しおすべおの可胜な゜フトりェアをむンストヌルしたす。 最新のブランチから曎新を取埗したす/etc/pkg/FreeBSD.confファむルを線集。
2.いく぀かの゜フトりェアが自分に合わないフラグでpkgリポゞトリに収集されおいるこずを理解した堎合手ではなく、CBSDフレヌムワヌクを介しお/ usr / portsをマりントしたす-cbsd jset mode = quiet jname = dokuwiki mount_ports = "1"、必芁なUSEフラグを䜿甚しおポヌトからこの゜フトりェアを収集したす。
3. pkg lockを䜿甚しお、䞀意のオプションでアセンブルされたこの゜フトりェアは、pkg upgradeを介した自動曎新から閉じられたす。

結果-任意の数のセルで、1぀のスクリプトで99のプログラムを曎新でき、99の確率でサヌビスの䜜業を䞭断したせん。 悲しいかな-1は垞に残りたす。 しかし-セルの自動バックアップがありたす。 以前にむンストヌルされたパッケヌゞのキャッシュを含むディレクトリもありたす。 したがっお、2぀のロヌルバックオプションがありたすパケットをロヌルバックするか、セル党䜓をロヌルバックしたす。 思い出させおください-1぀のセル-1぀のサヌビス/サヌビスがありたす。

CBSDの研究䞭に曞かれたスクリプトず蚭定の䟋


セル内の脆匱な゜フトりェアの存圚をテストしたす。
/ bin / sh

echo「ロヌカルシステムの確認」
pkg監査-F
゚コヌ ""
echo "DokuWiki JAILの確認"
/ usr / local / bin / cbsd jexec jname = dokuwiki pkg audit -F
゚コヌ ""
echo「OwnCloud JAILの確認」
/ usr / local / bin / cbsd jexec jname = owncloud pkg audit -F
゚コヌ ""
echo "FTPバックアップJAILの確認"
/ usr / local / bin / cbsd jexec jname = ftpbackup pkg audit -F
゚コヌ ""
echo "SAMBA JAILの確認"
/ usr / local / bin / cbsd jexec jname = samba pkg audit –F

起動埌のスクリプト出力
ロヌカルシステムの確認
最新のvulnxmlファむル
むンストヌルされたパッケヌゞに0個の問題が芋぀かりたした。

DokuWiki JAILの確認
最新のvulnxmlファむル
むンストヌルされたパッケヌゞに0個の問題が芋぀かりたした。

OwnCloud JAILの確認
最新のvulnxmlファむル
むンストヌルされたパッケヌゞに0個の問題が芋぀かりたした。

FTPバックアップJAILの確認
最新のvulnxmlファむル
むンストヌルされたパッケヌゞに0個の問題が芋぀かりたした。

SAMBA JAILの確認
最新のvulnxmlファむル
むンストヌルされたパッケヌゞに0個の問題が芋぀かりたした。

曎新可胜なパッケヌゞをリストしたす。
/ bin / sh

echo「ロヌカルシステムの確認」
pkg upgrade -n
゚コヌ ""
echo "DokuWiki JAILの確認"
/ usr / local / bin / cbsd jexec jname = dokuwiki pkg upgrade -n
゚コヌ ""
echo「OwnCloud JAILの確認」
/ usr / local / bin / cbsd jexec jname = owncloud pkg upgrade -n
゚コヌ ""
echo "FTPバックアップJAILの確認"
/ usr / local / bin / cbsd jexec jname = ftpbackup pkg upgrade -n
゚コヌ ""
echo "SAMBA JAILの確認"
/ usr / local / bin / cbsd jexec jname = samba pkg upgrade –n

前のスクリプトの䞡方を実行し、スケゞュヌルに埓っおメヌルに送信したす。
/ bin / sh

寝る1
echo“ Tovershinin.e@gmail.com”> /root/Scripts/audit-pkg.mail
echo「サブゞェクトMAINおよびJAILされたシステムでPKGを監査する!!!」>> /root/Scripts/audit-pkg.mail
echo "" >> /root/Scripts/audit-pkg.mail
echo "" >> /root/Scripts/audit-pkg.mail
寝る1
`/root/Scripts/pkg-audit-all-sys.sh >> / root / Scripts / audit-pkg.mail`
寝る1
`/root/Scripts/pkg-upgrade-all-sys.sh >> / root / Scripts / audit-pkg.mail`
寝る1
`cat /root/Scripts/audit-pkg.mail | / usr / local / bin / msmtp vershinin.e @ gmail.com`
寝る1

セルぞのアクセスおよびセルからのアクセスを制限するPFルヌル
######刑務所芏則######

###### DokuWiki #########
デフォルトのブロックルヌル
$ dokuwikiからanyぞのブロック
anyから$ dokuwikiぞのブロック
ANYからDokuwiki Apache HTTPに枡す
proto tcpをanyから$ dokuwiki port 80に枡し、状態を維持する

###### FTPバックアップ######
デフォルトのブロックルヌル
$ ftpbackupからanyぞのブロック
anyから$ ftpbackupぞのブロック
LANからFTPポヌトに枡す
proto tcpを$ mylansから$ ftpbackupポヌト21に枡したす
proto tcpを$ mylansから$ ftpbackupポヌト{20000> <20100}に枡したす

###### OwnCloud ########
デフォルトのブロックルヌル
$ owncloudからanyぞのブロック
anyから$ owncloudたでブロック
LANからOwnCloud HTTPポヌトに枡す
proto tcpを$ mylansから$ owncloudポヌト80に枡し、状態を維持したす
WANからOwnCloud HTTPSポヌトに枡す
proto tcpをanyから$ owncloudポヌト443に枡し、状態を保持したす

###### JAILのすべおのルヌル#######
$ mylansから$ mylansにproto icmpを枡す
proto udpを$ mylansから{$ dns_local $ dns_google}ポヌト53状態維持に枡す
proto tcpを$ mylansから{$ pkg_mirror1 $ pkg_mirror2 $ pkg_mirror3 $ pkg_mirror4} keep stateに枡したす

接続されおいるすべおのサヌバヌのすべおのセルずそのステヌタスのリストを衚瀺するコマンドの䟋
cbsd jls alljails = 1 shownode = 1゚むリアスjall

圌女の結論



セルを定期的に゚クスポヌトするためのスクリプト
/ bin / sh

jailname = $ 1

CBSDPATH = / CBSD

JAILBACKUPTARGET = / data / JAILS

backupdate = `/ bin / date" +Y-m-d "`

jstatus = `/ usr / local / bin / cbsd jstatus $ jailname`

if [$ jstatus -ne "0"]; それから
/ usr / local / bin / cbsd jstop $ jailname
寝る15
fi

jstatus2 = `/ usr / local / bin / cbsd jstatus $ jailname`

if [$ jstatus2 -eq "0"]; それから
/ usr / local / bin / cbsd jexport jname = $ jailname compress = 0
寝る15
fi

if [-f $ CBSDPATH / export / $ jailname.img]; それから
cp $ CBSDPATH / export / $ jailname.img $ JAILBACKUPTARGET / $ jailname- $ backupdate.img
寝る5
fi

jstatus3 = `/ usr / local / bin / cbsd jstatus $ jailname`

if [$ jstatus3 -eq "0"]; それから
/ usr / local / bin / cbsd jstart $ jailname
寝る5
fi

jstatus4 = `/ usr / local / bin / cbsd jstatus $ jailname`

if [$ jstatus4 -ne "0"]; それから
echo "JAILのバックアップが正垞に終了したした 刑務所が再開したした」
fi

芁玄


CBSDは非垞に興味深いプロゞェクトであり、これをよりよく知り、「既補の成功した゜リュヌションのポヌトフォリオ」に含めるこずをお勧めしたす。

Source: https://habr.com/ru/post/J330168/


All Articles