it-swarm-ko.tech

데비안 서버를 보호하기 위해 어떤 단계를 수행합니까?

인터넷에 직접 연결된 데비안 서버를 설치하고 있습니다. 분명히 나는 ​​그것을 가능한 한 안전하게 만들고 싶다. 아이디어를 보호하기 위해 아이디어를 추가하고 사용하는 프로그램을 추가하십시오.

이 질문의 일부를 방화벽으로 무엇을 사용하는지 다루고 싶습니다. 그냥 iptables 수동으로 구성했거나 어떤 종류의 소프트웨어를 사용합니까? 가장 좋은 방법은 무엇입니까? 모든 것을 차단하고 필요한 것만 허용합니까? 이 주제에 대한 초보자를위한 좋은 자습서가 있습니까?

SSH 포트를 변경합니까? Fail2Ban 와 같은 소프트웨어를 사용하여 무차별 공격을 방지합니까?

66
Thomaschaaf

의무 사항 :

  • 전문가 모드로 시스템 설치, 필요한 패키지 만
  • iptables'input에 기본 정책으로 방화벽을 작성하십시오 : drop, SSH, HTTP 또는 지정된 서버가 실행중인 다른 항목에 대한 액세스 허용
  • Fail2Ban SSH의 경우 [때때로 상황에 따라 FTP/HTTP/기타]
  • 루트 로그인 비활성화, 일반 사용자 및 Sudo 사용
  • 커스텀 커널 [오래된 습관]
  • 예정된 시스템 업그레이드

