이것은 나의 첫 번째 게시물이므로 건설적인 비판을 환영합니다.
대상 머신 uname -a
(NAS 자체):
Linux nas 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux
원격 컴퓨터 uname -a
(NAS에 액세스하려는 컴퓨터):
Linux tilly 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
이 문서 전체에서는 다음 별칭이 사용됩니다.
로컬IPv4- 라우터가 할당한 NAS 로컬 ipv4 주소(192.168.XX).
로컬IPv4- 동일한 라우터에 연결된 Windows 시스템(원격 데스크톱 연결 허용)의 로컬 ipv4 주소는 RDP(또한 192.168.XX)를 테스트하는 데 사용하는 시스템입니다.
공개IPv4- 라우터의 공개 IPv4 주소
NAS 파일 서버를 설정하고 있는데 인터넷을 통해 시스템을 쉘링하는 데 문제가 있습니다. 이것은 SSH를 사용한 첫 번째 로데오가 아닙니다. 혼자서 고치려고 많은 시간을 보냈지만 실패했습니다.
로컬, 즉 ssh localhost
대상 컴퓨터에서 잘 작동합니다. 마찬가지로 ssh LocalIPv4
동일한 네트워크의 컴퓨터도 정상적으로 작동합니다. 나는 데비안 방화벽(ufw)을 운영한 경험이 거의 없으며, 내가 아는 한 기본값으로 남아 있습니다(아래 출력 참조 iptables -L
).
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
라우터의 PublicIPv4에 대해 ping을 실행하면 다음과 같은 결과가 나옵니다.
PING PublicIPv4 (PublicIPv4) 56(84) bytes of data.
64 bytes from PublicIPv4: icmp_seq=1 ttl=63 time=5.08 ms
64 bytes from PublicIPv4: icmp_seq=2 ttl=63 time=3.59 ms
64 bytes from PublicIPv4: icmp_seq=3 ttl=63 time=11.4 ms
64 bytes from PublicIPv4: icmp_seq=4 ttl=63 time=13.6 ms
^C
--- PublicIPv4 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 3.589/8.424/13.592/4.194 ms
포트 22는 라우터 설정에서 올바른 컴퓨터로 전달됩니다. 출력은 다음과 같습니다 ssh -vvv PublicIPv4
.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname PublicIPv4 is address
debug2: ssh_connect_direct
debug1: Connecting to PublicIPv4 [PublicIPv4] port 22.
note from op: Hangs here with no timeout; I have to Ctrl+C out.
출력은 다음과 같습니다 netstat -tlpn | grep 22
.
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 17420/sshd
tcp6 0 0 :::22 :::* LISTEN 17420/sshd
특정 포트를 차단하는 ISP 문제인 줄 알고 2222 포트로 전환해 보았습니다. 이 포트를 사용하면 ssh localhost -p 2222
대상 컴퓨터와 네트워크 컴퓨터 모두에서 ssh LocalIPv4 -p 2222
모든 것이 제대로 작동합니다 . 그러나 실행할 때에도 동일한 문제가 발생합니다 ssh -vvv PublicIPv4 -p 2222
.
또한 기본 설정이기도 한 라우터의 방화벽을 완전히 비활성화하려고 시도했지만 포트 22를 차단하는 이유가 명확하지 않았습니다. 이상한 역방향 DNS 조회 문제에 대한 언급을 듣고 /etc/hosts
두 시스템 모두에 호스트 규칙을 추가하려고 시도했지만 소용이 없었습니다.
필사적으로 RDP를 사용하여 네트워크로 연결된 Windows 컴퓨터에 액세스해 보았습니다. 나는 rdesktop WinLocalIPv4
그것을 사용했고 잘 작동했지만 적절한 포트를 전달한 후에도 비슷한 디버그 출력 라인 rdesktop PublicIPv4
에서 멈췄습니다 .Connecting to . . .
나는 내가 알고 있는 모든 옵션과 이 교환에서 본 다른 옵션을 모두 소진했습니다. 귀하의 문제 해결/진단을 더 잘 이해하기 위해 추가 정보가 필요한 경우 기꺼이 제공해 드리겠습니다. 시간 내 주셔서 감사합니다.
편집하다:
라는 서비스를 사용한 후방패를 세워라!, 내가 연 포트가 "스텔스 모드"로 실행되고 있다고 보고합니다. 라우터의 모든 명백한 보안 기능을 일시적으로 비활성화한 후에도 서비스는 여전히 이러한 포트를 "tcp 패킷용 블랙홀"로 보고했습니다. 나는 그것이 문제라고 거의 확신하지만 이제 문제는 실제로 이 포트를 어떻게 열 수 있는가 하는 것입니다. 보안 기능과 포트 포워딩을 비활성화해도 이에 대한 아무런 효과가 없는 것 같습니다. 새로운 질문을 하려고 하는데 이 플랫폼이 나에게 새로운 것인지 완전히 확신할 수 없습니다. 이에 대한 어떤 제안이라도 감사하겠습니다.
편집 2:
내 라우터에서 연결 로깅을 활성화하고 포트 0-1023에 대해 프로브를 실행한 후 다음을 통해방패를 세워라!, 내 네트워크의 연결 로그에는 들어오는 연결이 전혀 없다고 보고됩니다. 로그가 작동 중입니다. 나가는 https 트래픽이 많습니다. 이것이 문제인 것 같지만 이 동작을 중지하는 방법을 모르겠습니다. 이런 질문은 어디에 게시해야 하나요?
답변1
이것은 답변보다 의견에 가깝습니다.
다음 명령을 사용하여 라우터가 LAN 내의 컴퓨터에 포트를 올바르게 전달하는지 테스트할 수 있습니다.방패를 세워라!.
라우터에서 포트 22를 열거나 전달하지 않는 것이 좋습니다. 포트 22에 무차별 대입을 시도하는 사람/봇넷이 많이 있습니다. 라우터 인터넷 SSH 포트가 포트 1024보다 높을 것입니다. 좋은 라우터를 사용하면 한 포트를 다른 대상 포트에 매핑할 수 있습니다. (예: 라우터 인터넷 포트 9876을 SSH 서버의 포트 22에 매핑합니다.) 사람들은 여전히 공개 IP에서 열린 포트를 포트 스캔할 수 있지만 전체 65535 포트 범위를 스캔하는 대신 공개 진입점만 찾고 있을 수도 있습니다.
또한 다음을 실행하십시오.실패 2 금지SSH 서버에서. LAN SSH 서버가 있는 포트를 변경하는 경우에는 기본적으로 포트 22를 모니터링하므로 어떤 포트를 모니터링할지 알려줘야 합니다.
하루 동안 Fail2ban을 실행한 후 로그를 확인합니다. 귀하의 컴퓨터에 침입하려고 하기 때문에 많은 IP가 금지된 것을 볼 수 있습니다.
편집하다:
제가 사용하고 있는 라우터에서 발견한 한 가지 주의 사항은... 단일 포트 전달이 내 라우터에서 작동하지 않는 것 같습니다. 그러나 저는 그것이 작동하도록 하기 위해 다른 접근 방식을 사용했습니다. 일련의 포트를 전달했습니다... 시작 포트와 끝 포트가 동일한 포트 번호였고 작동했습니다.
또한 꼭 읽어주세요내 대답유제.
편집하다:
무차별 비밀번호 크래킹을 방지하려면 다음 지침을 사용하여 설정하세요.SSH 공개 키 인증.
이 작업을 완료한 후에는 공개 키를 사용하여 루트로 로그인할 수 있는지 테스트한 다음 SSH 공개 키를 사용하여 루트로만 로그인할 수 있도록 루트 비밀번호 로그인을 비활성화하도록 sshd 구성을 수정하세요. 이 방법을 사용하면 SSH 공개 키를 사용하여 표준 사용자로 로그인할 수도 있습니다.
또는 루트로 또는 sudo를 사용하여 다음 명령을 사용하여 표준 사용자 계정을 잠급니다.
usermod -L username
그러면 이 사용자의 비밀번호 로그인이 비활성화됩니다. 그러나 SSH 공개 키를 사용하여 로그인할 수는 있습니다.
참고: 위 명령을 원격으로 사용하는 경우새 셸을 엽니다.서버로 이동하여 로그인 기능을 테스트하세요. 이렇게 하면 문제가 있어서 로그인할 수 없는 경우 이미 다른 셸에 로그인되어 있으므로 문제를 해결할 수 있습니다.
비밀번호로 로그인하는 기능을 제거하기 전에 SSH 공개 키를 사용하여 계정에 로그인할 수 있는지 테스트해 보세요.
답변2
답변3
귀하의 라우터에 대해서는 잘 모르겠지만 확인하실 수 있습니다. 내 경우에는 포트 전달 시 "TCP", "UDP" 및 "TCP & UDP" 포트를 설정할 수 있지만 어떤 이유로 "TCP" 설정이 & UDP" 포트는 한 번도 작동하지 않았습니다. 동일한(또는 다른) 시스템에 대해 열려면 동일한 포트에 대해 TCP 및 UDP를 설정해야 합니다.
가치가 있는 것은 아마도 이미 알고 계시겠지만 "포트 22가 차단되는 이유가 명확하지 않습니다"라고 말씀하셨기 때문에 그에 대한 응답으로 다음과 같이 대답했습니다. 포트 0~1024만이 특수한 것으로 간주되고 루트가 필요하거나 특수용으로 예약되어 있습니다. 포트 22는 일반적으로 SSH용으로 예약되어 있으므로 대부분의 홈 라우터 및 기본 방화벽에 의해 차단되며 RDP의 경우 포트 22는 3389용으로 예약되어 있으며 이는 일반적으로 대부분의 홈 라우터 및 방화벽에서도 차단됩니다. 한 포트에서 다른 포트로 SSH 연결을 터널링하여 이것이 단순한 포트 문제인지 확인할 수 있습니다.