본문 바로가기
Linux 보안

리눅스 보안 5

by Mostlove 2025. 3. 12.
728x90
반응형

🛡 Suricata 개요 및 카드 번호 감지 활용

1️⃣ Suricata란?
Suricata는 Snort의 업그레이드된 버전으로, 침입 탐지 시스템(IDS) 및 침입 방지 시스템(IPS) 기능을 수행하는 강력한 네트워크 보안 도구입니다.

Snort 룰을 그대로 사용할 수 있으며, 추가적으로 멀티스레딩 지원, DPI(Deep Packet Inspection), 파일 추출 기능 등을 제공합니다.


2️⃣ 특정 모듈 체크 및 정규표현식 활용
Suricata는 외부에서 특정 모듈을 사용하는지 감지할 수 있으며, **정규표현식(PCRE)**을 활용하여 특정 패턴을 탐지할 수 있습니다.

💳 예제: 신용카드 번호 탐지 (MasterCard, Amex 등)

  • MasterCard 번호 감지 (예: 5123-4567-8901-2345)
  • American Express(Amex) 번호 감지 (예: 3712-345678-90123)

📌 Suricata 룰 예시 (Snort 룰과 동일하게 사용 가능)

# MasterCard 번호 탐지
alert tcp any any -> any any (pcre:"/5\d{3}(\s|-)?\d{4}(\s|-)?\d{4}(\s|-)?\d{4}/"; 
msg:"MasterCard number detected in clear text"; 
content:"mastercard"; nocase; 
sid:9000001; rev:1;)

# Amex 번호 탐지
alert tcp any any -> any any (pcre:"/3\d{3}(\s|-)?\d{6}(\s|-)?\d{5}/"; 
msg:"American Express card number detected in clear text"; 
content:"amex"; nocase; 
sid:9000003; rev:1;)

📌 설명:

  • pcre:"/정규표현식/" → 특정 패턴의 카드 번호 탐지
  • content:"mastercard" → "mastercard"라는 단어가 포함된 경우 감지
  • sid:9000001 → 룰 ID
  • rev:1 → 룰 버전

이러한 방법을 통해 네트워크 트래픽에서 특정 패턴을 가진 민감한 데이터를 탐지 및 차단할 수 있습니다. 🚀

🛡 DenyHosts 개요 및 설정 방법

1️⃣ DenyHosts란?
DenyHosts는 Fail2Ban과 유사한 IPS(Intrusion Prevention System) 도구로, SSH 로그인 시도 기록을 분석하여 무차별 대입 공격(Brute-force Attack)을 방지하는 기능을 제공합니다.

주요 기능

  • SSH 로그인 실패 횟수를 기반으로 공격자를 차단 🚫
  • /etc/hosts.deny 파일을 이용해 악성 IP 차단
  • /etc/hosts.allow를 이용해 특정 IP만 허용

2️⃣ DenyHosts의 DDoS 방어 원리

  • 무차별 대입 공격 및 DDoS 공격을 방지하기 위해 허용할 IP만 지정하고 나머지는 차단
  • 서버의 /var/log/secure 또는 /var/log/auth.log 파일을 분석하여 이상한 IP를 감지
  • 감지된 악성 IP를 /etc/hosts.deny에 추가하여 차단

3️⃣ TCP Wrapper를 활용한 접근 제어

DenyHosts는 TCP Wrapper를 활용하여 네트워크 접근을 제어합니다.
🚀 설정 방법은 다음과 같습니다.

#### /etc/hosts.deny에서 모든 접속 기본 차단
ALL : ALL
####/etc/hosts.allow에서 필요한 서비스만 허용
httpd : ALL
sshd : 192.168.111.100   				# 특정 호스트 허용
sendmail : ALL EXCEPT 192.168.100.100   		# 특정 호스트만 차단
mysqld : 192.168.111.*   				# 특정 네트워크 허용

📌 설명:

  • 모든 호스트 기본 차단 후 필요한 서비스만 허용
  • sshd : 192.168.111.100 → 특정 IP만 SSH 접속 허용
  • sendmail : ALL EXCEPT 192.168.100.100 → 특정 IP만 Sendmail 차단
  • mysqld : 192.168.111.* → 특정 네트워크(192.168.111.0/24)에서만 MySQL 접속 허용

4️⃣ DenyHosts 설치 및 설정

