728x90
반응형

◆ 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

 

[CentOS] SSH 설정 - /etc/ssh/sshd_config

OpenSSH에서 설정내용은 /etc/ssh/sshd_config 에 위치한다. 설정후에는 서비스를 재시작해야 한다. /etc/rc.d/init.d/sshd restart SSH 데몬 설정(서버용) 설명- /etc/ssh/sshd_config Port xx SSH 서비스 포트..

webdir.tistory.com

 

728x90

+ Recent posts