基本的なLinux匷化ヘッゞホッグの遞択ずトレンチの掘り䞋げの孊習


LinuxはMS Windowsよりも安党なシステムであるず考えられおいるずいう事実にもかかわらず、この事実だけでは十分ではありたせん。


したがっお、Linuxファミリの基本的なセキュリティ構成に぀いおお話したいず思いたす。 この蚘事は初心者のLinux管理者を察象ずしおいたすが、経隓豊富な専門家はおそらく自分にずっお興味深いこずを孊ぶでしょう。 テキストには、段階的な手順は含たれたせん。技術ず方法の基本的な説明、およびいく぀かの個人的な掚奚事項のみが含たれたす。


ナットを締め始める堎所


最初の最も重芁な掚奚事項は、むンタヌネット䞊の指瀺にもっず泚意するこずです。 残念なこずに、これらの指瀺には有害な情報ではないにしおも関連性のない情報が含たれおいるこずが倚く、これが行われる理由を説明し、そうでない堎合は説明したせん。 自分が䜕をしおいるかを垞に正確に理解する必芁がありたす。 コン゜ヌルぞのコマンドのコピヌは完党に危険です。


原則ずしお、ほずんどの補品はかなり適切に文曞化されおおり、公匏の情報源から情報を取埗するのが最適です。


ネットワヌク䞊では、 rootずしおは機胜しないずいう掚奚事項がよくありたす。これは、すべおに察する完党な暩限を持぀スヌパヌナヌザヌです。 郚分的には、掚奚事項は正しいです。 ルヌトずしお䜜業するこずは 、起こりうる゚ラヌの臎呜性ずパスワヌド傍受の危険性の芳点から安党ではありたせん。


実際に幎に2、3回サヌバヌで䜜業し、同時に構成の曎新たたはマむナヌな線集に䞻に関䞎しおいるため、ルヌト暩限の操䜜はsudoを䜿甚した䞀時的な特暩゚スカレヌションに䌌おいたす。 しかし、いく぀かの合理的な予防策はただ痛くないでしょう



曎新プログラムのむンストヌルは間違いなく必芁で䟿利です。 厩壊に぀ながった個々のパッケヌゞずオペレヌティングシステムの䞡方を曎新しおいたのは、今だけです。 したがっお、垞に曎新の前に、動䜜䞭のサヌバヌのコピヌでむンストヌルをチェックする䟡倀がありたす。


ファむルシステムの保護


耇数のナヌザヌたたは異なるアカりントで実行されおいるいく぀かのサヌビスがサヌバヌ䞊で実行されおいる堎合、ファむルシステムぞのアクセス暩を分割し、䜕かが発生した堎合に圱響を受ける領域を絞り蟌むのが適切です。


各ディストリビュヌションは、いわゆる遞択的アクセスシステムを䜿甚したす。 たずえば、ナヌザヌがファむルを開くこずができるかどうかは、アクセス制埡リストACLによっおチェックされたす。このチェックマヌクは、このナヌザヌに察しお有効になっおいたす。


セキュリティを確保するための良い原則は、仕事に本圓に必芁な暩利のみを付䞎するこずです。

特に、Linuxシステムでは、ファむルに察しお次のアクセスメカニズムが䜿甚されたす。



アクセス暩は数倀圢匏で䟿利に衚されたす。 番号は3桁で、単玔なスキヌムに埓っお蚈算されたす。


アクセスの皮類所有者グルヌプ党郚
読む暩利400404
倉曎する暩利200202
走る暩利100101

したがっお、オブゞェクトに察するすべおの完党な暩利の暩利は次のようになりたす。400 + 200 + 100+40 + 20 + 10+4 + 2 + 1=777。このような暩利は、原則ずしお、決しお必芁ではありたせん。デバッグ䞭にのみ公開するこずは蚱可されおいたせん。


このアクセスメカニズムは、UGOUser-Group-Othersず呌ばれるこずもありたす。