####DenyHosts설치
sudo apt update && sudo apt install denyhosts 	#Ubuntu/Debian
duso yum install denyhosts 			#CentOS/RHEL
####설정 파일 수정 
sudo nano /etc/denyhosts.conf
####주요 설정 변경 
ini
DENY_THRESHOLD_INVALID = 5   			# 존재하지 않는 사용자로 5회 실패 시 차단
DENY_THRESHOLD_ROOT = 3      			# root 계정으로 3회 실패 시 차단
DENY_THRESHOLD_RESTRICTED = 4 			# 특정 계정에 대한 제한
####DenyHosts 서비스 재시작 및 활성화
sudo systemctl restart denyhosts
sudo systemctl enable denyhosts
sudo systemctl status denyhosts
####차단된 IP 확인
sudo cat /etc/hosts.deny

5️⃣ 결론

✅ DenyHosts는 SSH 공격을 방어하는 데 효과적이며,
✅ TCP Wrapper(/etc/hosts.allow & /etc/hosts.deny)와 함께 사용하면 DDoS 및 무차별 대입 공격 방어가 가능! 🚀

🔥 방화벽(ACL & iptables) 설정 개념 및 tail 명령어 활용


1️⃣ ACL(Access Control List) & iptables 개념

ACL(Access Control List)과 iptables는 네트워크 접근을 제어하는 역할을 합니다.
✅ 기본적으로 설정이 없으면 모든 접근이 허용되지만, 설정 후에는 원칙적으로 모든 접근이 차단됩니다.
이유:

  • ACL, iptables 등의 설정 파일에는 암묵적으로 deny any any(모든 접근 차단)가 적용
  • 따라서 **접근을 허용할 대상(IP, 포트, 프로토콜 등)**을 명시적으로 추가해야 함

2️⃣ ACL & iptables의 룰 구조

💡 구성 요소

  • 하나의 묶음(chain)INPUT, OUTPUT, FORWARD
  • 각 줄(entry)개별 규칙(rule)

iptables 예제

iptables -A INPUT -s 192.168.1.100 -j ACCEPT   # 특정 IP 허용
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # SSH 허용
iptables -A INPUT -j DROP                      # 모든 나머지 차단

📌 설명:
1️⃣ -A INPUT -s 192.168.1.100 -j ACCEPT → 192.168.1.100에서 오는 트래픽 허용
2️⃣ -A INPUT -p tcp --dport 22 -j ACCEPT → SSH(22번 포트) 허용
3️⃣ -A INPUT -j DROP → 나머지 모든 트래픽 차단 (암묵적 deny all 적용!)


3️⃣ tail 명령어 활용 (실시간 로그 확인)

####파일의 끝 10줄 확인 
tail /var/log/secure
####실시간 보안 로그 확인(-f 옵션 사용)
tail -f /var/log/secure

📌 설명:

  • /var/log/secure → 로그인 시도, SSH 접속 관련 로그 저장
  • tail -f → 파일이 변경될 때마다 실시간으로 출력
  • 보안 침입 여부를 실시간 모니터링할 때 유용

🛡 OSSEC (Open Source SECurity) 개요 및 활용


1️⃣ OSSEC이란?

OSSEC은 강력한 오픈 소스 IDS(침입 탐지 시스템) & IPS(침입 방지 시스템) 입니다.
✅ 그래픽 모드로 네트워크 노드들의 활동을 실시간으로 모니터링 가능 📊
HID(호스트 기반 침입 탐지) 기능을 제공하며, Ubuntu 20.04에서 원활히 실행 가능


2️⃣ OSSEC의 동작 방식

💡 에이전트 기반 구조

  • 각 네트워크 노드에 OSSEC 에이전트(agent)를 설치
  • 에이전트가 CPU, 사용자 정보, HDD, RAM 등의 리소스 데이터를 수집
  • OSSEC 서버로 정보를 전송하여 이상 징후 감지 및 대응

🔒 보안 기능

  • HIDS (Host Intrusion Detection System)로그 분석, 파일 무결성 체크
  • NIDS (Network Intrusion Detection System)네트워크 패킷 감지 기능 지원
  • IPS (Intrusion Prevention System)침입 차단 기능

3️⃣ OSSEC 설치 및 설정 (Ubuntu 20.04 기준)

####OSSEC설치
wget -qO - https://updates.atomicorp.com/installers/atomic | sudo bash
sudo apt install ossec-hids-server
####설정 파일 수정 
sudo nano /var/ossec/etc/ossec.conf
####주요 설정 옵션
<ossec_config>
  <global>
    <log_alert_level>3</log_alert_level>   	# 로그 경고 수준 설정
  </global>
  <remote>
    <connection>secure</connection>   		# 보안 연결 활성화
    <port>1514</port>   			# 에이전트와 통신할 포트
  </remote>
