'netfilter'에 해당되는 글 6건

  1. 2012.10.25 iptables 방화벽 및 라우팅, 트래픽 분산 (2)
  2. 2010.06.23 Top 100 Network Security Tools
  3. 2010.06.07 Conntrack 방지 방법 (ip_conntrack 제한값)
2012.10.25 16:04

iptables 방화벽 및 라우팅, 트래픽 분산

 

 



1.iptables 개요 
2.패킷의 흐름 
3.NAT 구성 방법 
4. PORT 포워딩 
5.iptables를 이용한 방화벽 구축 
6.Routing 분석 
7.트래픽 분산 


1.iptables 개요 
iptables은TABLE, CHAIN, TARGET의 요소를 가지고 있다. 
TABLE 분석--------------------------------------------- 
- mangle, nat , filter 3개의 테이블이 있으며, 테이블을 명시하지 않고 사용할 경우에는 filter가 기본값이 된다. 
- 3개의 테이블은 고유한 특성을 가지고 있으며, 정리하면 다음과 같다. 
mangle : 패킷이 맨처음 들어왔을 경우에 제어가 가능하며, 패킷의 차단과 허용을 포함하 
라우팅 전,후에 규칙을 적용할 수 있다. 
nat : 패킷의 해더를 검사하여 소스와 목적지의 아이피 변환을 목적으로 한다. 
filter : mangle과 비슷하나, nat로 나가는 패킷을 제외한 것의 차단과 허용을 목적으로 
한다. 

CHAIN 분석--------------------------------------------------------- 
- 각 테이블마다 체인이 구성되어 있으며, 기본적으로 INPUT, FORWARD, OUTPUT이 있고, nat, mangle에는 PREROUTING, POSTROUTING의 체인이 추가되어 있다. 
- Iptables –L명령어로 체인 리스트를 확인할 수 있으며, 괄호 안에 기본 정책이 명시되어 있다. 

코드:
[admin@router admin]$ iptables -L 
Chain INPUT (policy ACCEPT) 
target     prot opt source               destination 

Chain FORWARD (policy ACCEPT) 
target     prot opt source               destination 
TCPMSS     tcp  --  anywhere             anywhere           tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 

Chain OUTPUT (policy ACCEPT) 
target     prot opt source               destination


- 각 체인은 한줄로 한가지씩 규칙을 가지고 있으며, 규칙은 무조건적으로 정할 수 있는 것이 아니라 각 체인의 특성에 따라 정할 수 있다. 
체인의 흐름을 보면 
PREROUTING -> INPUT( FORWARD) -> OUTPUT -> POSTROUTING의 순서로 패킷이 이동하면서 규칙에 적용된다. 
FORWARD 체인을 중심으로 왼쪽은 들어오는 패킷을 제어할 수 있으며, 오른쪽은 나가는 패킷을 제어한다. 
만약에 PREROUTING 체인에서 나가는 패킷을 제어하고자 규칙을 작성한다고 해도 규칙이 적용되지 않는다. 
코드:
iptables  -t mangle -A PREROUTING -o eth0 -s 192.168.1.1 -j DROP 
iptables v1.2.7: Can't use -o with PREROUTING

에러가 나면서 적용되지 않는다. 
또한, 체인은 –N옵션을 이용하여 새로 만들고 –X옵션을 이용하여 삭제할 수 있다. 
코드:
iptables -t manlge -N
(일반적으로 대문자를 사용) 

TARGET 분석------------------------------------------------------- 
Chain INPUT (policy ACCEPT) 
target prot opt source destination (빈칸) 

각체인의 규칙은 target을 어떻게 정하는 가가 기본이며, 각 타켓의 특성을 보면 
ACCEPT : 패킷을 허용한다.

DROP : 패킷을 차단한다.
REJECT : 패킷을 거부한다. 
RETURN : 패킷을 맨 아래 규칙으로 내린다. 
MARK : 패킷에 마크를 표시한다. 
LOG : 로그를 남긴다.(/var/log/messages) 
MASQUERADE : 패킷의 출발지를 나가는 장치의 아이피로 바꾼다. 
SNAT : 패킷의 출발지를 지정한 아이피로 바꾼다. 
DNAT : 패킷의 도착지를 지정한 아이피로 바꾼다. 

***타겟은 사용할 수 있는 테이블이 다르며, 테이블에 맞게 사용하여야 한다. 

기타 --------------------------------------------------------------- 
prot : ip 프로토콜( -p) tcp,udp 
opt : 장치 (-o 나가는 장치, -i 들어오는 장치) eth0, ppp0 
source : 출발지 주소 ( -s ) 
destination : 도착지 주소 (-d) 




2. 패킷의 흐름 (그림참조) 


3. NAT 구성방법 

- NAT 구성이라고 함은 일반적으로 아이피를 공유하는 방법이다. 

NAT를 구성하기 전에는 linux 의 시스템 셋팅중에 ip_forward를 활성화 시켜주어야 한다. 
코드:
 echo 1 > /proc/sys/net/ipv4/ip_forward


WAN구간이 eth1 이라고 가정할 때 , 

