/etc/sysconfig/iptables: 포트 80과 22를 제외한 모든 포트를 차단하는 방법은 무엇입니까?

/etc/sysconfig/iptables: 포트 80과 22를 제외한 모든 포트를 차단하는 방법은 무엇입니까?

나의 새로운 Centos 6.5 클라우드 서버는 이것과 함께 제공됩니다

/etc/sysconfig/iptables

내부에는 다음이 있습니다.

# Generated by iptables-save v1.4.7 on Mon Jun 16 20:04:05 2014
*filter
:INPUT ACCEPT [8:607]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:1089]
COMMIT
# Completed on Mon Jun 16 20:04:05 2014

하지만 iptables를 중지하거나 시작하든 관계없이 다른 포트는 여전히 열려 있는 것 같습니다. 나는 webmin과 같은 것을 설치했고 포트 10000에서 잘 작동하기 때문에 이것을 알고 있습니다.

또한 httpd.conf에 포트를 추가했습니다.

 listen 81

포트 81의 가상 호스트.

iptables가 시작되든 중지되든 작동합니다.

이는 위의 iptables 파일을 수정해야 함을 의미합니다.

포트 80과 22를 제외한 모든 포트를 비활성화하고 싶습니다

여기에서 직접 테스트하고 추가 포트를 추가할 수 있습니다.

답변1

규칙을 만들기 전에 클라이언트 IP에 해당 서버에 대한 전체 액세스 권한을 부여하는 것이 좋습니다. 모든 규칙이 완벽하다는 것을 확인한 후에는 규칙을 삭제할 수 있습니다.

iptables -A INPUT -s YOUR-CLIENT-IP -j ACCEPT

YOUR-CLIENT-IP는 연결하려는 서버의 IP로 바꿔야 합니다.

이제 규칙 만들기를 시작할 수 있습니다. 따라서 먼저 SSH와 HTTP를 허용하십시오.

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

마지막으로 다른 모든 패킷을 차단할 수 있습니다.

iptables -A INPUT -j REJECT

그런 다음 다른 IP에서 SSH 및 HTTP에 액세스하여 모든 것이 제대로 작동하는지 확인할 수 있으며, 모든 것이 정상이면 목록의 첫 번째 규칙을 삭제할 수 있습니다.

iptables -D INPUT 1

짧은 답변

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT

더 나은 대답

지적한대로작은 만주석에서 더 나은 접근 방식은 마지막 규칙을 다음과 같이 변경하는 것입니다.

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -P INPUT REJECT

관련 정보