iptables는 포트를 통한 액세스를 차단하지 않습니까?

iptables는 포트를 통한 액세스를 차단하지 않습니까?

나는 달리고 Debian 8.11있고 iptables v1.4.21.ipset v6.23, protocol version: 6

작은 호스트 하위 집합을 제외한 모든 호스트에서 특정 포트에 대한 액세스를 차단하려고 하는데 작동하지 않는 것 같습니다.

먼저 작은 IP 주소 집합을 ipset이라는 목록 에 넣었습니다 allowed-hosts. 그런 다음 실행 후 다음 명령을 실행합니다 sudo /sbin/iptables -F.sudo /sbin/iptables -X

sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -j DROP
sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT

그러나 이 작업을 수행한 후에도 존재하지 않는 IP 주소의 클라이언트는 allowed-hosts지정된 모든 포트에 계속 성공적으로 연결할 수 있습니다.

iptables다른 유효한 규칙 은 없습니다 .

sudo /sbin/iptables -L다음은 그 결과이다.

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s match-set allowed-hosts src
DROP       tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

sudo /sbin/iptables-save이는 다음의 결과입니다.

# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*security
:INPUT ACCEPT [16777464:2727427757]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*raw
:PREROUTING ACCEPT [21444955:3000669583]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*mangle
:PREROUTING ACCEPT [21444955:3000669583]
:INPUT ACCEPT [21444952:3000669415]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
:POSTROUTING ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*filter
:INPUT ACCEPT [2130649:527089827]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4465281:1887206637]
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -j DROP
COMMIT
# Completed on Wed Jun  8 11:53:09 2022

내가 무엇을 잘못할 수 있었나요?

미리 감사드립니다.

**고쳐 쓰다**

첫째, 아래 주석의 제안과 달리 "src"가 실제로 지정되었습니다. 위의 "...src -j ACCEPT" 줄에 나타납니다.

둘째, 이 명령에 사용한 구문은 웹 검색을 통해 찾은 iptables문서 및 토론에 표시된 내용에서 나왔습니다 .iptables

셋째, 위의 출력을 살펴보세요 iptables -L. 이는 source=anywhere목록의 IP 주소에 대해 포트 간 연결이 허용되어야 함을 명확하게 나타냅니다. 이는 또한 다음 IP 주소에 대해 포트 연결을 제거해야 함을 명확하게 나타냅니다.destination=anywhereallowed-hostssource=anywheredestination=anywhere아니요allowed-hosts목록 에 있습니다 .

적어도 그것은 iptables나에게 말하는 것 같습니다. 그러나 allowed-hosts내 컴퓨터는 목록에 없는 IP 주소에서 이러한 포트로의 연결을 계속 허용합니다.

또한 이 작업을 수행하면 ipset test allowed-hosts aaa.bbb.ccc.ddd"aaa.bbb.ccc.ddd"는 IP 주소를 나타냅니다.아니요에서는 allowed-hosts다음과 같은 출력이 올바르게 표시됩니다.

aaa.bbb.ccc.ddd is NOT in set allowed-hosts.

이렇게 하면 ipset test allowed-hosts www.xxx.yyy.zzz"www.xxx.yyy.zzz"는 IP 주소를 나타냅니다.에서는 allowed-hosts다음과 같은 출력이 올바르게 표시됩니다.

www.xxx.yyy.zzz is in set allowed-hosts.

위의 출력을 보면 iptables-save내 구성에 이러한 포트 연결이 허용되지 않을 수 있는 다른 사항이 있습니까 allowed-hosts?

미리 다시 한번 감사드립니다.

답변1

결국 작동한다는 것이 밝혀졌습니다. 이런 허위 경보로 인해 정말 죄송합니다.

다음과 같은 이유로 작동하지 않는다고 잘못 생각했습니다.

저는 postfixand 를 사용하고 있으며 이에 대한 인증 서비스를 dovecot설정했습니다 .postfixdovecot

dovecot디버그 및 로그 메시지를 이라는 파일에 기록하도록 설정했으며 /var/log/mailclient.logpostfix통해 로그하도록 구성했습니다 syslog.

나는 그것을 깊이 생각하지 않았고 인증을 수행하는 파일이기 때문에 postfix인증 시도로 인해 동일한 로그 파일에 항목이 나타날 것이라는 사실을 잊어 버렸습니다 .dovecotdovecotpostfix

나는 내 규칙을 사용하여 포트 110, 143, 993 및 995를 iptables차단 하고 포트를 차단하지 않습니다 .pop3imappostfix

인증을 설정한 방식에 따라 postfix파일에는 /var/log/mailclient.log모든 postfix로그인 시도와 dovecot로그인 시도에 대한 항목이 포함됩니다. 나는 이 로그 파일에서 이러한 항목을 읽을 때 별로 주의를 기울이지 않았으며 로그인 시도가 아닌 및 pop3에 대한 로그인 시도라고 잘못 생각했습니다 . 그래서 나는 차단하지 않은 이러한 로그인 시도를 로그인 시도로 착각 했습니다 .imapsmtpsmtppop3imap

내 오류를 이해한 후에는 내 로그 파일을 더 자세히 검사하고 분석했으며 이제 실제로 dovecot내가 넣은 호스트의 작은 하위 집합에서 발생하는 파일 외에는pop3 아무것도 없다는 것을 깨달았습니다. 어떤 연결도 비둘기장에 도달하지 않습니다. imap"허용된 호스트" ipset목록.

그래서 iptables위에 나열한 항목은결국에는 잘 작동합니다.

잘못된 긍정에 대해 다시 한번 사과드립니다. 이것이 효과가 있어서 다행입니다.

어쩌면 이 질문과 토론이 미래에 나와 같은 실수를 저지를 수도 있는 누군가에게 도움이 될 수 있을 것입니다.

관련 정보