関連する資料でアクセス暩ずその操䜜の詳现を確認できたす。


もちろん、このようなアクセスメカニズムは必ずしも䟿利ではありたせん。 たずえば、特定のオブゞェクトに察するナヌザヌ暩限を付䞎する必芁がある堎合は、そのオブゞェクトをグルヌプに远加するか、新しいオブゞェクトを䜜成する必芁がありたす。 そのため、UNIXシステムでは、ACLず呌ばれるわずかに掗緎されたアクセスメカニズムが远加されたした。 すでにより柔軟で耇雑なアクセスリストをサポヌトしおいたす。


デフォルトでは、このシステムは無効になっおいたす。 有効にするには、 aclオプションを䜿甚しおハヌドドラむブをマりントする必芁がありたす。 たずえば、/ etc / fstabにマりントオプションを远加しお、ルヌトパヌティションのaclを有効にしたす。



これで、システムは拡匵ACLをサポヌトしお起動したす。


setfaclコマンドを䜿甚しお、アクセスリストを管理できるようになりたした。 珟圚の暩限を衚瀺-getfacl 。


詳现に぀いおはドキュメントを参照しおください。たずえば、ファむルtest.txtでナヌザヌuserにフルアクセス暩を付䞎したす。



ナヌザヌuserに完党な暩限を付䞎したす。


保護メカニズムは非垞にシンプルで効果的で、NTFSファむルシステムのACLに䌌おいたす。


アりトバヌンの防火壁


サヌバヌぞのアクセスを保護するための䞻なメカニズムは、䌝統的にファむアりォヌルです。 GNU \ Linuxシステムでは、カヌネルに組み蟌たれたnetfilterがこれに䜿甚されたす。


このファむアりォヌルの基本原則の蚘憶を曎新したい人のために-ネタバレの䞋で歓迎したす。

netfilterシステムでは、トラフィックはいわゆるチェヌンを通過したす。 チェヌンは、芏則の順序付きリストです。 各ルヌルには、パッケヌゞをフィルタリングするための基準ず、これらの基準に該圓するパッケヌゞで実行する必芁があるアクションがありたす。 かなりの基準があり、デフォルトのアクションは次のずおりです。


  • 承諟したす。 パッケヌゞをスキップしたす。


  • ドロップ。 パッケヌゞを削陀したす。


  • キュヌ。 分析甚のパッケヌゞを倖郚プログラムに転送したす。


  • 戻りたす。 パッケヌゞを前のチェヌンに戻したす。

デフォルトのチェヌンは次のようになりたす。


  • 事前予玄。 着信パケットの初期凊理。


  • 入力。 ロヌカルプロセスに盎接アドレス指定された着信パケットの凊理。


  • 進む 出力にリダむレクトされた着信パケットの凊理。 転送されたパケットは最初にPREROUTINGチェヌンを通過し、次にFORWARDおよびPOSTROUTINGを通過するこずに泚意しおください。


  • 出力。 ロヌカルプロセスによっお生成されたパケットの凊理。


  • ポストルヌティング。 発信パケットの最終凊理。

もちろん、独自のチェヌンを䜜成できたす。 次に、䟿宜䞊のチェヌンを次の衚にたずめたす。


  • 生の このテヌブルは、パケットが状態決定システムに送信される前に確認されたす。 たれにしか䜿甚されず、PREROUTINGおよびOUTPUTチェヌンが含たれたす。


  • マングル。 IPパケットを倉曎するためのルヌルが含たれおいたす。 通垞、パッケヌゞヘッダヌが倉曎されたす。 5぀の暙準チェヌンすべおが含たれおいたす。


  • nat。 新しい接続を䜜成するパッケヌゞでのみ機胜したす。 暙準に加えお、DNAT、SNAT、MASQUERADE、REDIRECTアクションをサポヌトしおいたす。 最新のオペレヌティングシステムでは、PREROUTING、INPUT、OUTPUT、およびPOSTROUTINGチェヌンが含たれおいたす。


  • フィルタヌはメむンテヌブルです。 テヌブル名が指定されおいない堎合、デフォルトで䜿甚されたす。 INPUT、FORWARD、およびOUTPUTチェヌンが含たれたす。

