로컬 네트워크로 제한되도록 SSH를 설정하려면 어떻게해야합니까?


33

11.10을 실행하는 새 랩톱을 SSH를 사용하여 라우터를 통해 8.04를 실행하는 이전 랩톱에 연결하려고합니다.

이 질문은 우분투 포럼에서 묻고 대답합니다.

http://ubuntuforums.org/showthread.php?t=1648965

나는 여기에 더 명확한 대답을하는 것이 도움이 될 것이라고 생각했습니다.

참고 : Firestarter를 사용하여 방화벽에 SSH 포트를 연결하고 열려고하는 랩톱에 openssh-server를 먼저 설치해야했습니다.


스레드에 대한 slooow의 답변에 대해 "결정적"이 아닌 것이 무엇인지 알려주십시오. 그렇지 않으면 귀하의 질문이 모호한 것 같습니다.
d_inevitable

@d_inevitable 하나는 답이 아니며 올바른 것으로 표시되지 않습니다. 제가 선택한 것인데이 질문을 마이그레이션하는 것이 도움이 될 것입니다. 또한 두 로컬 시스템간에 SSH를 구성하는 데 대한 일반적인 지침 또는 유용한 링크를 포함시키는 데 도움이 될 수 있습니다.
klenwell

답변:


46

여러 가지 방법으로 ssh 서버에 대한 액세스를 제한 할 수 있습니다.

가장 중요한 IMO는 ssh 키를 사용하고 비밀번호 인증을 비활성화하는 것입니다.

자세한 내용은 다음 위키 페이지를 참조하십시오

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#Disable_Password_Authentication

여러 가지 방법으로 특정 서브넷에 대한 액세스를 제한 할 수 있습니다. ssh 서버가 IP 주소가 192.168.0.10 인 서브넷 192.168.0.0/16에 있다고 가정하고 적절하게 조정하십시오.)

라우터

방어선 중 하나는 라우터를 사용하는 것입니다. UPnP를 비활성화하고 포트 전달을 허용하지 마십시오.

SSH 구성

에서 여러 옵션을 설정할 수 있습니다 /etc/ssh/sshd_config. 하나는 청취 주소입니다. 서브넷에서 청취 주소를 설정 한 경우 개인 IP 주소는 인터넷을 통해 라우팅 할 수 없습니다.

http://compnetworking.about.com/od/workingwithipaddresses/f/privateipaddr.htm

ListenAddress 192.168.0.10

AllowUsers를 사용할 수도 있습니다

AllowUsers you@192.168.0.0/16

다소 관련, 당신은 또한 포트를 변경할 수 있습니다

Port 1234

http://manpages.ubuntu.com/manpages/precise/man5/sshd_config.5.html을 참조 하십시오

TCP 래퍼

포럼 게시물에 설명 된대로 TCP Wrapper를 사용할 수 있습니다. TCP 래퍼는 2 개의 파일을 사용합니다./etc/hosts.allow 하며/etc/hosts.deny

/etc/hosts.allow서브넷 편집 및 추가

sshd : 192.168.0.

편집 /etc/hosts.deny및 모두 거부

ALL : ALL

http://ubuntu-tutorials.com/2007/09/02/network-security-with-tcpwrappers-hostsallow-and-hostsdeny/ 도 참조하십시오.

방화벽

마지막으로 서버를 방화벽으로 연결할 수 있습니다. iptables, ufw 또는 gufw를 사용할 수 있습니다.

iptables

sudo iptables -I INPUT -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT

iptables에서 DROP을 사용하지 마십시오. http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject를 참조하십시오 .

ufw

sudo ufw allow from 192.168.0.0/16 to any port 22

gufw는 그래픽 인터페이스를 가지고 있습니다

구프

참조 https://help.ubuntu.com/community/UFW를

https://help.ubuntu.com/community/IptablesHowTo


일부 네트워크는 10.0.0.0을 IP 주소로 사용하며,이 경우 10.0.0.0-10 대신 192.168.0.0/24를 10.0.0.0/8로 대체하여 10.0.0.0-10.255.255.255 범위를 허용하십시오. 단일 IP 만 허용하려면 192.168.1.2/32와 같은 것을 사용하십시오. 매우 상세한 설명은 [ serverfault.com/q/49765/51929] ( 서브넷 작동 방식) 에서 찾을 수 있습니다
Lekensteyn

1
iptables에서 DROP을 사용하지 마십시오 -chiark.greenend.org.uk/~peterb/network/drop-vs-reject
Panther

이 페이지에는 DROP over REJECT를 사용하는 가능한 이유로 스푸핑 된 IP가 언급되어 있지 않습니다. Sec.SE에 대한이 답변은 왜 실제로 관련이 없는지 설명합니다 (소스 패킷이 반환 된 패킷보다 큽니다).
Lekensteyn

@Lekensteyn-해당 링크에서 스푸핑 된 IP에 대한 토론을 보지 못했습니다. 제안한 바와 같이 DDoS와 스푸핑 된 IP는이 논의를 넘어서며 DROP이 REJECT보다 우수하다고 확신하지는 않습니다. DDos는 복잡하며 DDos의 원인에 대한 정보가 없으면 방어 할 수 없습니다. 예를 들어, WP가 DDoS로 사용되는 것을 보았고 문제를 해결하는 것이 WP의 올바른 구성에 있으며 iptables와 거의 관련이 없습니다.
Panther

ListenAddress가장 단순하고 가장 우아한 솔루션 인 것 같습니다
code_monk

1

ssh (보안 셸)는 데이터를 안전하게 액세스하고 전송하는 데 사용됩니다 (RSA_KEYS 쌍 사용). ssh를 사용하여 두 가지 방법으로 데이터에 액세스 할 수 있습니다. 1. 명령 행 2. 파일 브라우저 사용

커맨드 라인 :이를 위해 아무것도 설치할 필요가 없습니다. 첫 번째 작업은 다른 컴퓨터에 로그인하는 것입니다.

ssh other_computer_username@other_computer_ip

이 명령은 다른 컴퓨터의 암호 (특정 사용자 이름의 경우) 인 암호를 묻습니다. 다른 컴퓨터의 셸에 로그인했습니다. 이 터미널은 컴퓨터 쉘 터미널과 같다고 생각하십시오. 당신은 당신의 컴퓨터에서 할 수있는 다른 컴퓨터에 쉘을 사용하여 모든 것을 할 수 있습니다

파일 브라우저 : openssh-server를 설치해야합니다

sudo apt-get install openssh-server

로그인하려면 파일-> connectToServer로 이동하십시오.

여기에 이미지 설명을 입력하십시오


커맨드 라인 방향은 내가 시도한 첫 번째 것입니다. LAN IP에서 다른 컴퓨터를 핑할 수있었습니다. 그러나 SSH를 시도하면 중단됩니다. 따라서 먼저 SSH 액세스를 허용하도록 다른 컴퓨터를 구성해야한다고 가정합니다.
klenwell

라우터가 22 포트 또는 ssh를 차단하지 않도록하십시오
shantanu

감사. 나는 당신이 경험에서 언급 한 모든 것을 이미 알고 있었지만, 다른 사람으로부터 간단하고 구조화 된 것을 듣는 것이 매우 쉬웠습니다.
lakesare
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.