HTTP (S) 및 SSH (포트 80, 443 및 22)를 사용하여 기본 웹 서버를 실행하는 대부분의 사이트에서 작동하는 기본 서버 iptables 스크립트를 작성하려고했습니다. 결국 대부분의 VPS는 이러한 시작 포트 규칙 만 필요하며 나중에 필요에 따라 메일 또는 게임 포트를 추가 할 수 있습니다.
지금까지 나는 다음과 같은 규칙을 가지고 있으며 누군가 더 나은 스크립트 또는 추가 할 수있는 개선 사항을 알고 있는지 궁금합니다.
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
iptables는 상자를 보호하는 데 가장 중요한 부분 중 하나이며 (fail2ban 참조) 서버의 안전한 기본 방화벽을 만드는 데 필요한 모든 것을 이해하는 데 어려움을 겪는 사람들이 많이 있습니다.
웹 서버에 필요한 기본 포트만 여는 가장 안전한 방법은 무엇입니까?
업데이트 : cyberciti.biz에는 또 다른 iptables 스크립트 가 있습니다.
또한 Denyhosts 또는 fail2ban을 사용하는 대신 iptables 자체를 사용 하여 SSH에서 반복되는 잘못된 시도를 차단할 수 있습니다 .
modprobe
설치되지 않은 cyberciti.biz 스크립트를 실행 하거나 (또는 포트 22를 열기 전에 다른 오류가있는 경우) 서버에서 사용자를 잠급니다.