it-swarm-korea.com

리눅스 서버 강화

Hardening Apache , Hardening PHPSecureing SSH 에 대한 질문이 이미 있습니다.

이러한 추세를 이어 가기 위해 사람들이 Linux 서버를 강화하기 위해 어떤 단계를 밟고 있는지에 관심이 있습니다. 새로운 서버를 설정할 때 사람들이 항상 수행하는 단계와 마찬가지로 응용 프로그램에만 국한되지 않습니다. tmp 파티션을 noexec로 설정, 특정 서비스를 제거/비활성화하는 등 (예 : c.

88
Mark Davidson

필요한 애플리케이션과 프로세스를 식별하고 체크리스트를 적용하여 설치를 피하거나 초기 빌드 후 최악의 경우 제거하십시오.

여기에서는 기본적으로 여전히 너무 많은 배포판으로 진행되는 일반적인 범인을 생각하고 있습니다!

  • NFS 서비스 : nfsd, 잠금, 마운트, 통계, 포트 매퍼
  • 텔넷 서버 및 ftp 서버
  • R 서비스 : rlogin, rsh, rcp, rexec
  • 필요하지 않은 경우 BIND 및 DNS 서버
  • sendmail과 같은 메일 서버
  • X11 (데스크톱이 필요하지 않은 경우)
  • 손가락 데몬 등

다음 단계는 잠재적으로 취약한 서비스를 통과하고 액세스를 제한하는 것입니다.

  • crontab에 대한 액세스를 제한하려면 at.allow 및 cron.allow를 사용하십시오.
  • 일반 사용자가 모든 장치를 읽을 수없고 쓸 수 없는지 확인하십시오 (/ dev/tty 및/dev/null 등의 장치 제외).
  • 키 파일-이들에 대한 권한은 root가 소유해야합니다./etc/fstab,/etc/password,/etc/shadow
  • Hosts.equiv를주의 깊게 확인하십시오-여기에 훌륭한 액세스 소스 :-)
  • 마찬가지로 필요한 경우 NFS 구성이 잠 깁니다.
  • 불필요한 시스템 계정을 비활성화하십시오.
  • 모든 실행 파일과 공용 디렉토리에 대해 파일 시스템-고정 비트를보십시오.
  • 모든 루트 요구 사항 확인 (PATH 환경 변수, 루트로 원격 액세스 할 수 없음, 그룹 멤버쉽, 비밀번호 요구 사항)
  • 모든 사용자 요구 사항 (권한 그룹의 멤버 자격, 유효한 셸, umask, SUID, SGID 요구 사항 확인)
  • 그리고 물론 SANS guide 는 정말 좋은 소스입니다!
57
Rory Alsop

"Linux 서버"공간에는 각각 고유 한 기본 구성 업데이트 전략, 패키지 관리 툴체인 및 기본 서비스 및 열린 포트 접근 방식을 갖춘 거대한 배포 범위 가 포함됩니다. 광범위한 배포 시나리오도 있습니다. 웹 서버 강화는 Linux 기반 라우터 강화와는 다릅니다. 가장 관심이있는 배포 및 사용 사례에 대해 문의하면 더 나은 조언을 얻을 수 있습니다.

그 맥락에서, 나는 우분투 보안 을 여기에 언급 할 것입니다.이 소스의 대부분은 다른 상황에 유용 할 것입니다.

좋은 소개는 다음과 같습니다. http://www.andrewault.net/2010/05/17/securing-an-ubuntu-server/

커뮤니티는 유용성이 영향을 받더라도 보안에 더 의존하는 몇 가지 더 엄격한 기본값과 강화 팁을 설명했습니다. https://help.ubuntu.com/community/StricterDefaults

다음은 사람들이 다른 곳에서 찾은 점검 목록을 조사하는 데 도움이되는 Ubuntu 보안 기능의 매트릭스와 요약입니다. https://wiki.ubuntu.com/Security/Features

테스트를 직접 수행하는 방법을 보려면 데모 코드를 통해 http://people.canonical.com/~kees/demo/ec2-session.log 에서 대화 내용을 확인하십시오. http://people.canonical.com/~kees/demo/

수행 할 작업 요약 : https://wiki.ubuntu.com/Security/Privileges

Ubuntu 보안 팀은 Wiki에 다음과 같은 유용한 정보를 제공합니다. https://wiki.ubuntu.com/Security/

25
nealmcb

Sans checklist 로 시작하는 것보다 훨씬 나빠질 수 있습니다.

이것에 대한 유일한 비판은 배포 된 시스템의 보안 관리에 특히 중점을 두지 않는다는 것입니다. 특히 공급 업체 패치를 최신 상태로 유지하고 적절한 권한 모델을 계획하고 IDS 예외보고를 관리하는 등입니다.

17
symcbean

먼저, 서버의 목적과 방어하려는 위협 모델을 파악해야합니다. 일회용 서버입니까? 여러 사용자가 액세스 할 수 있습니까? 여러 사용자가 액세스 할 수있는 경우 모두 신뢰할 수 있습니까?

