라벨이 서버보안인 게시물 표시

리눅스(우분투)에서 ufw로 간단하게 방화벽 설정하기

이미지
오늘은 리눅스 서버를 운영하거나 개발하는 분들에게 필수적인 방화벽 설정에 대해서 알아보려고 합니다. 보안을 강화하고, 방문을 원하는 서비스만 접근할 수 있도록 제어하는 역할을 하는 방화벽을 설정하는 것은 매우 중요합니다. 그러나 방화벽을 설정하는 것은 리눅스에서는 꽤 복잡하고 어려울 수 있습니다. 이에 따라 이번에는 우분투에서 방화벽을 쉽게 설정할 수 있는 "ufw"라는 도구를 소개하고자 합니다. 이 도구는 파이썬으로 개발된 ufw는 iptables를 기반으로 netfilter 방화벽을 관리할 수 있으며, 쉽게 CLI(Command Line Interface)를 이용하여 방화벽을 설정할 수 있습니다. 이번 포스트에서는 ufw의 설치부터 활성화, 비활성화, 규칙 설정 및 삭제 등에 대해 자세히 알아보겠습니다. 부담없이 따라와 주세요. 포스트 목차 이 포스트는 다음과 같은 내용을 포함하고 있습니다. ufw 설치하기 ufw 활성화 및 비활성화 ufw 기본 정책 설정하기 ufw 규칙 설정하기 ufw 규칙 삭제하기 ufw 초기화하기 ufw 로그 확인하기 ufw 삭제하기 ufw 설치하기 우분투 18.04 LTS 이후 버전에서는 기본적으로 ufw가 설치되어 있습니다. 만약 설치되어 있지 않다면 다음 명령어로 설치할 수 있습니다. 1 2 sudo apt update sudo apt install ufw cs ufw 활성화 및 비활성화 ufw는 기본적으로 비활성화 상태이므로 다음 명령어로 활성화할 수 있습니다. 1 sudo ufw enable cs 만약 ufw를 비활성화하고 싶다면 다음 명령어를 사용합니다. 1 sudo ufw disable cs ufw의 상태를 확인하려면 다음 명령어를 사용합니다. 1 sudo ufw status verbose cs ufw 기본 정책 설정하기 ufw는 들어오는(incoming) 패킷과 나가는(outgoing) 패킷에 대한 기본 정책을 설정할 수 있습니다.  기본적으로 들어오는 패킷은 거부(deny), 나가는 패킷은 허용(al

Apache2 VirtualHost 설정 스크립트 공유

이미지
Apache2 설정하기 - Virtualhost 자동설정 테스트서버로 이용하던 서버가 복구하기 어려울만큼 지저분해져서 아침에 새로 세팅했다. 간단한 테스트 목적이라 무료로 인스턴스를 생성할 수 있는 오라클 클라우드를 이용중인데 이에 대한 것은 다음에 포스팅을 하도록 하겠다. 새로 세팅하면서 기존에 테스트하던 Virtualhost를 새로 작성해야 했는데, 백업파일도 지워서 그런지 좀 귀찮더라. 그래서 내친김에 Virtualhost를 설정하는 스크립트를 만들었다. 그래서 virtualhost(가상호스트)가 뭔데? VirtualHost의 개념 VirtualHost란 하나의 웹 서버에서 여러 개의 웹 사이트를 운영할 수 있도록 하는 기능이다. VirtualHost는 보통 ServerName을 기준으로 분류를 한다. (가끔 포트로 구분하긴 하는데 많이 쓰이는 방법은 아니다.) ServerName VirtualHost는 클라이언트의 요청에 포함된 Host 헤더를 보고 어떤 웹 사이트에 접속할 것인지를 결정한다. 예를 들어, www.example.com과 www.example.net이라는 두 개의 도메인을 하나의 웹 서버에서 운영하고 싶다면, 다음과 같이 VirtualHost 태그를 사용하여 ServerName마다 설정할 수 있다. 1 2 3 4 5 6 7 8 9 <VirtualHost *:80>   ServerName www.example.com   # 여기에 www.example.com에 대한 설정을 작성합니다. </VirtualHost>   <VirtualHost *:80>   ServerName www.example.net   # 여기에 www.example.net에 대한 설정을 작성합니다. </VirtualHost> cs 이 정도면 대충 어떤건지 감이 잡히리라 생각한다. 자주 쓰이는 VirtualHost의 설정 내용 위 예시에서 생략한 설정내용 중 자주 쓰이는 것은 아래와 같다. 1 2 3 4 5 ServerName: 서

Apache 서버에서 HTTP를 HTTPS로 리다이렉트 시키는 방법

이미지
HTTP를 HTTPS로 자동 변경하기 얼마 전, certbot으로 무료 SSL 인증서를 발급하는 포스팅을 한 적이 있다. ( 포스팅 보러가기 ) 지난 포스팅에서 제시한 방법대로 진행했다면 아마 apache의 Rewrite를 이용하여 자동으로  'http to https' 설정이 되어 있을 것이다. 하지만 구버전의 certbot을 이용하였거나, certbot SSL 인증서를 이용하지 않을 경우에는 직접 설정해주어야 하는데 이번 포스팅에서는 Apache 서버에서 HTTP를 HTTPS로 리다이렉트 시키는 방법에 대해 알아보겠다. 이론공부 : HTTP와 HTTPS의 차이점과 장점 HTTP는 웹 브라우저와 웹 서버가 통신하는 데 사용되는 프로토콜인데, 이는 보안이 취약하기 때문에 데이터가 가로채어질 우려가 있다. 그래서 HTTPS라는 프로토콜이 등장했는데, HTTPS는 HTTP를 암호화하여 보안을 강화하기 위해 TLS/SSL 기술을 적용한 것이다. HTTPS 사용시, 데이터가 양방향으로 암호화되어 중간에 민감한 정보가 유출될 위험이 줄어든다. 또한 대부분의 웹 브라우저에서 HTTPS 사이트가 안전하다는 것을 보여주고 있다. HTTPS를 사용하면 웹 페이지 로딩 속도를 높여주는 HTTP/2라는 성능 개선된 프로토콜을 사용할 수 있으며, 구글은 HTTPS 사이트를 우대한다. (검색 순위에 영향을 줌) Apache 서버에서 리다이렉트 시키기 리다이렉트란 한 URL에서 다른 URL로 자동으로 이동시키는 것으로 Apache 서버에서 HTTP를 HTTPS로 자동 리다이렉트시키는 방법은 여러가지가 있다. 가장 보편적인 방법은, 가상 호스트 설정 파일에 Redirect 명령어를 사용하는 것인데, 이 방법은 가상 호스트 설정 파일에서 다음과 같은 코드를 작성하면 된다. virtualhost파일에 설정하기 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent

원격데스크톱(RDP)에 대한 무차별 패스워드 대입 공격 차단하기

이미지
원격데스크톱(RDP)에 대한 무차별 패스워드 대입 공격 차단하기 관리하고 있는 서버 중 윈도우서버가 있는데 얼마전부터 원격데스크톱(RDP)에 대한 무작위 패스워드 대입 공격이 들어오기 시작했다. 문제는 이 공격이 지속되면서 서버 리소스를 과도하게 차지하기 시작했고, 이로 인해 서비스 차질이 발생했다는 것이다. 지금은 조치를 취해서 괜찮아졌지만 몇일동안 고생을 했다. 그럼 이 RDP 공격이란 무엇일까? RDP 공격이란? RDP 공격이란 인터넷에 노출된 RDP 서비스에 대해 패스워드를 무차별적으로 시도하거나 취약점을 이용하여 접속하는 공격이다. 일단 접속에 성공하면, 공격자는 해당 컴퓨터의 제어권을 얻고 다른 컴퓨터나 네트워크로 침투할 수 있다. RDP 공격은 샘샘(SamSam), 크립토월(CryptoWall), 리브오프(Revil) 등 여러 랜섬웨어 그룹에 의해 사용된 바 있다. (이때 약 7,000대의 윈도우 PC와 1,900대의 서버가 감염됐다.) RDP 공격을 차단하는 방법 RDP 공격을 차단하기 위해서는 다음과 같은 방법을 적용할 수 있다. 패스워드를 복잡하고 강력하게 설정 RDP의 기본 포트인 3389번을 다른 포트로 변경 (방화벽에서 변경한 RDP 포트를 인바운드 규칙으로 허용) 파워쉘 스크립트를 이용하여 보안 이벤트 로그에서 공격 IP를 추출하고 차단 (이번 포스팅에서 진행할 방법) 이처럼 RDP 공격을 차단하기 위해서는 여러 가지 방법이 있지만, 이번 포스팅에서는 파워쉘 스크립트를 이용하여 간단하게 구현해보도록 한다. 파워쉘은 윈도우에서 사용할 수 있는 스크립팅 언어와 셸 환경으로, 시스템 관리나 자동화 작업에 유용하다. 보통 기본설치 되어 있기 때문에 따로 프로그램을 설치하거나 세팅 할 필요가 없어서 윈도우 서버에서 자주 사용한다. 파워쉘 스크립트는 .ps1 확장자로 저장하고 실행할 수 있으며, 관리자 권한이 필요할 수 있다. 파워쉘 스크립트로 RDP 공격차단 스크립트 만들기 1. 로그 파일 생성 우선 RDP 접속 시도에 대한 로그 파일을 생성하