MySql 서버에 "작은" 보안을 추가하고 싶습니다.
포트 330을 열어두고 싶지만 내부 목적(localhost)으로만 사용하고 3306으로 리디렉션되는 다른 포트(예: 12345)를 열고 싶습니다.
따라서 "12345에서 들어오는 모든 트래픽은 3306으로 리디렉션되지만 3306 외부에서 들어오는 트래픽은 꺼집니다"라는 eth1 인터페이스에만 iptable 경로를 추가해야 합니다.
3306에서 외부 수신 트래픽을 끄는 방법은 무엇입니까?
답변1
귀하의 모든 요구 사항을 잘 이해했다면 다음을 수행하십시오.
# assuming your network interface is named `eth1` as per your OP example
iptables -t raw -A PREROUTING -i eth1 -p tcp --dport 3306 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to-port 3306
첫 번째 명령은 eth1
TCP 포트 3306에서 들어오는 연결을 비활성화합니다.
두 번째 명령은 로컬 포트 12345로 들어오는 모든 연결을 로컬 포트 3306으로 리디렉션합니다.
eth0
, eth1
, 등 으로 명명된 여러 인터페이스가 있고 eth2
이를 모두 차단하려는 경우 eth+
위의 첫 번째 명령에 지정하면(더하기 기호 참고) 인터페이스를 가져옵니다. 그렇지 않으면 선택적으로 특정 인터페이스만 차단할 수 있습니다. 각 인터페이스는 첫 번째 명령을 한 번 사용하여 차단되어야 합니다.
위의 두 명령은 요청한 동작을 달성하는 데 필요한 명령이며 전반적인 요구 사항에 따라 충분할 수 있습니다.
그러나 보다 일관된 경험을 위해서는 추가 선택적 구성을 사용하는 것이 좋습니다.
iptables -t nat -A OUTPUT -o lo -p tcp --dport 12345 -j REDIRECT --to-port 3306
이는 리디렉션됩니다.현지의동일한 로컬 컴퓨터에서 포트 12345를 통해 mysql에 연결할 수도 있도록 로컬 포트 12345에서 로컬 포트 3306으로의 연결을 시작합니다.
마지막으로,중요한 참고 사항-A
, 명령 옵션 기억iptables
추가따라서 추가된 새 규칙보다 우선하여 규칙을 방해하는 규칙에 대한 규칙이 이미 존재합니다.
따라서 iptables 명령을 사용하려고 하면 어느 시점에서 관련된 테이블을 지워야 할 수 있으며 -F
옵션을 사용하여 다음과 같이 이를 수행할 수 있습니다.
iptables -t raw -F PREROUTING
iptables -t nat -F PREROUTING
# and possibly also
iptables -t nat -F OUTPUT
# if you also used the additional advised commmand
반면에 다음 명령을 명확하게 기억하십시오.모두이 표에 존재하는 규칙에는 다른 방화벽으로 인해 존재할 수 있는 규칙이 포함됩니다. 특정 규칙을 선택적으로 제거하는 더 세분화된 명령이 있지만 이는 전체 iptables 설정에 따라 다릅니다(여기에 표시된 두 가지 간단한 규칙보다 더 복잡한 경우).
따라서 항상 초기 구성이 무엇인지 먼저 확인해야 합니다. 다음과 같이 -L
ie 옵션을 사용하여 이 작업을 수행할 수 있습니다.iptables
iptables -t raw -nL PREROUTING
iptables -t nat -nL PREROUTING
# and possibly also
iptables -t nat -nL OUTPUT
# if you also used the additional advised commmand
물론 규칙을 추가할 때 언제든지 이를 사용하여 테이블의 현재 상태를 확인할 수도 있습니다. 그런 다음 v
옵션(그림 참조 ) 을 추가하여 -nvL
시간 경과에 따른 네트워크 트래픽과 일치하는(또는 일치하지 않는) 규칙 카운터를 볼 수 있습니다.