-- 고정된 아이피가 있는 경우 
코드:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 111.111.111.111


-- 유동 아이피인 경우 
코드:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE







4. PORT 포워딩 

사설대역에서 외부로 서비스를 하고 싶을 때 라우터에서 특정 포트를 정해진 사설아이피로 보내주어 서비스가 가능하도록 한다. 
또한, 특정포트를 숨기고 싶을 때, 라우터의 loop 아이피로 패킷을 보내 속일수도 있다. 

예) 172.16.100.1 에서 MSSQL 서비스를 하고 싶은 경우 

코드:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1433 -j DNAT --to 172.16.100.1



5. iptables를 이용한 방화벽 구축 

POLICY-------------------------------------------------------- 
-각 체인은 정책을 가지고 있으며, 정책에 따라서 적절한 규칙을 적용시켜야 한다. 
(임의로 만든 체인은 정책을 가질 수 없다.) 

-기본적으로 모든 체인은 ACCEPT 를 정책으로 가지고 있으며, 
iptables -P 의 명령으로 정책을 변경시킬 수 있다. 
코드:
iptables -P INPUT DROP


-패킷이 들어와서 각 테이블을 지나가게 되며, 체인규칙을 적용받는다. 

만약 정책이 ACCEPT 이고 특별한 규칙이 정해져있지 않다면, 다음 테이블로 이동하게 된다. 
ACCEPT는 패킷을 허용한다는 의미 보다는 다음 테이블로 이동시킨다는 표현이 더 적절하다. 
DROP 은 다음 테이블로 가는 것을 차단한다. 

예를 들어 우선순위가 먼저인 INPUT의 정책을 DROP 으로 하고 OUTPUT에서 아무리 ACCEP를 한다고 하여도 INPUT에 허용할 예외규칙을 정하지 않는다면 패킷은 DROP 된다. 
예1) 소스가 192.168.1.1을 제외한 모든 패킷은 DROP 된다. 
코드:
iptables -P INPUT DROP 
iptables -A INPUT -s 192.168.1.1 -j ACCEPT


예2) 소스가 192.168.1.1을 제외한 모든 패킷은 ACCEPT 된다. 
코드:
iptables -P INPUT ACCEPT 
iptables -A INPUT -s 192.168.1.1 -j DROP


정책을 DROP으로 하는 경우는 드물며, 특별한 상황하에서 사용할 수 있다. 
예를 들어 DNS서버로만 운영하고 싶을경우 포트 53번 만을 허용하고 나머지는 모두 DROP시켜 불필요한 패킷이 들어오는 것을 막을 수 있다. 

필터링 순서------------------------------------------------------- 
패킷이 체인의 규칙에서 필터링 되는 과정은 맨위의 규칙부터 적용을 받는다. 
- 규칙 중간에 타켓을 ACCEPT, DROP, REJECT 를 만나면, 다음 규칙에 필터링되지 않고 다음 테이블로 건너 뛰게 된다. 

- 규칙 중간에 타켓을 신규로 만든 체인으로 만나면, 그 체인으로 이동하여 필터링 된 다음 다시 점프전의 체인내의 규칙으로 가서 순서대로 필터링 된다. 
- 신규로 만든 체인 내에서 타겟을 ACCEPT, DROP, REJECT를 만나면 다음 규칙에 필터링 되지 않고 , 다음 테이블로 건너뛰게 된다. 
- 규칙중에 MARK 가 중복되어 있을 경우에는 맨 마지막의 MARK 가 적용된다.(주의) 


6. 라우팅 분석 
코드:
root#route 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
210.222.17.176  *                 255.255.255.240     U     0      0        0 eth0 
192.168.100.0    *                255.255.255.0        U     0      0        0 eth1 
127.0.0.0          *                255.0.0.0              U     0      0        0 lo 
default         210.222.17.177  0.0.0.0                UG    0      0        0 eth0


패킷은 위에서 아래로 이동 하면서 규칙에 맞는 라우팅이 있을 경우 바로 이동하여, 
다음 라우팅 룰을 적용받지 않는다. 
만약 맞는 라우팅이 없다면 default 라우팅이 적용되어 이동하게 된다. 

위에서 게이트웨이가 없는 것은 라우터 자신의 인터페이스가 이미 대역을 가지고 있는 경우이며, 라우터의 인터페이스가 가지고 있지 않는 대역을 라우팅 할 경우에는 게이트웨이를 반드시 입력하여야 한다.(gw) 

(네트워크 대역을 추가) 
코드:
route add -net 172.16.100.0/24 gw 210.222.17.177 dev eth1

(172.16.100.1/24 로 네트워크 대역을 다르게 입력하면 라우팅이 올라가지 않는다.) 

(특정 호스트를 추가) 
코드:
route add -host 172.16.100.100 gw 210.222.17.177 dev eth1


route add -net 172.16.100.100/32 gw 210.222.17.177 dev eth1(될까요?) 
(default 라우팅의 추가) 
코드:
route add default gw 210.222.17.177 dev eth0


