◆ SSH 배경
- TCP/IP 네트워크 초창기 버클리 대학에서 BSD(Berkeley Software Distribution)을 개발
- BSD에서 다양한 원격 제어기능 r(remote) 명령을 개발 (e.g. rlogin, rcp, rwho, rsh ... )
- rlogin(원격 로그인), rsh(원격 명령 실행) 역시 평문 전송으로 동작
- 원격 전송 시 보안문제를 해결 하고자 개발한 것이 SSH -> rlogin + rsh +encryption = SSH
◆ SSH 개념
- Telnet 처럼 Client와 Server 세션을 생성 (SSH Tunneling)
- Shell 연결 뿐 아니라 Application인 상위 계층과 연결
- 보안 세션 제공으로 인증 및 데이터 기밀성, 무결성 보장
- TCP port 22번
◆ SSH Server Xinetd 설정
- 기존의 /etc/xinetd.d/telnet 파일을 복사하여 /etc/xinetd.d/ssh 를 만든다.
- server_arg = - i를 추가한다.
- service xinetd restart로 서비스를 재시작 해준다.
◆ SSH 환경 설정
- ssh 설정은 /etc/ssh/sshd_config 에 있다.
- Port xx
SSH 서비스 포트는 22로 규약되어 있지만 보안을 위해 임의의 포트로 변경 하는것도 가능하다. 원하는 포트번호로 변경하고 /etc/services 파일에서 ssh 포트값도 변경해 주면 된다.
포트번호는 1024 이상의 값들을 이용한다.
- Protocol 2
SSH 프로토콜은 ver 1과 ver 2가 있는데 SSH1 클라이언트와 SSH2 클라이언트의 접속 요청에 대한 것이다. 보안상 Protocol 1은 사용하지 않고 Protocol 2 만을 사용한다(둘다 사용하기 위해서는 Protocol 2,1 을 적어주면 된다).
- ListenAddress 0.0.0.0
SSH 서버에서 Listen 할 로컬 호스트 주소를 설정하는 것이다. 여러개의 IP를 사용중일 때 특정 IP로 SSH 접속이 가능토록 설정하는 옵션으로 0.0.0.0은 모든 네트워크를 의미한다. 사용하고자 하는 특정 IP가 있다면 0.0.0.0 대신 적으면 된다.
- #Hostkey ~
Protocol 1, 2(rsa, dsa) 의 호스트키 위치를 지정한다.
- KeyRegenerationInterval 1h
자동으로 생성된 키의 유효시간을 지정한다(기본 3600sec 이고 h를 붙이면 1 hour의 의미이다). 이 옵션은 호스트의 세션에 있는 키를 캡쳐해서 암호를 해독하거나 훔친 키를 재사용 하지 못하도록 하기 위함이다.
- ServerKeyBits 768
서버 키의 비트 길이를 설정한다. 최소 512, 기본 768.
- SyslogFacility AUTH
syslog 데몬에 의한 로그 facility를 지정한다. sub system 종류 및 내용은 syslog 관련 자료를 참조.
- LogLevel INFO
로그 레벨(메시지 종류)를 지정한다.
- LoginGraceTime 2m
지정한 시간내에 로그인 하지 않으면 자동으로 접속을 끊는다. 0값은 무제한.
- PermitRootLogin no
공격자가 임의의 주소에 root 계정으로 접속이 가능한지 여부를 무한 스캐닝을 통해 알아 낼 수 있다. 따라서 위와 같이 root 계정의 접근을 막고 일반 유저로 접속한 다음 root 계정을 불러오는 것이 좋다.
- StrictModes yes
로그인을 허용하기 앞서 파일 모드 및 사용자 홈 디렉토리 소유권과 원격 호스트의 파일들을 ssh 데몬이 체크 할 수 있도록 할 때 사용.
- MaxAuthTries 6
접속당 최대 인증 시도 횟수. 기본값 6, 3회이상 인증 실패시 로그가 기록된다.
- #RSAAuthentication yes
RSA 인증을 설정. Protocol 1 에서만 적용되는 옵션이므로 주석처리.
- #PubkeyAuthentication yes
공개키 인증 설정. Protocol 2에 적용된다.
- #AuthorizedKeysFile .ssh/authorized_keys
인증키를 저장할 위치를 지정한다.
- RhostsRSAAuthentication no
/etc/ssh/ssh_known_hosts 파일에 있는 호스트에 대한 인증을 허용할 것인지 설정한다.
- HostbasedAuthentication no
호스트 기반의 인증 허용 여부를 결정한다.
- IgnoreUserKnownHosts yes
RhostsRSAAuthentication, HostbasedAuthentication 인증시 ~/.ssh/knownhosts 파일의 호스트들을 제외할 것인지 설정한다. rhosts 파일을 허용하지 않았으므로 yes로 설정.
- IgnoreRhosts yes
~/.rhosts와 ~/.shosts 파일 사용여부를 결정한다. 보안상 이유로 사용하지 않는다.
- PasswordAuthentication yes
패스워드 인증을 허용한다. Protocol 1, 2 모두 적용된다.
- PermitEmptyPasswords no
패스워드 인증시 비어있는 스트링을 인정할지 여부를 결정한다.
- ChallengeResponseAuthentication no
Challenge-Response 인증을 허용할지 여부를 설정한다. UsePAM 옵션을 yes로 설정할 경우 이 옵션은 no로 설정해야 한다.
- #UsePAM no
ChallengeResponseAuthentication을 이용한 PAM 인증을 허용하는 옵션이다. 이 옵션을 yes로 설정하는 경우 열쇠글 인증과 동일하게 적용되므로, 열쇠글 인증 또는 ChallengeResponseAuthentication 옵션을 꺼 놓아야 한다.
Kerberos 및 GSSAPI 인증에 관한 내용은 필요에 따라 설정.
- AllowTcpForwarding yes
TCP 포워딩을 가능토록 설정하는 옵션이다.
- GatewayPorts no
클라이언트에 포워드된 포트로 원격 호스트 들이 접속할 수 있도록 설정하는 옵션이다.
- X11Forwarding no
원격에서 X11 포워딩을 허용할지 여부를 설정하는 옵션이다.
- #X11DisplayOffset 10
X11 포워딩이 될 때 디스플레이 offset을 설정. 허용하지 않았으므로 주석 처리.
- PrintMotd yes
ssh 로그인시 /etc/motd 파일의 내용을 보여줄 것인지 여부결정. ssh 로그인을 환영하는 메시지나 공지사항 등을 출력되도록 할 수 있음.
- PrintLastLog yes
로그인시 지난번 로그인 기록을 보여줄 것인가를 설정.
- TCPKeepAlive yes
클라이언트의 접속이 끊어졌는지를 체크하기 위해 서버가 일정시간 메시지를 전달한다.
- PermitUserEnvironment no
~/.ssh/enviroment와 ~/.ssh/authorized_keys 파일의 environment = 옵션을 sshd 데몬에서 처리 되도록 할것 인가를 설정한다.
- Compression delayed
압축 사용여부를 결정.
- ClientAliveInterval 0
클라이언트로부터 sshd 데몬이 아무런 데이터를 받지 못하게 되면 암호화된 채널을 통해서 메시지를 클라이언트의 요청에 응답하여 보내는데 이 때의 시간 간격을 초단위로 설정한다. 0은 클라이언트에 메시지를 보내지 않는 것을 의미. Protocol 2에서 적용된다.
- ClientAliveCountMax 3
서버에게 전달되는 클라이언트의 생존 메시지 회수를 지정한다. 이 옵션으로 지정한 값에 도달하게 되면 sshd 데몬은 클라이언트와의 연결을 끊어 버리고 세션을 종료시킨다.
- UseDNS yes
클라이언트 호스트 주소를 DNS 해석.
- PidFile /var/run/sshd.pid
sshd 데몬의 PID를 저장할 파일을 지정한다.
- MaxStartups 5
로그인하고 있지 않는 최대 접속 수를 설정한다. 이 값을 초과하게 되고 인증이 성공적으로 이뤄지지 않으면 그 다음 접속이 불가능 하다.
- Subsystem sftp /usr/libexec/openssh/sftp-server
sftp는 프로토콜 버전 2에서 사용되는 것으로서 ssh와 같이 ftp의 보안을 강화하기 위해 사용되는 보안 ftp 프로그램이다. openssh를 설치하면 /usr/local/ssh/libexec/sftp-server파일이 설치된다. 이것은 sftp 서버용 프로그램으로 클라이언트 sftp프로그램은 설치되지 않는다.
따라서 서버로 가동시키고 원도용 ssh클라이언트 프로그램이나 SSH2를 설치하면 sftp를 사용이 가능하다.
- UsePrivilegeSeparation yes
접속된 프로세스에 대해 상위 권한 없이 chroot로 고립된 형태로 작동
출처: https://webdir.tistory.com/119
'*Server 구축 > [ ce ] Cent OS 6' 카테고리의 다른 글
[ce-05] xinetd 설정 파일 (0) | 2019.04.19 |
---|---|
[ce-04] tts & pts & pty (0) | 2019.04.19 |
[ce-03] Telnet 서버 구축 (xinetd) (0) | 2019.04.18 |
[ce-02] Cent OS 최초 실행 시 데몬(xinetd) 설치 (0) | 2019.04.17 |
[ce-01] Cent OS IP 설정 (0) | 2019.04.16 |