웹마스터 팁

portsentry는 누군가 내 새스템에 열려 있는 포트가 있는가 스캔을 검사하는 프로그램으로 해킹 방어용 툴 입니다. 누가 내 시스템을 스캔했는지 IP를 검사하고 공격시 정해진 방법으로 방어를 하며, tcpwrapper에서 IP를 원천 차단하도록 막아주는 기능, 공격자를 내 e-mail계정으로 알람 해주는 기능 등이 있습니다.

또 스캔 공격을 받았을시 외부 스크립트나 binary 프로그램을 실행하는 기능도 있습니다. 따라서 잘 이용하면 자동 역 공격도 가능 하겠습니다만, 권하고싶지는 않습니다.

rpm 버전으로 했을 경우 설치는 매우 쉽습니다. 단, .conf 파일등은 잘 살펴보아두어야 어떤 메커니즘으로 동작 하는지를 알 수 있겠습니다.

1. 설치
2. /etc/poresentry/ 의 conf 파일들
3. 테스트

( ** 레드햇 계열은(레드햇 8.0도)기본으로 sunproc 라는 rpc 용 포트가 열려 있습니다.  rpc 관련된 부분은 취약점이 많으므로 사용하지 않으면 내려 놓는게 좋습니다. portmap을 내리면 됩니다. )

1. 설치
설치는 rpm으로 했습니다. ( www.psonic.com 에서 최신 베타 2.10은 src는 어떤이유에선가 컴파일은 되는데 동작을 안하더군요. )

사용 환경 : 레드햇 리눅스 8.0 서버

1)http://www.rpmfind.net   에서 portsentry로 (search)검색을 해서 다운 로드를 받습니다.
  저는 portsentry-1.1-fr7.i386.rpm을 다운 받았습니다.

2) rpm을 풉니다.
[root@ibsis root]# rpm -Uvh portsentry-1.1-fr7.i386.rpm
경고: portsentry-1.1-fr7.i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b
준비 중...                  ########################################### [100%]
   1:portsentry             ########################################### [100%]

**. 의존성 관계로 설치가 안될때는 그 의존성이 있는 rpm을 먼저 설치해 주어야 합니다.이부분이 좀 까다 롭습니다. 계속 의존성 rpm을 요구하는데 어디 속해있는지 찾기 힘들 때 ..

3) 잘 설치되었는가 확인 합니다.
[root@ibsis root]# rpm -ql portsentry
/etc/cron.d/portsentry
/etc/init.d/portsentry
/etc/portsentry
/etc/portsentry/portsentry.conf
/etc/portsentry/portsentry.ignore
/etc/portsentry/portsentry.modes
/usr/sbin/portsentry
/usr/share/doc/portsentry-1.1
/usr/share/doc/portsentry-1.1/CHANGES
/usr/share/doc/portsentry-1.1/CREDITS
/usr/share/doc/portsentry-1.1/LICENSE
/usr/share/doc/portsentry-1.1/README.COMPAT
/usr/share/doc/portsentry-1.1/README.install
/usr/share/doc/portsentry-1.1/README.methods
/usr/share/doc/portsentry-1.1/README.stealth
/var/portsentry

4) 실행을 시켜 봅니다.
[root@ibsis root]# portsentry
Psionic PortSentry - Port Scan Detector.
Copyright 1997-2000 Psionic Software, Inc. help@psionic.com>
Licensing restrictions apply. Please see documentation
Version: 1.1

usage: portsentry [-tcp -udp -stcp -atcp -sudp -audp]

*** PLEASE READ THE DOCS BEFORE USING ***

옵션을 안주고 그냥 치면 당연히(?) 아무것도 실행이 안됩니다.

4) 옵션을 주어야 실행 되는 것을 알 수 있습니다.  tcp , udp 포트만 검색하도록 해 보겠습니다. 나머지 -stcp -atcp -sudp -audp 도 각각 실행 시켜 주면 됩니다.
[root@ibsis root]# portsentry -tcp
[root@ibsis root]# portsentry -udp

# view /var/log/message  해서 실행을 확인 합니다.

