명령줄에서 특정 IP 주소에 대한 텔넷 액세스를 어떻게 중지합니까?
답변1
보다 일반적인 솔루션로렌티우스 로스쿠해결책은 모든 배포판에서 동일하게 작동하고 기본적으로 어떤 소프트웨어가 설치되어 있는지 독립적인 iptables를 사용하는 것입니다.
# iptables -A INPUT -p tcp -s <ip_address> --dport telnet -j DROP
-j REJECT
대신 사용하도록 선택할 수 있습니다 -j DROP
. REJECT를 사용하면 상대방에게 해당 특정 포트에 아무 것도 없다는 사실이 전달됩니다. DROP을 사용하면 패킷이 삭제되어 원격 호스트의 연결 시간 초과 간격이 경과한 후 연결 시도가 시간 초과됩니다.
이미 존재할 수 있는 "수락" 규칙 앞에 이 규칙을 삽입해야 할 수도 있습니다. 그렇다면 나는 이렇게 하는 것을 좋아한다:
# iptables -L INPUT --line-number
<some or lots of output>
# iptables -I INPUT <number of telnet accept rule> ...
위 명령의 ...
모든 내용은 어디에 있습니까? -p tcp
기본적으로 -I INPUT n
( -A INPUT
-I는 위치 앞에 삽입됩니다.N, -A가 추가됩니다. )
/etc/services에 나열된 --dport telnet
대로 사용할 수 있습니다 . 궁금하다면 한번 시도해 보세요. 그렇지 않은 경우 숫자 포트 번호(예: )를 사용해야 합니다 .telnet
grep telnet /etc/services
23
iptables-save
비슷한 방법을 사용하여 재부팅 시 규칙을 유지할 수 있습니다 . 세부 사항은 배포 및 설정에 따라 다르므로 일반화하는 것은 불가능합니다. 배포판과 버전을 지정하면 누군가 이에 대한 구체적인 통찰력을 제공할 수 있습니다(또는 "배포판 X 버전 Y에서 재부팅 시 iptables 규칙을 유지하는 방법"이라는 별도의 질문으로 더 나을 수도 있습니다).
그 의미는, 나는 이것에 동의합니다대신 SSH를 사용해야 합니다.그러나 여전히 특정 IP의 액세스를 차단하고 싶을 수 있으며, 이를 수행할 수 있는 수준이 낮을수록 스택의 상위 수준 부분에 버그가 있어 손상이나 서비스 거부로 이어질 위험이 줄어듭니다.
답변2
/etc/host.deny에 추가:
telnet: <ip_addres>
하지만 대신 ssh를 사용해야 합니다.