私はRPMベースのオペレーティングシステムを使い始め、深い印象を受けました。
setroubleshootはAmazon Linuxリポジトリには含まれていません。私はすべてのために公式リポジトリを使用したいと思います。それ以外の場合は、船をスキップします。ログを確認しましたが、「SELinuxがブロック中です」エラーは表示されませんが、何を探すべきかわかりません。
$_POST変数は、setenforceが許可に設定されている場合に機能します。
私のコードはDebianシステムで動作します。私のウェブサイトはAmazon Linuxからアクセスできますが、正しくリダイレクトされません。
私はhttpdを使用しています(RPMではこれをapache2と呼びます)。 apachectl configtest は一般的な構文を返します。
ここに私のコードがあります。 index.phpです
<form action="index.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="hidden" name="hidden_value" value="true">
<input type="submit">
</form>
その後、同じページにphp.iniファイルを作成しました。
<?php
if(isset($_POST['hidden_value']){
/* Do the rest of your authentication math */
}
?>
Index.phpはindex.phpにリダイレクトされ、$ _POST変数はリダイレクトを処理します。ただし、SELinuxを許可に設定した場合にのみ機能します。 SELinuxを武装させたい。
PSリダイレクトは実行されますが、リダイレクト時に$ _POST変数は設定されません。
答え1
正しい方向を教えてくれたUlrich Schwarzとhargutに感謝します。実際にはブール値です。提案されているようにhttpd_enable_cgiを有効にしましたが、まだ機能しません。次に、次のようにブール値のリストを表示しました。
sudo getsebool -a | grep httpd
これが私がブールというブールがあることを発見した方法です。
httpd_can_network_connect_db
そしてそれは閉鎖されました。
使って開きます
sudo setsebool httpd_can_network_connect_db=1
誰もがMySqlを使用し、Debianからセキュリティを強化されたシステムに移行する場合、これは前提条件です。 SELinuxについて学ぶことがたくさんあります。もう一度ありがとうございます。
答え2
selinux警告を確認してください/var/log/audit/audit.log
。有効にするポリシーを提案することもできます。
それ以外の場合は、SELinuxを許可モードに設定し、上記のログファイルを使用してアプリケーションのすべての要件をカバーするカスタムポリシーを構築できます。これを行うには、SELinuxを許可モードに設定し、コードのすべての機能を使用し、audit2allowを使用してカスタムポリシーを作成します。
その後、SELinuxがコードに必要な特別な権限のみを許可するように、コードと共にポリシーファイルをまとめて展開できます。
# generate a custom policy
grep "AVC" /var/log/audit/audit.log | audit2allow -M yourapp
# install that policy
semodule -i yourapp.pp
何をしてもSELinuxをオフにして本番に入らないでください!
SELinuxの素晴らしい紹介をご覧ください。https://www.youtube.com/watch?v=_WOKRaM-HI4