기본 원칙: Fail Safe, Safe Failure
시스템에 오류가 있어도 사용자나 시스템 사용에 피해가 없게 하는 것
기본원칙에 명시하지 않은 다른 서비스를 허용된다는 이면의 뜻이 있어 위험
수많은 서버 서비스의 인증일 모두 지정하기에는 어려움이 많음
시스템에 오류가 있어도 시스템은 안전해야 한다는 것
일반적으로 Fail Safe가 기본 원칙
위험,예상되는 위협에 의하여 자산에 발생할 가능성이 있는 손실의 기대치
자산의 가치 및 취약성과 위협 요소의 능력, 보호 대책의 효과 등에 의해 영향을 받음
위협, 자산에 손실을 발생시키는 직/간접적인 원인이나 행위
보안에 해를 끼치는 행동이나 사건
취약점, 위협에 의하여 손실이 발생하게 되는 자산의 약점(weakpoint)
기능명세, 설계 또는 구현 단계의 오류나 시동, 설치 또는 운용상의 문제점으로 인하여 정보 시스템이 지니게 되는 보안상 취약점
취약점이 중복되는 지점이 위험
네트워크 상의 특정 호스트에 설치하고 보안을 설정해서 모니터링과 보안을 적용시키는 도구
외부에서 내부의 특정 호스트의 서비스나 포트로 침입하는 것을 감지해서 막음
바이러스 월, 내부 네트워크에 proxy 나 mail relay 등을 통해서 내부 네트워크에서 바이러스 전파를 막아주며 스위치 장비 밖에 두는 내부 FireWall의 일종
네트워크 상의 침입을 알려주는 침입감지 시스템, 침입 여부만 알림
네트워크 상의 침입을 막아주는 침입예방 시스템, 침입이 있을 때 조치를 취함
침입 감지를 알리는 warn 에서 drop으로 설정을 변경할 경우 침입예방 시스템이 됨
종합적인 보안관리 시스템인 통합 보안관리
위협관리 도구들을 묶어 놓은 통합 위협관리
네트워크상의 노드 추가 등을 관리하는 접근관리
네트워크 카드가 하나 = In-Line : 노드의 네트워크 주소와 방화벽의 주소가 동일
Snort, Fail2Ban, Suricata, OSSEC, ModSecurity, PacketFence, ELK
네트워크 카드가 두 개 = Out-of-Path : 노드의 네트워크 주소가 방화벽의 주소와 다름
Linux FW, ASG, Untangle, Security Onion, FortiGate,Endian
+ Cloud Network Monitoring: Zabbix, MRTG, Cacti,Nagios, Ganglia
외부에서 침입을 모니터링해서 로그, 통보하는 도구
전문적인 모니터링 도구들 중에는 모니터링, 네트워크 트래픽 감시와 패킷 분석
악성 코드 패턴과 유사한 형태의 패킷 등을 확인하여 침입자의 작업을 유추
활동을 감시하는 시스템에는 미리 정의된 규칙(rule)에 의해 정보 분석, 실제 침입 유무 판단
IDS(침입감지)/IPS(침입예방)의 역할, 외부로부터의 침입여부를 빠르게 알림
sniffer mode, logger mode, IDS/IPS mode로 동작
Snort 제대로 작동되려면 유효한 침투에 대한 룰세트(Signature Based)DB가 유지가 되어야함 -> rule.conf 파일 설정
HOME_NET 설정 후 rules 추가
rule 설정: any 대신 port 번호를 지정해도 되고, sid는 반드시 설정
snort restart 후 eth0를 통해서 snort 사용
IPS로 사용되는데 서버 서비스를 실행중인 서버에 설치하여 외부에서 의심스런 침투를 미리 막아서 보안을 강화시키는 도구
fail2ban-client는fail2ban-server의 jail 설정 등을 확인 시키는 콘솔 명령어
jail 설정에 따라 서버머신의 로그 파일을 모니터링 해서 서버에 의심스런 호스트 접근 감지 및 차단 서버나 방화벽에 설정해서 사용하는 로그 기반 도구
jail 설정을 변경 할 수 있음
sshd 통신을 통한 ignoreip 설정
sshd 통신으로 fail2ban 방화벽에서 확인
외부에서 3회 접속 실패 할 경우
multi-thread 버전으로 IDS/IPS 역할을 수행
suricata.yaml 파일의 Detect-engine에서 보안 레벨 설정 가능
설정된 룰로 침투여부를 판단하는데 Snort의 룰과 호환이 가능
IPS처럼 사용, 허용할 주소만 지정해두고 그 이 외의 주소들의 연결은 Messages OR Secure Log 를 읽어서 이들 호스트나 네트워크를 TCPwrapper의 /etc/hosts.deny 파일에 넣어서 막는 기법
일반적으로 allow 파일 확인 후 deny 파일을 확인하기 때문에 deny 파일에서 모두 거부를 해도 allow에서 미리 허용됨
wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz --no-check-certificate
chmod +x setup.py ; python setup.py install
cp -arp denyhosts.cfg-dist denyhosts.cfg
vim denyhosts.cfg
BLOCK_SERVICE: 검사할 응용 프로토콜 추가
cp -arp daemon-control-dist daemon-control
vim daemon-control
chown root:root daemon-control
chmod 700 daemon-control
/etc/init.d/denyhosts start
ln -s /usr/share/denyhosts/daemon-control denyhosts
vi /etc/hosts.deny ALL : ALL
vi /etc/hosts.allow ALL : IPADDRESS 등
vi /usr/share/denyhosts/denyhosts.cfg SYBC_SERVER 주석 해제
service denyhosts restart
/var/log/secure 을 실시간으로 볼 경우 (tail -f)
IDS/IPS/NAC로 사용, 그래픽 모드로 다양하게 설정해서 네트워크 상의 노드들을 활동ㅇㄹ 볼 수 있음
HID(HOST Intrusion Detection)과 NID(Netwrok Intrusion Detection)으로 사용
무료 웹 방화벽, Apache 웹 서버 모듈로서 통합되어 동작
경로, 파라미터분석 전에 정규화 시켜 우회 공격 차단하며
HTTP 프로토콜 이해하여 필터링이 가능하고 GET,POST 메소드의 컨텐츠 분석이 가능
분석 정보를 로깅-기록으로 남기고, HTTPS를 통한 공격까지도 필터링이 가능
apt -y install apache2 php mysql-server mysql-client php-mysql
apt -y install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev
apt -y install libapache2-mod-security2
modsecurity 설정 변경 후 apache 웹 서버 reload & restart 해주어야 modsecurity가 적용
mysql에 사용자 정보 저장
login.html 통해 들어온 사용자 정보 확인을 위한 php
Database에 있는 사용자의 정보로 로그인 할 경우
Database에 없는 사용자의 정보로 로그인 할 경우
SQL Injection 공격: Database에 없는 사용자를 넣되 password 대신
' OR '1' = '1 참인 SQL 구문을 넣어 접속하는 것을 의미
SQL 방어를 위한 modsecurity 사용할 경우 Forbidden이 출력됨