同じ名前で異なるテヌブルにあるチェヌンは、互いに独立しおいたす。 たずえば、通垞、生のPREROUTINGずマングルのPREROUTINGには異なるルヌルセットが含たれおいたす。パケットは最初に生のPREROUTINGチェヌンを通過し、次にマングルのPREROUTINGを通過したす。


たた、ファむアりォヌルには、パッケヌゞの状態を刀断するための特別なモゞュヌルconntrackがありたす。 状態には次のタむプがありたす。


  • 新品 新しい接続。接続の最初のパケットが怜出されるず、接続はこの状態を受け取りたす。


  • 蚭立されたした。 すでに確立された接続。 パケットが最初でない堎合、接続はこの状態を受け取りたす。 応答トラフィックを蚱可するために䜿甚するず非垞に䟿利です。


  • 関連。 接続の最も「぀たらない」状態。 接続は、それ自䜓が別の接続から開始された堎合にのみ受信したす。 兞型的な䟋は、FTPサヌバヌの動䜜です。FTPサヌバヌでは、デヌタ送信チャネルがコマンド受信チャネルずは別に䞊昇したす。


  • 無効です パケットを識別できない状態。 通垞、DROPアクションはそのようなパケットに適甚されたす。


netfilterシステムのパッケヌゞ怜蚌パス。


iptablesナヌティリティは、ほずんどの堎合、ファむアりォヌルを制埡するために䜿甚されたす。 十分な資料がありたすので、䞀般的な掚奚事項に限定したす。蚱可されおいないものはすべおブロックしたす。 そしお、蚱可されるものは可胜な限り制限されたす。


たずえば、サヌバヌぞのSSHアクセスが特定の倖郚アドレスからのみ必芁な堎合、それらからのアクセスのみを蚱可したす。


ただし、iptablesを䜿甚するこずは、パケットパスを深く理解する必芁があるため、必ずしも䟿利ではありたせん。 Ubuntuシステムのufwなどの他のナヌティリティは、倚くの堎合、代替手段ずしお䜿甚されたす。


たずえば、ufwを䜿甚しおsshアクセスを提䟛するには、次のコマンドを実行したす。


ufw allow from 1.2.3.4 to any port 22 

iptablesに぀いおも同じこずがもっず面倒に芋えたす。 着信トラフィックを蚱可する


 iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT 

次に、応答トラフィックを蚱可したす。


 iptables -A OUTPUT -p tcp --sport 22 -d 1.2.3.4 -j ACCEPT 

倚くの堎合、着信トラフィックずリタヌントラフィックの2぀の明瀺的なルヌルを䜜成する代わりに、確立された接続ESTABLISHEDず関連する接続RELATEDのトラフィックを蚱可するだけです。 これを行うには、以䞋のコマンドを䜿甚しお、すべおのESTABLISHEDおよびRELATED接続を蚱可するだけで十分です。

 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

CentOS、Fedora、Red Hatなどの最新のRPMディストリビュヌションでは、 firewalldデヌモンがiptablesの代替ずしお䜿甚されたす。 通垞のメカニズムずは異なり、リストをリロヌドせずに倖出先でルヌルを適甚できるほか、ゟヌンネットワヌク接続の信頌レベルを操䜜できたす。 Windowsの組み蟌みファむアりォヌルに少し䌌おいたす。 確かに、iptablesの埌に䜿甚するのは少し珍しく、倚くの堎合、システム管理者は耇雑ではあるが䜿い慣れたiptablesを返すこずを奜みたす。


ファむアりォヌルず連携しお、 fail2banなどのメカニズムは密接に機胜し、次のこずを行いたす。



fail2banのセットアップの詳现に぀いおは、 公匏Wikiを参照しおください。


NSAのガヌド


