웹사이트 검색

Linux 서버를 위한 25가지 보안 강화 팁


모두가 Linux가 기본적으로 안전하다고 말하고 어느 정도 확장에 동의합니다(논쟁의 여지가 있는 주제입니다). 그러나 Linux에는 기본적으로 보안 모델이 내장되어 있습니다. 보다 안전한 시스템을 만드는 데 도움이 될 수 있도록 필요에 따라 조정하고 사용자 정의해야 합니다. Linux는 관리하기가 더 어렵지만 더 많은 유연성과 구성 옵션을 제공합니다.

해커크래커의 손으로부터 프로덕션 시스템을 보호하는 것은 시스템 관리자에게 어려운 작업입니다. 이것은 "Linux 상자를 보호하는 방법" 또는 "Linux 상자 강화"와 관련된 첫 번째 기사입니다. 이 게시물에서는 Linux 시스템을 보호하기 위한 25가지 유용한 팁과 요령을 설명하겠습니다. 아래 팁과 요령이 시스템 보안을 강화하는 데 도움이 되기를 바랍니다.

1. 물리적 시스템 보안

BIOS<에서 CD/DVD, 외부 장치, 플로피 드라이브에서 부팅을 비활성화하도록 BIOS를 구성합니다. /강하게>. 그런 다음 BIOS 비밀번호를 활성화하고 비밀번호로 GRUB를 보호하여 시스템에 대한 물리적 액세스를 제한합니다.

  1. Linux 서버를 보호하기 위해 GRUB 비밀번호 설정

2. 디스크 파티션

재해가 발생할 경우를 대비해 더 높은 데이터 보안을 확보하려면 다른 파티션을 보유하는 것이 중요합니다. 서로 다른 파티션을 생성하여 데이터를 분리하고 그룹화할 수 있습니다. 예상치 못한 사고가 발생하면 해당 파티션의 데이터만 손상되고, 다른 파티션의 데이터는 살아남습니다. 다음과 같은 별도의 파티션이 있어야 하며 타사 애플리케이션이 /opt 아래의 별도 파일 시스템에 설치되어야 하는지 확인하세요.

/
/boot
/usr
/var
/home
/tmp
/opt

3. 취약점을 최소화하기 위해 패키지 최소화

정말로 모든 종류의 서비스를 설치하시겠습니까? 패키지의 취약점을 방지하려면 쓸모없는 패키지를 설치하지 않는 것이 좋습니다. 이는 한 서비스의 손상으로 인해 다른 서비스의 손상으로 이어질 수 있는 위험을 최소화할 수 있습니다. 취약점을 최소화하려면 서버에서 원치 않는 서비스를 찾아서 제거하거나 비활성화하세요. runlevel 3에서 실행 중인 서비스를 찾으려면 'chkconfig' 명령을 사용하세요.

/sbin/chkconfig --list |grep '3:on'

원치 않는 서비스가 실행되고 있음을 발견하면 다음 명령을 사용하여 해당 서비스를 비활성화하십시오.

chkconfig serviceName off

"yum" 또는 "apt-get" 도구와 같은 RPM 패키지 관리자를 사용하여 시스템에 설치된 모든 패키지를 나열하고 다음을 사용하여 제거합니다. 다음 명령.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 chkconfig 명령 예
  2. RPM 명령의 20가지 실제 예
  3. Linux 패키지 관리를 위한 20가지 Linux YUM 명령
  4. 패키지 관리를 관리하기 위한 25개의 APT-GET 및 APT-CACHE 명령

4. 수신 네트워크 포트 확인

'netstat' 네트워킹 명령을 사용하면 열려 있는 모든 포트와 관련 프로그램을 볼 수 있습니다. 위에서 말했듯이 'chkconfig' 명령을 사용하여 시스템에서 원치 않는 모든 네트워크 서비스를 비활성화합니다.

netstat -tulpn
  1. Linux의 네트워크 관리를 위한 20가지 Netstat 명령

5. 보안쉘(SSH)을 사용하세요

Telnetrlogin 프로토콜은 보안 위반인 암호화된 형식이 아닌 일반 텍스트를 사용합니다. SSH는 서버와 통신할 때 암호화 기술을 사용하는 보안 프로토콜입니다.

필요한 경우가 아니면 절대로 root로 직접 로그인하지 마세요. 명령을 실행하려면 'sudo'를 사용하세요. sudo는 /etc/sudoers 파일에 지정되어 있으며 VI 편집기에서 열리는 "visudo" 유틸리티를 사용하여 편집할 수도 있습니다.

또한 기본 SSH 22 포트 번호를 다른 더 높은 수준의 포트 번호로 변경하는 것이 좋습니다. 기본 SSH 구성 파일을 열고 다음 매개변수를 만들어 사용자의 액세스를 제한합니다.

