sshd 설정 :: 2008/03/20 10:04
리눅스를 설치하고 원격에서 접속할 수 있도록 설정을 해주어야 편하게 여러가지 작업을 할 수 있습니다.
바로앞에 콘솔이 있다고 하더라도 해상도 문제도 있고 문자코드셋 때문에라도 터미널 설정을 하는게 좋죠.
기본적으로 telnet이 있고 암호화 통신을 가능하게 해주는 sshd를 가장 많이 씁니다.
이에 대해 자세한 것은 인터넷을 검색해 보시면 더욱 자세한 정보가 있을테니 참고하셔요.
여기서는 sshd를 사용하기 위해 필요한 최소한의 설정에 대해서만 다룹니다.
역시나 기본은 fedora 8에 rpm으로 설치된 버전을 예로 들겠습니다.
fedora에서 ssh 관련 패키지 설정파일들은 "/etc/ssh"에 들어있습니다. 디렉토리 안에는 여러 파일들이 있지만 sshd에 관한 설정은 "sshd_config" 파일을 건드리는 것만으로 충분합니다.
# ll
합계 204
-rw------- 1 root root 132839 2007-11-21 04:40 moduli
-rw-r--r-- 1 root root 1955 2007-11-21 04:40 ssh_config
-rw------- 1 root root 672 2008-02-03 22:04 ssh_host_dsa_key
-rw-r--r-- 1 root root 590 2008-02-03 22:04 ssh_host_dsa_key.pub
-rw------- 1 root root 963 2008-02-03 22:04 ssh_host_key
-rw-r--r-- 1 root root 627 2008-02-03 22:04 ssh_host_key.pub
-rw------- 1 root root 1671 2008-02-03 22:04 ssh_host_rsa_key
-rw-r--r-- 1 root root 382 2008-02-03 22:04 ssh_host_rsa_key.pub
-rw------- 1 root root 3643 2008-03-20 09:31 sshd_config
-rw------- 1 root root 3643 2008-03-20 09:31 sshd_config.20080320
ssh_config 파일은 ssh 데몬이 아닌 클라이언트에 대한 설정파일이니 건드릴 필요없고 sshd_config만 수정하면 됩니다. 그리고 항상 위와 같이 설정을 변경하실 때에는 꼭! 백업하는거 잊지 마시구요.
sshd_config파일을 열어보면 많은 항목들이 있지만 몇가지만 수정하면 운영하는데에 특별한 문제는 없습니다. 여기서는 기본적인 설정 몇가지와 포트를 변경하도록 하겠습니다.
포트변경은 인터넷상의 수없이 많은 스크립트 키드들로부터 자신의 리눅스 박스를 지키기 위해 꼭 필요하다고 생각합니다. 실제로 포트 변경하는 것만으로 현재 저의 리눅스 박스에는 ssh접근 기록은 한번도 없었습니다.
OpenBSD sshd_config, v1.75 파일을 기준으로 행수를 기록하였으니 참고하시길 바랍니다.
14:AddressFamily inet
15:ListenAddress 192.168.1.1
36:SyslogFacility AUTHPRIV
37:LogLevel DEBUG
42:PermitRootLogin no
위의 설정을 변경하는 것만으로도 일반적인 운영에는 충분합니다. 자 하나씩 살펴볼까요.
13:Port 8888
네, 바로 알 수 있죠 ? Listen 포트를 변경하는 옵션입니다. 기본적으로 22번 포트가 되어 있는데 원하는 포트로 변경하는 것이 정신건강에 좋습니다. 포트를 변경하시면 /etc/services 파일과 방화벽에서 관련 포트 설정 해주시는거 잊으시면 안됩니다.
14:AddressFamily inet
ipv4, ipv6에 대한 옵션입니다. 기본으로 주석처리가 되어 있는데 그렇다면 지정포트에 대해 ipv4, ipv6 두 프로토콜이 Bind하려고 해서 로그에 Bind에러가 기록됩니다. 먼저 ipv4를 bind하고 ipv6가 에러가 나는 거라서 ipv6를 운영하지 않는다면 큰 문제는 없지만 무언가 찜찜하시다면 inet으로 설정해주세요. ipv4에 대해서만 bind합니다.
15:ListenAddress 192.168.1.1
Listen할 아이피를 지정합니다. 서버에 여러개의 NIC와 IP가 존재한다면 어느 NIC에서 Listen할 것인지 결정하는 옵션이죠. NIC가 하나뿐이라면 신경안쓰셔도 됩니다.
36:SyslogFacility AUTHPRIV
37:LogLevel INFO
로그에 대한 옵션입니다. 기본적으로 syslog에 sshd의 로그를 기록하는데 그에 대한 퍼실리티를 지정해주는 옵션입니다. /etc/syslogd.conf(또는 /etc/rsyslogd.conf) 파일에 authpriv 퍼실리티에 대한 옵션이 제대로 지정되어 있는지 확인해 주세요. 전 그냥 기본값을 사용하고 있기 때문에 /var/log/secure 에 로그를 기록하게 되어 있습니다. 로그 레벨은 INFO를 지정하는 것만으로도 바인드 에러, 접속기록, 접속시도 등 필요한 정보는 모두 기록되니 INFO로 충분하다고 생각합니다.
42:PermitRootLogin no
ssh로 접속할 시 root로 로그인 하지 못하게 하는 옵션입니다. 원격에서 root로 로그인이라... 무섭죠 ? -_-; root라는 아이디는 변경할 수 없는 것이기에 이 옵션을 yes로 해놨을 경우 root에 대해 패스워드를 무한 입력하는 방식으로 언젠가는 뚫릴 수 있습니다. no로 하고 임의의 계정으로 접속한 후 su를 이용하시는게 제일 좋을 듯 하네요.
위 설정이 끝났다면 아래와 같이 sshd데몬을 재시작 합니다.
그리고 지정한 아이피, 지정한 포트로 ssh접속을 시도해서 제대로 연결이 되는지 확인해주세요~
참고 :
방화벽을 이용하시는 분의 경우 포트를 열고 닫을때 조심하셔야 합니다. 작업 순서가 잘못되면 앗.. 하는 순간 연결이 끊겨버립니다. ( --> 두번이나 그런짓을 해버렸어요.. ㅠ.ㅠ)



