'서버 보안검증'에 해당되는 글 1건

728x90

서버 보안 설정 사항 중 몇가지를 적어둔다.

 

### 패스워드 잠금횟수 설정
vim /etc/pam.d/system-auth
auth        required       pam_tally2.so deny=5 unlock_time=120 no_magic_root account required pam_tally2.so no_magic_root reset
 
#account     required     pam_unix.so 다음 줄에 추가한다.
account     sufficient    pam_tally2.so
 
 
vim /etc/pam.d/password-auth
#auth        required      pam_tally2.so deny=5 unlock_time=120
auth        required      pam_tally2.so deny=5 unlock_time=120 no_magic_root account required pam_tally2.so no_magic_root reset
 
#account     required     pam_unix.so 다음 줄에 추가한다.
account     sufficient    pam_tally2.so
 
### /etc/hosts 파일 소유자 및 권한 설정
chown root /etc/hosts 
chmod 600 /etc/hosts
 
### /etc/(x)inetd.conf 파일 소유자 및 권한 설정
ls -al /etc/xinetd.conf
chown root /etc/xinetd.conf 
chmod 600 /etc/xinetd.conf 
 
# 파일이 존재하지 않으면
ls -alR /etc/xinetd.d/
chown -R root /etc/xinetd.d/ 
chmod -600 /etc/xinetd.d/ 
 
### /etc/syslog.conf 파일 소유자 및 권한 설정
ls -al /etc/rsyslog.conf
chown root /etc/rsyslog.conf
chmod 640 /etc/rsyslog.conf
 
### 정책에 따른 시스템 로깅 설정
vim /etc/rsyslog.conf
*.alert                                                 /dev/console
*.emerg   *
 
# rsyslog 서비스 재시작
systemctl restart rsyslog
 
 
### cron 파일 소유자 및 권한설정
ls -/usr/bin/crontab
chmod 750 /usr/bin/crontab
# crontab 파일 권한 확인
ls -al /usr/bin/crontab
 
# cron 관련 설정파일 소유자 및 권한 설정
chown root /etc/cron.deny
chmod 640 /etc/cron.deny
ls -al /etc/cron.deny
 
# 파일이 존재하면 아래 명령어 실행
ls /etc/cron.d/
chown root /etc/cron.d/cron.allow
chmod 640 /etc/cron.d/cron.allow
chown root /etc/cron.d/cron.deny
chmod 640 /etc/cron.d/cron.deny
 
 
### FTP 계정 shell 제한
cat /etc/passwd
# passwd 파일 내 로그인 쉘 설정이 /bin/false 가 아닌 경우 보안 설정
usermod -/bin/false ftp
 
 
### at 파일 소유자 및 권한 설정
ls -/usr/bin/at
chmod 0750 /usr/bin/at
 
chown root /etc/at.allow
chmod 640 /etc/at.allow
chown root /etc/at.deny
chmod 640 /etc/at.deny
 
# 파일 권한 및 사용자 확인
ls -al /etc/at.allow
ls -al /etc/at.deny
 
 
### SSH, SFTP 로그 기록 설정(상)
※ SSH
#1. /etc/profile 파일에 아래 설정 수정 및 추가
vim /etc/profile
...
function logging
{
    stat="$?"
    cmd=$(history|tail -1)
    if [ "$cmd" != "$cmd_old" ]; then
    logger -p local1.notice "[2] STAT=$stat"
    logger -p local1.notice "[1] PID=$$, PWD=$PWD, CMD=$cmd"
    fi
    cmd_old=$cmd
}
trap logging DEBUG
 
#2. rsyslog.conf 파일에 아래 설정 추가
vim /etc/rsyslog.conf
...
local1.*                                                /var/log/secure
 
#3. 변경된 환경변수 적용
source /etc/profile
 
#4. rsyslog 서비스 재시작
systemctl restart rsyslog
 
 
# sshd_config 파일 내 sftp 설정에 "-f AUTHPRIV -l VERBOSE" 설정 추가
vim /etc/ssh/sshd_config
 
# shift + g 를 눌러 최하단으로 이동한다.
 
#Subsystem sftp /usr/libexec/openssh/sftp-server
# 아래와 같이 추가한다.
Subsystem sftp /bin/false
Match LocalPort 2222  
      ForceCommand internal-sftp -f AUTHPRIV -l VERBOSE
 
# sshd 서비스 재시작
systemctl restart sshd
 
### root 계정 원격 접속 제한(상)
/PermitRootLogin 으로 찾아서
PermitRootLogin no 로 변경한다.
 
# sshd 서비스 재시작
systemctl restart sshd
# 만약의 경우를 대비하여 콘솔창을 닫으면 안된다.
# sftp 로 root 접속하는 경우 접속이 안된다.
 

 

 

 

'Web 프로그램 > Web Security' 카테고리의 다른 글

HTML Purifier 사용법 예시  (0) 2023.02.28
remote IP address  (0) 2021.03.24
파일 다운로드 공격 방지  (0) 2019.07.05
파일 업로드 공격 방지  (0) 2019.06.21
Cross-Site Scripting (XSS) 방지  (0) 2019.06.20
블로그 이미지

Link2Me

,