vi /etc/ssh/sshd_config
루트 로그인 비활성화
PermitRootLogin no
특정 사용자만 허용
AllowUsers username
SSH 프로토콜 2 버전 사용
Protocol 2
  1. SSH 서버 보안 및 보호를 위한 5가지 모범 사례

6. 시스템을 최신 상태로 유지하세요

가능한 경우 항상 최신 릴리스 패치, 보안 수정 사항 및 커널로 시스템을 업데이트하십시오.

yum updates
yum check-update

7. 크론잡 잠금

Cron에는 작업을 실행할 수 있는 사람과 실행하지 않을 사람을 지정할 수 있는 자체 기능이 내장되어 있습니다. 이는 /etc/cron.allow/etc/cron.deny라는 파일을 사용하여 제어됩니다. cron을 사용하여 사용자를 잠그려면 cron.deny에 사용자 이름을 추가하고 사용자가 cron.allow 파일에서 cron add를 실행할 수 있도록 허용하면 됩니다. 모든 사용자가 cron을 사용하지 못하도록 하려면 cron.deny 파일에 'ALL' 줄을 추가하세요.

echo ALL >>/etc/cron.deny
  1. 11 Linux의 크론 스케줄링 예

8. USB 스틱을 비활성화하여 감지

데이터 도용을 방지하고 보안을 유지하기 위해 사용자가 시스템에서 USB 스틱을 사용하지 못하도록 제한하려는 경우가 많습니다. '/etc/modprobe.d/no-usb' 파일을 생성하고 아래 줄을 추가하면 USB 저장소가 감지되지 않습니다.

install usb-storage /bin/true

9. SELinux를 켜세요

보안이 강화된 Linux(SELinux)는 커널에서 제공되는 강제 액세스 제어 보안 메커니즘입니다. SELinux를 비활성화한다는 것은 시스템에서 보안 메커니즘을 제거한다는 의미입니다. 시스템이 인터넷에 연결되어 있고 대중이 액세스하는 경우 제거하기 전에 신중하게 두 번 생각하십시오. 그런 다음 이에 대해 좀 더 생각해보십시오.

SELinux는 세 가지 기본 작동 모드를 제공합니다.

  1. 강제: 이는 시스템에서 SELinux 보안 정책을 활성화하고 강제하는 기본 모드입니다.
  2. 허용: 이 모드에서 SELinux는 시스템에 보안 정책을 시행하지 않고 경고 및 기록 작업만 수행합니다. 이 모드는 SELinux 관련 문제를 해결하는 데 매우 유용합니다.
  3. 사용 안 함: SELinux가 꺼져 있습니다.

'system-config-selinux', 'getenforce' 또는 '를 사용하여 명령줄에서 SELinux 모드의 현재 상태를 볼 수 있습니다. sestatus' 명령입니다.

sestatus

비활성화된 경우 다음 명령을 사용하여 SELinux를 활성화합니다.

setenforce enforcing

또한 '/etc/selinux/config' 파일에서 관리할 수 있으며 여기서 활성화하거나 비활성화할 수 있습니다.

10. KDE/GNOME 데스크탑 제거

전용 LAMP 서버에서 KDE 또는 GNOME과 같은 X Window 데스크톱을 실행할 필요가 없습니다. 서버 보안과 성능을 높이기 위해 이를 제거하거나 비활성화할 수 있습니다. 단순 기능을 비활성화하려면 '/etc/inittab' 파일을 열고 실행 수준을 3으로 설정합니다. 시스템에서 완전히 제거하려면 아래 명령을 사용하십시오.

yum groupremove "X Window System"

11. IPv6 끄기

IPv6 프로토콜을 사용하지 않는 경우 대부분의 애플리케이션이나 정책에 IPv6 프로토콜이 필요하지 않으며 현재 서버에서도 필요하지 않으므로 해당 프로토콜을 비활성화해야 합니다. . 네트워크 구성 파일로 이동하여 다음 줄을 추가하여 비활성화합니다.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. 사용자가 이전 비밀번호를 사용하도록 제한

이는 사용자가 동일한 이전 비밀번호를 사용하는 것을 허용하지 않으려는 경우 매우 유용합니다. 이전 비밀번호 파일은 /etc/security/opasswd에 있습니다. 이는 PAM 모듈을 사용하여 달성할 수 있습니다.

RHEL/CentOS/Fedora에서 '/etc/pam.d/system-auth' 파일을 엽니다.

vi /etc/pam.d/system-auth

Ubuntu/Debian/Linux Mint 아래의 '/etc/pam.d/common-password' 파일을 엽니다.

