🛡 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 |