본문 바로가기

리눅스

리눅스 서버의 보안을 강화하는 방법

반응형

리눅스 서버의 보안을 강화하는 방법

1. 현재 서버 보안상태 및 자원상태 확인

pstree : 현재 구동 중인 프로세스를 트리 형태로 확인할 수 있습니다.

lsof / ps : 열린 파일 및 프로세스 정보를 상세히 점검합니다.

netstat -anlp : 열려 있는 포트를 확인하여 iptables 방화벽 설정에 반영할 준비를 합니다.

vmstat/top/iostat/sar : 시스템 자원 상태를 파악하여 부하 상태를 점검합니다.

df -Th : 각 파티션의 용량을 확인합니다.

uname -a : 현재 실행 중인 커널 버전 정보를 확인합니다.

2. 시간 동기화

서버의 시간 동기화를 자동으로 설정하려면 크론탭(crontab)을 사용하여 rdate 명령을 이용해 시간을 동기화하도록 설정합니다.

cat > /root/time.sh << EOF
#!/bin/bash

# Synchronize time from remote server
rdate -s time.bora.net && echo "Time synchronized successfully."

# Display current date and time
date

# Synchronize hardware clock
clock -r && clock -w
EOF
chmod 700 /root/time.sh
echo '00 6 * * * root /root/time.sh' >> /etc/crontab
/etc/rc.d/init.d/crond restart

3. 초기 실행 데몬 선택

시스템에서 필요한 서비스만 실행되도록 불필요한 데몬을 종료하고 고객의 요구 사항에 맞게 선택합니다.

예를 들어, sendmail, imap, vsftpd 등 필요하지 않은 서비스는 비활성화할 수 있습니다.

4. 불필요한 패키지 제거

서버에서 사용하지 않는 패키지들을 제거하여 보안을 강화합니다.

예를 들어, rsh, telnet-server, nfs-utils와 같은 서비스를 삭제합니다.

rpm -e telnet-server
rpm -e rsh

5. iptables 설정

서버에 적합한 방화벽 규칙을 설정하여 외부의 불필요한 접근을 차단합니다.

iptables -L -n

6. 계정 삭제

불필요한 계정 및 그룹을 삭제하여 공격자가 악용할 수 있는 가능성을 줄입니다.

userdel adm
groupdel games

7. 파일 시스템 옵션 설정

파일 시스템에서 중요한 디렉토리에는 적절한 옵션을 설정하여 보안을 강화합니다.

예를 들어, /dev/shm에는 noexec를 설정하여 실행 파일을 실행할 수 없도록 합니다.

none /dev/shm tmpfs defaults,noexec,nosuid 0 0

8. 퍼미션 조정

중요한 시스템 파일들의 권한을 엄격하게 설정하여 불필요한 접근을 차단합니다.

chmod 600 /etc/fstab
chmod 700 /etc/rc.d
chmod 755 /var/tmp

9. FTP 보안 설정 (vsftpd)

FTP 서비스를 사용할 경우 익명 접속을 차단하고 로컬 계정만 접근을 허용하도록 설정합니다.

sudo vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

# SSL 사용
ssl_enable=YES
ssl_cert_file=/etc/ssl/certs/your_cert.crt  # 실제 인증서 경로
ssl_key_file=/etc/ssl/private/your_private.key  # 실제 개인키 경로
require_ssl_reuse=NO
ssl_ciphers=HIGH:!aNULL:!eNULL:!EXPORT:!SSLv2:!SSLv3

# 로그 설정
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

10. SSH 보안 설정

SSH를 통해 서버에 접속할 수 있는 사용자만 제한하고 포트 및 프로토콜을 설정합니다.

sudo vim /etc/ssh/sshd_config
# 기본 포트 변경
Port 2222  # 기본 포트 22에서 변경하여 공격을 어렵게 함

# 프로토콜 버전 2 사용
Protocol 2

# 루트 로그인 비활성화
PermitRootLogin no

# 공개키 인증만 허용
PasswordAuthentication no
PubkeyAuthentication yes

# 로그인 시도 제한
MaxAuthTries 3
MaxSessions 2
LoginGraceTime 60

# 공개키 인증 파일 경로 설정
AuthorizedKeysFile .ssh/authorized_keys

# 암호화된 연결만 허용
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
MACs hmac-sha2-256,hmac-sha2-512

# 로그 레벨 설정
LogLevel VERBOSE

# 허용된 사용자 설정
AllowUsers 고객아이디

 

보안 설정은 리눅스 서버의 안전성을 높이는 중요한 작업입니다. 각 항목을 시스템 환경에 맞게 조정하여 적용하면 보안이 강화됩니다.

 

728x90
반응형