Linux 강화 소개

4497 단어 securitylinux
오래간만이에요!나는 최근에 줄곧 많은 프로젝트를 하고 있지만, 그 중에서 가장 중요한 항목은 리눅스 강화와 관련이 있다.이번 주에 나는 그것에 관한 강연을 할 것이니, 나는 미리 여러분과 나누고 싶다.
우선, Linux 강화는 시스템의 안전 수준을 높이기 위한 것으로 주로 저급 명령을 통해 기본/기본 운영체제 값을 검사하고 편집한다.

암호화하다


LUKS를 사용하여 디스크와 볼륨을 암호화할 수 있습니다.다른 한편, 우리는 openssl 또는 gpg를 사용하여 서로 다른 유형의 파일을 암호화할 수 있다.이 두 가지 옵션을 살펴보겠습니다.
$ gpg --output nombre_salida --passphrase nuestra_contraseña --batch --no-tty --symmetric archivo_a_cifrar
$ openssl rsautl -encrypt -pubin -inkey miclave.pub -ssl -in archivo_a_cifrar -out salida
첫 번째 방법은 큰 파일을 암호화하는 것을 허용하고, 두 번째 방법은 공공 키를 사용하지만 큰 파일을 암호화할 수 없다.

라이선스


명령ls -ahl /home/ 2>/dev/null은 우리에게 home 허가증을 검사하라고 했다.카탈로그의 내용과 라이센스 실행을 제외하고는 find / -perm -222 -type d -not -path "/ejemplo/*"find / -executable -type d를 사용하여 모든 쓰기 라이센스를 볼 수 있습니다.find 도구는 기본적으로 디렉터리와 파일을 찾을 수 있도록 해 줍니다. -type d 옵션은 디렉터리를 검색할 수 있고 여러 가지 옵션이 있습니다.
  • b 블록(버퍼) 전용
  • c 문자(버퍼 없음) 특수
  • d 디렉토리
  • p 파이프(FIFO)
  • f 일반 파일
  • l 기호 링크
  • s 콘센트
  • D 도어(Solaris)
  • 계정에 빈 비밀번호가 있는지 확인하는 것이 매우 중요하다.이 정보는 /etc/shadows에서 확인할 수 있습니다.이것은 사용자 계정의 예입니다.
    ejemplousuario:$6$XOivHvJZ$DthDIzmVnzMigsByXQ2diHJZ9LFbROkyGyXnZ.98t5vpECl96Jmk621hquET/z8fbS9L5n4sFvTsvMtkBSWJM/:17911:0:99999:7:::
    
    기본적으로 순서대로 보면 사용자 이름, 암호 알고리즘, 암호, 마지막 변경 시간(1970년 1월 1일부터), 암호를 변경하기 전에 경과해야 하는 최단 일수, 암호 유효 최장 일수, 암호 변경 통지 일수, 암호 만료 시간(예에 없음), 절대 만료 일자(예에 없음)를 확인할 수 있습니다.그럼에도 불구하고, 우리는 관련 암호 정책을 더욱 편리하게 검사할 수 있다grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs 2>/dev/null .
    awk -F: '($2 == "") {print}' /etc/shadow
    
    이 명령은 계정에 빈 암호가 있는지 확인하고 설명된 구조의 두 번째 값을 검사할 수 있도록 합니다.또한 다음과 같은 기능을 사용할 수 있습니다.
    awk -F: '($3 == "0") {print}' /etc/passwd
    
    UID 0이 root만 있는지 확인하려면 이 0이 없으면 처리해야 합니다.

    신변 안전


    우리는 시스템도 반드시 물리적 보호를 받아야 한다는 것을 잊지 않을 것이다.BIOS 및 GRUB 부트 로더의 암호를 사용합니다.USB 부팅도 비활성화됩니다.Fedora, CentOS 등은 l키로 상호작용을 시작할 수 있으며 편집/etc/sysconfig/init을 비활성화하고 PROMPT=no 줄에서 알림을'아니오'로 변경할 수 있습니다.만약 우리가 USB 대용량 저장 드라이버를 사용하지 않는다면, 우리는 시스템의 USB 장치를 제한하여 고무오리, 나쁜 USB 등을 통해 공격하는 것을 피할 것이다.
    $ ls -l /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko
    
    우리는 blacklist.conf/etc/modprobe.d/의 설비 블랙리스트를 설정할 수도 있다.

    야유


    다음과 같은 방법으로 루트에서 SSH를 통해 로그인할 수 있는지 확인할 수 있습니다.
    $ grep "PermitRootLogin " /etc/ssh/sshd_config 2>/dev/null | grep -v "#" | awk '{print  $2}'
    
    여기까지만 말하고 보안 로그인을 실행하기 위해 공개 키를 사용하는 것을 권장합니다.
    $ ssh-keygen -t key_type -b bits -C "comentario"
    $ ssh-keygen -t ed25519 -C "Login al cluster de produccion"
    $ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_aws_$(date +%Y-%m-%d) -C "AWS para clientes"
    
    키를 설치하려면 ssh-copy-id를 사용할 수 있습니다.또한 AllowUsersDenyUsersPermitEmptyPasswords no 빈 암호를 사용하여 액세스를 제한할 수도 있습니다.

    작업 일정

    ls -la /etc/cron*를 사용하면 우리는 매시간, 매일, 매월 그리고 매주 프로그래밍 업무를 신속하게 검사할 수 있다.crontab 파일을 모듈화하는 데 사용되는 cron.d을 볼 수 있지만, 실시간 crontab을 검사하려면 ls -la /var/spool/cron/crontabs를 사용할 수 있습니다.

    기타


    우리는 또한 w 2>/dev/null를 사용하여 당시 누가 연결되었는지 검사할 수 있다.우리는 root를 사용하여 grep -v -e '^$' /etc/sudoers |grep -v "#" 권한이 있는 사용자와 그룹을 검사할 수 있다.우리는 그것을 주석 줄을 피하기 위해서 사용한다. #이 밖에 /etc/login.defs에는 일반 사용자 정보의 재미있는 정보useraddgroupadd가 포함되어 있다. 예를 들어 이 파일의 값을 사용한다.우리는 또한 umask -S & umask (기호 -S 와 8진법 값) 을 사용하여umask값을 검사할 수 있다.SNMP 반사 공격을 방지하려면 cat /etc/services | grep -i snmp를 사용하여 SNMP의 기본 포트를 확인할 수 있습니다.
    안전을 위해서 스크립트를 시도하고 작성하며 이 정보를 사용하도록 권장합니다!:)

    좋은 웹페이지 즐겨찾기