Apache의 dd-wrt에서 cgi를 루트로 실행하는 방법

Apache의 dd-wrt에서 cgi를 루트로 실행하는 방법

Apache의 iptables 규칙이 포함된 일부 스크립트를 실행하고 싶습니다(dd-wrt의 포트 81에서 실행). 권한이 부족해서 작동하지 않는 것 같습니다. Apache를 다시 컴파일할 필요가 없지만 내가 놓친 부분을 누군가가 지적해 줄 수 있기를 바랍니다.

저는 dd-wrt v3.0-r33525M kongac(10/16/17)을 실행하고 있습니다. 포트 81에서 Apache 인스턴스를 실행하고 있습니다.

이 동작을 방지하는 컴파일 지시문/기본값이 있는 것 같기 때문에 Apache를 루트로 실행할 수 없습니다.

SUID 스크립트를 실행할 수 없습니다. 실행할 수는 있지만 SUID 비트는 스크립트이기 때문에 무시됩니다.

제가 틀렸을 수도 있지만 Busybox 버전에는 sudo 기능이 없는 것 같습니다.

포트 80에서 실행되는 GUI에서 스크립트를 실행할 수 있지만 더 많은 사람들이 이 인터페이스에 액세스하고 링크를 클릭하는 대신 명령을 실행해야 하는 것보다 나만의 간단한 인터페이스를 구축하고 싶습니다.

cron으로 뭔가 할 수 있으면 좋겠지만, 파일을 폴링하려면 cron이 필요하므로 정말 피하고 싶은 지연이 발생하기를 바랍니다. 다시 말하지만, 나는 localhost에 ssh를 연결하고 그런 식으로 내 권한을 확대할 수 있다고 가정합니다. 그러나 그것은 안전하지 않은 것처럼 보이고 많은 작업이 필요할 것입니다.

답변1

시스템이 제한되어 있으므로 바이너리 setuid 루트를 생성하는 것만으로는 보안 위험이 크게 발생하지 않을 수 있습니다 iptables. 잘 모르겠지만 dd-wrtLinux에 해당하는 것은 루트로서 다음과 같습니다.

chmod u+s /sbin/iptables

파일이 루트에 속한다고 가정합니다. 시스템이 해당 기능을 지원하는 경우 필요한 기능을 설정하는 것이 더 안전한 옵션일 수 있습니다.

setcap CAP_NET_ADMIN,CAP_NET_RAW+ep /sbin/iptables

(더 필요할 수도 있습니다).

귀하의 의견에서 말씀하신 것처럼 바이너리는 읽기 전용 파일 시스템에 있으므로 파일 복사본을 사용해야 합니다.

관련 정보