Linux의 IP 종속 로컬 포트 ​​전달

Linux의 IP 종속 로컬 포트 ​​전달

비표준 포트 42에서 수신 대기하도록 서버의 sshd를 구성했습니다.

그러나 직장에서는 포트 21, 22, 80 및 443으로 나가는 연결만 허용하는 방화벽/프록시 뒤에 있습니다. 결과적으로 직장에서 내 서버로 SSH를 연결할 수 없습니다. 이는 좋지 않습니다. sshd를 포트 22로 되돌리고 싶지 않습니다.

아이디어는 다음과 같습니다. 내 서버에서 로컬로 포트 22를 포트 42로 전달합니다.만약에소스 IP가 내 회사 네트워크의 외부 IP와 일치합니다. 명확성을 위해 내 서버의 IP가 169.1.1.1(eth1)이고 내 작업 외부 IP가 169.250.250.250이라고 가정하겠습니다. 169.250.250.250과 다른 모든 IP의 경우 내 서버는 비수신 포트의 경우와 마찬가지로 예상되는 '연결 거부'로 응답해야 합니다.

저는 iptables를 처음 접했습니다. 나는 긴 iptables 매뉴얼과 다음과 같은 관련/관련 질문을 간략하게 살펴보았습니다.

그러나 이러한 질문은 더 복잡한 여러 호스트 시나리오를 다루며 로컬 포트 ​​전달에 어떤 테이블과 체인을 사용해야 하는지, 그리고 2개의 규칙("질문" 및 "답변" 패킷에 대해)이 있어야 하는지 명확하지 않습니다. ) 또는 "질문" 패킷에 대한 규칙이 1개뿐입니다.

지금까지는 sysctl을 통한 전달만 활성화했습니다. 내일 솔루션 테스트를 시작하고 간단한 시나리오를 구현하기 위한 지침이나 사례별 예를 높이 평가하겠습니다.

아래 초안 솔루션이 정확합니까?

iptables -A INPUT [-m state] [-i eth1] --source 169.250.250.250 -p tcp
    --destination 169.1.1.1:42 --dport 22 --state NEW,ESTABLISHED,RELATED
    -j ACCEPT

mangle대신 테이블 을 사용해야합니까 filter? 그리고/또는 ? FORWARD대신 체인을 사용합니까 INPUT?

답변1

항목을 전달/리디렉션하려면 NAT 테이블을 편집해야 합니다.

이와 같은 규칙은 아마도 필요한 것에 가장 가깝습니다.

/sbin/iptables --table nat --append PREROUTING --protocol tcp \
               --source 169.250.250.250 --dport 22 \
               --jump REDIRECT --to-ports 42

SSH를 표준 포트에 그대로 두고 적절하게 보안을 유지하는 것이 훨씬 더 쉽고 아마도 더 나을 것입니다. 대체 포트를 사용하면 동기가 부여된 공격자의 속도가 몇 초 동안만 느려질 뿐입니다. Denyhosts/fail2ban과 같은 침입 방지 시스템을 설정하고 비밀번호 기반 인증을 비활성화합니다. 또는 들어오는 SSH 연결의 속도 제한을 고려하십시오.

보다:

답변2

Shorewall을 사용하여 IP 테이블을 관리하겠습니다. 괜찮은 기본 방화벽을 설정하고 원하는 대로 작업을 수행하는 것은 간단합니다. /etc/shorewall/rules에 다음과 같은 규칙을 추가합니다.

DNAT 네트:169.250.250.250 loc:169.250.250.250 tcp 42 22

다른 포트와 마찬가지로 왜 다른 포트에서 sshd를 실행하는지 잘 모르겠습니다. 이것이 인터넷 포트인 경우 먼저 다른 포트에 접속하지 않는 한 포트 노킹을 확인하여 포트를 닫아 두는 것이 좋습니다. Shorewall은 이를 간단하게 처리합니다.

관련 정보