리눅스명령어 / / 2024. 8. 1. 12:57

리눅스 보안 명령어

728x90
반응형

리눅스는 안정성과 보안성이 뛰어나 많은 서버와 네트워크 환경에서 널리 사용됩니다. 하지만 기본적인 보안 조치를 취하지 않으면 잠재적인 보안 위협에 노출될 수 있습니다. 이번 포스트에서는 리눅스에서 사용하는 다양한 보안 명령어를 소개하고, 이를 통해 시스템의 안전성을 높이는 방법을 알아보겠습니다.


파일 권한 설정

리눅스 시스템에서 파일과 디렉토리의 접근 권한을 설정하는 것은 보안의 기본 중 하나입니다. 이를 위해 chmod, chown, chgrp 명령어를 사용할 수 있습니다.

chmod 명령어

chmod는 파일의 권한을 변경하는 데 사용됩니다. 파일의 소유자(owner), 그룹(group), 기타 사용자(other)에 대한 읽기(read), 쓰기(write), 실행(execute) 권한을 설정할 수 있습니다.

chmod 755 filename

 

위 명령어는 소유자에게 읽기, 쓰기, 실행 권한을, 그룹과 기타 사용자에게는 읽기와 실행 권한을 부여합니다.

주요 옵션:

  • -R : 디렉토리와 그 안의 모든 파일에 대해 재귀적으로 권한을 변경합니다.
  • u : 소유자(owner)
  • g : 그룹(group)
  • o : 기타 사용자(other)
  • a : 모든 사용자(all)
chmod -R 755 directory_name
 

위 명령어는 directory_name과 그 안의 모든 파일과 디렉토리에 대해 권한을 재귀적으로 변경합니다.

chown 명령어

chown은 파일이나 디렉토리의 소유자를 변경하는 데 사용됩니다.

chown user:group filename
 

위 명령어는 해당 파일의 소유자를 user로, 그룹을 group으로 변경합니다.

주요 옵션:

  • -R : 디렉토리와 그 안의 모든 파일에 대해 재귀적으로 소유자를 변경합니다.
  • --reference : 다른 파일의 소유자와 그룹을 참조하여 변경합니다.
chown -R user:group directory_name
 

위 명령어는 directory_name과 그 안의 모든 파일과 디렉토리에 대해 소유자를 재귀적으로 변경합니다.

chgrp 명령어

chgrp는 파일이나 디렉토리의 그룹 소유자를 변경하는 데 사용됩니다.

chgrp group filename
 

위 명령어는 해당 파일의 그룹 소유자를 group으로 변경합니다.

주요 옵션:

  • -R : 디렉토리와 그 안의 모든 파일에 대해 재귀적으로 그룹 소유자를 변경합니다.
chgrp -R group directory_name
 

위 명령어는 directory_name과 그 안의 모든 파일과 디렉토리에 대해 그룹 소유자를 재귀적으로 변경합니다.


사용자 관리

리눅스 시스템에서 사용자와 그룹을 효과적으로 관리하는 것은 보안 유지에 중요합니다. 이를 위해 useradd, usermod, userdel 등의 명령어를 사용할 수 있습니다.

useradd 명령어

useradd는 새로운 사용자를 생성하는 데 사용됩니다.

useradd newuser
 

위 명령어는 newuser라는 새 사용자를 생성합니다.

주요 옵션:

  • -d : 사용자의 홈 디렉토리를 지정합니다.
  • -m : 홈 디렉토리를 생성합니다.
  • -s : 사용자의 기본 셸을 지정합니다.
  • -G : 추가 그룹을 지정합니다.
useradd -m -d /home/newuser -s /bin/bash -G sudo newuser

 

위 명령어는 newuser라는 사용자를 생성하고, 홈 디렉토리 /home/newuser를 만들며, 기본 셸을 /bin/bash로 지정하고, sudo 그룹에 추가합니다.

usermod 명령어

usermod는 기존 사용자의 속성을 변경하는 데 사용됩니다.

 
usermod -aG groupname username
 

위 명령어는 username 사용자를 groupname 그룹에 추가합니다.

주요 옵션:

  • -a : 그룹 추가 시 기존 그룹에서 사용자를 제거하지 않고 추가합니다. -G 옵션과 함께 사용됩니다.
  • -d : 사용자의 홈 디렉토리를 변경합니다.
  • -s : 사용자의 기본 셸을 변경합니다.
  • -l : 사용자의 로그인 이름을 변경합니다.
  • -L : 사용자의 계정을 잠급니다.
  • -U : 사용자의 계정을 잠금 해제합니다.
 
usermod -d /newhome/username -m username
 

위 명령어는 username 사용자의 홈 디렉토리를 /newhome/username으로 변경하고, 기존 홈 디렉토리의 내용을 새로운 디렉토리로 이동합니다.

userdel 명령어

userdel은 사용자를 삭제하는 데 사용됩니다.

 
userdel username
 

위 명령어는 username 사용자를 시스템에서 삭제합니다.

주요 옵션:

  • -r : 사용자의 홈 디렉토리와 메일 스풀을 함께 삭제합니다.
userdel -r username
 

위 명령어는 username 사용자를 삭제하고, 해당 사용자의 홈 디렉토리와 메일 스풀도 함께 삭제합니다.


로그 분석