SELinuxは、匷制アクセス制埡システムの远加メカニズムです。 埓来のポヌリングずは異なり、アクセスはACLではなく特別なポリシヌに基づいおいたす。


短所ACLベヌスのアクセスシステム



1998幎にNSA米囜囜家安党保障局ずRed Hatによっお䜜成されたこれらの欠点をなくすこずができたす。 Linuxシステムのカヌネルでは、この技術が長い間存圚しおいたした。 それにもかかわらず、いく぀かの指瀺では、それをオフにするこずが頻繁に掚奚されおいたすが、垞にそうであるずは限りたせん。 SELinuxの詳现に぀いおは、Habréに関する専門蚘事をご芧ください 。したがっお、私は小さな教育プログラムに限定されたす。


SELinuxには3぀の動䜜モヌドがありたす。



getenforceコマンドで珟圚の動䜜モヌドを確認できたす; setenforceコマンドで匷制モヌドず蚱容モヌドを切り替えるこずができたす。 SELinuxをシャットダりンするには、再起動が必芁です。


保護メカニズムは、叀兞的なメカニズムの埌に適甚され、オブゞェクトの特別なマヌキングに基づいおいたす。 次のコマンドで珟圚のマヌキングを衚瀺できたす。


 ls -Z 


新しく䜜成したファむルのマヌキングを確認したす。


構成の䟋ずしお、サむトをデフォルト以倖のフォルダヌに配眮し、Webサヌバヌを別のポヌトに「ハング」させたい状況を分析したす。 httpd.conf構成ファむルの倀を倉曎するだけでは十分ではないため、Webサヌバヌにフォルダヌずポヌトぞのアクセス暩を䞎える必芁があるこずをSELinuxに䌝える必芁がありたす。 これを行うには、以䞋を行う必芁がありたす。



 semanage port -a -t http_port_t -p tcp 81 

もちろん、これをすべお実行する前に、SELinuxを詳しく理解するこずをお勧めしたす。


゜リュヌションずしおのSELinuxはナニヌクではありたせん。 2番目に人気のあるセキュリティメカニズムはAppArmorです。 開発は圓初Novellによっお監督されおいたしたが、このツヌルは将来性のないものずしお攟棄されたした。 ただし、 Canonicalは珟圚AppArmorに取り組んでおり、補品はUbuntuシステムず密接に関連しおいたす。 違いに぀いおは、倚くの既補のポリシヌがあるため、AppArmorはSELinuxよりも䟿利です。


たた、ナヌザヌアクションがゞャヌナルに蚘録されるがブロックされないトレヌニングメカニズムもありたす。これにより、「パむロット」ずしお新しい防埡を開始し、すぐに欠陥を取り陀くこずができたす。 SELinuxでこのモヌドがシステム党䜓で有効になっおいる堎合、AppArmorを䜿甚しお特定のアプリケヌションに察しお有効にするこずができたす。 この目的の䟋


 aa-complain /path/to/bin 

AppArmorずSELinuxの䞻な違いは、AppArmorはポリシヌをパスにバむンドし、SELinuxはファむル蚘述子に䟝存するこずです。 ファむルの実行をブロックしおから移動するず、AppArmorはファむルの起動を蚱可したすが、SELinuxは蚱可したせん。


ファむルが元のパスで䞊曞きされるず、AppArmorはそれをブロックし、SELinuxは実行を蚱可したす。 これらの誀解は、「明瀺的に蚱可されたもの以倖をすべおブロックする」ポリシヌを含めるこずで回避できたす。


芁するに、SELinux開発者は䜿いやすさではなく、セキュリティに焊点を合わせたした。 AppArmorでは、すべおが正反察です。 AppArmorの詳现に぀いおは、メヌカヌのドキュメントたたはUbuntuラむブラリをご芧ください。

残念ながら、䜕を遞択するかに぀いお明確なアドバむスをするこずはできたせん。これは、OSディストリビュヌションの優先順䜍ず奜みの問題だからです。 CentosずRed HatのファンはSELinuxを遞択する可胜性が高く、Ubuntu愛奜家はAppArmorを遞択したす。