vi /etc/pam.d/common-password

'auth' 섹션에 다음 줄을 추가합니다.

auth        sufficient    pam_unix.so likeauth nullok

사용자가 자신의 마지막 5 비밀번호를 재사용하지 못하도록 하려면 'password' 섹션에 다음 줄을 추가하세요.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

서버는 마지막 5 비밀번호만 기억합니다. 최근 5개의 이전 비밀번호를 사용하려고 하면 다음과 같은 오류가 발생합니다.

Password has been already used. Choose another.

13. 사용자의 비밀번호 만료 확인 방법

Linux에서는 사용자의 비밀번호가 '/etc/shadow' 파일에 암호화된 형식으로 저장됩니다. 사용자의 비밀번호 만료를 확인하려면 'chage' 명령을 사용해야 합니다. 마지막 비밀번호 변경 날짜와 함께 비밀번호 만료 세부 정보를 표시합니다. 이러한 세부 정보는 시스템에서 사용자가 비밀번호를 변경해야 하는 시기를 결정하는 데 사용됩니다.

만료일, 시간 등 기존 사용자의 연령 정보를 보려면 다음 명령을 사용하세요.

#chage -l username

사용자의 비밀번호 만료 기간을 변경하려면 다음 명령을 사용하십시오.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
매개변수
  1. -M 최대 일수 설정
  2. -m 최소 일수 설정
  3. -W 경고 일수를 설정합니다.

14. 수동으로 계정 잠금 및 잠금 해제

잠금 및 잠금 해제 기능은 매우 유용합니다. 시스템에서 계정을 제거하는 대신 일주일 또는 한 달 동안 계정을 잠글 수 있습니다. 특정 사용자를 잠그려면 다음 명령을 사용할 수 있습니다.

passwd -l accountName

참고: 잠긴 사용자는 루트 사용자만 사용할 수 있습니다. 잠금은 암호화된 비밀번호를 (!) 문자열로 대체하여 수행됩니다. 누군가 이 계정을 사용하여 시스템에 액세스하려고 하면 아래와 유사한 오류가 발생합니다.

su - accountName
This account is currently not available.

잠긴 계정에 대한 액세스를 잠금 해제하거나 활성화하려면 as 명령을 사용하십시오. 암호화된 비밀번호가 포함된 (!) 문자열이 제거됩니다.

passwd -u accountName

15. 더 강력한 비밀번호 시행

많은 사용자가 소프트하거나 취약한 비밀번호를 사용하고 있으며 이들의 비밀번호는 사전 기반 또는 무차별 대입 공격으로 해킹당할 수 있습니다. 'pam_cracklib' 모듈은 사용자가 강력한 비밀번호를 설정하도록 하는 PAM(플러그형 인증 모듈) 모듈 스택에서 사용할 수 있습니다. 편집기로 다음 파일을 엽니다.

또한 읽어보세요:

vi /etc/pam.d/system-auth

(lcredit, ucredit, dcredit 및/또는 ocredit 각각 소문자로 신용 매개변수를 사용하여 행을 추가합니다. , 대문자, 숫자 및 기타)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Iptables 활성화(방화벽)

서버에 대한 무단 액세스를 보호하려면 Linux 방화벽을 활성화하는 것이 좋습니다. iptables의 규칙을 적용하여 수신, 발신전달 패킷을 필터링합니다. 특정 udp/tcp 포트 번호에서 허용 및 거부할 소스 및 대상 주소를 지정할 수 있습니다.

  1. 기본 IPTables 가이드 및 팁

17. Inittab에서 Ctrl+Alt+Delete 비활성화

대부분의 Linux 배포판에서 'CTRL-ALT-DELETE'를 누르면 시스템이 재부팅됩니다. 따라서 누군가 실수로 이 옵션을 사용하는 경우 적어도 프로덕션 서버에서 이 옵션을 활성화하는 것은 좋은 생각이 아닙니다.

이는 '/etc/inittab' 파일에 정의되어 있습니다. 해당 파일을 자세히 살펴보면 아래와 비슷한 줄을 볼 수 있습니다. 기본적으로 줄은 주석 처리되지 않습니다. 우리는 그것을 주석 처리해야 합니다. 이 특정 키 시퀀스 신호는 시스템을 종료합니다.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. 빈 비밀번호가 있는지 계정 확인하기

비밀번호가 비어 있는 계정은 웹상의 누구에게나 무단 액세스가 허용된다는 의미이며 이는 Linux 서버 내 보안의 일부입니다. 따라서 모든 계정에 강력한 비밀번호가 있고 누구도 승인된 액세스 권한이 없는지 확인해야 합니다. 빈 비밀번호 계정은 보안 위험이 있으며 쉽게 해킹될 수 있습니다. 비밀번호가 비어있는 계정이 있는지 확인하려면 다음 명령어를 사용하세요.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. 로그인 전 SSH 배너 표시