2. 설정
/etc/portsentry 에 설정 파일 및 관련된 파일이 들어 갑니다.

/etc/portsentry/portsentry.conf 는 기본값으로 써도 되지만 다양한 설정이 가능 합니다. 기본값으로는 iptable을 이용해서 아래처럼 막아지게 되어 있습니다.
/sbin/iptables -I INPUT -s $TARGET$ -j DROP

.conf를 바꾸어서 이를 tcpwrapper 에 넘겨주어서 /etc/hosts.deny 에 IP를 등록하여 영구적으로 해당  IP를 차단 할수도 있습니다. 또 공격된 로그를 내 메일계정으로 e-mail을 보내게도 할수 있습니다.

/etc/portsentry/portsentry.ignore 에는 블록시키지 말아야할 기본 IP ( 내 로칼 IP, DNS,Gateway 등 ) 이 들어 갑니다.

3. 테스트
portsentry 가 설정된 서버에 다른 서버에서 nmap ( 레드햇 8.0 서버에 기본설치 됩니다.)으로 테스트를 해 봅니다.
# nmap xxx.xxx.xxx.xxx
# nmap -sS -O pP0 xxx.xxx.xxx.xxx

/var/log/message 에 보면 로그가 되고 차단 메시지가 나옵니다.
/etc/portsentry.패킷.   해당 파일에 공격한  IP가 기록되는 것을 알 수 있습니다.

1) 설치가 되면 portsentry는 crond 에 6시간 마다 재실행 되도록 등록 되며, 시스템서비스에도 실행하도록 등록 됩니다. # setup 이나 #natsysv 로 확인해보면 알수 있습니다.
즉 기본값에서 차단한  IP는 6시간 마다풀립니다. 따라서 공격한 IP를 영구히 막으려면 tcpwrapper 설정을 해 주어야 합니다.

2) nmap 등으로 테스트하다 테스트한 서버의 IP가 막혔을 경우, 해당 블록 방법(iptables 등)을 찾아서 풀어 줘야 합니다.
제목 글쓴이 날짜
리눅스 보안 : 기초적인 방화벽 : portsentry 설치하기 [2] 정인배 2002.11.29
cron을 이용한 자동 백업 받기 최종우 2002.12.02
cron과 rsync 그리고 replication 을 이용한 데이터 백업 [3] 최종우 2002.12.03
FTP 를 이용한 원격 백업 받기 [5] 최종우 2002.12.04
[계정삭제 스크립터] 편리님이 만드신 계정추가랑 연동됩니다. [4] file 김동현 2002.12.04
[FreeBSD] 자동으로 시간 맞추기.. [1] DeX™ 2002.12.04
계정 등록 스크립트 [8] 편리 2002.12.05
오래간만에 찾아뵙는군요^^ [2] Dopesoul 2002.12.08
Zend Optimizer Full Pass Setup [3] DukeEYS 2002.12.08
mod_gzip 적용시 php 인클루드를 실패해서 포기하신분 보세요 [2] DukeEYS 2002.12.08
apache2 + mod_jk 100번의 닭질 끝에 찾아가는 사이트 DukeEYS 2002.12.09
[FreeBSD] Proftp + MySQL 연동 설치하기 [2] file DeX™ 2002.12.09
레드햇(redhat)리눅스에서 rpm 관리 명령어 정인배 2002.12.09
srpms, alpha, i386 , i686 이 의미하는 것은? [1] Dopesoul 2002.12.12
누군가 우리서버를 공격하고 있을때 응급처치! [13] Dopesoul 2002.12.13
[re] 저의 최종의견 입니다. [5] Dopesoul 2002.12.17
SetEnvIf 와 SetEnvIfNocase 의 차이 [7] Dopesoul 2002.12.13
DeX 님의 시간 동기화 스크립트를 편하고 안정적으로 변경한 리눅스용! [4] Dopesoul 2002.12.13
리눅스 rpm 명령어 활용(1): MRTG 설치 정인배 2002.12.14
PHP 4.2.3 파워 설치 테크닉 (에러 0%에 도전) [2] 밍밍이 2002.12.17