편집증 수준에 따라 추가로 :

  • 허용되는 두 대상/포트를 제외한 출력에 대한 정책 삭제
  • integrit 파일 시스템웨어의 일부가 [머신 외부에 체크섬을 유지 한 상태로] 수정되지 않았는지 확인하는 데 사용됩니다 (예 : Tripwire
  • 적어도 외부에서 시스템의 nmap으로 예약 검사
  • 알 수없는 패턴에 대한 자동 로그 검사
  • chkrootkit 의 예약 된 실행
  • /etc/passwd에 대한 변경 불가능한 속성이므로 새 사용자를 추가하는 것이 약간 더 어렵습니다.
  • noexec로 마운트 된/tmp
  • sSH 포트를 여는 포트 노커 또는 기타 비표준 방식 (예 : 웹 서버에서 '비밀'웹 페이지를 방문하면 페이지를 본 IP 주소에서 제한된 기간 동안 들어오는 SSH 연결이 허용됩니다. 연결되면 -m state --satete ESTABLISHED는 단일 SSH 세션을 사용하는 한 패킷 흐름을 허용합니다.]

내가하지는 않지만 말이되는 것 :

  • 커널의 경우 grsecurity
  • 시스템이 손상 될 때 로그를 덮어 쓸 수없는 원격 syslog
  • sSH 로그인에 대한 경고
  • rkhunter 를 구성하고 때때로 실행되도록 설정
50
pQd
  • 루트 로그인 비활성화
  • 비밀번호로 로그인 비활성화 (공개 키로 만 로그인 허용)
  • sSH 포트 변경
  • 거부 호스트 사용 (또는 유사)

  • 자신의 iptbles 스크립트 작성 (허용 할 내용을 정확하게 제어하고 다른 모든 항목을 삭제할 수 있음)

  • sSL/TLS 보안 통신을 강제로 사용하고 유효하고 만료되지 않은 서명 된 인증서가 있는지 확인하십시오.

  • 모든 외부 서비스에 대해 엄격한 인증서 확인을 설정합니다 (예 : 다른 시스템에서 LDAP 서버로 사용자를 인증 할 때)
12
x-way
9
KPWINC

일반적인 출발점으로 보안 모범 사례를 종합적으로 정리 한 인터넷 보안 센터 의 벤치 마크/가이드를 따릅니다. 데비안 벤치 마크가 언젠가 업데이트 된 것 같지는 않지만 단계에 대한 일반적인 개요는 다음과 같습니다.

  • 최신 OS 패치/패키지 적용
  • 시스템/커널/프로세스 계정을 활성화합니다.
  • MAC을 활성화합니다 (예 : SELinux 또는 AppArmor).
  • 호스트 기반 방화벽 (iptables)을 활성화하십시오.
  • APT sources.list를 확인하십시오 (키가 정확하고 출처를 신뢰할 수 있음).
  • 네트워크 서비스를 최소화하고 필요하지 않은 모든 것을 비활성화하고 방화벽을 차단하십시오.
  • 시스템 액세스를 추가로 제한하려면 TCPWrapper를 사용하십시오.
  • 암호화 된 네트워크 프로토콜 만 사용하고 암호화되지 않은 서비스 (telnet, ftp 등)를 비활성화하십시오.
  • SSH에 대한 원격 액세스 만 구성하십시오.
  • 사용자 로그인 비밀번호를 비활성화하고 키 기반 인증이 필요합니다.
  • 파일 시스템 공유를 비활성화합니다 (NFS, SMB).
  • 원격/중앙 집중식 시스템 로깅을 활성화하고 정기적으로 로그를 검토하십시오!.
  • BIOS/펌웨어 수준 암호를 설정하십시오.
  • 부트 로더 비밀번호를 설정하십시오.
  • 시스템 백업을 구성하고, 재해 복구 계획을 세우고, 백업이 유효하고 직원이 재해 복구 절차를 알고 있는지 테스트하십시오!

CISecurity 벤치 마크에서 시스템에 구현할 특정 명령 및 구성 파일을 포함하여 이러한 모든 다양한 설정에 대한 많은 리소스가 있습니다.

6
jtimberman

기계를 인터넷에 직접 연결하지 않는 것이 좋습니다. 기기와 인터넷 사이에 방화벽을 설치하십시오. 이를 통해 서버에 더 많은 부하를주지 않고 보안 및 네트워크 모니터링을 수행 할 수 있습니다. 개인적으로, 네트워크 및 기능 세분화는 종종 네트워크 문제 해결을 단순화하는 경우가 종종 있지만 추가 복잡성으로 인해 분석이 더 어려워집니다.

가장 안전하지만 가장 성가신 방화벽 정책은 모든 것을 거부하고 허용해야하는 트래픽 만 명시 적으로 허용하는 것입니다. 네트워크를 변경해야 할 때 방화벽 정책을 자주 업데이트해야하기 때문에 이는 성가신 일입니다.

또한 서버에서 일종의 인터페이스 방화벽을 사용하는 것이 좋습니다. 심층 방어가 핵심입니다. 관리 관련 서비스에 비표준 포트를 사용해도 문제가되지 않습니다. fail2ban은 괜찮습니다. 더 많은 아이디어를 찾으려면 Serverfault의 보안 응용 프로그램에 대한보다 구체적인 질문을 찾으십시오.

보안은 두 명의 등산객과 곰에 대한 농담과 같습니다. 하나는 완벽한 보안을 달성 할 수 없지만 다른 사람들보다 더 어려운 목표가되는 것이 도움이됩니다.

5
pcapademic

어떤 사람들은 보안 데비안 매뉴얼 을 지적했습니다. 이것은 군사 요건을 제외한 모든 것에 완벽하게 적합해야합니다.

많은 사람들은 말도 안되는 편집증이 시원하거나 전문적이거나 무언가라고 생각합니다. not, 다른 관리자에게는 annoying이고 사용자에게는 명백한 repressive입니다. 당신이 추천하는 것들 대부분은 편집증 관리자에게 유용하다고 느끼는 가짜 바쁜 작업이지만 실제로 보안 위반은 충분히 업데이트되지 않은 시스템 및/또는 내부 소스에 의해 발생할 수 있기 때문에 실제로 도움이되지 않습니다.

즉, 인터넷의 어떤 것보다 로컬 네트워크의 어떤 것도 믿지 않는 것이 나의 신조 중 하나라고 생각합니다. 따라서 로컬 네트워크에서도 인증이 필요하도록 모든 것을 구성합니다. IPsec을 사용하여 모든 컴퓨터 사이의 모든 트래픽을 암호화하고 인증합니다.

모든 서버의 전체 디스크 암호화로 변환하는 중입니다.

사용하는 서비스 만 설치합니다. 방화벽이 없습니다. 인증이 필요한 서비스를 구성하거나 프로그램 자체 구성 또는 TCP 래퍼에 의해 특정 IP로 제한합니다. iptables를 사용하여 차단해야 할 유일한 것은 memcached입니다. 구성 파일이없고 TCP 래퍼를 사용하지 않았기 때문입니다.

내 계정에 대해 좋은 임의로 생성 된 암호를 사용하고 SSH 서버 (및 다른 모든 서비스)를 신뢰하여 암호를 모르는 사람들을 유지합니다. fail2ban는 로그 파일 (IMO)을위한 공간이 제한된 사용자를위한 것입니다. (신뢰할 수있는 충분한 암호가 있어야합니다.)

4
Teddy

Www.debian.org/doc/manuals/securing-debian-howto/에서이 유용한 방법을 살펴보십시오.

개인적으로 ssh 포트를 변경하고 fail2ban + denyhosts를 사용합니다. 그리고 필요하지 않은 모든 것을 차단합니다. 많이 차단할수록 걱정할 필요가 없습니다.

3
Vihang D