</ossec_config>
#####OSSEC서비스 실행	
sudo systemctl restart ossec
sudo ystemctl enable ossec
sudo systemctl status ossec
####에이전트 등록(클라이언트 에 설치 후 실행 )
sudo /var /ossec/bin/agent-auth -m <OSSEC_SERVER_IP>

📌 설명:

  • OSSEC_SERVER_IP → OSSEC 서버의 IP 주소
  • 등록 후 서버와 클라이언트 간 키 인증을 통해 보안 통신

4️⃣ OSSEC의 보안 메커니즘 & 적용 분야

보안 인증 & 키 기반 통신

  • 외부에서 무단으로 가입되지 않도록 보안 키 기반 인증 적용
  • 하둡(Hadoop)의 Name Node & Data Node,
    쿠버네티스(Kubernetes) & 도커(Docker) 노드 간 통신과 유사한 방식

활용 사례

  • 기업 내 호스트 보안 시스템 구축
  • 클라우드 환경(Kubernetes, Docker)에서 IDS 적용
  • 금융, 의료 등 보안이 중요한 서버의 실시간 모니터링

🔥 ModSecurity - 웹 방화벽 (WAF) 개요


1️⃣ ModSecurity란?

웹 애플리케이션 방화벽(WAF)로 보안 침해 탐지 & 차단
웹 서버(Apache, Nginx, IIS)에서 동작하며, SQL Injection, XSS, DDoS 공격 방어
기본 내장된 룰 외에도 한국정보보호진흥원(KISA)에서 제공하는 룰 다운로드 가능


2️⃣ ModSecurity의 주요 기능

🔍 웹 보안

  • SQL Injection, XSS(크로스 사이트 스크립팅) 공격 탐지 및 차단
  • 악성 요청 필터링 및 우회 공격 방어

🛡 DDoS 방어

  • 비정상적인 트래픽 감지 후 차단
  • 요청 횟수 제한을 통해 과부하 방지

📜 로그 & 감사 기능

  • 공격 시도를 로그로 저장하여 분석 가능
  • 관리자에게 실시간 알림 제공

3️⃣ ModSecurity 설치 및 설정 (Ubuntu 20.04 + Apache2 기준)

#### ModSecurity 설치 
sudo apt update
sudo apt install libapache2-mod-security2
####설치 확인
sudo apachectl -M | grep security2
####ModSecurity 활성화
sudo  cp /etc/modsecurtiy/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
####설정 변경
SecRuleEngine On			#보안 룰 활성화
####Apache화 연동 후 재시작
sudo systemctl restart apache2
####ModSecurity 테스트
curl http://localhost/?id='or1=1 --'

→ SQL Injection 시도가 차단되었는지 확인


4️⃣ ModSecurity 활용 사례

웹 보안 강화

  • SQL Injection, XSS 등 웹 취약점 공격 실시간 차단
  • API 보안 강화OWASP Top 10 취약점 보호

DDoS 및 봇 차단

  • 비정상적인 요청 감지 & 차단
  • 로그 분석을 통한 침입 패턴 탐지

보안 감사 및 규제 준수

  • 기업 보안 정책 적용 & 준수
  • 실시간 보안 로깅 및 포렌식 활용 가능

🔥 SQL Injection 공격 개요 & 대응 방법


1️⃣ SQL Injection이란?

SQL 구문을 조작하여 DB를 침투하는 공격 기법
취약한 로그인 시스템, 검색창, 입력 필드를 이용하여 우회 접근
Error-Based, Blind, Union-Based 등 다양한 방식이 존재


2️⃣ SQL Injection 공격 예제

✔ 1) 기본적인 SQL Injection

SELECT * FROM users WHERE username = 'admin' AND password = '1234';

📌 위 쿼리는 로그인 시 입력한 username과 password가 일치하는지 확인하는 기본적인 SQL 문이다.
📌 하지만, 아래와 같은 값을 입력하면 어떻게 될까?

💀 공격 코드 (Error-Based Injection)

Username: admin Password: ' OR '1'='1' --

➡️ 실행되는 SQL 문:

SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1' --';

➡️ '1'='1' 은 항상 참(True)이므로 모든 계정이 인증됨 → 불법 로그인 성공


✔ 2) 데이터 탈취 (Union-Based Injection)

💀 공격 코드

' UNION SELECT username, password FROM users --

➡️ DB에서 저장된 계정 정보가 유출될 수 있음


3️⃣ SQL Injection 대응 방법 (필수 보안 조치)

(1) 입력값 검증 및 필터링

사용자의 입력값을 철저히 검증하여 SQL 구문을 조작할 수 없도록 해야 한다.

