Annotation of wikisrc/nsps.mdwn, revision 1.2
1.1 jdf 1: # NetBSD Security Processes and Services
2:
3: This document covers secure processes and services for NetBSD Operating
4: Systems and Networks. Most of the information in this document can
5: easily be translated to other BSD systems, however.
6:
7: # Overview
8:
9: ## Setup Example
10:
11: Simply writing this document without some sort of consistent example
12: would be quite difficult, so for the sake of easy discussion, the
13: following is what we want to accomplish:
14:
15: Internal Network clients, hosts, internal servers
16: 172.16.0.0
17:
18: |
19: |
20:
21: NetBSD Firewall fxp0 172.16.14.1
22: Server with SSH Open ------------------
23: ep0 216.68.250.60
24:
25: |
26: |
27:
28: Internet Connection gateway switch/
29: Provider Network router
30: 216.68.250.65
31:
32: |
33: |
34:
35: Big Bad Internet insert cloud here
36:
37: This is a pretty common setup for many organizations, to be connected
38: via a service providers network out onto the internet.
39:
40: The purpose of this firewall is to allow the clients on the 172.16.0.0
41: network to interact with the internet.
42:
43: ## The Desired Setup of the Firewall
44:
45: In a nutshell we want the firewall to be able to pass certain traffic in
46: and out, however, we only want one available service *at* the firewall
47: itself, that service is Secure Shell. Following is a matrix of how this
48: particular installation is to look:
49: <table>
50: <tr>
51: <th>Service</th>
52: <th>Connect to Firewall</th>
53: <th>Pass In</th>
54: <th>Pass Out</th>
55: </tr>
56: <tr>
57: <th>DNS</th>
58: <td>NO</td>
59: <td>YES</td>
60: <td>YES</td>
61: </tr>
62: <tr>
63: <th>SMTP</th>
64: <td>NO</td>
65: <td>YES</td>
66: <td>YES</td>
67: </tr>
68: <tr>
69: <th>HTTP</th>
70: <td>NO</td>
71: <td>YES</td>
72: <td>YES</td>
73: </tr>
74: <tr>
75: <th>FTP</th>
76: <td>NO</td>
77: <td>YES</td>
78: <td>YES</td>
79: </tr>
80: <tr>
81: <th>SSH</th>
1.2 ! jdf 82: <td>YES</td>
1.1 jdf 83: <td>YES</td>
84: <td>YES</td>
85: </tr>
86: </table>
87:
88: It is important to note here that we need to be able to pass DNS, SMTP,
89: FTP and HTTP traffic, however, we only really *want* the SSH service to
90: be able to establish a connection to the firewall. The reason noting
91: this now is important is because the rules in IPFILTER for making a
92: connection and passing traffic are nearly identical.
93:
94:
95: ## More than one way to . . .
96:
97: The setup used throughout this document is an example, there is
98: definitely more than one way to do this, for example:
99:
100: private network firewall DMZ with public firewall uplink
101: web, ftp, etc.
102: servers
103:
104: The DMZ would have publicly accessible web servers, ftpd servers etc. In
105: our example, we do not require the DMZ since we are not hosting any web
106: servers or running a DNS server that will participate with the rest of
107: the internet.
108:
109: # Configuring Secure Shell
110:
111: NetBSD ships with a Secure Shell implementation based on OpenBSD's. The
112: default configuration of Secure Shell is done quite well, and there is
113: little an administrator needs to actually do in most cases. Turning on
114: the Secure Shell daemon is required, however. For posterity, we are
115: going to take a short look at configuring it.
116:
117: ## The Client Side Configuration File
118:
119: The ssh client's configuration file is located in `/etc/ssh/ssh_config` and in
120: `~/.ssh/config` for single users.
121: The options contained in it are named intuitively and are rather verbose.
122: Documentation can be found in the ssh_config(5) manpage.
123:
124: ## The Server Configuration File
125:
126: The server side of SSH is configured via `/etc/ssh/sshd_config`. The defaults
127: are set to high security levels by default. To enable the ssh server, put the
128: line `sshd=yes` into `/etc/rc.conf` and run
129:
130: /etc/rc.d/sshd restart
131:
132: to start the server daemon and create any host keys if they are not already
133: present.
134:
135: One item to take note of is that the server config does not allow X11 forwarding
136: by default, which of course on a firewall is a **good thing**. To enable it the
137: administrator must change the following lines:
138:
139: StrictModes no
140: X11Forwarding yes
141:
142: Again, there is little to nothing the administrator needs to do with the Secure
143: Shell setup unless they wish to alter the default config.
144:
145: # Configuring IPFILTER
146:
147: NetBSD ships with IPfilter as its default firewall and packet filtering
148: software.
149:
150: ## Understanding The ipf.conf File
151:
152: The file that controls firewall rules for ipfilter is `/etc/ipf.conf` for IPv4
153: and `/etc/ipf6.conf` for IPv6. In this section we will go over the settings we
154: need and how I chose to implement them.
155:
156: Basically, ipfilter operates on two basic principles:
157:
158: 1. match the current line
159: 2. the last line supersedes previous ones
160:
161: Following is a very rudimentary `ipf.conf` file:
162:
163: pass in on any all
164: block in on any all
165:
166: According to the first line, on any interface, all traffic may be
167: passed. On the second line, however, all traffic on any interface is
168: blocked.
169:
170: ## The Syntax
171:
172: For the most part, ipfilter syntax is generally easy to follow, it is almost
173: natural. To pass in certain traffic, one says pass in, to pass out, pass out.
174: The interface can be specified or it can be all by saying something like:
175:
176: pass out on all . . .
177:
178: If one wanted to specify the interface:
179:
180: pass out on ep0 . . .
181:
182: So far so good, now lets look at the configuration we need for our firewall,
183: first we already know we want SSH traffic to be able to pass and connect:
184:
185: # sshd in from any
186: pass in quick on ep0 proto tcp from any to 216.68.250.60/32 port = 22 keep state
187:
188: You have probably already noticed some very new syntax here, let us take a look
189: at that now before we go any further.
190:
191: ### The quick Keyword
192:
193: The `quick` keyword overrides any previous settings. It is most convenient when
194: large and complex firewalls are built with up to 100 rules in them. In our case
195: it is not so, however, we are including to be absolutely sure that the rule will
196: be processed.
197:
198: ### The proto Keyword
199:
200: The `proto` keyword dictates, you guessed it, the protocol. In the case of
201: this firewall the protocol is always TCP.
202:
203: ### The port Keyword
204:
205:
206: The `port` keyword can be either the port number or the name as defined in
207: `/etc/services`, for posterity I have mixed and matched in this file.
208:
209: ### The keep state Keyword
210:
211: The `keep state` keywords ensure packet checking from end to end within
212: the firewall and here is why, if you look closely at all of the rules,
213: they all use the `quick` keyword, so they circumvent previous rules and
214: hence checking on both sides of the firewall *may* not take place.
215:
216: ## Example Entries
217:
218: Now lets look at the rest of the file in sections since we have a
219: slightly better idea of what we are looking at.
220:
221: ### Blocking Reserved & Local Machine Addresses
222:
223:
224: There are certain address classes we already know should not pass at all
225: through our firewall. The addresses are those specified as internal only
226: addresses and the localhost address (not the interface addresses):
227:
228: * 127.0.0.0/8 (the localhost)
229: * 192.168.0.0/16 (reserved for internal networks, see
230: [RFC 1918](tools.ietf.org/html/rfc1918))
231: * 172.16.0.0/12 (reserved for internal networks, see RFC 1918)
232: * 10.0.0.0/8 (reserved for internal networks, see RFC 1918)
233: * 169.254.0.0/16 (IANA use)
234: * 192.0.2.0/24 (netblock for documentation authors)
235: * 204.152.64.0/23 (Sun Microsystems cluster interconnects)
236: * 224.0.0.0/3 (class D and E multicasts)
237:
238: It is important to note here that on one interface, fxp0, we want to be
239: able to pass in and out on the 172.16.0.0 network (since our internal
240: network is 172.16..0.0). To do this we can use the following rules:
241:
242: block in quick on any from 192.168.0.0/16 to any
243: block in quick on any from 10.0.0.0/8 to any
244: block in quick on any from 127.0.0.0/8 to any
245: block in quick on any from 0.0.0.0/8 to any
246: block in quick on any from 169.254.0.0/16 to any
247: block in quick on any from 192.0.2.0/24 to any
248: block in quick on any from 204.152.64.0/23 to any
249: block in quick on any from 224.0.0.0/3 to any
250:
251: In this table you will notice the 172.16.0.0/12 is omitted (even though
252: it should be blocked at least on ep0), you will see why in the next part
253: of the file.
254:
255: ### Paranoia Block
256:
257: Next we will cut off all traffic to ep0, hence we do not need to explicitly
258: close off 172.16.0.0 from it.
259:
260: # block all
261: block in quick on ep0 all
262:
263: ### Make the Firewall Act like an Internet Client
264:
265: Next we want to make the firewall have the capability of acting like an internet
266: client, this is pretty simple:
267:
268: # pass out as if we were a single internet client
269: pass out quick on ep0 proto tcp from 216.68.250.60/32 to any keep state
270: pass out quick on ep0 proto udp from 216.68.250.60/32 to any keep state
271: pass out quick on ep0 proto icmp from 216.68.250.60/32 to any keep state
272:
273: ### Passing the Rest
274:
275: Now we ant to add all of the protocols we want to pass. It should be important
276: to note that if you have any of these services enabled **on the firewall** then
277: their port will be accessible **on the firewall**.
278: It is usually a safer bet *not to have anything but ssh, ipfilter and ipnat
279: running on it*, the exception this might be (as in my home setup) you simply do
280: not have the hardware to spare and must have DNS and/or other server processes
281: running on it as well.
282:
283: # dns stuff
284: pass in log proto tcp from any to any port = 53 keep state
285: pass in log proto udp from any to any port = 53 keep state
286:
287: # pass thru www and ftp
288: pass in log proto tcp from any to any port = www keep state
289: pass in proto tcp from any to any port = ftp keep state
290: pass in proto tcp from any to any port = ftp-data keep state
291: pass in proto tcp from any port = ftp-data to any port > 1023 keep state
292: pass in log proto icmp all keep state
293:
294: ## IP Filter for Dial Ups
295:
296: Dial up connections offer somewhat of a challenge for ipfilter in that most dial
297: up interfaces are assigned a different IP address each time the user makes the
298: connection.
299:
300: In dial up or any dynamic address situation, the rules must be written in a
301: slightly less secure manner. In other words, rules cannot use the internet side
302: IP address, however, even just using the interface is normally enough to
303: guarantee pretty good security. As an example, here is one of the rules that
304: uses an IP address:
305:
306: # pass out as if we were a single internet client
307: pass out quick on ep0 proto tcp from 216.68.250.60/32 to any keep state
308: pass out quick on ep0 proto udp from 216.68.250.60/32 to any keep state
309: pass out quick on ep0 proto icmp from 216.68.250.60/32 to any keep state
310:
311: For our dial up connection we will have to change the ruleset to this:
312:
313: # pass out as if we were a single internet client
314: pass out quick on ep0 proto tcp from any to any keep state
315: pass out quick on ep0 proto udp from any to any keep state
316: pass out quick on ep0 proto icmp from any to any keep state
317:
318: Now what good does this do us now? Well, first, any ports that are still blocked
319: are *still* inaccessible. Second, if a service is not turned on and no inbound
320: proxying is enabled, all of this traffic is just passing through. There is no
321: way for anyone to connect to the firewall except via ssh.
322:
323: # Configuring IPNAT
324:
325: Network Address Translation (NAT) is part of IPfilter, which comes by default
326: with the NetBSD release. The job of NAT is to take a source IP address and
327: translate it to another out a different network interface. This is also known
328: as masquerading.
329:
330: Luckily for you (as the exhausted reader) and I (the exhausted author)
331: configuring NAT is pretty simple, especially with the example we are using.
332:
333: ## What our /etc/ipnat.conf needs to look like
334:
335: It is very simple:
336:
337: map ep0 172.16.0.0/16 -> 216.68.250.60/32 proxy port ftp ftp/tcp
338: map ep0 172.16.0.0/16 -> 216.68.250.60/32 portmap tcp/udp 10000:20000
339: map ep0 172.16.0.0/16 -> 216.68.250.60/32
340:
341: First we are proxying ftp thru the ep0 interface. The next line says go ahead
342: and map all tcp/udp traffic right on through the interface and assign each out
343: bound "connection" a port from 10000 to 20000 and finally the last line says,
344: just plain map from 172.16.0.0/16 to 216.68.250.60/32. For our purposes this is
345: all we need so the rest of this document is of limited interest to those of you
346: in a crunch trying to get a firewall up.
347:
348: ## Other Nifty Stuff
349:
350: A few items of interest for the curious, we can also map *into* the local
351: network as well:
352:
353: map fxp0 216.68.250.60/32 -> 172.16.14.1/32 (add whatever service here)
354:
355: This might be handy to connect to a specific server inside (such as a web
356: server) or if you recall the DMZ example before, we may wish to translate *into*
357: the DMZ from the world. Additionally it can be used as a poor man's router to
358: link internal networks together - but there are much better was of doing that.
359:
360: Instead of this, however, most administrators would locate the web server within
361: a DMZ and use ipfilter to ensure only http and ssh connections can be made to
362: the system.
363:
364: If you look closely you will see all outbound connections map to a single IP
365: address, what if you wanted to be able to map to more? You can do so by simply
366: changing the single address to a network:
367:
368: map ep0 172.16.0.0/16 -> 216.68.250.0/24
369:
370: Finally, the portmap range can be adjusted to whatever you feel is necessary.
371:
372: ## IPNAT With Dial Up Networking
373:
374: Many home users use dial up connections to access the internet. Many dial up
375: connections are assigned a dynamic IP address every time the user connects. At
376: first glance it may appear that some method for putting this new address into
377: `/etc/ipnat.conf` is required. Luckily, that is not so. Take note of how
378: addresses can be shown on the internet side of the `ipnat.conf` file. Actually
379: entire subnets can be used like so:
380:
381: map ep0 172.16.0.0/16 -> 216.68.0.0/16
382:
383: What this is saying is that addresses from 172.16.0.0 can be assigned any
384: address on 216.68.0.0's network. Keeping that in mind, on a dial up connection
385: you know you will be given one and one address, so the following entries
386: effectively do the same:
387:
388: map ppp0 172.16.0.0 -> 0/32 proxy port ftp ftp/tcp
389: map ppp0 172.16.0.0 -> 0/32 portmap tcp/udp 40000:60000
390: map ppp0 172.16.0.0 -> 0/32
391:
392: Here we are saying map anything on 172.16.0.0 to one single address, the address
393: the interface will have.
394:
395:
396: # Activating Services
397:
398: At this point, in theory, we are ready to start everything up. All of the
399: services we will need running are:
400:
401: * ipfilter
402: * ipnat
403: * ipmon
404: * sshd
405:
406: Additionally, we need to make sure that ip forwarding is enabled in the kernel.
407:
408: ## Turning on IP Forwarding
409:
410: To turn on IP forwarding use the sysctl facility:
411:
412: sysctl -w net.inet.ip.forwarding=1
413:
414: To have it turned on at bootup append the following text to `/etc/sysctl.conf`:
415:
416: net.inet.ip.forwarding=1
417:
418: ## /etc/defaults/rc.conf and /etc/rc.conf
419:
420: NetBSD's default rc settings are all kept in `/etc/defaults/rc.conf`. To make
421: upgrades safer, override settings in `/etc/rc.conf` instead of
422: `/etc/defaults/rc.conf`.
423:
424: ### What we need in /etc/rc.conf
425:
426: Basically, we can yank the contents of `/etc/defaults/rc.conf` and drop them
427: right into `/etc/rc.conf`:
428:
429: # cat /etc/defaults/rc.conf >>/etc/rc.conf
430: # vi /etc/rc.conf
431:
432: Note the double `>` here to avoid overwriting the contents of `/etc/rc.conf` as
433: shipped! Here is what `/etc/rc.conf` would look like after editing:
434: #
435: # see rc.conf(5) for more information.
436: #
437: # Use program=YES to enable program, NO to disable it. program_flags are
438: # passed to the program on the command line.
439: #
440:
441: # Load the defaults in from /etc/defaults/rc.conf (if it's readable).
442: # These can be overridden below.
443: #
444: if [ -r /etc/defaults/rc.conf ]; then
445: . /etc/defaults/rc.conf
446: fi
447:
448: # If this is not set to YES, the system will drop into single-user mode.
449: #
450: rc_configured=YES
451:
452: # Add local overrides below
453: #
454: ipfilter=YES
455: ipnat=YES
456: ipmon=YES ipmon_flags="-sn"
457: sshd=YES
458:
459: On i386 (PC) systems you will also see the wscons framework enabled:
460:
461: wscons=YES
462:
463: ## Activating the Services
464:
465: Next we have to activate the services, we can do this one of two ways:
466:
467: 1. reboot the system
468: 2. start using the rc scripts by hand
469:
470: I prefer doing the latter first just to make sure everything is setup right,
471: then I do a reboot to make sure all of the services will start up properly
472: during the bootup sequence.
473:
474: ### Starting Services "by hand"
475:
476: To start any service it is quite simple:
477:
478: # /etc/rc.d/[service_name] start
479:
480: Additionally, a service may be stopped:
481:
482: # /etc/rc.d/[service_name] stop
483:
484: or restarted:
485:
486: # /etc/rc.d/[service_name] restart
487:
488: So for this firewall, here is the order we need to start the services:
489:
490: # /etc/rc.d/sshd start
491: # /etc/rc.d/ipfilter start
492: # /etc/rc.d/ipnat start
493: # /etc/rc.d/ipmon start
494:
495: In reality, when sshd and ipmon start is arbitrary, however, ipfilter
496: must be enabled before ipnat.
497:
498: # Additional Products
499:
500: The NetBSD release comes ready to roll with a host of advanced networking
501: capabilities. However, an administrator may wish to use additional or
502: alternative software. This section looks at other software that can run on
503: NetBSD the administrator may find of interest.
504:
505: ## Portsentry
506:
507: The portsentry utility is a great tool. In a nutshell, portsentry
508: watches your system for scans and connection attempts and then will take
509: action to block a possible attacker. The main weakness portsentry has is
510: that it takes one connection attempt for portsentry to determine that
511: the host attempting to connect is hostile, so, if the first attempt is
512: successful, you are still out of luck.
513:
514: ### Getting Portsentry
515:
516: Portsentry can be retrieved and installed using the
517: [pkgsrc](http://www.NetBSD.org/docs/software/packages.html) system:
518:
519: # cd /usr/pkgsrc/security/portsentry
520: # make && make install
521:
522: or using binary packages with pkgin:
523:
524: # pkgin install portsentry
525:
526: ### Configuring Portsentry
527:
528: On NetBSD, portsentry is configured in `/usr/pkg/etc/portsentry.conf`.
529:
530: ### Port Configurations
531:
532: In the configuration file there are three sets of ports shown, of these, one for
533: tcp and one for udp must be selected by uncommenting the line, the default is to
534: use the "middle" sets, they should look something like this:
535:
536: # Un-comment these if you are really anal:
537: TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,
538: 635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034,30303,32
539: 771,32772,32773,32774,31337,40421,40425,49724,54320"
540: #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,66
541: 6,700,2049,32770,32771,32772,32773,32774,31337,54321"
542: #
543: # Use these if you just want to be aware:
544: #TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,
545: 20034,31337,32771,32772,32773,32774,40421,49724,54320"
546: UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,32770,32771,32772,32773,32774,31
547: 337,54321"
548: #
549: # Use these for just bare-bones
550: #TCP_PORTS="1,11,15,110,111,143,540,635,1080,524,2000,12345,12346,20034,32771,32
551: 772,32773,32774,49724,54320"
552: #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,543
553: 21"
554:
555: #### Advanced Stealth Detection
556:
557: The number of ports portsentry should monitor in advanced mode, all of the ports
558: below the listed number(s) are monitored this way:
559:
560: ADVANCED_PORTS_TCP="1023"
561: ADVANCED_PORTS_UDP="1023"
562:
563: Additionally in this section portsentry can be told certain items to exclude
564: (such as loud NetBIOS services):
565:
566: # Default TCP ident and NetBIOS service
567: ADVANCED_EXCLUDE_TCP="113,139"
568: # Default UDP route (RIP), NetBIOS, bootp broadcasts.
569: ADVANCED_EXCLUDE_UDP="520,138,137,67"
570:
571: #### Configuration Files
572:
573: Where files live, on NetBSD this is under `/usr/pkg/*`:
574:
575: # Hosts to ignore
576: IGNORE_FILE="/usr/pkg/etc/portsentry.ignore"
577: # Hosts that have been denied (running history)
578: HISTORY_FILE="/usr/pkg/etc/portsentry.history"
579: # Hosts that have been denied this session only (temporary until next restart)
580: BLOCKED_FILE="/usr/pkg/etc/portsentry.blocked"
581:
582: #### Response Options
583:
584: This section is pretty straightforward just as it says in the file:
585:
586: # 0 = Do not block UDP/TCP scans.
587: # 1 = Block UDP/TCP scans.
588: # 2 = Run external command only (KILL_RUN_CMD)
589:
590: BLOCK_UDP="1"
591: BLOCK_TCP="1"
592:
593: #### Dropping Routes
594:
595: This is the kill route option, the one used for NetBSD is already uncommented:
596:
597: # Generic BSD (BSDI, OpenBSD, NetBSD, FreeBSD)
598: KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666"
599:
600: It should be noted that some can actually modify firewall tables, for example,
601: the FreeBSD packetfilter option:
602:
603: # For those of you running FreeBSD (and compatible) you can
604: # use their built in firewalling as well.
605: #
606: #KILL_ROUTE="/sbin/ipfw add 1 deny all from $TARGET$:255.255.255.255 to any"
607:
608: If another type of firewall is being used on your system, it may be possible to
609: add in something like this to your portsentry configuration.
610:
611: #### TCP Wrappers
612:
613: This section is the text that gets put into `/etc/hosts.deny`.
614:
615: #
616: KILL_HOSTS_DENY="ALL: $TARGET$"
617:
618: #### External Commands
619:
620: Here, any external command (or script etc.) may be called.
621:
622: #KILL_RUN_CMD="/some/path/here/script $TARGET$ $PORT$"
623:
624: As an example, altering the firewall could be here as well.
625:
626: #### Scan Trigger Value
627:
628: This is the number of port connects that portsentry allows before an alarm goes
629: up, the default is 0, 1 is usually pretty safe as well (to keep down the false
630: alarms).
631:
632: #### Port Banner
633:
634: This is a message that can be sent back to the person who tripped portsentry,
635: unless they are using a very verbose tool it usually ends up in a logfile on
636: their system (on NetBSD it ends up in `/var/log/messages`.
637:
638: #PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION ATTEMPT HAS
639: BEEN LOGGED. GO AWAY."
640:
641: ## NMAP
642:
643: The nmap utility is a portscanner. It can scan one host, a network or
644: combinations therein. It is currently in the pkgsrc tree.
645:
646: ### Getting and Installing NMAP
647:
648:
649: Use [pkgsrc](http://www.NetBSD.org/docs/software/packages.html):
650:
651: # cd /usr/pkgsrc/net/nmap
652: # make && make install
653:
654: or, using binary packages with pkgin:
655:
656: # pkgin install nmap
657:
658: ### Using nmap
659:
660: The [nmap](http://insecure.org/) utility has **a lot** of options, we will look
661: at three examples:
662:
663: 1. scanning one host
664: 2. scanning several hosts
665: 3. scanning a NetBSD firewall
666:
667: #### Scanning One Host
668:
669: For this example we will use a pretty insecure system on an internal network:
670:
671: # nmap -P0 172.16.14.12
672:
673: Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
674: Interesting ports on marie.ipsosasi.net (172.16.14.12):
675: (The 1504 ports scanned but not shown below are in state: closed)
676: Port State Service
677: 7/tcp open echo
678: 9/tcp open discard
679: 13/tcp open daytime
680: 19/tcp open chargen
681: 21/tcp open ftp
682: 23/tcp open telnet
683: 37/tcp open time
684: 111/tcp open sunrpc
685: . . .
686:
687: #### Scanning A Network
688:
689: Now let's look at a whole bunch of machines!
690:
691: % nmap -P0 172.16.14.0/24 > nmap.out
692:
693: Whenever it is either done (which could be awhile) or interrupted/stopped take a
694: peek at the file where all of the information was dumped, following is a sample
695: from the network I scanned:
696:
697: Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
698: All 1523 scanned ports on (172.16.14.0) are: closed
699: Interesting ports on somename.blah.net (172.16.14.1):
700: (The 1521 ports scanned but not shown below are in state: filtered)
701: Port State Service
702: 23/tcp open telnet
703: 68/tcp closed bootpc
704:
705: All 1523 scanned ports on somename.blah.net (172.16.14.2) are: closed
706: Interesting ports on somename.blah.net (172.16.14.3):
707: (The 1520 ports scanned but not shown below are in state: closed)
708: Port State Service
709: 23/tcp open telnet
710: 79/tcp open finger
711: 80/tcp open http
712:
713: Interesting ports on somename.blah.net (172.16.14.4):
714: (The 1513 ports scanned but not shown below are in state: closed)
715: Port State Service
716: 7/tcp open echo
717: 9/tcp open discard
718: 19/tcp open chargen
719: . . .
720:
721: #### Scanning a NetBSD Firewall
722:
723: Last but definitely not least, lets nail a firewall:
724:
725: Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
726:
727: Interesting ports on (216.68.250.60):
728: (The 1522 ports scanned but not shown below are in state: filtered)
729: Port State Service
730: 22/tcp open ssh
731:
732: Nmap run completed -- 1 IP address (1 host up) scanned in 772 seconds
733:
734: Now that is more like it.
735:
736:
737: # Examples
738:
739: * [[ipf.conf|http://netbsd.org/docs/network/nsps/examples/ipf.conf]]
740: * [[ipnat.conf|http://netbsd.org/docs/network/nsps/examples/ipnat.conf]]
741: * [[rc.conf|http://netbsd.org/docs/network/nsps/examples/rc.conf]]
742: * [[sysctl.conf|http://netbsd.org/docs/network/nsps/examples/sysctl.conf]]
743: * [[portsentry.conf|http://netbsd.org/docs/network/nsps/examples/portsentry.conf]]
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb