몇 가지 테스트를 수행 중이며 데이터베이스에 오류가 발생하면 어떻게 되는지 테스트하고 싶습니다. 내 테스트와 동일한 상자에서 실행되고 있으며 다음과 같은 내용이 트릭을 수행하지 않는 것 같습니다.
iptables -A INPUT -p tcp --dport 25262 -j DROP
iptables -A INPUT -p tcp --sport 25262 -j DROP
iptables -A INPUT -p tcp --dport 25262 -i lo -j DROP
iptables -A INPUT -p tcp --dport 25262 -s 127.0.0.1 -j DROP
나는 데이터베이스 프로세스를 종료하고, 파일을 이동하고(내 데이터베이스가 충돌 시 자동으로 복구되므로) 테스트를 이와 같이 계속하도록 하려고 하지만 이는 나쁜 접근 방식처럼 보입니다.
루프백 포트를 차단하는 올바른 방법은 무엇입니까?
답변1
모든 루프백 트래픽을 제거하는 명령줄 명령(lo0)
$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP
설명하다
-i lo DROP
iptables는 위에서 아래로 규칙을 평가하고 "첫 번째 일치 승리" 방식으로 작동하므로 규칙이 올바른지 확인해야 합니다.-I
끼워 넣다대신에 맨 위로-A
추가의다른 규칙이 루프백 트래픽을 허용하기 전에 일치하도록 규칙의 맨 아래에 추가합니다. 예를 들어 데이터베이스가 MySQL인 경우 이 규칙도 일치할 수 있습니다.
INPUT -p tcp --dport 3306 ACCEPT
따라서 다음 명령을 실행하면:
$ [sudo] iptables -A INPUT --dport 25262 -i lo -j DROP
^^^ Notice the difference
규칙은 다음과 같습니다.
INPUT -p tcp --dport 3306 ACCEPT ---> this "wins" and request is accepted
INPUT --dport 25262 -i lo -j DROP
다음을 실행하여:
$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP
최종 규칙은 다음과 같습니다.
INPUT --dport 25262 -i lo -j DROP ---> this "wins" and request is DROP'ed
INPUT -p tcp --dport 3306 ACCEPT
... all your other rules