우리는 다음을 허용해야 하는 컴퓨터에 방화벽을 설정하고 있습니다.
- 특정 IP 주소에서 들어오는 SSH 연결
- 리디렉션을 제외한 ICMP.
적어도 현재 테스트가 완료될 때까지는 DROP 대신 REJECT를 사용하기로 선택합니다.
*filter
# Allow all loopback (lo0) traffic and reject traffic to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
# Reject ICMP redirect.
-A INPUT -p icmp --icmp-type 5 -j REJECT
# Allow ICMP (the types which are not rejected).
-A INPUT -p icmp -j ACCEPT
# Allow SSH connections from specific address
-A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT
# Allow inbound traffic from established connections, including ICMP error returns.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic which was sent to you for forwarding (optional but useful).
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
COMMIT
머신은 NAT 라우터 뒤에 있으며 포트 22가 NAT 라우터로 전달됩니다.
승인되지 않은 IP 주소에서 연결을 시도하면 약 1분 후에 호스트 연결 시간이 초과됩니다.
ssh: connect to host x.x.x.x port 22: Connection timed out
이것이 예상되는가? REJECT를 실행하면 즉시 연결이 실패할 것 같습니다. REJECT ICMP 패킷이 연결된 컴퓨터로 반환되지 않기 때문입니까?