저는 RPM 기반 운영 체제를 사용하기 시작했고 깊은 인상을 받았습니다.
setroubleshoot는 Amazon Linux 리포지토리에 포함되어 있지 않습니다. 나는 모든 것에 대해 공식 저장소를 사용하고 싶습니다. 그렇지 않으면 배를 건너뛸 것입니다. 로그를 확인했는데 "SELinux가 차단 중입니다." 오류가 표시되지 않지만 무엇을 찾아야 할지 모르겠습니다.
$_POST 변수는 setenforce가 허용으로 설정된 경우 작동합니다.
내 코드는 데비안 시스템에서 작동합니다. 내 웹 사이트는 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