같은 네트워크 대역이 있을 경우에는 메트릭이 낮은 룰이 적용된다. 
코드:
route add -net 192.168.1.0/24  gw 211.197.13.1 dev ppp0 metric 1 
route add -net 192.168.1.0/24  gw 211.197.13.1 dev ppp0 metric 3

(메트릭을 적용하지 않을 경우 기본 메트릭은 0 이다.) 


7. 트래픽 분산 

route 를 이용한 분산 
WAN 장치가 ppp0, ppp1이 있을 경우에 
코드:
route add -net 0.0.0.0/2 gw 211.211.211.211 dev ppp0 
route add -net 128.0.0.0/2 gw 222.222.222.222 dev ppp1

이라고 했을 경우에 A 클래스 절반은 ppp0, 나머지 절반은 ppp1으로 나가게 된다. 
(실제로는 더 세부적으로 하겠지만,,) 

route 를 이용한 분산은 특정 대역으로 가는 트랙픽을 보장받고 싶을 때 가능하지만, 아이피대역만을 가지고 트래픽을 분산하는 룰을 정교하게 나누가 힘들며, 비효율적이다. 

ip rule 과 MARK 를 이용한 트래픽 분산 

MARK 는 iptables의 타겟으로 프로토콜, 아이피 대역, 장치, 포트, 타입 등을 정교하게 
구상하여 트래픽을 효과적으로 분산시킬 수 있다. 
구성 순서 
ex) 
WAN1 = ppp0 , gw 111.111.111.111 
WAN2 = ppp1 , gw 222.222.222.222 

1) 각각의 WAN 구간의 table을 추가한다. 
코드:
echo "201       ppp0_Rule"        >> /etc/iproute2/rt_tables 
echo "202       ppp1_Rule"        >> /etc/iproute2/rt_tables

2) table에 MARK를 어떤것으로 할지 정한다.(경험적으로 1 ~ 9 까지 마크가 유효하다) 
코드:
ip rule add fwmark 1 table ppp0_Rule priority 98 
ip rule add fwmark 2 table ppp1_Rule priority 99

## priority 는 숫자가 낮을수록 우선순위가 높다 

마크 확인 
root# ip rule ls 
3) table에 라우팅 룰을 추가한다. 
코드:
ip route add default via 111.111.111.111 dev ppp0 table ppp0_Rule 
ip route add default via 222.222.222.222 dev ppp1 table ppp1_Rule 
ip route show table ppp0_Rule


4) iptables의 mangle 테이블에 MARK를 추가하면 완료 
--아이피 대역을 이용한 분산 
코드:
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 1 
iptables -t mangle -A PREROUTING -s 172.16.0.0/16 -j MARK --set-mark 2

( 출발지가 192.168.0.0/24 인것은 ppp0 으로 나가라) 
( 출발지가 172.16.0.0/16 인것은 ppp1 로 나가라) 

-- 포트를 이용한 분산 
코드:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1 
iptables -t mangle -A PREROUTING -p tcp --dport 20:21 -j MARK --set-mark 2

(웹서비스에 접속하는 것은 ppp0으로 나가라) 
(ftp서비스에 접속하는 것은 ppp1로 나가라) 

--아이피 대역과 포트를 동시에 분산 
코드:
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j MARK --set-mark 1 
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 20:21 -j MARK --set-mark 2

(출발지가 192.168.1.0/24 이고 웹서비스에 접속하는 것은 ppp0으로 나가라) 
(출발지가 192.168.1.0/24 이고 ftp서비스에 접속하는 것은 ppp1으로 나가라) 

-- 기타 iptables로 제어할수 있는 옵션들을 모두 활용하여 분산이 가능하다. 
### MARK를 할 경우에 알아두어야 할 점 
-route 보다 ip route 가 우선이다. (즉 MARK가 우선이다.) 
-MARK 표시가 없는 것은 route 에 의해 경로가 결정된다. 
-하나의 패킷에 MARK 가 중복되면, 맨 마지막의 MARK에 의해 경로가 결정된다. 
- MARK를 한뒤 다음 MARK에 걸리지 않게 하고 싶을 경우에는 그 패킷을 
ACCEPT 하면 된다. 
ex) 
코드:
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp 80 -j MARK --set-mark 1 
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 2

위에서 보면 웹서비스로 가는 패킷은 두 규칙에 모두 적용되기 때문에 결국 마지막 규칙에 의해 ppp2로 나가게 된다. 

그러나, 웹서비스를 이용할 경우 ppp0로 보내고 싶다면? 
코드:
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp 80 -j MARK --set-mark 1 
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp 80 -j ACCEPT 
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 2



출처 : yahon.tistory.com



Trackback 0 Comment 2
  1. 2012.10.25 16:07 address edit & del reply

    비밀댓글입니다

  2. Favicon of https://leeyj7141blog.wordpress.com 챠리 2016.06.01 01:12 address edit & del reply

    와! 잘봣습니다.
    설명도 함께 정말 잘해두셧네요 ㅎㅎ
    mark 이해가 잘 안됏는데 여기서 배우고 갑니다.

2010.06.23 18:53

Top 100 Network Security Tools

