리눅스 서버의 보안을 강화하는 방법
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 고객아이디
보안 설정은 리눅스 서버의 안전성을 높이는 중요한 작업입니다. 각 항목을 시스템 환경에 맞게 조정하여 적용하면 보안이 강화됩니다.
'리눅스' 카테고리의 다른 글
[VNC] ERROR vnc : no displays configured (0) | 2013.09.10 |
---|---|
CentOS 7에서 X Window System 및 GNOME 데스크톱 환경을 설치하는 방법 (0) | 2013.09.10 |
APM과 Cacti 설치 및 설정하는 방법 (0) | 2013.09.10 |
리눅스 시스템에서 한글 글꼴이 깨지는 현상 (0) | 2013.09.10 |
[리눅스] yum으로 X window 설치 (0) | 2013.09.10 |