리눅스 시스템의 로그 파일을 분석하여 보안 위협을 감지하고 대응할 수 있습니다. 주요 로그 파일은 /var/log 디렉토리에 위치하며, syslog, auth.log, secure 등이 있습니다.

tail 명령어

tail은 로그 파일의 마지막 부분을 출력하는 데 사용됩니다.

tail -f /var/log/auth.log
 

위 명령어는 auth.log 파일의 최신 로그를 실시간으로 출력합니다.

주요 옵션:

  • -f : 파일의 마지막 부분을 계속 출력하며, 파일이 갱신될 때마다 새로운 내용을 출력합니다.
  • -n : 출력할 라인의 개수를 지정합니다.
tail -n 50 /var/log/syslog
 

위 명령어는 syslog 파일의 마지막 50줄을 출력합니다.

grep 명령어

grep은 특정 패턴을 검색하는 데 사용됩니다.

grep "Failed password" /var/log/auth.log
 

위 명령어는 auth.log 파일에서 "Failed password" 문자열을 포함한 모든 라인을 검색합니다.

주요 옵션:

  • -i : 대소문자를 구분하지 않고 검색합니다.
  • -r : 디렉토리를 재귀적으로 검색합니다.
  • -v : 패턴과 일치하지 않는 라인만 출력합니다.
  • -A : 매칭된 라인 이후의 라인도 함께 출력합니다.
  • -B : 매칭된 라인 이전의 라인도 함께 출력합니다.
grep -i "error" /var/log/syslog
 

위 명령어는 syslog 파일에서 "error" 문자열을 대소문자 구분 없이 검색합니다.


방화벽 설정

리눅스에서 방화벽을 설정하여 외부로부터의 불필요한 접근을 차단할 수 있습니다. iptables와 firewalld가 대표적인 방화벽 관리 도구입니다.

iptables 명령어

iptables는 패킷 필터링 및 네트워크 주소 변환을 위한 방화벽 도구입니다.

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 

위 명령어는 22번 포트(SSH)에 대한 TCP 연결을 허용합니다.

주요 옵션:

  • -A : 새로운 규칙을 체인의 끝에 추가합니다.
  • -D : 체인에서 규칙을 삭제합니다.
  • -I : 체인의 특정 위치에 규칙을 삽입합니다.
  • -L : 체인의 규칙 목록을 출력합니다.
  • -F : 체인의 모든 규칙을 삭제합니다.
  • -p : 프로토콜을 지정합니다.
  • --dport : 대상 포트를 지정합니다.
  • -j : 패킷의 처리를 결정합니다(ACCEPT, DROP 등).
iptables -L
 

위 명령어는 현재 설정된 방화벽 규칙을 출력합니다.

firewall-cmd 명령어

firewall-cmd는 동적 방화벽 관리 도구로, zone 개념을 사용합니다.

firewall-cmd --permanent --add-service=http firewall-cmd --reload
 

위 명령어는 HTTP 서비스를 영구적으로 허용하고, 방화벽 설정을 재시작합니다.

주요 옵션:

  • --permanent : 설정을 영구적으로 저장합니다.
  • --add-service : 특정 서비스를 허용합니다.
  • --remove-service : 특정 서비스를 차단합니다.
  • --zone : 설정을 적용할 zone을 지정합니다.
  • --list-all : 모든 설정을 출력합니다.
  • --reload : 방화벽 설정을 재시작합니다.
firewall-cmd --zone=public --list-all
 

위 명령어는 public zone의 모든 설정을 출력합니다.


암호화

리눅스 시스템에서 데이터의 기밀성을 유지하기 위해 암호화를 사용할 수 있습니다. gpg와 openssl이 대표적인 암호화 도구입니다.

gpg 명령어

gpg는 파일을 암호화하고 서명하는 데 사용됩니다.

gpg -c filename
 

위 명령어는 filename을 대칭 키로 암호화합니다.

주요 옵션:

  • -c : 대칭 키 암호화를 사용합니다.
  • --decrypt : 암호화된 파일을 해독합니다.
  • --sign : 파일에 디지털 서명을 추가합니다.
  • --verify : 디지털 서명을 검증합니다.
  • -o : 출력 파일을 지정합니다.
gpg --decrypt filename.gpg
 

위 명령어는 filename.gpg 파일을 해독합니다.

openssl 명령어

openssl은 SSL/TLS 암호화 도구로, 다양한 암호화 작업을 수행할 수 있습니다.

openssl enc -aes-256-cbc -in filename -out filename.enc
 

위 명령어는 filename을 AES-256 알고리즘으로 암호화하여 filename.enc로 저장합니다.

주요 옵션:

  • enc : 암호화 명령을 사용합니다.
  • -aes-256-cbc : AES-256-CBC 알고리즘을 사용합니다.
  • -in : 입력 파일을 지정합니다.
  • -out : 출력 파일을 지정합니다.
  • -d : 암호화된 파일을 해독합니다.
  • -k : 암호화 키를 지정합니다.
openssl enc -d -aes-256-cbc -in filename.enc -out filename.dec
 

위 명령어는 filename.enc 파일을 해독하여 filename.dec로 저장합니다.


결론

리눅스 시스템의 보안을 강화하기 위해 다양한 명령어를 사용할 수 있습니다. 파일 권한 설정, 사용자 관리, 로그 분석, 방화벽 설정, 암호화 등을 통해 시스템의 안전성을 높일 수 있습니다.

728x90
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유