$username = mysqli_real_escape_string($conn, $_POST['username']); $password = mysqli_real_escape_string($conn, $_POST['password']);

📌 mysqli_real_escape_string() 을 사용하면 입력값에 포함된 특수문자를 필터링하여 SQL Injection을 방지할 수 있다.


(2) Prepared Statement (바인딩 쿼리) 사용

💡 가장 강력한 SQL Injection 방어 방법
변수를 직접 SQL에 넣지 않고, ?(플레이스홀더)를 사용하여 입력값을 안전하게 처리한다.

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $username, $password); $stmt->execute();

📌 SQL 구문과 입력값을 분리하여 공격을 원천 차단


(3) 최소 권한 원칙 적용 (Least Privilege)

  • DB 계정에 최소한의 권한만 부여하여, 침해 시 피해를 줄인다.
  • root 계정을 직접 사용하지 않고, 읽기/쓰기 전용 계정을 따로 생성하여 사용

(4) 웹 애플리케이션 방화벽(WAF) 활용

💡 ModSecurity 같은 WAF(Web Application Firewall)를 활용하여 SQL Injection 패턴을 차단

  • OWASP ModSecurity Core Rule Set(CRS) 적용하여 SQL Injection 필터링 가능
  • 로그 모니터링을 통해 비정상적인 트래픽 감지 & 차단

🔥 네트워크 보안 및 관리 도구 정리

보안이 중요한 환경에서는 네트워크를 보호하고 모니터링하는 다양한 도구들이 필요하다. 이번에는 대표적인 네트워크 보안 및 관리 도구들을 NAC(Network Access Control), 로그 모니터링, 방화벽 솔루션을 중심으로 정리해보자. 🚀


✅ 1️⃣ 네트워크 접근 제어 (NAC) 도구

🔹 PacketFence 🏢

✔ 네트워크에 연결되는 모든 장치를 제어하는 NAC(Network Access Control) 도구
✔ 유/무선 네트워크에서 접속 기기 인증 및 접근 제어 수행
주요 기능:

  • 네트워크 장비(Switch, Access Point)와 연동하여 사용자를 VLAN 별로 분류
  • Snort, MySQL, Apache, PHP, Perl 등의 패키지가 필요
    ✔ 대규모 기업에서도 VLAN을 활용한 보안 정책 적용 가능
    중소기업용 대안: Untangle

✅ 2️⃣ 네트워크 로그 모니터링 및 분석

🔹 ELK Stack (ElasticSearch + Logstash + Kibana) 📊

✔ 네트워크 및 시스템 로그를 수집, 분석, 시각화하는 도구
구성 요소:

  • Logstash → 로그 수집 및 필터링
  • ElasticSearch → 로그 저장 및 검색
  • Kibana → 대시보드 시각화
  • Filebeat → 클라이언트 로그 전송
    활용 사례:
  • 보안 침입 탐지 (SIEM, Security Information and Event Management)
  • 시스템 장애 분석 및 네트워크 성능 모니터링
  • 클라우드 환경에서도 광범위하게 사용됨

✅ 3️⃣ 방화벽 및 침입 방지 솔루션 (UTM/Firewall/IDS/IPS)

🔹 Endian Firewall (EFW) 🔥

✔ 강력한 오픈소스 방화벽 + UTM(Unified Threat Management) 솔루션
주요 기능:

  • 침입 감지(IDS), 포트 스캔 감지
  • DoS/DDoS 방어, ICMP Flood 방어
  • Spoofing(스푸핑) 방어

🔹 Untangle 🏢

✔ 중소기업에서 사용하기 적합한 가벼운 방화벽 솔루션
기능:

  • VPN, Web 필터링, IDS/IPS, QoS(트래픽 제어)

🔹 ASG (Astaro Security Gateway) 🔐

Linux 기반의 소프트웨어 방화벽
구성 예시:

  • eth0 (VMnet0, Bridged) → 외부 인터넷(WAN)
  • eth1 (VMnet8, NAT) → 내부 관리용 네트워크
  • eth2 (VMnet1, Host-only) → 내부 네트워크(LAN)
    주요 기능:
  • 방화벽(Firewall) + VPN + IPS + 웹 필터링 통합 보안
  • 기업 환경에서 강력한 네트워크 보안 정책 적용 가능
반응형

'Linux 보안' 카테고리의 다른 글

리눅스 보안 5일차 핵심요약본  (0) 2025.03.12
리눅스 보안 4일차 핵심요약본  (0) 2025.03.11
리눅스 보안 4  (0) 2025.03.11
리눅스 보안 3  (1) 2025.03.10
리눅스 보안 2  (0) 2025.03.07