ずころで、どのメカニズムを奜むのかコメントに曞いおください。


念のためマスタヌキヌのセット


このセクションでは、サヌバヌを保護するための必須のメカニズムではなく、必須のメカニズムに぀いお説明したす。


端末ぞのルヌト接続を拒吊する


GNU \ Linuxシステムでは、rootナヌザヌが接続できる端末のリストを制限できたす。 これは、 / etc / securettyファむルを倉曎するこずで実行できたす。 ファむルが空の堎合、rootは盎接接続できず、完党な暩限を取埗するにはsuたたはsudoが必芁です。


パスワヌドポリシヌ


たた、次のコマンドでパスワヌドの有効期間を蚭定するず䟿利な堎合がありたす。


 chage -M 20 username 

20はパスワヌドの経過日数です。 別のオプションは、/ etc / login.defsファむルの䞀般的なパスワヌドポリシヌを倉曎するこずです。 パスワヌドを20日ごずに倉曎し、ナヌザヌが5日間このこずに関するリマむンダヌを受信するずしたす。 次に、ファむルの内容は次のようになりたす。


 PASS_MAX_DAYS 20 PASS_MIN_DAYS 0 PASS_WARN_AGE 5 

もう1぀の䟿利な機胜は、パスワヌドの耇雑さのポリシヌです。 このために、 pam_cracklibモゞュヌルが䜿甚されたす。 たずえば、パスワヌドに少なくずも1぀の倧文字、少なくずも1぀の小文字、少なくずも1぀の数字、およびパスワヌド自䜓の長さを少なくずも8文字にする必芁がある堎合、行を远加するず圹立ちたす。


 password required pam_cracklib.so minlen=8 lcredit=1 ucredit=1 dcredit=1 

ファむル/etc/pam.d/system-authに。


暩利通知


もう1぀の必芁なオプションは、スヌパヌナヌザヌ暩限ぞのアクセスを制埡するための各sudo゚ントリの通知です。 これを行うには、 / etc / sudoersファむルに次の行を远加するだけです。


 mailto [admin@domain.com](mailto:admin@domain.com) mail_always on 

もちろん、システムにメヌル送信゚ヌゞェントを蚭定する必芁がありたす。 暙準のsendmailを眮き換えるのに適したオプションはssmtpです 。これは、無料のメヌルサヌビスでもメヌルを送信しお簡単に友達を䜜るこずができたす。


コンパむラヌの非アクティブ化


悪意のある゜フトりェアのコンパむルず起動を回避するために、ナヌザヌが䜿甚するためにサヌバヌ䞊のコンパむラを無効にする必芁はありたせん。


䟋ずしお、スポむラヌの䞋で、gccぞのアクセスを無効にしたす。

たず、コマンドで実行可胜ファむルのリストを芋おみたしょう。


 rpm -q --filesbypkg gcc | grep 'bin' 


GCC実行可胜ファむル


次のコマンドで個別のグルヌプを䜜成するず䟿利です。


 groupadd compilerGroup 

次に、必芁なファむルの所有者グルヌプを倉曎したす。


 chown root:compilerGroup /usr/bin/gcc 

そしお、ファむルぞのアクセスを他の党員に犁止する蚱可を蚭定したす。


 chmod 0750 /usr/bin/gcc 

構成ファむルの耐性


スヌパヌナヌザヌからでもシステムファむルず構成を保護する良い方法は、耐性の属性です。 それを䜿甚するには、 chattr + i filenameコマンドを䜿甚したす。



ルヌトでも免疫ファむルを削陀するこずはできたせん。


この属性を削陀するには、単にchattr -i filenameコマンドを実行したす。


各管理者には、サヌバヌセキュリティに関する独自のベストプラクティスがあるず思いたす。 コメントでそれらを同僚ず共有するこずをお勧めしたす。



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


All Articles