내 루트 사용자 자격을 사용하여 외부인이 내 서버에 침입했습니다.
루트 비밀번호가 변경되면서 서버 보안을 위한 추가 전략을 찾으려고 합니다.
사용하여/etc/hosts.allow그리고/etc/hosts.denyIP 주소로 액세스를 관리하는 실행 가능한 솔루션인 것 같지만 잠재적인 문제가 있습니다.
Host.allow 파일에 회사 IP를 지정하고 싶습니다. 그러나 문제는 IP 주소가 서비스 제공업체에 의해 변경될 수 있다는 것입니다. 그런 일이 발생하면 내 서버가 잠길 것입니다.우리 서버는 자체 관리됩니다.
이 시나리오를 예방하거나 극복하는 방법을 알려줄 수 있는 사람이 있습니까?
답변1
저는 서버 보안을 위해 몇 가지 조치를 취했습니다.
첫 번째는 분명한 것입니다.
표준 포트에서 SSH를 실행하지 않으면 일반적인 스크립트 아동 공격을 제거할 수 있습니다.
두 번째 것도 최첨단 기술입니다.
노크 데몬을 사용하세요. 노크 - 데몬은 서버에서 SSH 연결을 위한 포트를 열기 전에 먼저 특정 포트 및 프로토콜에 대한 일련의 적중을 기다립니다. 따라서 ssh 서버는 공격자가 노크 클라이언트를 사용하여 올바른 포트 시퀀스에 도달할 때까지 공격자에게 보이지 않습니다. 대부분의 노크(데몬) 구현은 트랜잭션 시퀀스를 통합하는 메커니즘을 제공하므로 로그인이 성공할 때마다 노크 시퀀스가 변경됩니다.
이 표준 설정을 사용하면 좀 더 많은 보안 계층이 제공됩니다.
암호화된 사용자 이름과 비밀번호를 사용하고 SSH를 제한하여 특정(루트가 아닌) 사용자로 로그인하는 것도 권장됩니다. 그런 다음 루트 작업을 실행할 때 서버의 루트 사용자로 전환할 수 있습니다.
nagios와 같은 모니터링 시스템을 설치하면 사용자와 사용자 환경에 더 많은 보안이 제공되며 구성이 쉽고 우분투 패키징 시스템을 통해서도 제공됩니다. 누군가가 SSH를 통해 서버에 로그인할 때 이메일을 보내도록 구성할 수 있으므로 최소한 추가 조사에 필요한 정보를 얻을 수 있습니다.
하지만 솔직하게 말하면 누군가가 루트로 서버에 액세스했다면 모든 것을 완전히 다시 설치해야 합니다. 백도어를 도입하여 감지하기 어려운 바이너리 대체가 있을 수 있습니다. useradd와 같은 간단한 명령을 실행하고 바이너리가 대체되어 명령을 실행하는 동안 TCP 연결이 열리고 사용자 자격 증명이 침입자에게 전송된다고 상상해 보세요. 또는 더 나쁜 경우: ssh - 서버 바이너리가 특정 사용자 - 패스 - 조합을 통해 액세스를 허용하는 사용자 정의 버전으로 대체되었습니다.
답변2
공급자로부터 고정 IP를 구입하세요.
답변3
@Kazimieras의 답변 외에도 다음과 같은 시스템을 사용할 수도 있습니다.딘딘에 새 호스트 이름을 추가하세요 etc/hosts.allow
.
답변4
서버와 사무실 네트워크 사이에 VPN 연결을 설정할 수도 있습니다.