After the tremendously successful 2000 and 2003 security tools surveys, Insecure.Org is delighted to release this 2006 survey. I (Fyodor) asked users from the nmap-hackers mailing list to share their favorite tools, and 3,243 people responded. This allowed me to expand the list to 100 tools, and even subdivide them into categories. Anyone in the security field would be well advised to go over the list and investigate tools they are unfamiliar with. I discovered several powerful new tools this way. I also point newbies to this site whenever they write me saying “I don't know where to start”.

Respondents were allowed to list open source or commercial tools on any platform. Commercial tools are noted as such in the list below. No votes for the Nmap Security Scanner were counted because the survey was taken on a Nmap mailing list. This audience also biases the list slightly toward “attack” hacking tools rather than defensive ones.

Each tool is described by one ore more attributes:

new Did not appear on the 2003 list
/ Popularity ranking rose / fell the given number since the 2003 survey
  TITLE= Generally costs money. A free limited/demo/trial version may be available.
Linux Works natively on Linux
*BSD Works natively on OpenBSD, FreeBSD, Solaris, and/or other UNIX variants
OS X Works natively on Apple Mac OS X
Windows Works natively on Microsoft Windows
Command-line interface Features a command-line interface
GUI Interface Offers a GUI (point and click) interface
Source code Source code available for inspection.

Please send updates and suggestions (or better tool logos) to Fyodor. If your tool is featured or you think your site visitors might enjoy this list, you are welcome to use our link banners. Here is the list, starting with the most popular:

#1
  TITLE=
Linux
*BSD
OS X
Windows
GUI Interface
Nessus : Premier UNIX vulnerability assessment tool
Nessus was a popular free and open source vulnerability scanner until they closed the source code in 2005 and removed the free "registered feed" version in 2008. A limited “Home Feed” is still available, though it is only licensed for home network use. Some people avoid paying by violating the “Home Feed” license, or by avoiding feeds entirely and using just the plugins included with each release. But for most users, the cost has increased from free to $1200/year. Despite this, Nessus is still the best UNIX vulnerability scanner available and among the best to run on Windows. Nessus is constantly updated, with more than 20,000 plugins. Key features include remote and local (authenticated) security checks, a client/server architecture with a GTK graphical interface, and an embedded scripting language for writing your own plugins or understanding the existing ones.

See all vulnerability scanners


#2
Linux
*BSD
OS X
Windows
Command-line interface
GUI Interface
Source code
Wireshark : Sniffing the glue that holds the Internet together
Wireshark (known as Ethereal until a trademark dispute in Summer 2006) is a fantastic open source network protocol analyzer for Unix and Windows. It allows you to examine data from a live network or from a capture file on disk. You can interactively browse the capture data, delving down into just the level of packet detail you need. Wireshark has several powerful features, including a rich display filter language and the ability to view the reconstructed stream of a TCP session. It also supports hundreds of protocols and media types. A tcpdump-like console version named tethereal is included. One word of caution is that Ethereal has suffered from dozens of remotely exploitable security holes, so stay up-to-date and be wary of running it on untrusted or hostile networks (such as security conferences).

See all packet sniffers


#3
  TITLE=
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Snort : Everyone's favorite open source IDS
This lightweight network intrusion detection and prevention system excels at traffic analysis and packet logging on IP networks. Through protocol analysis, content searching, and various pre-processors, Snort detects thousands of worms, vulnerability exploit attempts, port scans, and other suspicious behavior. Snort uses a flexible rule-based language to describe traffic that it should collect or pass, and a modular detection engine. Also check out the free Basic Analysis and Security Engine (BASE), a web interface for analyzing Snort alerts.

Open source Snort works fine for many individuals, small businesses, and departments. Parent company SourceFire offers a complimentary product line with more enterprise-level features and real-time rule updates. They offer a free (with registration) 5-day-delayed rules feed, and you can also find many great free rules at Bleeding Edge Snort.

See all intrusion detection systems


#4
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Netcat : The network Swiss army knife
This simple utility reads and writes data across TCP or UDP network connections. It is designed to be a reliable back-end tool that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need, including port binding to accept incoming connections. The original Netcat was released by Hobbit in 1995, but it hasn't been maintained despite its immense popularity. It can sometimes even be hard to find nc110.tgz. The flexibility and usefulness of this tool have prompted people to write numerous other Netcat implementations - often with modern features not found in the original. One of the most interesting is Socat, which extends Netcat to support many other socket types, SSL encryption, SOCKS proxies, and more. It even made this list on its own merits. There is also Chris Gibson's Ncat, which offers even more features while remaining portable and compact. Other takes on Netcat include OpenBSD's nc, Cryptcat, Netcat6, PNetcat, SBD, and so-called GNU Netcat.

See all Netcats


