운영체제/리눅스

[리눅스] ssh 설정파일 옵션

Cloud_Park 2023. 1. 15. 00:15

모든 설정(server측 설정)은 /etc/ssh/sshd_config 파일에서 가능하다.

1. Port xx
SSH 서비스 포트는 22로 규약되어 있지만 보안을 위해 임의의 포트로 변경 하는것도 가능하다.
원하는 포트번호로 변경하고 /etc/services 파일에서 ssh 포트값도 변경해 주면 된다.

2. Protocol 2
SSH 프로토콜은 ver 1과 ver 2가 있는데 SSH1 클라이언트와 SSH2 클라이언트의 접속 요청에 대한 것이다. 보안상 Protocol 1은 사용하지 않고 Protocol 2 만을 사용한다.
(둘다 사용하기 위해서는 Protocol 2,1 을 적어주면 된다.)

3. ListenAddress 0.0.0.0
SSH 서버에서 Listen 할 로컬 호스트 주소를 설정하는 것이다. 여러개의 IP를 사용중일 때 특정 IP로 SSH 접속이 가능토록 설정하는 옵션으로 0.0.0.0은 모든 네트워크를 의미한다.
사용하고자 하는 특정 IP가 있다면 0.0.0.0 대신 적으면 된다.

4. #Hostkey ~
Protocol 1, 2(rsa, dsa) 의 호스트키 위치를 지정한다.

5. KeyRegenerationInterval 1h
자동으로 생성된 키의 유효시간을 지정한다. (기본 3600sec 이고 h를 붙이면 1 hour의 의미이다.)
 이 옵션은 호스트의 세션에 있는 키를 캡쳐해서 암호를 해독하거나 훔친 키를 재사용 하지 못하도록
하기 위함이다.

6. ServerKeyBits 768
서버 키의 비트 길이를 설정한다. 최소 512, 기본 768.

7. SyslogFacility AUTH
syslog 데몬에 의한 로그 facility를 지정한다. sub system 종류 및 내용은 syslog 관련 자료를 참조.

8. LogLevel INFO
로그 레벨(메시지 종류)를 지정한다.

9. LoginGraceTime 2m
지정한 시간내에 로그인 하지 않으면 자동으로 접속을 끊는다. 0값은 무제한.

10. PermitRootLogin no
공격자가 임의의 주소에 root 계정으로 접속이 가능한지 여부를 무한 스캐닝을 통해
알아 낼 수 있다. 따라서 위와 같이 root 계정의 접근을 막고 일반 유저로 접속한 다음
root 계정을 불러오는 것이 좋다.

11. StrictModes yes
로그인을 허용하기 앞서 파일 모드 및 사용자 홈 디렉토리 소유권과 원격 호스트의 파일들을
ssh 데몬이 체크 할 수 있도록 할 때 사용.

12. MaxAuthTries 6
접속당 최대 인증 시도 횟수. 기본값 6, 3회이상 인증 실패시 로그가 기록된다.

13. #RSAAuthentication yes
RSA 인증을 설정. Protocol 1 에서만 적용되는 옵션이므로 주석처리.

14. #PubkeyAuthentication yes
공개키 인증 설정. Protocol 2에 적용된다.

15. #AuthorizedKeysFile      .ssh/authorized_keys
인증키를 저장할 위치를 지정한다.

16. RhostsRSAAuthentication no
/etc/ssh/ssh_known_hosts 파일에 있는 호스트에 대한 인증을 허용할 것인지 설정한다.

17. HostbasedAuthentication no
호스트 기반의 인증 허용 여부를 결정한다.

18. IgnoreUserKnownHosts yes
RhostsRSAAuthentication, HostbasedAuthentication 인증시 ~/.ssh/knownhosts 파일의
호스트들을 제외할 것인지 설정한다. rhosts 파일을 허용하지 않았으므로 yes로 설정.

19. IgnoreRhosts yes
~/.rhosts와 ~/.shosts 파일 사용여부를 결정한다. 보안상 이유로 사용하지 않는다.