SSH 인증 전에 일부 보안 경고가 포함된 법적 배너나 보안 배너를 갖는 것이 항상 더 나은 생각입니다. 이러한 배너를 설정하려면 다음 문서를 읽어보세요.

  1. 사용자에게 SSH 경고 메시지 표시

20. 사용자 활동 모니터링

많은 사용자를 처리하는 경우 각 사용자 활동 및 해당 사용자가 사용하는 프로세스에 대한 정보를 수집하고 나중에 분석하거나 성능, 보안 문제가 있는 경우 분석하는 것이 중요합니다. 하지만 사용자 활동 정보를 모니터링하고 수집하는 방법은 무엇입니까?

시스템에서 사용자 활동과 프로세스를 모니터링하는 데 사용되는 'psacct'와 'acct'라는 두 가지 유용한 도구가 있습니다. 이러한 도구는 시스템 백그라운드에서 실행되며 Apache, MySQL, SSH와 같은 서비스에서 소비하는 시스템 및 리소스의 각 사용자 활동을 지속적으로 추적합니다. FTP 등 설치, 구성, 사용법에 대한 자세한 내용은 아래 URL을 참조하세요.

  1. psacct 또는 acct 명령을 사용하여 사용자 활동 모니터링

21. 정기적으로 로그를 검토하세요

로그를 전용 로그 서버로 이동하면 침입자가 로컬 로그를 쉽게 수정하는 것을 방지할 수 있습니다. 다음은 일반적인 Linux 기본 로그 파일 이름과 사용법입니다.

  1. /var/log/message – 전체 시스템 로그 또는 현재 활동 로그를 사용할 수 있는 곳입니다.
  2. /var/log/auth.log – 인증 로그.
  3. /var/log/kern.log – 커널 로그.
  4. /var/log/cron.log – Crond 로그(cron 작업).
  5. /var/log/maillog – 메일 서버 로그.
  6. /var/log/boot.log – 시스템 부팅 로그.
  7. /var/log/mysqld.logMySQL 데이터베이스 서버 로그 파일.
  8. /var/log/secure – 인증 로그.
  9. /var/log/utmp 또는 /var/log/wtmp : 로그인 기록 파일입니다.
  10. /var/log/yum.log: Yum 로그 파일.

22. 중요한 파일 백업

프로덕션 시스템에서는 중요한 파일을 백업하여 재해 복구를 위해 안전 금고, 원격 사이트 또는 오프사이트에 보관해야 합니다.

23. NIC 본딩

NIC 본딩에는 두 가지 유형의 모드가 있으며 본딩 인터페이스에서 언급해야 합니다.

  1. mode=0 – 라운드 로빈
  2. mode=1 – 활성 및 백업

NIC 결합은 단일 실패 지점을 방지하는 데 도움이 됩니다. NIC 본딩에서는 두 개 이상의 네트워크 이더넷 카드를 함께 본딩하여 IP 주소를 할당하여 다른 사람과 통신할 수 있는 하나의 단일 가상 인터페이스를 만듭니다. 서버. 어떤 이유로든 하나의 NIC 카드가 다운되거나 사용할 수 없는 경우 네트워크를 사용할 수 있습니다.

참고 사항: Linux에서 NIC 채널 본딩 만들기

24. /boot를 읽기 전용으로 유지

Linux 커널 및 관련 파일은 기본적으로 읽기-쓰기/boot 디렉토리에 있습니다. 읽기 전용으로 변경하면 중요한 부팅 파일이 무단으로 수정될 위험이 줄어듭니다. 이렇게 하려면 "/etc/fstab" 파일을 엽니다.

vi /etc/fstab

맨 아래에 다음 줄을 추가하고 저장하고 닫습니다.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

나중에 커널을 업그레이드해야 하는 경우 읽기-쓰기로 변경 사항을 재설정해야 합니다.

25. ICMP 또는 브로드캐스트 요청 무시

ping 또는 broadcast 요청을 무시하려면 “/etc/sysctl.conf” 파일에 다음 줄을 추가하세요.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

다음 명령을 실행하여 새 설정 또는 변경 사항을 로드합니다.

#sysctl -p

위 목록에서 중요한 보안 또는 강화 팁을 놓쳤거나 목록에 포함해야 할 다른 팁이 있는 경우. 의견 상자에 의견을 남겨주세요. TecMint는 항상 의견, 제안 및 개선을 위한 토론에 관심을 갖고 있습니다.