중화사전망 - 자전 검색 - Ssh 사용자 정의 ssh 프로토콜을 구현하는 방법?
Ssh 사용자 정의 ssh 프로토콜을 구현하는 방법?
이 문서에서는 SSH 서비스의 보안을 향상시키는 데 도움이 되는 몇 가지 간단한 팁을 보여 드리겠습니다. SSH 서버 구성 파일은 /etc/ssh/sshd_conf 입니다. 모든 변경 작업을 수행한 후 변경 사항을 적용하려면 SSH 서비스를 다시 시작해야 합니다. 1, SSH 수신 포트 수정 기본적으로 SSH 수신 22 포트, 공격자는 포트 스캔 소프트웨어를 사용하여 호스트가 SSH 서비스를 실행 중인지 확인할 수 있습니다. SSH 포트를 1024 보다 큰 포트로 수정하는 것이 좋습니다. nmap 을 포함한 대부분의 포트 검색 소프트웨어는 기본적으로 고급 포트를 검색하지 않기 때문입니다. /etc/SSH/SSHd_config 파일을 열고 다음 행을 찾습니다. Port22 포트 번호 수정 및 ssh 서비스 재시작: /etc/init.d/sshrestart2. SSH 프로토콜 버전 2 만 허용되므로 더 안전합니다. SSH 프로토콜 버전 1 중매인 공격 (man-in-the-middle) 을 포함한 보안 문제가 있습니다. /etc/SSH/SSHd_config 파일을 편집하여 Protocol2, 1 에서 Protocol23 으로 변경하여 특정 사용자만 ssh 를 통해 로그인할 수 있도록 합니다. 여러분 중 누구도 루트 사용자가 SSH 를 통해 로그인하는 것을 허용하지 않습니다. 이는 엄청난 불필요한 보안 위험이기 때문입니다. 공격자가 루트 권한을 얻어 시스템에 로그인하면 일반 사용자 권한을 얻는 것보다 더 큰 피해를 입힐 수 있습니다. SSH 서버를 구성하면 루트 사용자가 SSH 를 통해 로그인할 수 없습니다. PermitRootLoginyes 에서 yes 를 no 로 변경하고 서비스를 다시 시작합니다. 이제 권한이 있는 사용자를 사용하려는 경우 먼저 다른 사용자로 로그인한 다음 루트로 전환할 수 있습니다. 실제 권한이 없는 가상 사용자를 만드는 것이 현명한 선택입니다. 이 사용자를 사용하여 SSH 에 로그인할 수 있습니다. 이 사용자가 해독되어도 아무런 해를 끼치지 않습니다. 이 사용자를 만들 때 권한이 있는 사용자로 전환할 수 있도록 바퀴 그룹에 속해 있는지 확인합니다. SSH 를 통해 로그인하려는 사용자 목록을 sshd_config 파일에서 지정할 수 있습니다. 예를 들어, 사용자 anze, dasa, kimy 가 SSH 를 통해 로그인하길 바랍니다. Sshd_config 파일의 끝에 AllowUsersanzedasakimy4 행을 추가했습니다. 사용자 정의 SSHbanner 를 만듭니다. SSH 서비스에 연결된 모든 사용자가 특별한 메시지를 볼 수 있도록 하려면 사용자 정의 SSH 배너를 만들 수 있습니다. 텍스트 파일 (내 이름은 /etc/ssh-banner.txt) 을 만들고 원하는 텍스트 메시지 (예: * ThisisAprivateshService) 를 입력하기만 하면 됩니다. 너 여기 있어. * * 즉시 떠나주세요. * 편집 후 이 파일을 저장합니다. Sshd_config 에서 #Banner/etc/issue.net 주석 처리를 취소하고 # 을 삭제한 다음 경로를 사용자 정의 SSHbanner 텍스트 파일로 변경합니다. 5. 사용자 이름 및 암호 대신 DSA 공개 키 인증을 사용하여 SSH 를 인증합니다. 인증을 위해 DSA 공개 키를 사용할 수 있습니다. 로그인 이름과 DSA 공개 키를 인증에 사용할 수 있습니다. DSA 공개 키 인증을 사용하면 로그인 이름과 비밀번호를 사용하여 SSH 서비스에 로그인할 필요 없이 DSA 키 쌍, 공개 키 및 개인 키가 필요하기 때문에 시스템이 사전 공격을 받지 않습니다. 개인 키를 로컬 시스템에 저장하고 공개 키를 서버에 배치합니다. SSH 로그인 세션을 시작할 때 서버에서 키를 확인합니다. 일치하는 경우 쉘로 직접 들어갈 수 있습니다. 일치하지 않으면 연결이 자동으로 끊어집니다. 이 예에서 개인용 컴퓨터는 워크스테이션 1 이라고 하고 서버는 서버 1 이라고 합니다. 두 시스템에 동일한 홈 디렉토리가 있습니다. 서버와 클라이언트의 홈 디렉토리가 다를 경우 작동하지 않습니다. 이렇게 하려면 개인 컴퓨터에 한 쌍의 키를 만들어야 합니다. 명령: ~$ssh-keygen-tdsa 는 개인 키의 비밀번호를 입력하라는 메시지를 표시하지만 비워 둘 수 있습니다. 이는 권장 방법이 아니기 때문입니다. 키 쌍이 만들어졌습니다: 개인 키가 ~/에 있습니다. Ssh/id_dsa, 공개 키가 있습니다. Ssh/id _ DSA.pub 다음으로 ~/의 내용을 복사합니다. Ssh/id_dsa.pub 에서 ~/까지. 서버 1' 에 대한 ssh/authorized_keys 파일입니다. ~/의 내용. Ssh/id_dsa.pub 는 다음과 같습니다: ~ $ cat.ssh/id _ dsa.pubssh-dssaaaab3nzac1 Kc3 maac bam 7k7 vkk 5c90 rsvohihdurovybngr 7 yeqtrdfcuvwmwcjydusngaic 0 ozkbwlnmdu+y6 zojnpotpnpex 0 kroh 79 max 8nz bbd 4 auv9/kloc. Ssh/authorized _ key 입니다. 나머지 작업은 파일에 대한 올바른 권한을 설정하는 것입니다: ~ $ chmod600 ~/. Ssh/authorized _ keys 이제 DSA 키 인증을 사용하도록 sshd_config 파일을 구성합니다. Rsa authentication yes subkey authentication yes sauthorizedkeys file% h/의 세 줄 앞의 주석을 삭제해야 합니다. SSH/authorized _ keys 서비스를 재시작합니다. 구성이 올바르면 이제 ssh 를 통해 서버에 연결하고 사용자 이름과 암호 입력 등 상호 작용 없이 홈 디렉토리로 직접 이동할 수 있습니다. DSA 인증만을 사용하여 로그인하려는 경우 sshd_config 의 주석을 취소하고 PasswordAuthentication 라인을 수정한 다음 yes 를 No: PasswordAuthenticationNo 로 변경해야 합니다. 서버에 공개 키가 없는 사람은 누구나 SSH 서비스에 연결하려고 하면 거부됩니다. Permissiondenied(publickey) 거부 메시지를 표시합니다. TCPwrappers 를 사용하면 지정된 호스트 접속만 허용됩니다. 이 방법은 특정 호스트만 네트워크의 SSH 서비스에 연결할 수 있도록 허용하고 iptables 구성을 사용하거나 어지럽히지 않으려는 경우에 유용합니다. TCPwrappers 를 사용할 수 있습니다. 이 예에서 sshd 는 TCP 로 포장되어 있으며, 로컬 서브넷192.168.1.0/24 및 원격 서브넷에서 자신을 허용하는 규칙을 만들 것입니다. 기본적으로 TCPwrappers 는 먼저 /etc/hosts.deny 에서 호스트가 서비스에 액세스할 수 있는지 확인합니다. 다음으로 TCPwrappers 는 /etc/hosts.allow 에서 호스트가 지정된 서비스를 제공할 수 있도록 하는 규칙이 있는지 확인합니다. /etc/hosts.deny 에 다음과 같은 규칙을 만들겠습니다. SSHd:ALL 이는 기본적으로 모든 호스트가 ssh 서비스에 액세스하는 것을 거부한다는 것을 의미합니다. 그렇지 않으면 TCPwrappers 가 먼저 hosts.deny 에서 찾기 때문에 모든 호스트가 SSH 서비스에 액세스할 수 있습니다. SSH 서비스를 차단하는 규칙이 없으면 모든 호스트가 접속할 수 있습니다. 다음으로 /etc/hosts.allow 에 규칙을 작성합니다. 지정한 호스트에 SSH 서비스를 사용할 수 있도록 허용: sshd:192.168.193.438+080.1 TCPwrappers 대신 iptables 를 사용하여 특정 호스트 접속을 허용합니다. Iptables 를 사용하여 SSH 액세스를 제한할 수 있지만 둘 다 사용할 수 있습니다. 여기 간단한 예가 있습니다. 이 문서에서는 특정 호스트를 SSH 서비스에 연결할 수 있는 방법을 설명합니다: ~ # iptables-a input-ptcp-mstate-state new-source193./kloc- 3-dport 22-j 는 SSH 서비스에 액세스할 수 있는 다른 호스트가 없는지 수락하고 확인합니다. iptables-a input-ptcp-dport22-j drop 새 규칙을 저장하면 작업이 완료됩니다. 이 규칙은 즉시 적용됩니다. 8.SSH 시간 잠금 기술 서로 다른 iptables 매개 변수를 사용하여 SSH 서비스에 대한 연결을 제한할 수 있으므로 다른 시간이 아닌 특정 시간 범위 동안 연결할 수 있습니다. 다음 예에서/초,/분,/시간 또는/일 스위치를 사용할 수 있습니다. 첫 번째 예에서 사용자가 잘못된 비밀번호를 입력하고 1 분 동안 잠겨 있으면 SSH 서비스에 액세스할 수 없습니다. 이렇게 하면 사용자당 1 분에 한 번만 로그인을 시도할 수 있다: ~ # iptables-a input-ptcp-mstate-syn-statenew-dport 22-m limit-limit/kloc. Iptables-a input-ptcp-mstate-syn-statenew-dport 22-j drop 두 번째 예에서 iptables 는193.6544 호스트만 허용하도록 설정되어 있습니다 Iptables 를 사용하면 호스트가 분당 한 번 로그인을 시도할 수 있습니다: ~ # iptables-a input-ptcp-s193.180./kloc-; 분-한계-버스트 1-J 허용 ~ # iptables-A 입력-ptcp-s193.180