42Seoul

Born2beroot - UFW, SSH, Sudo

millar 2023. 5. 17. 16:08

 

개요

 두 번째는 UFW, SSH, Sudo입니다.


 방화벽 (Firewall) - UFW (Uncomplicated Firewall)

 네트워크에서 트래픽을 제어하는 프로그램 또는 장치입니다. 침입을 차단하는 장치 정도로만 생각할 수 있지만, 유출되는 트래픽도 막아낼 수 있습니다. 오가는 트래픽을 모니터링 하면서, 허용되지 않은 패킷을 차단합니다. 방화벽은 호스트 방화벽네트워크 방화벽으로 유형이 나뉩니다.

  • 호스트 방화벽 : 한 대의 컴퓨터 또는 호스트를 보호하며, 일반적으로 가정용 또는 개인용 장치에 배포되어 운영체제와 함께 패키지로 제공. 각 장치에 개별적으로 설치하고 유지해야 한다는 사실을 고려할 때 확장성의 가능성은 제한적입니다.
  • 네트워크 방화벽 : 분계 지점을 통과하는 모든 장치와 트래픽을 보호하여 광범위한 확장성을 지원합니다. 데이터 패킷이 네트워크 관리자 혹은 보안 팀이 생성한 규칙, 기준에 충족하지 못하는 경우 방화벽은 해당 트래픽을 거부하고 차단합니다.
  • 트래픽 : 네트워크를 통해 전송되는 데이터의 양 또는 이동량. 내부로 들어오는 데이터는 인바운드 트래픽, 외부로 향하는 데이터는 아웃바운드 트래픽.
  • 패킷 : 데이터는 전송될 때 작은 조각으로 나뉘어 전송됩니다. 수신자는 패킷을 받아서 원래의 데이터로 재조립합니다. 이런 방식을 사용하는 이유는 대용량의 데이터를 효율적으로 처리할 수 있기 때문이라고 합니다. 패킷에는 발신지와 수신지 IP주소 , 포트 번호 등이 포함되어 있습니다.

 우리가 설치할 UFW는 데비안 계열 및 다양한 리눅스 환경에서 작동하는, 사용하기 쉬운 방화벽 관리 프로그램입니다. 몇 가지 명령줄을 통해 쉽게 방화벽을 구성하고 실행할 수 있습니다.

 

SSH (Secure SHell)

 네트워크상에서 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 보안 프로토콜입니다. SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보입니다.

  • 프로토콜 : 통신 규약, 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계입니다.
  • TCP : 연결 지향적인 프로토콜로, 전송한 데이터가 신뢰성 있게 전달 되어야 하는 상황에 사용합니다. 데이터를 나누어서 보내면서 수신자가 받은 데이터를 계속 확인하기 때문에 속도가 느리며 안정적인 데이터 전송 오버헤드 발생 가능성이 있습니다.
  • UDP : 비연결형 프로토콜로, 데이터 전송속도가 빠릅니다. 데이터 손실이나 손상이 발생할 수 있고 스트리밍에 적합합니다. 오버헤드는 적습니다.
  • 프로토콜 오버헤드 : 처리 시간 및 메모리등이 추가적으로 사용되는 현상을 말한다. 네트워크를 통해 데이터를 전송할 때 데이터와 함께 전송되어야하는 추가 정보가 존재한다. TCP의 경우 UDP와 다르게 올바른 대상에게 전송되어야 하고 도착 후에도 확인하므로 더 빈번히 발생할 수 밖에 없다.

1. 대칭키 암호화 : 동일한 키를 사용하여 데이터를 암호화, 복호화 합니다. 주로 AES를 사용합니다.

2. 비대칭키 암호화 : 공개키와 개인키를 사용하여 데이터를 암호화하고 복호화하는 기법입니다. RSADSA알고리즘을 사용합니다.

  • AES(Adevanced Encryption Standard) : 블록 암호화 방식으로, 데이터를 고정 길이의 블록으로 나누어 암호화하고 복호화 합니다.
  • RSA(Rivest, Shamir, Adleman) : 공개키 암호화 알고리즘으로, 데이터의 인증과 키 교환에 사용됩니다.
  • DSA(digital Signature Algorithm) : 전자 서명에 사용되는 알고리즘입니다. RSA와 마찬가지로 공개키 암호화 알고리즘입니다.

 

Sudo(Super user do)

 sudo는 리눅스와 유닉스 시스템에서 사용자가 특정 명령을 루트 권한 또는 다른 사용자의 권한으로 실행할 수 있도록 허용하는 명령어입니다. 일시적으로 슈퍼 유저 또는 다른 사용자의 권한을 얻어 특정 작업을 수행할 수 있습니다. sudo 명령어를 그냥 사용하면 관리자의 권한을 얻지만 유저를 명시하여 명령어를 실행하면 해당 유저의 권한을 얻을 수 있습니다.

 

 sudo명령어를 사용하면 관리자 계정을 알지 못하더라도 일반 사용자가 시스템 관리 작업을 수행할 수 있습니다. 때문에, 사용자의 편의성과 생산성을 향상시키고 사용자별로 특정 명령어를 실행할 수 있는 권한을 제어할 수도 있습니다. 그러나 어떻게든 악의적인 동작으로 인한 시스템 손상, 실수가 발생할 수 있기 때문에 sudo명령어를 사용하면 누가 어떤 명령어를 언제 실행했는지 기록되는 로그 파일이 존재합니다. 따라서 사후 처리가 가능합니다.