20. PasswordAuthentication yes
패스워드 인증을 허용한다. Protocol 1, 2 모두 적용된다.

21. PermitEmptyPasswords no
패스워드 인증시 비어있는 스트링을 인정할지 여부를 결정한다.

22. ChallengeResponseAuthentication no
Challenge-Response 인증을 허용할지 여부를 설정한다. UsePAM 옵션을 yes로 설정할 경우 이 옵션은 no로 설정해야 한다.

23. #UsePAM no
ChallengeResponseAuthentication을 이용한 PAM 인증을 허용하는 옵션이다. 이 옵션을 yes로 설정하는 경우 열쇠글 인증과 동일하게 적용되므로, 열쇠글 인증 또는 ChallengeResponseAuthentication 옵션을 꺼 놓아야 한다.

- Kerberos 및 GSSAPI 인증에 관한 내용은 필요에 따라 설정.

24. AllowTcpForwarding yes
TCP 포워딩을 가능토록 설정하는 옵션이다.

25. GatewayPorts no
클라이언트에 포워드된 포트로 원격 호스트 들이 접속할 수 있도록 설정하는 옵션이다.

26. X11Forwarding no
원격에서 X11 포워딩을 허용할지 여부를 설정하는 옵션이다.

27. #X11DisplayOffset 10
X11 포워딩이 될 때 디스플레이 offset을 설정. 허용하지 않았으므로 주석 처리.

28. PrintMotd yes
ssh 로그인시 /etc/motd 파일의 내용을 보여줄 것인지 여부결정.
ssh 로그인을 환영하는 메시지나 공지사항 등을 출력되도록 할 수 있음.

29. PrintLastLog yes
로그인시 지난번 로그인 기록을 보여줄 것인가를 설정.

30. TCPKeepAlive yes
클라이언트의 접속이 끊어졌는지를 체크하기 위해 서버가 일정시간 메시지를 전달한다.

31. PermitUserEnvironment no
~/.ssh/enviroment와 ~/.ssh/authorized_keys 파일의 environment = 옵션을 sshd 데몬에서 처리 되도록 할것 인가를 설정한다.

32. Compression delayed
압축 사용여부를 결정.

33. ClientAliveInterval 0
클라이언트로부터 sshd 데몬이 아무런 데이터를 받지 못하게 되면 암호화된 채널을 통해서 메시지를 클라이언트의 요청에 응답하여 보내는데 이 때의 시간 간격을 초단위로 설정한다. 0은 클라이언트에
메시지를 보내지 않는 것을 의미. Protocol 2에서 적용된다.

34. ClientAliveCountMax 3
서버에게 전달되는 클라이언트의 생존 메시지 회수를 지정한다. 이 옵션으로 지정한 값에
도달하게 되면 sshd 데몬은 클라이언트와의 연결을 끊어 버리고 세션을 종료시킨다.

35. UseDNS yes
클라이언트 호스트 주소를 DNS 해석.

36. PidFile /var/run/sshd.pid
sshd 데몬의 PID를 저장할 파일을 지정한다.

37. MaxStartups 5
로그인하고 있지 않는 최대 접속 수를 설정한다. 이 값을 초과하게 되고 인증이 성공적으로
이뤄지지 않으면 그 다음 접속이 불가능 하다.

38. Subsystem       sftp    /usr/libexec/openssh/sftp-server
sftp는 프로토콜 버전 2에서 사용되는 것으로서 ssh와 같이 ftp의 보안을
강화하기 위해 사용되는 보안 ftp 프로그램이다.
openssh를 설치하면 /usr/local/ssh/libexec/sftp-server파일이 설치된다.
이것은 sftp 서버용 프로그램으로 클라이언트 sftp프로그램은 설치되지 않는다.
따라서 서버로 가동시키고 원도용 ssh클라이언트 프로그램이나 SSH2를 설치하면
sftp를 사용이 가능하다.

39. UsePrivilegeSeparation yes
# 접속된 프로세스에 대해 상위 권한 없이 chroot로 고립된 형태로 작동