#5
new
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Metasploit Framework : Hack the Planet
Metasploit took the security world by storm when it was released in 2004. No other new tool even broke into the top 15 of this list, yet Metasploit comes in at #5, ahead of many well-loved tools that have been developed for more than a decade. It is an advanced open-source platform for developing, testing, and using exploit code. The extensible model through which payloads, encoders, no-op generators, and exploits can be integrated has made it possible to use the Metasploit Framework as an outlet for cutting-edge exploitation research. It ships with hundreds of exploits, as you can see in their online exploit building demo. This makes writing your own exploits easier, and it certainly beats scouring the darkest corners of the Internet for illicit shellcode of dubious quality. Similar professional exploitation tools, such as Core Impact and Canvas already existed for wealthy users on all sides of the ethical spectrum. Metasploit simply brought this capability to the masses.

See all vulnerability exploitation tools


#6
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Hping2 : A network probing utility like ping on steroids
This handy little utility assembles and sends custom ICMP, UDP, or TCP packets and then displays any replies. It was inspired by the ping command, but offers far more control over the probes sent. It also has a handy traceroute mode and supports IP fragmentation. This tool is particularly useful when trying to traceroute/ping/probe hosts behind a firewall that blocks attempts using the standard utilities. This often allows you to map out firewall rulesets. It is also great for learning more about TCP/IP and experimenting with IP protocols.

See all packet crafting tools


#7
10
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Kismet : A powerful wireless sniffer
Kismet is an console (ncurses) based 802.11 layer2 wireless network detector, sniffer, and intrusion detection system. It identifies networks by passively sniffing (as opposed to more active tools such as NetStumbler), and can even decloak hidden (non-beaconing) networks if they are in use. It can automatically detect network IP blocks by sniffing TCP, UDP, ARP, and DHCP packets, log traffic in Wireshark/TCPDump compatible format, and even plot detected networks and estimated ranges on downloaded maps. As you might expect, this tool is commonly used for wardriving. Oh, and also warwalking, warflying, and warskating, ...

See all wireless tools, and packet sniffers


#8
3
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Tcpdump : The classic sniffer for network monitoring and data acquisition
Tcpdump is the IP sniffer we all used before Ethereal (Wireshark) came on the scene, and many of us continue to use it frequently. It may not have the bells and whistles (such as a pretty GUI or parsing logic for hundreds of application protocols) that Wireshark has, but it does the job well and with fewer security holes. It also requires fewer system resources. While it doesn't receive new features often, it is actively maintained to fix bugs and portability problems. It is great for tracking down network problems or monitoring activity. There is a separate Windows port named WinDump. TCPDump is the source of the Libpcap/WinPcap packet capture library, which is used by Nmap among many other tools.

See all packet sniffers


#9
23
Windows
GUI Interface
Cain and Abel : The top password recovery tool for Windows
UNIX users often smugly assert that the best free security tools support their platform first, and Windows ports are often an afterthought. They are usually right, but Cain & Abel is a glaring exception. This Windows-only password recovery tool handles an enormous variety of tasks. It can recover passwords by sniffing the network, cracking encrypted passwords using Dictionary, Brute-Force and Cryptanalysis attacks, recording VoIP conversations, decoding scrambled passwords, revealing password boxes, uncovering cached passwords and analyzing routing protocols. It is also well documented.

See all password crackers, and packet sniffers


#10
1
Linux
*BSD
OS X
Windows
Command-line interface
Source code
John the Ripper : A powerful, flexible, and fast multi-platform password hash cracker
John the Ripper is a fast password cracker, currently available for many flavors of Unix (11 are officially supported, not counting different architectures), DOS, Win32, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords. It supports several crypt(3) password hash types which are most commonly found on various Unix flavors, as well as Kerberos AFS and Windows NT/2000/XP LM hashes. Several other hash types are added with contributed patches. You will want to start with some wordlists, which you can find here, here, or here.

See all password crackers


#11
2
Linux
*BSD
OS X
Windows
Command-line interface
GUI Interface
Source code
Ettercap : In case you still thought switched LANs provide much extra security
Ettercap is a terminal-based network sniffer/interceptor/logger for ethernet LANs. It supports active and passive dissection of many protocols (even ciphered ones, like ssh and https). Data injection in an established connection and filtering on the fly is also possible, keeping the connection synchronized. Many sniffing modes were implemented to give you a powerful and complete sniffing suite. Plugins are supported. It has the ability to check whether you are in a switched LAN or not, and to use OS fingerprints (active or passive) to let you know the geometry of the LAN.

See all packet sniffers


#12
4
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Nikto : A more comprehensive web scanner
Nikto is an open source (GPL) web server scanner which performs comprehensive tests against web servers for multiple items, including over 3200 potentially dangerous files/CGIs, versions on over 625 servers, and version specific problems on over 230 servers. Scan items and plugins are frequently updated and can be automatically updated (if desired). It uses Whisker/libwhisker for much of its underlying functionality. It is a great tool, but the value is limited by its infrequent updates. The newest and most critical vulnerabilities are often not detected.

See all web vulnerability scanners


#13
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Ping/telnet/dig/traceroute/whois/netstat : The basics
While there are many whiz-bang high-tech tools out there to assist in security auditing, don't forget about the basics! Everyone should be very familiar with these tools as they come with most operating systems (except that Windows omits whois and uses the name tracert). They can be very handy in a pinch, although for more advanced usage you may be better off with Hping2 and Netcat.

