NFS(Network File System)는 FreeBSD에서 지원하는 파일 시스템으로, TCP/IP 네트워크를 통해 네트워크상의 컴퓨터 간에 리소스를 공유할 수 있게 해줍니다. NFS를 잘못 구성하고 사용하면 보안 문제가 발생할 수 있습니다.
NFS의 불안정성은 주로 다음 네 가지 측면에 반영됩니다.
액세스 제어 메커니즘 부족
실제 사용자 인증 메커니즘이 없고 RPC/마운트 요청에 대한 프로세스 확인만
이전 NFS 버전에서는 승인되지 않은 사용자가 유효한 파일 핸들을 얻을 수 있습니다
RPC 원격 호출에서 SUID 프로그램에는 슈퍼유저 권한이 있습니다
위의 보안 위험에 효과적으로 대처하려면 다음을 수행하는 것이 좋습니다. 다음 강화 체계를 사용합니다.
anonuid, anongid를 사용하여 NFS 서버에 마운트된 클라이언트가 최소한의 권한만 갖도록 공유 디렉터리를 구성합니다. no_root_squash를 사용하지 마십시오.
보안 그룹 정책이나 iptable 방화벽을 사용하여 NFS 서버에 연결할 수 있는 컴퓨터의 범위를 제한하세요.
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
계정 확인
Kerberos V5를 로그인 확인 시스템으로 사용하여 보안 강화를 위해 모든 방문자가 계정으로 로그인하도록 요구합니다.
NFSD에 대한 COPY 수 설정
Linux에서 NFSD에 대한 COPY 수는 시작 파일 /etc/rc.d/init.d/nfs
에 정의되어 있으며, 기본값은 8입니다. /etc/rc.d/init.d/nfs
中,默认值为 8。
最佳的 COPY 数目一般取决于可能的客户机数目。您可以通过测试来找到 COPY 数目的近似最佳值,并手动设置该参数。
选择传输协议
对于不同的网络情况,有针对地选择 UDP 或 TCP 传输协议。传输协议可以自动选择,也可以手动设置。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 协议传输速度快,非连接传输时便捷,但其传输稳定性不如 TCP,当网络不稳定或者黑客入侵时很容易使 NFS 性能大幅降低,甚至导致网络瘫痪。一般情况下,使用 TCP 的 NFS 比较稳定,使用 UDP 的 NFS 速度较快。
在机器较少,网络状况较好的情况下,使用 UDP 协议能带来较好的性能。
当机器较多,网络情况复杂时,推荐使用 TCP 协议(V2 只支持 UDP 协议)。
在局域网中使用 UDP 协议较好,因为局域网有比较稳定的网络保证,使用 UDP 可以带来更好的性能。
在广域网中推荐使用 TCP 协议,TCP 协议能让 NFS 在复杂的网络环境中保持最好的传输稳定性。
限制客户机数量
修改 /etc/hosts.allow
和 /etc /hosts.deny
来限制客户机数量。
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
改变默认的 NFS 端口
NFS 默认使用的是 111 端口,使用 port 参数可以改变这个端口值。改变默认端口值能够在一定程度上增强安全性。
配置 nosuid 和 noexec
SUID (Set User ID) 或 SGID (Set Group ID) 程序可以让普通用户以超过自己权限来执行。很多 SUID/SGID 可执行程序是必须的,但也可能被一些恶意的本地用户利用,获取本不应有的权限。
尽量减少所有者是 root,或是在 root 组中却拥有 SUID/SGID 属性的文件。您可以删除这样的文件或更改其属性,如:
使用 nosuid 选项禁止 set-UID 程序在 NFS 服务器上运行,可以在 /etc/exports
전송 프로토콜 선택다른 네트워크 조건의 경우 UDP 또는 TCP 전송 프로토콜을 원하는 방식으로 선택하세요. 전송 프로토콜은 자동으로 선택하거나 수동으로 설정할 수 있습니다.
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 프로토콜은 전송 속도가 빠르고 비연결 전송에 편리하지만 전송 안정성이 뛰어납니다. TCP만큼 좋지는 않습니다. 네트워크가 불안정하거나 해킹당하면 NFS 성능이 크게 저하되거나 네트워크 마비가 발생하기 쉽습니다. 일반적으로 TCP를 사용하는 NFS가 더 안정적이고, UDP를 사용하는 NFS가 더 빠릅니다. 머신 수가 적고 네트워크 상태가 좋은 경우 UDP 프로토콜을 사용하면 더 나은 성능을 얻을 수 있습니다. 머신이 많고 네트워크 상황이 복잡할 경우 TCP 프로토콜을 사용하는 것이 좋습니다. (V2는 UDP 프로토콜만 지원합니다.) 🎜🎜🎜🎜LAN은 상대적으로 안정적인 네트워크 보장을 제공하고 UDP를 사용하면 더 나은 성능을 얻을 수 있으므로 LAN에서는 UDP 프로토콜을 사용하는 것이 좋습니다. 🎜🎜🎜🎜WAN에서는 TCP 프로토콜을 사용하는 것이 좋습니다. TCP 프로토콜을 사용하면 NFS가 복잡한 네트워크 환경에서 최고의 전송 안정성을 유지할 수 있습니다. 🎜🎜🎜🎜🎜클라이언트 수를 제한하세요🎜🎜🎜/etc/hosts.allow
및 /etc /hosts.deny
를 수정하여 클라이언트 수를 제한하세요. 짐 S 포트 🎜🎜NFS는 기본적으로 포트 111을 사용합니다. 이 포트 값은 포트 매개변수를 사용하여 변경할 수 있습니다. 기본 포트 값을 변경하면 보안이 어느 정도 강화될 수 있습니다. 🎜🎜🎜nosuid 및 noexec🎜🎜SUID(Set User ID) 또는 SGID(Set Group ID) 프로그램을 구성하면 일반 사용자가 자신의 권한 이상으로 실행할 수 있습니다. 많은 SUID/SGID 실행 프로그램이 필요하지만 일부 악의적인 로컬 사용자가 소유해서는 안 되는 권한을 얻기 위해 이를 악용할 수도 있습니다. 🎜🎜소유자가 루트이거나 루트 그룹에 속하지만 SUID/SGID 특성을 갖는 파일 수를 최소화하세요. 이러한 파일을 삭제하거나 다음과 같이 해당 속성을 변경할 수 있습니다. 🎜🎜nosuid 옵션을 사용하여 NFS 서버에서 set-UID 프로그램이 실행되지 않도록 할 수 있습니다. /etc/exports
에 한 줄을 추가할 수 있습니다. >: 🎜🎜🎜/www www.abc.com(rw, root_squash, nosuid)🎜🎜🎜noexec를 사용하여 바이너리 파일의 직접 실행을 금지하세요. 🎜🎜관련 추천: 🎜🎜🎜NFS란 무엇인가요? CentOS7에서 NFS 공유 구현 방법 공유🎜🎜🎜🎜Linux에서 ftp, nfs, ssh 서버 구축🎜🎜🎜🎜NFS 서비스 소개 및 사용법🎜🎜위 내용은 Linux NFS 서비스 보안 강화 사례 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!