이 서버는 네트워크 서비스에만 사용되며 컴퓨터에 계정이있는 사람의 공격 위협을 처리 할 필요가 없다고 가정하겠습니다. 내가 취한 단계는 다음과 같습니다.

  • 방화벽을 활성화합니다. iptables를 사용하여 로컬 방화벽을 설정합니다. 방화벽 정책에서 명시 적으로 허용하지 않는 한 default-deny 정책을 사용합니다. 들어오는 모든 연결은 기본적으로 차단됩니다. 전 세계로 내보내려는 서비스에 대한 수신 연결을 활성화합니다 (예 : 메일 서버 인 경우 포트 25, 웹 서버 인 경우 포트 80/443 등). iptables는 상태 저장 필터링을 지원하므로 연결이 설정되면 해당 연결과 관련된 모든 패킷이 허용됩니다.

  • 모든 패키지를 업그레이드하고 자동 업데이트를 활성화하십시오. Linux 배포를 Fedora에서 모든 패키지의 최신 버전 (yum upgrade)으로 업데이트하지만 구성에 적합한 것을 사용하십시오). 또한 하루에 한 번 업데이트를 자동으로 가져 와서 설치하도록 cron 스크립트를 설정했습니다 (Fedora의 경우 yum -y upgrade). 일부 숙련 된 sysadmin은 업데이트가 일부 서비스를 중단 할 위험이 있기 때문에 자동 업데이트를 권장하지 않을 수 있음을 알고 있습니다. 오래된 패키지로 인한 보안 위반 위험에 대비하여 해당 위험을 평가해야합니다. 개인적으로, 자동 업데이트의 편리함과 편리함이 서비스 중단의 위험을 감수 할 가치가 있다고 생각하지만 모든 운영 환경에서 올바른 답변이 아닐 수도 있습니다.

  • SELinux를 활성화합니다. SELinux는 노출 된 서비스에 대한 공격에 대한 두 번째 방어 계층을 제공합니다. 때로는 약간의 고통이있을 수 있습니다 (때로는 문제를 일으켜 디버그하기 어려운 방식으로 서비스를 중단했습니다).하지만 보안이 중요한 환경에서는 그만한 가치가 있다고 생각합니다.

  • 원격 관리를위한 SSH 설정 시스템을 원격으로 관리 할 수 ​​있도록 SSH를 설정해야합니다. 클라이언트 쪽에서 DSA 개인 키를 생성하고 암호로 암호화하고 해당 공개 키를 서버의 authorized_keys 파일에 설치 한 다음 개인 키를 사용하여 로그인하는 것이 좋습니다. 서버에서 sshd_config 구성 파일을 사용자 정의 할 수도 있습니다. PasswordAuthentication을 비활성화하고 사람들이 공개 키를 사용하여 로그인하도록 요구하십시오. 암호 인증은 개인 키에 문제가있는 경우 유용한 대체 방법이 될 수 있지만 사람이 종종 추측 가능한 암호를 선택하기 때문에 더 큰 위험이 있습니다. 시스템에 고품질 암호를 선택할 수없는 다른 사용자가있는 경우 PasswordAuthentication을 비활성화 할 수 있습니다. 자신 만 있고 모든 암호에 대해 높은 신뢰를 가지고 있다면 암호를 활성화 된 상태로 둘 수 있습니다. SSH를 통해 루트가 로그인하는 것을 막지는 않지만 느낌이 다를 수 있습니다.

  • 시스템 관리자가 여러 명인 경우 계정을 설정하십시오. 각 시스템에 Sudo 액세스 권한을 부여하거나 별도의 루트 계정을 설정하십시오. 각 sysadmin마다.

  • DNSSEC 활성화. DNS 스푸핑의 위험을 줄이기 위해 가능한 경우 DNSSEC로 호스트 이름을 확인하는 로컬 캐싱 DNS 서버를 실행하도록 서버를 구성합니다.

그런 다음 전 세계에 노출 된 각 서비스에 대해 해당 서비스를 보호하기 위해 예방 조치를 취합니다. 예를 들어, 가능하면 암호화 (예 : 메일 서버의 경우 STARTTLS) 및 chroot 또는 샌드 박스 서버를 사용합니다. 그러나 구체적인 내용은 서비스마다 다릅니다. 따라서 실행하려는 각 서비스에 대해 별도의 질문을 제출하여 해당 서비스를 잠그는 방법에 대한 조언을 요청하는 것이 좋습니다.

이미 많은 강화 기능이 적용된 Linux 배포판을 찾고 있다면 Openwall Linux 를 강력히 권장합니다.

(의견 : 신뢰할 수없는 사용자를 서버에 제공하면 보안을 강화하는 것이 훨씬 더 어려워집니다. 공격 영역이 훨씬 큽니다. 문제가 우려되는 경우, 보안을 잠그는 방법에 대한 별도의 질문을하는 것이 좋습니다. 서버에 계정이있는 로컬 사용자의 공격으로부터 보호하기위한 기술은 매우 다릅니다.)

13
D.W.

Grsecurity/PAX 커널 패치는 커널 수준에서 서버를 강화하기위한 매우 유용한 기능을 포함합니다.

요약:

  • 힙 및 스택 오버 플로우 보호
  • 다른 사용자 프로세스 숨기기
  • 역할 기반 액세스 제어 목록
  • Root 경화
  • / proc, FIFO 및 dmesg 제한 사항
  • 고급 로깅 ​​기능
6
Jerry Jacobs

Red Hat 의 경우 NSA는 강화에 대한 조언이 있습니다. Red Hat Enterprise Linux 5 구성 지침) -NSA/CSS .

CentOS 및 기타 파생 상품에도 도움이됩니다.

4
nealmcb

RHEL의 경우 인터넷 보안 센터CIS Red Hat Enterprise Linux 5 벤치 마크 는 좋은 리소스처럼 보입니다.

3
nealmcb

이미 더 큰 문제가있는 것보다 불필요한 패키지/서비스를 제거하여 시스템을 보호하려는 경우. 이 패키지는 처음에 설치되어서는 안됩니다.

최소한의 시스템을 설치하고 실제로 필요한 패키지 만 추가해야합니다. 커널도 마찬가지입니다. 필요한 기능만으로 커널을 컴파일하십시오. 모든 것을 지원하기 위해 배포 커널을 사용하지 마십시오 (어쨌든 95 %는 필요하지 않습니다)

2
Martin Vegter