#14
2
Linux
*BSD
OS X
Windows
Command-line interface
Source code
OpenSSH / PuTTY / SSH : A secure way to access remote computers
SSH (Secure Shell) is the now ubiquitous program for logging into or executing commands on a remote machine. It provides secure encrypted communications between two untrusted hosts over an insecure network, replacing the hideously insecure telnet/rlogin/rsh alternatives. Most UNIX users run the open source OpenSSH server and client. Windows users often prefer the free PuTTY client, which is also available for many mobile devices. Other Windows users prefer the nice terminal-based port of OpenSSH that comes with Cygwin. Dozens of other free and proprietary clients exist. You can explore them here or here.

#15
35
Linux
*BSD
OS X
Windows
Command-line interface
GUI Interface
Source code
THC Hydra : A Fast network authentication cracker which supports many different services
When you need to brute force crack a remote authentication service, Hydra is often the tool of choice. It can perform rapid dictionary attacks against more then 30 protocols, including telnet, ftp, http, https, smb, several databases, and much more. Like THC Amap this release is from the fine folks at THC.

See all password crackers


#16
new
Linux
*BSD
OS X
Windows
Command-line interface
GUI Interface
Source code
Paros proxy : A web application vulnerability assessment proxy
A Java based web proxy for assessing web application vulnerability. It supports editing/viewing HTTP/HTTPS messages on-the-fly to change items such as cookies and form fields. It includes a web traffic recorder, web spider, hash calculator, and a scanner for testing common web application attacks such as SQL injection and cross-site scripting.

See all web vulnerability scanners


#17
10
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Dsniff : A suite of powerful network auditing and penetration-testing tools
This popular and well-engineered suite by Dug Song includes many tools. dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, and webspy passively monitor a network for interesting data (passwords, e-mail, files, etc.). arpspoof, dnsspoof, and macof facilitate the interception of network traffic normally unavailable to an attacker (e.g, due to layer-2 switching). sshmitm and webmitm implement active monkey-in-the-middle attacks against redirected ssh and https sessions by exploiting weak bindings in ad-hoc PKI. A separately maintained partial Windows port is available here. Overall, this is a great toolset. It handles pretty much all of your password sniffing needs.

See all packet sniffers


#18
7
Windows
GUI Interface
NetStumbler : Free Windows 802.11 Sniffer
Netstumbler is the best known Windows tool for finding open wireless access points ("wardriving"). They also distribute a WinCE version for PDAs and such named Ministumbler. The tool is currently free but Windows-only and no source code is provided. It uses a more active approach to finding WAPs than passive sniffers such as Kismet or KisMAC.

See all wireless tools, and packet sniffers


#19
18
Linux
*BSD
OS X
Windows
Command-line interface
Source code
THC Amap : An application fingerprinting scanner
Amap is a great tool for determining what application is listening on a given port. Their database isn't as large as what Nmap uses for its version detection feature, but it is definitely worth trying for a 2nd opinion or if Nmap fails to detect a service. Amap even knows how to parse Nmap output files. This is yet another valuable tool from the great guys at THC.

See all application-specific scanners


#20
12
  TITLE=
Windows
GUI Interface
GFI LANguard : A commercial network security scanner for Windows
GFI LANguard scans IP networks to detect what machines are running. Then it tries to discern the host OS and what applications are running. It also tries to collect Windows machine's service pack level, missing security patches, wireless access points, USB devices, open shares, open ports, services/applications active on the computer, key registry entries, weak passwords, users and groups, and more. Scan results are saved to an HTML report, which can be customized/queried. It also includes a patch manager which detects and installs missing patches. A free trial version is available, though it only works for up to 30 days.

See all vulnerability scanners


#21
new
Linux
*BSD
OS X
Windows
Command-line interface
Source code
Aircrack : The fastest available WEP/WPA cracking tool
Aircrack is a suite of tools for 802.11a/b/g WEP and WPA cracking. It can recover a 40 through 512-bit WEP key once enough encrypted packets have been gathered. It can also attack WPA 1 or 2 networks using advanced cryptographic methods or by brute force. The suite includes airodump (an 802.11 packet capture program), aireplay (an 802.11 packet injection program), aircrack (static WEP and WPA-PSK cracking), and airdecap (decrypts WEP/WPA capture files).

See all wireless tools, and password crackers


#22
4
Windows
GUI Interface
Superscan : A Windows-only port scanner, pinger, and resolver
SuperScan is a free Windows-only closed-source TCP/UDP port scanner by Foundstone. It includes a variety of additional networking tools such as ping, traceroute, http head, and whois.

See all port scanners


#23
2
Linux
Command-line interface
Source code
Netfilter : The current Linux kernel packet filter/firewall
Netfilter is a powerful packet filter implemented in the standard Linux kernel. The userspace iptables tool is used for configuration. It now supports packet filtering (stateless or stateful), all kinds of network address and port translation (NAT/NAPT), and multiple API layers for 3rd party extensions. It includes many different modules for handling unruly protocols such as FTP. For other UNIX platforms, see Openbsd PF (OpenBSD specific), or IP Filter. Many personal firewalls are available for Windows (Tiny,Zone Alarm, Norton, Kerio, ...), though none made this list. Microsoft included a very basic firewall in Windows XP SP2, and will nag you incessantly until you install it.

