방화벽 뒤의 Linux 시스템에 대한 원격 액세스 싶지만 드문 경우 에이 컴퓨터에 액세스 해야하는

원격 위치에 일종의 공용 터미널로 Linux 시스템을 배포하려고합니다. 유지 관리를 위해 SSH를 통해 원격으로 액세스하고 싶지만 드문 경우 에이 컴퓨터에 액세스 해야하는 경우 원격 방화벽에서 포트를 열어두고 싶지 않습니다. 나는 외부의 컴퓨터에 역방향 SSH 터널을 만드는 간단한 스크립트에 대해 설명했지만 액세스해야 할 때 사용자가 아무것도 할 필요가 없습니다. 어떤 아이디어?

업데이트 : 리버스 ssh 터널을 만들기 위해 스크립트의 원래 계획을 따르기로 결정했습니다. 포트 노킹과 같은 다른 제안 된 솔루션이 실제로하고 싶은 행을 더 많이 따르지만이 경우에는 구성을 통해 사용자를 걷는 것 이외의 라우터 구성에 대한 액세스 권한이 없습니다. 전율



답변

포트가 열려있는 것과 관련이 없으며 포트를 여는 프로세스를 통해 사용자를 걷고 싶지 않은 것과 관련이 있습니다. 불행히도이 라우터에 전혀 액세스 할 수 없습니다.

라우터를 변경하는 것이 문제가 아닌 경우 Hamachi 와 같은 P2P 또는 VPN 솔루션을 확인해야 할 수도 있습니다 . 시작할 때 VPN 연결을 자동으로 설정하도록 시스템을 설정하면 필요할 때마다 연결할 수 있어야합니다. Hamachi는 모든 방화벽 협상을 수행합니다. 단점은 연결해야 할 때 Hamachi 서버가 작동하고 작동해야한다는 것입니다.

서버가 항상 작동중인 경우 원격 시스템이 항상 터널을 열어두고 서버에 연결되도록 autossh를 설정할 수 있습니다. 한 가지 단점은 원격 시스템이 손상되어 공격자가 ssh 세션을 설정하는 데 사용되는 키를 얻는다는 것입니다. ssh 연결을 허용하는 시스템을 실제로 잠그는 것이 매우 중요합니다.


아래는 원래 답변입니다. 라우터 업데이트가 옵션이라고 가정했습니다.

방화벽이 방화벽을 지원하는지 조사하고 싶은 한 가지 해결책은 포트 노킹 입니다. 일부 방화벽의 경우 방화벽에서 확인한 특수 패킷 세트를 전송 한 다음 방화벽을 통해 일시적으로 구멍을 열 수 있습니다.

다른 구현보다 더 나은 구현이 많이 있습니다. 일부는 강력한 암호를 사용하여 올바른 키가없는 사람이 올바른 노크를 보내는 것을 거의 불가능하게 만듭니다.


답변

포트 22를 인터넷에 액세스 할 수있는 상태로 두는 것에 대해 걱정하지는 않지만 보안을 위해 몇 가지 조치를 취할 것입니다.

먼저, 키보드 대화식 인증을 비활성화하고 ssh 키로 이동하십시오.

둘째, 원격 서버에 fail2ban 과 같은 것을 시스템을 반복적으로 검사하는 블랙 볼 IP 주소에 설치 하십시오. ssh 키를 설정 했으므로 인증 된 사용자에 대한 인증 실패가 없어야합니다.

또는 WerkkreWs의 조언을 따르고 컴퓨터 앞에서 방화벽을 구성하여 VPN 연결을 종료 한 다음 원격 서버의 ssh 데몬 만 해당 VPN을 통한 연결을 허용하도록 허용하십시오.

방화벽이 VPN 연결을 종료 할 수없는 경우 GRE 또는 IPSEC 패킷을 Linux 시스템으로 전달하여 종료 할 수 있습니다.


답변

당신이 노크 찾고있는 것 같아

iptables 를 사용하여 리눅스 서버 자체 에 2 단계 방화벽과 같이 설치할 수 있습니다 . 프런트 엔드 방화벽에서 포트 22가 열려 있어도 서버에서 열리지 않으므로 포트 포트에 열린 포트가 표시되지 않습니다. 그런 다음 “비밀 노크”를 보내면 갑자기 포트 22에 대한 열린 경로가 있습니다.

말이 돼?


답변

모든 답변을 요약하면 다음과 같습니다.

ssh를 사용하지만 더 모호하고 안전합니다.

보안을 위해 :

  • 루트 로그인이 허용되지 않는지 확인하십시오 (PermitRootLogin no).
  • 구성 옵션 AllowUsers 또는 AllowGroups로 로그인 할 수있는 사용자 제한.
  • 2 개의 버전 ssh 프로토콜 (프로토콜 2) 만 사용하십시오.
  • 인증 키만 사용하는 것이 좋지만 인증 키에 액세스 할 수없는 휴일부터 서버에 연결해야 할 경우 비밀번호가 더 편리합니다.

모호한 경우 :

  • ssh 포트를 20486과 같이 임의의 높은 포트로 변경하십시오. 이것은 대부분의 자동 bruteforcer를 제거하지만 서버의 모든 포트 스캔에서 숨기는 것은 아닙니다.
  • 포트에 연결하는 기능을 숨 깁니다. 한 가지 방법은 다른 답변에서 언급 한 포트 노킹이지만 모든 곳에서 액세스 할 수없는 특수 소프트웨어가 필요합니다. 또 다른 간단한 옵션은 iptables 방화벽을 최신 모듈과 함께 사용하여 규칙을 작성하는 것입니다.이 규칙은 두 번째 또는 세 번째 시도에서만 연결할 수 있습니다. 따라서 성공적으로 연결하기 위해 여러 번 시도해야한다는 것을 알고 있지만 간단한 모든 포트 스캔은 ssh 포트를 나타내지 않습니다. 규칙은 다음과 유사합니다.

iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP


답변

예약 된 작업을 역방향 ssh 터널에 대한 스크립트로 만들거나 방화벽 포트를 엽니 다.

SSH가 전세계에 공개되는 것이 걱정된다면 iptables 스크립트를 사용하여 유지 관리 기간 동안 작업을 예약하고 포트만 사용할 수 있습니다.


답변

포트 노킹 을 살펴보고 SSH 터널을 엽니 다.

또한 거부 요청이 너무 많으면 거부 호스트를 실행하여 사람들을 잠그십시오.

두 패키지 모두 표준 Ubuntu, Fedora 및 RHEL 리포지토리에서 사용할 수 있습니다.


답변

계속해서 포트를 열고 일반적인 범위를 벗어난 포트로 만드십시오. 나는 그것을 1024 이상의 임의의 포트로 만들 것입니다. 그렇게하면 해커는 그것을 찾지 못할 것입니다.