서버 abc.example.com
와 원격 데스크톱이 있습니다 zzz.example.com
. 사용자 지정 포트(예: 6789)를 통해 SSH를 사용하고 있습니다. 방화벽이 꺼져 있으면 서버에 성공적으로 연결할 수 있습니다. 그러나 방화벽을 활성화하면 모두 소용이 없습니다.
또한 보안상의 이유로 abc.example.com
.zzz.example.com
다음은 서버의 iptables에 추가한 규칙입니다.
iptables -A INPUT -s zzz.example.com -m state --state NEW,ESTABLISHED -p tcp --dport 6789 -j ACCEPT
답변1
ESTABLISHED
연결에서 트래픽을 활성화하는 규칙이 누락된 경우 호스트에서 원격 시스템으로의 트래픽을 허용하는 규칙이 필요합니다. 일반적으로 첫 번째 규칙은 다음과 같습니다.
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
그런 다음 다음과 같은 규칙을 사용하여 액세스를 활성화할 수 있습니다.
iptables -A INPUT -s zzz.example.com -p tcp --dport 6789 -j ACCEPT
또는 예를 들어 방화벽 빌더를 사용하여 필요할 때 몇 초 동안 포트 열기를 shorewall
활성화할 수 있습니다.port knocking
SSH 데몬이 이를 지원하는 경우 SSH 파일 에 대한 액세스를 tcp_wrapers
제한할 수 있습니다 . 방화벽을 수정했더라도 원격 연결이 설정되면 알림을 보내기 위해 이 기능을 사용하는 것이 좋습니다. 다음 규칙은 여러 국가의 도메인을 차단하고 성공할 때마다 이메일을 보냅니다./etc/hosts.allow
/etc/hosts.deny
sshd : ALL \
EXCEPT .ar .au .br .by .cl .co .cz .do .eg .gt \
.id .il .in .jp .ma .mx .nl .pe .pk .pl .pt \
.ro .rs .ru .sa .sg .tr .tw .ua .vn .za \
.ae .at .bg .gh .hr .hu .ke .kz .lt .md \
.my .no .sk .uy .ve : \
spawn (/bin/echo "SSH connection to %N from %n[%a] allowed" | \
/usr/bin/mailx -s "SSH Allowed" [email protected])
편집: 규칙에 도메인 이름을 사용하는 것은 좋지 않습니다.
- 규칙을 로드한 후에는 DNS 조회를 사용하지 못할 수 있습니다. (이름은 IP 주소로 변환됩니다.)
- 고정 IP 주소가 없는 클라이언트는 새 주소를 얻을 수 있지만 DNS 캐싱으로 인해 이를 사용할 수 없습니다. 이전 IP 주소에는 계속 액세스할 수 있지만 새 주소에는 액세스할 수 없습니다. localhost 항목이 있는 고정 IP 주소는 매우 안정적으로 작동합니다.
동적 주소가 있는 경우 비교적 넓은 범위의 IP 주소에서 액세스를 보호하거나 포트 범핑을 사용하세요. 또는 유사한 프로그램을 사용하여 fail2ban
SSH 서비스가 검색되는 주소를 잠글 수 있습니다. tcpwrappers
위와 같이 연결할 수 있는 주소를 제한하고 추가 로깅을 추가하는 데 사용할 수 있습니다. 자주 연결하지 않는 경우 성공 및 실패 시도를 기록할 수 있습니다.