See all firewalls


#24
new
Windows
Command-line interface
GUI Interface
Sysinternals : An extensive collection of powerful windows utilities
Sysinternals provides many small windows utilities that are quite useful for low-level windows hacking. Some are free of cost and/or include source code, while others are proprietary. Survey respondents were most enamored with:
  • ProcessExplorer for keeping an eye on the files and directories open by any process (like LSoF on UNIX).
  • PsTools for managing (executing, suspending, killing, detailing) local and remote processes.
  • Autoruns for discovering what executables are set to run during system boot up or login.
  • RootkitRevealer for detecting registry and file system API discrepancies that may indicate the presence of a user-mode or kernel-mode rootkit.
  • TCPView, for viewing TCP and UDP traffic endpoints used by each process (like Netstat on UNIX).
Update: Microsoft acquired Sysinternals in July 2006, promising that “Customers will be able to continue building on Sysinternals' advanced utilities, technical information and source code”. Less than four months later, Microsoft removed most of that source code. Future product direction is uncertain.

See all rootkit detectors


#25
5
  TITLE=
Windows
GUI Interface
Retina : Commercial vulnerability assessment scanner by eEye
Like Nessus, Retina's function is to scan all the hosts on a network and report on any vulnerabilities found. It was written by eEye, who are well known for their security research.

See all vulnerability scanners



출처 : http://sectools.org/

Trackback 3 Comment 0
2010.06.07 09:50

Conntrack 방지 방법 (ip_conntrack 제한값)

다음은 /var/log/messages 의 내용이다. Netfilter의 conntrack 하나당 228 byte가 필요하고 최대 32760개가 가능하다는 것이다.  (약 10M)

Oct  7 15:15:22 host kernel: ip_conntrack version 2.4 (4095 buckets, 32760 max) – 228 bytes per conntrack

만약 32760이 넘으면 어떻게 될까? 다음과 같이 패킷이 drop이 된다.

Oct  7 15:16:42 host kernel: ip_conntrack: table full, dropping packet.

이런 문제는 웹 서버와 같이 동시에 수 많은 connection을 처리해야 하는 경우에 발생할 수 있고 ab와 같은 stress 발생기를 사용하는 경우에도 발생할 수 있다. 이 문제에 대한 해결책은?

  1. netfilter를 사용하지 않는다.
  2. conntrack를 최대 개수를 늘린다.
  3. iptables raw table를 이용해서 특정 패킷은 conntrack을 하지 않는다.
  4. TCP 연결과 같이 각 상태별 TTL 값을 조절해서 볼 일이 끝난 연결은 빨리빨리 conntrack에서 제거한다.

 각 경우에 대해서 좀 더 자세히 알아보자.

1. netfilter를 사용하지 않는다.

보안을 신경쓰지 않아도 된다면 그래도 좋다.

#service iptables stop

2. conntrack의 최대 개수를 늘린다.

아래와 같이 하면 가능하다.

echo “100000″ > /proc/sys/net/ipv4/ip_conntrack_max

3. NOTRACK

다음은 웹 서버(80)로 오가는 패킷은  conntrack 하지 않도록 하는 규칙이다. 들어오고 나가는 패킷 모두에 대해서 규칙을 넣어주어야 한다는 사실에 주의하시길.

# input packet to server
iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
# output packet from server
iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK

“cat /proc/net/ip_conntrack”이나 iptstate를 실행해도 이제 더 이상 80번 포트로 오가는 패킷을 기록되지 않게 된다. 당연히 NAT는 할 수 없고 “-m state –state NEW” 와 같은 stateful inspection 규칙은 사용할 수 없게 된다. raw table은 conntrack이나 filter 앞에 위치하며 packet의 내부 정보에 UNTRACKED를 표시해 둔다. 이 정보는 -m state –state UNTRACKED 의 규칙을 사용해서 filter에서 이용할 수 있다.  NOTRACK을 했다고 해서 그 이후의 filter 규칙을 무시하는 것은 아니다. 단지 stateful inspection을 사용할 수 없을 뿐이다.

이렇게 NOTRACK을 한 패킷을 filter에서 통과시키기 위해서는 다음과 같이 명시적으로 해 줄 수도 있다. 물론 -p tcp –dport 와 같은 IP 헤더 정보를 이용한 filtering도 가능하다.

# iptables -I INPUT -m state –state UNTRACKED -j ACCEPT
# iptables -I OUTPUT -m state –state UNTRACKED -j ACCEPT

4. TIMEOUT 값 변경

Netfilter와 관련해서 변경가능한 값은 아래와 같다. Timeout과 관련한 값을 변경해서 conntrack에 자리 잡고 있는 시간을 조절할 수 있다. 특히 timout_established 의 경우에는 5일이나 된다. 물론 TCP 연결이 종료된 경우에는 그에 부응하여 TTL 값이 줄기는 하지만 만약에 연결이 된 상태에서 클라이언트가 죽는 경우와 같은 경우에는 계속 상태를 잡고 있을 가능성이 있다.

