RHEL을 설치할 때 iptables가 1531(oracle)의 연결을 거부하는 것 같습니다. 내 구성은 다음과 같습니다.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
포트 1531이 허용되지 않는 이유를 이해하려면 이러한 규칙을 설명해야 합니다. 허용되지 않는 것을 볼 수 있지만 "모두 거부" 유형 문도 표시되지 않습니다.
답변1
이는 커널의 실제 방화벽 규칙이 아닌 동일한 파일이지만 실행 중인 방화벽과 동일한 순서로 여기에 나타납니다. 이 경우 들어오는 패킷은 INPUT 체인의 모든 규칙을 하나씩 거치며 로 저장된 규칙에 도달할 때까지 계속 실패합니다 -A INPUT -j REJECT --reject-with icmp-host-prohibited
. 이 시점에서는 방화벽에 의해 거부됩니다.
이 REJECT 규칙 앞에 ACCEPT 규칙을 삽입하거나 방화벽을 완전히 비활성화하여 이 문제를 해결할 수 있습니다.
혼란은 기본 정책이 ACCEPT라는 사실에서 비롯됩니다. 많은 보안 분야에서 선호되는 논리는 명시적인 REJECT 규칙을 제거하고 단순히 온체인 기본 정책을 REJECT 또는 DROP으로 설정하는 것입니다. 특정 시간에 활성 방화벽 규칙을 보려면 를 사용할 수 있습니다 iptables -L
. 방화벽을 업데이트하려면 다음 프로세스를 따르는 것이 좋습니다.
- 5분 안에 방화벽 상태를 재설정하는 "타이머"를 설정합니다(예
echo "service iptables restart" | at now + 5 minutes
: ). - 커널 방화벽 규칙 세트를 수정하고 원치 않는 부작용 없이 수정 사항이 원하는 대로 작동하는지 확인합니다. 자신을 잠근 경우 타이머가 만료될 때까지 5분 정도 기다린 후 방화벽을 재설정하세요.
- 수정된 규칙 세트를 저장하여
service iptables save
답변2
iptables에 포트가 구성되지 않은 것 같습니다. 이것은 기본 iptables 파일처럼 보입니다. iptables는 암시적 거부를 사용하므로 허용하려는 포트를 명시적으로 선언해야 합니다.
다음과 같이 REJECT 문 앞에 행을 삽입하여 수동으로 편집할 수 있습니다.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1531 -j ACCEPT
완료되면 iptables를 다시 시작하십시오.
레드햇 6.x:service iptables restart
레드햇 7.x:systemctl restart iptables.service
저는 주로 CentOS를 다루고 있다는 점을 명심하세요. 이는 다소 동일합니다. 포트를 여는 다른 방법(명령줄을 통해)이 있지만 직접 살펴보는 것도 충분히 쉽습니다.