검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : SSH: The VPN No One Remembers

  사실 이전에 VPN 관련 글과 SSH 관련 글에서 비슷한 내용을 다루긴 했는데 VPN 능력 자체를 메인으로 다룬 것도 아니고 이 글은 사용법이 조금 달라서 작성하기로 했습니다. 그렇다고 이게 그 기능을 자세히 다뤘냐면 그건 또 아닌 것 같지만...

  SSH를 통한 VPN 활용은 일반적인 전용 VPN 솔루션에 비하면 그리 강력하지 않습니다. 서버와 클라이언트 사이의 모든 패킷을 암호화하는 것이 아니라 하나의 포트를 오가는 패킷을 암호화하며 그로 인해 이 VPN을 사용할 응용 프로그램이 프록시 기능을 지원해야 쓸 수 있기 때문이죠. 허나 적절히 활용한다면 닭 잡는데 소 잡는 칼은 쓸 일을 없앨 수 있을 것입니다.

  먼저 SSH가 서버에 이미 설치되어 있다고 가정합니다. 그리고 기존의 SSH 서비스는 그대로 두고 새로운 포트를 VPN 용도로 사용한다고 가정하겠습니다. 이를 위해 먼저 기존의 설정 파일을 복사합니다.
cp /etc/ssh/sshd_config /etc/ssh/proxy_config
  새롭게 복사한 설정 파일에서 가장 중요한 건 포트입니다. 새롭게 사용할 포트를 정합니다.
Port ####
  보안을 위해 root 로그인 금지도 걸어줍니다.
PermitRootLogin no
  SSH 서버가 프록시 서버 역할을 할 수 있도록 아래 옵션을 활성화합니다. 예전에는 없어도 됐다는 것 같은데 지금은 필요하다고 합니다. 확인해보니 디폴트도 no더군요.
PermitTunnel yes
  추가로 아래처럼 ACL을 걸 수도 있습니다. 이건 저도 처음 보는 것 같네요.
AllowUsers user1 user2 etc...
AllowGroups group1 group2 etc...
  이제 방화벽을 적절히 설정하고 필요한(=SSH가 사용할) 계정과 그룹을 생성합니다. 물론 SSH 설정 파일에 해당 계정과 그룹이 적혀있어야겠죠. 이때 보안을 위해 사용자 계정에 쉘을 주지 않는 것이 좋습니다. 이제 기존의 스크립트를 복사 및 수정하여 기존의 sshd_config 파일을 돌리듯 돌리거나 간단히 아래 명령어를 실행합니다.
/usr/sbin/sshd -f /etc/ssh/sshd_proxy
  만약 스크립트를 사용한다면 스크립트 내에 있는 PID_FILE 변수와 설정 파일명을 적절히 수정해야 한다. 예를 들어 PID_FILE 변수는 sshd_proxy.pid 처럼 기존 이름과 같지 않게 해야 하며 설정 파일도 복사한 파일명으로 바꿔야 한다.

  서버가 정상적으로 작동한다면 클라이언트가 될 머신에서 터미널을 열어 아래를 실행합니다.
ssh -fND localhost:로컬_포트_번호 -p 서버의_포트 접속_계정명@원격_서버_IP
  만약 백그라운드에서 돌아가길 원한다면 옵션에서 f를 제외합니다. N 옵션은 접속 후 원격 명령어를 실행하지 않는 옵션으로 지금처럼 포워딩을 할 때 사용하는 옵션입니다. '로컬_포트_번호'에는 1024 보다 높으면서 현재 사용하지 않는 포트 번호를 씁니다. 이제 VPN을 이용할 프로그램(브라우저, 메신저, 이메일 등)에서 프록시 기능을 활성화하고 호스트네임에 localhost, 포트에 위에서 정한 포트를 입력하여 프록시를 작동시킵니다.

  예를 들어 로컬 포트가 5555, 서버가 열고 있는 포트가 9999, 접속 계정명이 bob, 서버의 IP가 255.244.222.111이라면 아래와 같은 명령어가 됩니다.
ssh -fND localhost:5555 -p 9999 bob@255.244.222.111
  참고로 예전 글(VNC 패킷을 터널링하기 위해 SSH를 쓰던 글)에서는 -D가 아닌 -L 옵션을 쓰고 그로 인해 추가로 최종 포워딩 대상과 포트를 적었었는데 -D 옵션을 사용하면 반대편으로 포워딩 후 서버에서 어플리케이션 프로토콜을 통해 어디로 접속할지 결정합니다. 두 옵션의 차이를 설명하자면 아래와 같습니다.
  • -L : 이전 VNC 때처럼 터널링 생성 후 프로그램에서 접속 목적지를 터널링이 생성된 localhost의 특정 포트로 설정하여 번대편 터널링 서버까지 패킷을 포워딩한 후 그곳에서 터널링을 할 때 지정했던 곳으로 다시 포워딩할 경우 사용.(프로그램(직접 연결)->시큐어 터널(터널링 구간)->SSH서버->지정한 주소의 지정한 포트(보통은 동일 서버의 특정 포트))
  • -D : 네이트를 우회해서 사용할 때처럼 터널링 생성 후 프로그램에서 프록시 기능을 사용해 터널링이 생성된 localhost의 특정 포트로 프록시 서버를 설정하여 반대편 터널링 서버까지 패킷을 포워딩한 후 그곳에서 프로그램이 정한 진짜 목적지로 다시 포워딩할 때 사용.(프로그램(프록시 이용)->시큐어 터널(터널링 구간)->SSH서버->프로그램이 지정한 곳)



2013/06/27 16:53 2013/06/27 16:53
Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : http://symkat.com/35/ssh-tips-and-tricks-you-need/

  요즘 구직 활동 때문에 포스팅을 못한지 정말 오래됐네요. 뭐, 어차피 보는 사람도 없지만;;
  리눅스에서 가장 흔히 볼 수 있는 SSH 클라이언트 프로그램인 OpenSSH에 대한 몇 가지 팁이 있어서 포스팅해봅니다.

more..



more..



more..



more..



more..



more..




2010/10/16 21:23 2010/10/16 21:23