본문 바로가기

IT 관련정보/리눅스

리눅스 기본 이론 (9) - Nmap, rootkit, rkhunter, snort, TCP/IP 네트워크 설정

Nmap

포트 스캔 도구.

이 프로그램은 해킹보다는 취약점 분석을 위한 도구로 자주 사용이된다.

서버에서 불필요하게 동작하고 있는 서비스들을 찾아낼때 유용하다.


홈페이지    http://www.insecure.org/nmap



패키지설치

yum install nmap nmap-frontend



1. 스캔유형


-sS TCP SYN 스캔

-sT TCP Connect() 스캔

-sP 핑 스캔

-sU UDP 스캔

-sO IP 프로토콜 스캔

-sA ACK 스캔

-sL List 스캔

-sR RPC 스캔

-sW TCP 윈도우 스캔

-b FTP Bounce 스캔

-v 스캐닝과정을 자세히 보여준다.



Discovered open port 23/tcp on 172.16.4.3

Discovered open port 22/tcp on 172.16.4.3

Discovered open port 80/tcp on 172.16.4.3

Discovered open port 912/tcp on 172.16.4.3

Discovered open port 135/tcp on 172.16.4.3

Discovered open port 445/tcp on 172.16.4.3

Discovered open port 139/tcp on 172.16.4.3

Discovered open port 902/tcp on 172.16.4.3









iptables -F

iptables -A INPUT -p tcp -s 0/0 -d 172.16.4.50 --dport 23 -j REJECT


--------------------------------------------------------------------------------------------------


rootkit, backdoor, Worm 찾아내기

루트킷이란 시스템의 취약점이나 취약한 게정을 이용하여 시스템에 침투하여 루트권한을 획득할 수 있게 해주는 도구이다.


http://www.chkrootkit.org



패키지설치

yum install -y chkrootkit


루트킷 점검

chkrootkit



점검메시지

infected 해당 점검 항목이 루트킷으로 변형되었음

not infected 해당 루트킷 없음

not tested 점검이 이루어지지 못함

not found 해당 점검 항목이 존재하지 않음



특정항목을 점검할 경우

chkrootkit cron crontab find su ifconfig login ls netstat


------------------------------------------------------------------------------------------------


rkhunter

MD5 해쉬비교, 루트킷에 이용되는 원래의 파일 탐색, 잘못된 바이너리 파일 퍼미션, LKM과 KLD 모듈속의 의심되는 스트링 검색, 숨겨진 파일 검색을 통해서 시스템에 설치되어 있는 루트킷, 백도어, 로컬익스플로이드 등을 탐지해 주는 도구이다.


홈페이지   http://www.rootkit.nl/projects/rootkit_hunter.html


위 사이트에서 자세한 정보를 확인할 수 있다.


패키지설치

yum install -y rkhunter


rkhunter --update 명령으로 DB를 업데이트할 수 있다.


실행

rkhunter -c


-----------------------------------------------------------------------------------------------


snort

네트워크를 통한 침입에 대한 탐지 및 경고를 시스템 관리자에게 알려주는 네트워크침입탐지시스템(NIDS)로 패킷캡쳐 라이브러리를 이용하여 네트워크상의 패킷과 설정파일에서 정의된 룰에 의해서 침입 및 공격에 대한 경고를 알려주는 도구이다.


snort는 침입을 탐지할 수 있지만 막을 수 있는 도구가 아니기 때문에 완벽한 보안을 유지할 수 있는것이 아니므로 방화벽과 함께 효율적으로 사용하는 것이 중요하다.


홈페이지    http://www.snort.org

                 http://www.tcpdump.org



패키지설치

libpcap이 먼저 설치되어 있어야 한다.


wget http://www.tcpdump.org/release/libpcap-0.9.7.tar.gz

tar xvfz libpcap-0.9.7.tar.gz

cd libpcap-0.9.7

./configure

make && make install


snort-2.8.4.1.tar.gz을 다운로드하여 설치해준다.


tar xvfz snort-2.8.4.1.tar.gz


cd snort-2.8.4.1


./configure --prefix=/usr/local/snort --with-mysql=/usr/local/mysql

make && make install


mkdir /etc/snort