Conntrack related status :
/proc/sys/net/ipv4/ip_conntrack_max:32760
/proc/sys/net/ipv4/netfilter/ip_conntrack_buckets:4095
/proc/sys/net/ipv4/netfilter/ip_conntrack_checksum:1
/proc/sys/net/ipv4/netfilter/ip_conntrack_count:3
/proc/sys/net/ipv4/netfilter/ip_conntrack_generic_timeout:600
/proc/sys/net/ipv4/netfilter/ip_conntrack_icmp_timeout:30
/proc/sys/net/ipv4/netfilter/ip_conntrack_log_invalid:0
/proc/sys/net/ipv4/netfilter/ip_conntrack_max:32760
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_be_liberal:0
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_loose:1
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_max_retrans:3
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close:10
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait:60
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established:432000
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait:120
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_last_ack:30
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_max_retrans:300
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv:60
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent:120
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait:120
/proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout:30
/proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream:180

현재 conntrack 개수 빨리 알기

ip_conntrack_count 값을 읽으면 빨리 알 수 있다. 전체 리스트를 읽는 것은 시간이 오래 걸릴 뿐만이 아니라 전체 시스템 반응에도 심각한 영향을 줄 수 있다.

[root /proc/sys/net/ipv4/netfilter]# cat ip_conntrack_count
4887
[root /proc/sys/net/ipv4/netfilter]# wc -l /proc/net/ip_conntrack
4887 /proc/net/ip_conntrack

CONNTRACK_MAX는 커널 메모리 상에서 netfilter가 동시에 처리하는 세션의 수를 이야기 하는 것이며 HASHSIZE는 CONTRACK 엔트리의 리스트를 저장할 해쉬 테이블의 사이즈를 지칭하는 것이었다.

i386 아키텍쳐에서는 CONNTRACK_MAX = RAMSIZE(단위: byte) / 16384 일때 가장 이상적인 사이즈이며, HASHSIZE는 CONNTRACK_MAX = HASHSIZE * 8이 성립될때 가장 이상적인 사이즈가 된다.

더 정확하게는
CONTRACK_MAX = RAMSIZE(단위: byte) / 16384 / ( x / 32)
HASHSIZE = CONNTRAK_MAX / 8 = RAMSIZE(단위: byte) / 131072 / (x / 32)

이다. 여기서 x의 값은 32비트 머신일 경우 32, 64비트 머신일 경우 64가 된다.

리눅스 머신에서는 1GB이상의 메모리일 경우 디폴트로 CONNTRACK_MAX가 65536이 세팅이 되고, HASHSIZE는 8192가 세팅이 된다.

아래의 명령으로 현재 세팅된 CONTRACK_MAX의 값을 알 수 있다.

Linux kernel version 2.4.23 이전의 버전
# cat /proc/sys/net/ipv4/ip_conntrack_max

Linux kernel version 2.4.23 (Linux 2.6 포함) 이후의 버전:
# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
  (/proc/sys/net/ipv4/ip_conntrack_max는 더이상 사용하지 않음)

값을 변경하는 법은 위의 설정된 파일들의 숫자를 변경하면 되는데 vi나 에디터를 사용하여 변경을 시도하면 이미 읽고 있는 파일이라 저장이 되지 않을 것이다.
아래와 같이 타이핑하면 CONTRACK_MAX의 값을 변경 할 수 있다.

Linux kernel version 2.4.23 이전의 버전
# echo $CONNTRACK_MAX > /proc/sys/net/ipv4/ip_conntrack_max
Linux kernel version 2.4.23 (Linux 2.6 포함) 이후의 버전:
# echo $CONNTRACK_MAX > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

커널 버전 2.4.21 이전에서는 HASHSIZE의 값이 소수이고 홀수여야만 하며 최적화된 값이 이미 세팅되어 있는 상태이므로 크기의 변경을 추천하지 않는다. 하지만 그 이후의 버전에서는 해쉬 알고리즘의 변경으로 이러한 제약조건이 없어졌다. 그러나 HASHSIZE가 2의 배수일 경우 최대의 효율을 나타낸다고 되어있다.

만일 netfilter contrack가 커널에 static하게 컴파일 되어 있을 경우는 컴파일 시에 값을 변경하거나 부트 옵션에

ip_conntrack.hashsize=$HASHSIZE

를 넣어주면 된다.

모듈로 컴파일 되어 있을 경우는 모듈을 인서트할때 옵션을 주면 된다.

# modprobe ip_conntrack hashsize=$HASHSIZE

커널 버전 2.6.14부터는 런타임에 해쉬사이즈를 변경하는 것이 가능해졌다.

# echo $HASHSIZE > /sys/module/ip_conntrack/parameters/hashsize
커널 버전 2.6.20에서는
# echo $HASHSIZE > /sys/module/nf_conntrack/parameters/hashsize


출처 : http://o5o5o.dyndns.org/

Trackback 0 Comment 0