제가 참고로 사용한 내용은 다음과 같습니다.https://unix.stackexchange.com/a/145933
그렇다면 다음과 같이 하세요.
iptables -I INPUT -p tcp -s MY IP --dport 21 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j DROP
MY IP
포트 21에만 연결할 수 있는 것으로 알고 있습니다 . 그런데 다른 허용 IP를 추가하는 방법이 있나요?
나는 이것을 시도했습니다 :
iptables -I INPUT -p tcp -s MY OTHER IP --dport 21 -j ACCEPT
그런데 아직도 막혀 있는데, DROP이 예전에 있었기 때문인 것 같아요. DROP 규칙을 삭제하지 않고 추가할 수 있나요?
답변1
옵션 -I
은 없습니다iptables
추가의(즉 -A
, )는 다음과 같은 용도로 사용됩니다.끼워 넣다새로운 규칙. 차이점은 -A
새로운 규칙이 추가되었다는 것 입니다.끝체인, 기본적으로 -I
체인 내시작체인.
체인은 순차적으로 읽혀지기 때문에 규칙 -j ACCEPT
보다 먼저 규칙을 처리하는 것이 중요합니다 -j DROP
.
이를 수행하는 방법에는 여러 가지가 있습니다.
- 규칙을 추가하는
-A
대신 사용하세요 .-I
이렇게 하면 규칙이 마지막에 추가되고 명령 순서를 변경하지 않으면 올바른 순서가 됩니다. 나는 다른 두 가지 옵션보다 이것을 권장합니다. - 계속 사용
-I
하되 규칙을 바꾸십시오. 이렇게 하면-j ACCEPT
규칙이 규칙보다 먼저 처리됩니다-j DROP
. -I
선택적으로 새 규칙을 삽입할 체인의 위치인 추가 인수(숫자)를 허용합니다. 매개 변수 없이 규칙을 추가했으므로-j ACCEPT
첫 번째 규칙(즉, 1행)이 됩니다. 따라서 2행에 두 번째 규칙을 추가합니다.iptables -I INPUT 2 -p tcp -s 0.0.0.0/0 --dport 21 `-j DROP`
그렇긴 하지만, 첫 번째 규칙과 같은 많은 규칙이 필요하다면 성능상의 이유로 사용자 정의 체인을 만드는 것이 더 좋습니다.
iptables -N check-ftp
iptables -A check-ftp -s IP1 -j ACCEPT
iptables -A check-ftp -s IP2 -j ACCEPT
[...]
iptables -A check-ftp -j DROP
iptables -A INPUT -p tcp --dport 21 -j check-ftp
그러면 체인에 "FTP 연결"에 대한 규칙이 생성됩니다. 이렇게 하면 들어오는 네트워크 패킷이 FTP 패킷이 아닌 경우 netfilter 코드는 이 특정 패킷을 허용할지 여부를 결정하기 위해 (긴) 규칙 목록을 반복하지 않고 즉시 다음 규칙으로 이동합니다. 그 경우예FTP 패킷, 그런 다음~ 할 것이다긴 목록을 살펴보세요.