cp 소스디렉토리/etc/* /etc/snort


mkdir /var/log/snort

chmod 700 /var/log/snort



>I was trying to install snort 2.9 on my RHEL 5.5 system. Initially i tried to install by downloading snort rpm from http://www.snort.org/downloads/265 but i failed because it generated error that libpcap>=1.0.0 is required to install snort 2.9. I decided to check my libpcap version using command ‘rpm -qa|grep libpcap‘ and found that libpcap-0.9.4 is installed on my system. After a bit googling and hit and trial, I got the following steps to install snort-2.9 on my RHEL 5.5 system. 



step1. Downloaded libpcap-1.1.1 from http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz and uncompressed it in /usr/local/src folder.

step2. Move into /usr/local/src/libpcap-1.1.1

 root#cd /usr/local/src/libpcap-1.1.1

step3. Install libpcap in /usr/lib

 root#./configure ?prefix=/usr

 root#make

 root#make install


step4. Downloaded daq from http://www.snort.org/downloads/263 and uncompressed it in /usr/local/src folder.

step5. Move into /usr/local/daq-0.2

 root#cd /usr/local/src/daq-0.2

step6. install daq-0.2

 root#./configure

 root#make

 root#make install


step7. Downloaded snort-2.9 from http://www.snort.org/downloads/269 and uncompressed it in /usr/local/src folder.

step8. Move into /usr/local/src/snort-2.9

 root#cd /usr/local/src/snort-2.9

step9. ./configure ?with-mysql

step10. make

step11. make install


I followed above given steps and snort-2.9 successfully get installed on RHEL 5.


----------------------------------------------------------------------------------------------------


TCP/IP 네트워크 설정


1. 이더넷 네트워크 카드 설정


/etc/modprobe.conf

커널에서 지원되는 이더넷 네트워크 장치는 부팅 시 자동으로 모듈이 로딩되어 장치를 사용할 수 있는 상태가 된다.

커널에서 자동으로 검색된 이더넷 모듈 장치는 /etc/modprobe.conf 파일에 정의되어 있다.


alias  디바이스명  모듈명


alias eth0 vmxnet

alias scsi_hostadapter mptbase

alias scsi_hostadapter1 mptspi

alias scsi_hostadapter2 ata_piix

alias snd-card-0 snd-ens1371



*자주 사용하는 랜카드 모듈명

Realtek 8139too

Realtek 8169 1G PCI r8169

intel express rpo100 PCI e100

Marvell Yukon 88E8055 sky2, forcedeth



2. 로컬 호스트 이름 설정 (/etc/sysconfig/network)

로컬시스템에 고유한 이름을 지정할 수 있다.


HOSNAME=지정값


지정값은 사전적의미이거나 도메인형식으로도 가능하다.




3. /etc/hosts

호스트 주소에 호스트이름을 맵핑해주는 파일이다.

아이피 호스트이름 별칭


예)

127.0.0.1 hyunho h1

172.16.4.159 localhost.localdomain kdu


# ping hyunho




4. 인터페이스 설정

대표적으로 사용되는 인터페이스는 lo, eth0(물리적인 첫번째 랜카드) 이다.


** ifconfig  사용법 **


ifconfig <장치명> <IP> <Netmask 서브넷값> [Broadcast 브로드캐스트주소] [up/down]


ifconfig eth0 192.168.10.100 netmask 255.255.255.128 broadcast 255.255.255.127 up



ifconfig eth0

eth0  Link encap:Ethernet  HWaddr 00:0C:29:F8:8D:8D  

          inet addr:172.16.4.50  Bcast:172.16.4.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fef8:8d8d/64 Scope:Link

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:24365 errors:0 dropped:0 overruns:0 frame:0

          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:2461748 (2.3 MiB)  TX bytes:30038 (29.3 KiB)

          Interrupt:67 Base address:0x2024 


랜카드정보 => /etc/sysconfig/network-scripts/ifcfg-eth0


vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 인터페이스 종류, 장치명

BOOTPROTO=none IP 할당방식, static/dhcp/bootp/none

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes 재부팅시 활성화 여부  yes/no

NETMASK=255.255.255.0

IPADDR=172.16.4.50

GATEWAY=172.16.4.1

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes




랜카드 활성화/비활성화


ifdown eth0 = ifconfig eth0 down

ifup eth0      = ifconfig eth0 up




5. dhclient

DHCP 서버에 연결하여 자동으로 아이피를 할당받을 때 사용한다.


ifdown eth0

dhclient eth0



랜카드 자동아이피 설정

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes


랜카드 고정아이피 설정

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

NETMASK=255.255.255.0

IPADDR=172.16.4.50

GATEWAY=172.16.4.1




6. route 게이트웨이 지정


# route


Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

172.16.4.0          *               255.255.255.0   U         0       0        0     eth0

169.254.0.0        *               255.255.0.0       U         0       0        0      eth0




1)Destination     목적지 네트워크 또는 목적지 호스트주소

2)Gateway 외부 네트워크 연결해주는 호스트주소(톨게이트와 같다)

3)Genmask 목적지 네트워크 또는 목적지 호스트의 netmask를 의미한다.

255.255.255.255  --> 단일 대상 호스트의 넷마스크

0.0.0.0                   --> 기본라우트

4)Flags U 라우트 동작 상태

H 타켓 호스트

G 게이트웨이로 사용

R 동적라우팅에 대한 라우트 재생성

D 데몬 또는 리다이렉션에 의해 동적으로 설치된 상태

M 라우팅 데몬

i 라우트 거부

5)Metric 목적지까지의 거리로 홉 단위로 계산.(최신 커널에서는사용 안함)

6)Ref 현재 라우터 통계

7)Use 라우트 탐색 수

8)Iface 패킷이 전달되는 인터페이스



# route add -host 아이피주소 dev 인터페이스명


ex)

# route add -host 10.10.10.10 dev eth0


# route del 아이피주소 dev 인터페이스명


# route del 10.10.10.10. dev eth0




네트워크

/etc/sysconfig/network

/etc/hosts

/etc/sysconfig/network-scripts/ifcfg-eth0

ifconfig  = ifdown/ifup

route

dhclient