Redhat에 vsftpd를 설치했습니다. 다음을 사용하여 FTP 서버에 로그인했을 때 이것을 발견하기 전까지는 모든 것이 파일이었습니다.
FTP 로컬호스트
or fileZilla
다음 오류가 발생합니다.
ERROR:
- 500 OOPS: cannot change directory:/foo
또한 로그 디렉토리를 변경할 때
- /var/log/xferlog
도착하다
- /usr/local/data
그러면 나는 다음을 얻습니다:
500 OOPS: failed to open xferlog log file:/usr/local/data/vsftpd.log
따라서협회해결책은 다음과 같습니다.
This happens because SELinux isn’t properly configured for your ftp service. Either disable SELinux or configure it for ftp.
To disable SELinux, edit /etc/selinux/config and set “SELINUX=disabled”, then reboot.
SElinux를 비활성화하지 않고 ftp를 활성화하는 방법은 무엇입니까?
답변1
vsftpd
SELinux는 외부에서 파일을 제공 /var/ftp
하거나 로그를 작성하는 것을 허용하지 않습니다 ./var/log
고의로. SELinux의 목적은 재난을 완화하는 것입니다. FTP는 근본적으로 안전하지 않습니다. SELinux에서 실행하는 것은 vsftpd
공격자가 FTP 서비스를 공격하기로 결정한 경우 발생할 수 있는 피해를 최소화하기 때문에 좋은 생각입니다.
전혀 안전하지 않은 서비스(즉, SELinux를 사용하여 잠그지 않고)를 실행하는 것은 vsftpd
어리석은 일입니다 .
꼭 이렇게 재구성해야 한다면 FTP 관련 SELinux 정책을 다시 작성해야 하는데 그게 간단한 작업이 아니다.이 audit2allow
도구는 도움이 될 수 있습니다.
SELinux를 비활성화하는 것이 너무 위험하고 새로운 SELinux 정책을 구축하는 것이 너무 어렵다고 생각한다면 다음을 사용하는 것이 좋습니다.SFTP또는scp
대신에. RHEL은 sshd
공장에서 구성되어 실행되므로 작동을 위해 특별한 작업을 수행할 필요가 없습니다.
답변2
일반적으로 /var/log/messages에서 selinux 거부를 찾을 수 있습니다. 이것을 시도해 보세요(루트로):
grep avc /var/log/messages | grep ftp
원하는 구성에 따라 출력을 검토하고 거부가 오류인지 확인합니다. 수정하려는 명령문에 대한 정보에 초점을 맞추려면 필요에 따라 grep 명령문을 조정하십시오. 일시적으로 시스템을 완화 모드( )로 설정한 다음 필요한 작업을 수행하는 setenforce 0
것이 유용한 경우가 많습니다 . /var/log/messages
SELinux 정책에서 수정해야 할 오류 목록이 수집됩니다. 수정해야 할 거부 목록이 만족스러우면 다음을 사용하여 새 정책을 생성하세요.
# ensure you have audit2allow
which audit2allow
# if no audit2allow, install it:
yum install policycoreutils-python
# replace the following with your tuned grep (if necessary)
grep avc /var/log/message | grep ftp | audit2allow -M my_vsftp
현재 디렉터리에는 읽기 가능하고 my_vsftp.te
컴파일 된 두 개의 새 my_vsftp.pp
파일 이 있습니다 . *.te 파일을 확인하여 적절한지 확인하세요. *.te
*.pp
SELinux 규칙을 너무 많이 열면 취약해질 수 있으므로 여기서 주의하세요. SELinux를 읽어보는 것이 좋습니다.
cat my_vsftp.te
정책이 적합해 보이면 설치하고 활성화하세요.
mkdir /usr/share/selinux/packages/my_vsftp
mv my_vsftp.* /usr/share/selinux/packages/my_vsftp/
semodule -i /usr/share/selinux/packages/my_vsftp/my_vsftp.pp
시스템이 실행 중인지 확인하고( getenforce
, setenforce 1
) FTP 서버를 테스트하여 /var/log/messages
거부를 모니터링하세요.
답변3
어디에서나 vsftpd 액세스를 허용하는 약간 과감한 솔루션은 다음과 같습니다.
setsebool -P allow_ftpd_full_access=1
그 시점에서 vsftpd는 시스템의 거의 모든 곳에 접근할 수 있습니다...