Ceci est une ancienne révision du document !
Table des matières
Version : 2020.03 - Consulter le Change Log en fin de module.
Dernière mise-à-jour : 2020/09/02 10:01
LRF404 - Balayage des Ports
Dans cette unité, vous allez apprendre :
- Comment scanner les ports d'un système d'exploitation en utilisant nmap et netcat,
- Comment mettre en place un Système de Détection d'Intrusion avecSnort,
- Comment mettre en place un Système de Détection et de Prévention d'Intrusion avec Portsentry.
Le Problématique
Un Cheval de Troie est un binaire qui se cache dans un autre. Il est exécuté suite à l'exécution du binaire hôte par la cible ou par un utilisateur. Le but principal du Cheval de Troie est d'ouvrir une trappe (backdoor). Les Chevaux de Troie les plus connus sont :
- Back Orifice 2000 - tcp/8787, tcp/54320-21,
- Backdoor - tcp/1999,
- Subseven - tcp/1243, tcp/ 2773, tcp/6711-6713, tcp/7215, tcp/27374, tcp/27573, tcp/54283,
- Socket de Troie - tcp/5001, tcp/30303, tcp/50505.
Le scan consiste à balayer les ports d'une machine afin de :
- connaître les ports qui sont ouverts,
- déterminer le système d'exploitation,
- identifier les services ouverts.
Plusieurs scanners existent dont :
- nmap
- netcat
LAB #1 - Utilisation de nmap et de netcat
nmap
Installation
Sous RHEL/CentOS 7, nmap n'est pas installé par défaut :
[root@centos7 ~]# which nmap /usr/bin/which: no nmap in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
Installez donc nmap en utilisant yum :
[root@centos7 ~]# yum install nmap Loaded plugins: fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast adobe-linux-x86_64 | 2.9 kB 00:00 base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 (1/3): adobe-linux-x86_64/primary_db | 2.7 kB 00:00 (2/3): extras/7/x86_64/primary_db | 191 kB 00:00 (3/3): updates/7/x86_64/primary_db | 7.8 MB 00:04 Determining fastest mirrors * base: ftp.rezopole.net * extras: ftp.rezopole.net * updates: ftp.rezopole.net Resolving Dependencies --> Running transaction check ---> Package nmap.x86_64 2:6.40-7.el7 will be installed --> Processing Dependency: nmap-ncat = 2:6.40-7.el7 for package: 2:nmap-6.40-7.el7.x86_64 --> Running transaction check ---> Package nmap-ncat.x86_64 2:6.40-7.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: nmap x86_64 2:6.40-7.el7 base 4.0 M Installing for dependencies: nmap-ncat x86_64 2:6.40-7.el7 base 201 k Transaction Summary ================================================================================ Install 1 Package (+1 Dependent package) Total download size: 4.2 M Installed size: 17 M Is this ok [y/d/N]: y
Options de la commande
Les options de cette commande sont :
[root@centos7 ~]# nmap --help Nmap 6.40 ( http://nmap.org ) Usage: nmap [Scan Type(s)] [Options] {target specification} TARGET SPECIFICATION: Can pass hostnames, IP addresses, networks, etc. Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL <inputfilename>: Input from list of hosts/networks -iR <num hosts>: Choose random targets --exclude <host1[,host2][,host3],...>: Exclude hosts/networks --excludefile <exclude_file>: Exclude list from file HOST DISCOVERY: -sL: List Scan - simply list targets to scan -sn: Ping Scan - disable port scan -Pn: Treat all hosts as online -- skip host discovery -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes -PO[protocol list]: IP Protocol Ping -n/-R: Never do DNS resolution/Always resolve [default: sometimes] --dns-servers <serv1[,serv2],...>: Specify custom DNS servers --system-dns: Use OS's DNS resolver --traceroute: Trace hop path to each host SCAN TECHNIQUES: -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans -sU: UDP Scan -sN/sF/sX: TCP Null, FIN, and Xmas scans --scanflags <flags>: Customize TCP scan flags -sI <zombie host[:probeport]>: Idle scan -sY/sZ: SCTP INIT/COOKIE-ECHO scans -sO: IP protocol scan -b <FTP relay host>: FTP bounce scan PORT SPECIFICATION AND SCAN ORDER: -p <port ranges>: Only scan specified ports Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9 -F: Fast mode - Scan fewer ports than the default scan -r: Scan ports consecutively - don't randomize --top-ports <number>: Scan <number> most common ports --port-ratio <ratio>: Scan ports more common than <ratio> SERVICE/VERSION DETECTION: -sV: Probe open ports to determine service/version info --version-intensity <level>: Set from 0 (light) to 9 (try all probes) --version-light: Limit to most likely probes (intensity 2) --version-all: Try every single probe (intensity 9) --version-trace: Show detailed version scan activity (for debugging) SCRIPT SCAN: -sC: equivalent to --script=default --script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts --script-args-file=filename: provide NSE script args in a file --script-trace: Show all data sent and received --script-updatedb: Update the script database. --script-help=<Lua scripts>: Show help about scripts. <Lua scripts> is a comma separted list of script-files or script-categories. OS DETECTION: -O: Enable OS detection --osscan-limit: Limit OS detection to promising targets --osscan-guess: Guess OS more aggressively TIMING AND PERFORMANCE: Options which take <time> are in seconds, or append 'ms' (milliseconds), 's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m). -T<0-5>: Set timing template (higher is faster) --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes --min-parallelism/max-parallelism <numprobes>: Probe parallelization --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies probe round trip time. --max-retries <tries>: Caps number of port scan probe retransmissions. --host-timeout <time>: Give up on target after this long --scan-delay/--max-scan-delay <time>: Adjust delay between probes --min-rate <number>: Send packets no slower than <number> per second --max-rate <number>: Send packets no faster than <number> per second FIREWALL/IDS EVASION AND SPOOFING: -f; --mtu <val>: fragment packets (optionally w/given MTU) -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys -S <IP_Address>: Spoof source address -e <iface>: Use specified interface -g/--source-port <portnum>: Use given port number --data-length <num>: Append random data to sent packets --ip-options <options>: Send packets with specified ip options --ttl <val>: Set IP time-to-live field --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address --badsum: Send packets with a bogus TCP/UDP/SCTP checksum OUTPUT: -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3, and Grepable format, respectively, to the given filename. -oA <basename>: Output in the three major formats at once -v: Increase verbosity level (use -vv or more for greater effect) -d: Increase debugging level (use -dd or more for greater effect) --reason: Display the reason a port is in a particular state --open: Only show open (or possibly open) ports --packet-trace: Show all packets sent and received --iflist: Print host interfaces and routes (for debugging) --log-errors: Log errors/warnings to the normal-format output file --append-output: Append to rather than clobber specified output files --resume <filename>: Resume an aborted scan --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML --webxml: Reference stylesheet from Nmap.Org for more portable XML --no-stylesheet: Prevent associating of XSL stylesheet w/XML output MISC: -6: Enable IPv6 scanning -A: Enable OS detection, version detection, script scanning, and traceroute --datadir <dirname>: Specify custom Nmap data file location --send-eth/--send-ip: Send using raw ethernet frames or IP packets --privileged: Assume that the user is fully privileged --unprivileged: Assume the user lacks raw socket privileges -V: Print version number -h: Print this help summary page. EXAMPLES: nmap -v -A scanme.nmap.org nmap -v -sn 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -Pn -p 80 SEE THE MAN PAGE (http://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
Utilisation
Pour connaître la liste des ports ouverts sur votre machine virtuelle, saisissez la commande suivante :
[root@centos7 ~]# nmap 127.0.0.1 Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-05 14:17 CEST Nmap scan report for localhost.localdomain (127.0.0.1) Host is up (-2100s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
Important - Pour connaître les ports ouverts sur une machine distante, la procédure est identique sauf que vous devez utiliser l'adresse IP de votre cible.
Fichiers de Configuration
nmap utilise un fichier spécifique pour identifier les ports. Ce fichier est /usr/share/nmap/nmap-services:
[root@centos7 ~]# more /usr/share/nmap/nmap-services # THIS FILE IS GENERATED AUTOMATICALLY FROM A MASTER - DO NOT EDIT. # EDIT /nmap-private-dev/nmap-services-all IN SVN INSTEAD. # Well known service port numbers -*- mode: fundamental; -*- # From the Nmap Security Scanner ( http://nmap.org ) # # $Id: nmap-services 31220 2013-07-03 04:30:43Z david $ # # Derived from IANA data and our own research # # This collection of service data is (C) 1996-2011 by Insecure.Com # LLC. It is distributed under the Nmap Open Source license as # provided in the COPYING file of the source distribution or at # http://nmap.org/data/COPYING . Note that this license # requires you to license your own work under a compatable open source # license. If you wish to embed Nmap technology into proprietary # software, we sell alternative licenses (contact sales@insecure.com). # Dozens of software vendors already license Nmap technology such as # host discovery, port scanning, OS detection, and version detection. # For more details, see http://nmap.org/book/man-legal.html # # Fields in this file are: Service name, portnum/protocol, open-frequency, optional comments # tcpmux 1/tcp 0.001995 # TCP Port Service Multiplexer [rfc-1078] tcpmux 1/udp 0.001236 # TCP Port Service Multiplexer compressnet 2/tcp 0.000013 # Management Utility compressnet 2/udp 0.001845 # Management Utility compressnet 3/tcp 0.001242 # Compression Process compressnet 3/udp 0.001532 # Compression Process unknown 4/tcp 0.000477 rje 5/udp 0.000593 # Remote Job Entry unknown 6/tcp 0.000502 echo 7/sctp 0.000000 echo 7/tcp 0.004855 echo 7/udp 0.024679 unknown 8/tcp 0.000013 --More--(0%)
Le répertoire /usr/share/nmap contient d'autres fichiers importants :
[root@centos7 ~]# ls -l /usr/share/nmap total 6548 -rw-r--r--. 1 root root 10546 Nov 20 2015 nmap.dtd -rw-r--r--. 1 root root 455371 Nov 20 2015 nmap-mac-prefixes -rw-r--r--. 1 root root 3694559 Nov 20 2015 nmap-os-db -rw-r--r--. 1 root root 11749 Nov 20 2015 nmap-payloads -rw-r--r--. 1 root root 6631 Nov 20 2015 nmap-protocols -rw-r--r--. 1 root root 49243 Nov 20 2015 nmap-rpc -rw-r--r--. 1 root root 1727204 Nov 20 2015 nmap-service-probes -rw-r--r--. 1 root root 622039 Nov 20 2015 nmap-services -rw-r--r--. 1 root root 31935 Nov 20 2015 nmap.xsl drwxr-xr-x. 3 root root 4096 Aug 5 14:16 nselib -rw-r--r--. 1 root root 47190 Nov 20 2015 nse_main.lua drwxr-xr-x. 2 root root 20480 Aug 5 14:16 scripts
Voici la liste des fichiers les plus importants :
Fichier | Description |
---|---|
/usr/share/nmap/nmap-protocols | Contient la liste des protocols reconnus par nmap. |
/usr/share/nmap/nmap-service-probes | Contient les règles de balayage utilisées par nmap pour identifier le service actif sur un port donné. |
/usr/share/nmap/nmap-mac-prefixes | Contient une liste de préfix d'adresses MAC par fabricant reconnu par nmap. |
/usr/share/nmap/nmap-rpc | Contient une liste des services RPC reconnus par nmap. |
Scripts
nmap utilise des scripts pour accomplir certaines tâches allant de la découverte simple de ports ouverts jusqu'à l'intrusion :
[root@centos7 ~]# ls /usr/share/nmap/scripts/ acarsd-info.nse http-domino-enum-passwords.nse ndmp-version.nse address-info.nse http-drupal-enum-users.nse nessus-brute.nse afp-brute.nse http-drupal-modules.nse nessus-xmlrpc-brute.nse afp-ls.nse http-email-harvest.nse netbus-auth-bypass.nse afp-path-vuln.nse http-enum.nse netbus-brute.nse afp-serverinfo.nse http-exif-spider.nse netbus-info.nse afp-showmount.nse http-favicon.nse netbus-version.nse ajp-auth.nse http-fileupload-exploiter.nse nexpose-brute.nse ajp-brute.nse http-form-brute.nse nfs-ls.nse ajp-headers.nse http-form-fuzzer.nse nfs-showmount.nse ajp-methods.nse http-frontpage-login.nse nfs-statfs.nse ajp-request.nse http-generator.nse nping-brute.nse amqp-info.nse http-git.nse nrpe-enum.nse asn-query.nse http-gitweb-projects-enum.nse ntp-info.nse auth-owners.nse http-google-malware.nse ntp-monlist.nse auth-spoof.nse http-grep.nse omp2-brute.nse backorifice-brute.nse http-headers.nse omp2-enum-targets.nse backorifice-info.nse http-huawei-hg5xx-vuln.nse openlookup-info.nse banner.nse http-icloud-findmyiphone.nse openvas-otp-brute.nse bitcoin-getaddr.nse http-icloud-sendmsg.nse oracle-brute.nse bitcoin-info.nse http-iis-webdav-vuln.nse oracle-brute-stealth.nse bitcoinrpc-info.nse http-joomla-brute.nse oracle-enum-users.nse bittorrent-discovery.nse http-litespeed-sourcecode-download.nse oracle-sid-brute.nse bjnp-discover.nse http-majordomo2-dir-traversal.nse ovs-agent-version.nse broadcast-ataoe-discover.nse http-malware-host.nse p2p-conficker.nse broadcast-avahi-dos.nse http-methods.nse path-mtu.nse broadcast-bjnp-discover.nse http-method-tamper.nse pcanywhere-brute.nse broadcast-db2-discover.nse http-open-proxy.nse pgsql-brute.nse broadcast-dhcp6-discover.nse http-open-redirect.nse pjl-ready-message.nse broadcast-dhcp-discover.nse http-passwd.nse pop3-brute.nse broadcast-dns-service-discovery.nse http-phpmyadmin-dir-traversal.nse pop3-capabilities.nse broadcast-dropbox-listener.nse http-phpself-xss.nse pptp-version.nse broadcast-eigrp-discovery.nse http-php-version.nse qscan.nse broadcast-igmp-discovery.nse http-proxy-brute.nse quake3-info.nse broadcast-listener.nse http-put.nse quake3-master-getservers.nse broadcast-ms-sql-discover.nse http-qnap-nas-info.nse rdp-enum-encryption.nse broadcast-netbios-master-browser.nse http-rfi-spider.nse rdp-vuln-ms12-020.nse broadcast-networker-discover.nse http-robots.txt.nse realvnc-auth-bypass.nse broadcast-novell-locate.nse http-robtex-reverse-ip.nse redis-brute.nse broadcast-pc-anywhere.nse http-robtex-shared-ns.nse redis-info.nse broadcast-pc-duo.nse http-sitemap-generator.nse resolveall.nse broadcast-pim-discovery.nse http-slowloris-check.nse reverse-index.nse broadcast-ping.nse http-slowloris.nse rexec-brute.nse broadcast-pppoe-discover.nse http-sql-injection.nse riak-http-info.nse broadcast-rip-discover.nse http-stored-xss.nse rlogin-brute.nse broadcast-ripng-discover.nse http-title.nse rmi-dumpregistry.nse broadcast-sybase-asa-discover.nse http-tplink-dir-traversal.nse rmi-vuln-classloader.nse broadcast-tellstick-discover.nse http-trace.nse rpcap-brute.nse broadcast-upnp-info.nse http-traceroute.nse rpcap-info.nse broadcast-versant-locate.nse http-unsafe-output-escaping.nse rpc-grind.nse broadcast-wake-on-lan.nse http-userdir-enum.nse rpcinfo.nse broadcast-wpad-discover.nse http-vhosts.nse rsync-brute.nse broadcast-wsdd-discover.nse http-virustotal.nse rsync-list-modules.nse broadcast-xdmcp-discover.nse http-vlcstreamer-ls.nse rtsp-methods.nse cassandra-brute.nse http-vmware-path-vuln.nse rtsp-url-brute.nse cassandra-info.nse http-vuln-cve2009-3960.nse samba-vuln-cve-2012-1182.nse cccam-version.nse http-vuln-cve2010-0738.nse script.db citrix-brute-xml.nse http-vuln-cve2010-2861.nse servicetags.nse citrix-enum-apps.nse http-vuln-cve2011-3192.nse sip-brute.nse citrix-enum-apps-xml.nse http-vuln-cve2011-3368.nse sip-call-spoof.nse citrix-enum-servers.nse http-vuln-cve2012-1823.nse sip-enum-users.nse citrix-enum-servers-xml.nse http-vuln-cve2013-0156.nse sip-methods.nse couchdb-databases.nse http-waf-detect.nse skypev2-version.nse couchdb-stats.nse http-waf-fingerprint.nse smb-brute.nse creds-summary.nse http-wordpress-brute.nse smb-check-vulns.nse cups-info.nse http-wordpress-enum.nse smb-enum-domains.nse cups-queue-info.nse http-wordpress-plugins.nse smb-enum-groups.nse cvs-brute.nse iax2-brute.nse smb-enum-processes.nse cvs-brute-repository.nse iax2-version.nse smb-enum-sessions.nse daap-get-library.nse icap-info.nse smb-enum-shares.nse daytime.nse ike-version.nse smb-enum-users.nse db2-das-info.nse imap-brute.nse smb-flood.nse db2-discover.nse imap-capabilities.nse smb-ls.nse dhcp-discover.nse informix-brute.nse smb-mbenum.nse dict-info.nse informix-query.nse smb-os-discovery.nse distcc-cve2004-2687.nse informix-tables.nse smb-print-text.nse dns-blacklist.nse ip-forwarding.nse smb-psexec.nse dns-brute.nse ip-geolocation-geobytes.nse smb-security-mode.nse dns-cache-snoop.nse ip-geolocation-geoplugin.nse smb-server-stats.nse dns-check-zone.nse ip-geolocation-ipinfodb.nse smb-system-info.nse dns-client-subnet-scan.nse ip-geolocation-maxmind.nse smbv2-enabled.nse dns-fuzz.nse ipidseq.nse smb-vuln-ms10-054.nse dns-ip6-arpa-scan.nse ipv6-node-info.nse smb-vuln-ms10-061.nse dns-nsec3-enum.nse ipv6-ra-flood.nse smtp-brute.nse dns-nsec-enum.nse irc-botnet-channels.nse smtp-commands.nse dns-nsid.nse irc-brute.nse smtp-enum-users.nse dns-random-srcport.nse irc-info.nse smtp-open-relay.nse dns-random-txid.nse irc-sasl-brute.nse smtp-strangeport.nse dns-recursion.nse irc-unrealircd-backdoor.nse smtp-vuln-cve2010-4344.nse dns-service-discovery.nse iscsi-brute.nse smtp-vuln-cve2011-1720.nse dns-srv-enum.nse iscsi-info.nse smtp-vuln-cve2011-1764.nse dns-update.nse isns-info.nse sniffer-detect.nse dns-zeustracker.nse jdwp-exec.nse snmp-brute.nse dns-zone-transfer.nse jdwp-info.nse snmp-hh3c-logins.nse domcon-brute.nse jdwp-inject.nse snmp-interfaces.nse domcon-cmd.nse jdwp-version.nse snmp-ios-config.nse domino-enum-users.nse krb5-enum-users.nse snmp-netstat.nse dpap-brute.nse ldap-brute.nse snmp-processes.nse drda-brute.nse ldap-novell-getpass.nse snmp-sysdescr.nse drda-info.nse ldap-rootdse.nse snmp-win32-services.nse duplicates.nse ldap-search.nse snmp-win32-shares.nse eap-info.nse lexmark-config.nse snmp-win32-software.nse epmd-info.nse llmnr-resolve.nse snmp-win32-users.nse eppc-enum-processes.nse lltd-discovery.nse socks-auth-info.nse finger.nse maxdb-info.nse socks-brute.nse firewalk.nse mcafee-epo-agent.nse socks-open-proxy.nse firewall-bypass.nse membase-brute.nse ssh2-enum-algos.nse flume-master-info.nse membase-http-info.nse ssh-hostkey.nse ftp-anon.nse memcached-info.nse sshv1.nse ftp-bounce.nse metasploit-info.nse ssl-cert.nse ftp-brute.nse metasploit-msgrpc-brute.nse ssl-date.nse ftp-libopie.nse metasploit-xmlrpc-brute.nse ssl-enum-ciphers.nse ftp-proftpd-backdoor.nse mmouse-brute.nse ssl-google-cert-catalog.nse ftp-vsftpd-backdoor.nse mmouse-exec.nse ssl-known-key.nse ftp-vuln-cve2010-4221.nse modbus-discover.nse sslv2.nse ganglia-info.nse mongodb-brute.nse stun-info.nse giop-info.nse mongodb-databases.nse stun-version.nse gkrellm-info.nse mongodb-info.nse stuxnet-detect.nse gopher-ls.nse mrinfo.nse svn-brute.nse gpsd-info.nse msrpc-enum.nse targets-asn.nse hadoop-datanode-info.nse ms-sql-brute.nse targets-ipv6-multicast-echo.nse hadoop-jobtracker-info.nse ms-sql-config.nse targets-ipv6-multicast-invalid-dst.nse hadoop-namenode-info.nse ms-sql-dac.nse targets-ipv6-multicast-mld.nse hadoop-secondary-namenode-info.nse ms-sql-dump-hashes.nse targets-ipv6-multicast-slaac.nse hadoop-tasktracker-info.nse ms-sql-empty-password.nse targets-sniffer.nse hbase-master-info.nse ms-sql-hasdbaccess.nse targets-traceroute.nse hbase-region-info.nse ms-sql-info.nse teamspeak2-version.nse hddtemp-info.nse ms-sql-query.nse telnet-brute.nse hostmap-bfk.nse ms-sql-tables.nse telnet-encryption.nse hostmap-ip2hosts.nse ms-sql-xp-cmdshell.nse tftp-enum.nse hostmap-robtex.nse mtrace.nse tls-nextprotoneg.nse http-adobe-coldfusion-apsa1301.nse murmur-version.nse traceroute-geolocation.nse http-affiliate-id.nse mysql-audit.nse unusual-port.nse http-apache-negotiation.nse mysql-brute.nse upnp-info.nse http-auth-finder.nse mysql-databases.nse url-snarf.nse http-auth.nse mysql-dump-hashes.nse ventrilo-info.nse http-awstatstotals-exec.nse mysql-empty-password.nse versant-info.nse http-axis2-dir-traversal.nse mysql-enum.nse vmauthd-brute.nse http-backup-finder.nse mysql-info.nse vnc-brute.nse http-barracuda-dir-traversal.nse mysql-query.nse vnc-info.nse http-brute.nse mysql-users.nse voldemort-info.nse http-cakephp-version.nse mysql-variables.nse vuze-dht-info.nse http-chrono.nse mysql-vuln-cve2012-2122.nse wdb-version.nse http-coldfusion-subzero.nse nat-pmp-info.nse whois.nse http-comments-displayer.nse nat-pmp-mapport.nse wsdd-discover.nse http-config-backup.nse nbstat.nse x11-access.nse http-cors.nse ncp-enum-users.nse xdmcp-discover.nse http-date.nse ncp-serverinfo.nse xmpp-brute.nse http-default-accounts.nse ndmp-fs-info.nse xmpp-info.nse
Les scripts sont regroupés dans des catégories : auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version and vuln.
Important - Pour plus d'informations concernant ces catégories, consultez cette page.
La catégorie la plus utilisée est default qui est appelée par l'utilisation de l'option -sC. Cette catégorie contient une liste de scripts par défaut.
[root@centos7 ~]# nmap -v -sC localhost Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-05 14:20 CEST NSE: Loaded 95 scripts for scanning. NSE: Script Pre-scanning. Initiating SYN Stealth Scan at 14:20 Scanning localhost (127.0.0.1) [1000 ports] Discovered open port 22/tcp on 127.0.0.1 adjust_timeouts2: packet supposedly had rtt of -1500757317045342 microseconds. Ignoring time. adjust_timeouts2: packet supposedly had rtt of -1500757317045342 microseconds. Ignoring time. Discovered open port 25/tcp on 127.0.0.1 adjust_timeouts2: packet supposedly had rtt of -1500757317045486 microseconds. Ignoring time. adjust_timeouts2: packet supposedly had rtt of -1500757317045486 microseconds. Ignoring time. Discovered open port 111/tcp on 127.0.0.1 adjust_timeouts2: packet supposedly had rtt of -1500757317045504 microseconds. Ignoring time. adjust_timeouts2: packet supposedly had rtt of -1500757317045504 microseconds. Ignoring time. Discovered open port 631/tcp on 127.0.0.1 adjust_timeouts2: packet supposedly had rtt of -1500757274107480 microseconds. Ignoring time. adjust_timeouts2: packet supposedly had rtt of -1500757274107480 microseconds. Ignoring time. Completed SYN Stealth Scan at 14:20, 0.01s elapsed (1000 total ports) NSE: Script scanning 127.0.0.1. Initiating NSE at 14:20 Completed NSE at 14:20, 0.28s elapsed Nmap scan report for localhost (127.0.0.1) Host is up (0.0000060s latency). rDNS record for 127.0.0.1: localhost.localdomain Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh | ssh-hostkey: 2048 17:21:e0:43:b1:66:22:22:b6:f8:2b:cc:08:68:38:59 (RSA) |_256 19:cd:05:58:af:2c:10:82:52:ba:e3:31:df:bd:72:54 (ECDSA) 25/tcp open smtp |_smtp-commands: centos7.fenestros.loc, PIPELINING, SIZE 10240000, VRFY, ETRN, ENHANCEDSTATUSCODES, 8BITMIME, DSN, 111/tcp open rpcbind | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind |_ 100000 2,3,4 111/udp rpcbind 631/tcp open ipp | http-methods: GET HEAD OPTIONS POST PUT | Potentially risky methods: PUT |_See http://nmap.org/nsedoc/scripts/http-methods.html | http-robots.txt: 1 disallowed entry |_/ |_http-title: Home - CUPS 1.6.3 NSE: Script Post-scanning. Initiating NSE at 14:20 Completed NSE at 14:20, 0.00s elapsed Read data files from: /usr/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds Raw packets sent: 1000 (44.000KB) | Rcvd: 2004 (84.176KB)
Attention - La catégorie par défaut default contient certains scripts de la catégorie intrusive. Vous ne devez donc jamais utiliser cette option sur un réseau sans avoir obtenu un accord au préalable.
netcat
netcat est un couteau suisse. Il permet non seulement de scanner des ports mais aussi de lancer la connexion lors de la découverte d'un port ouvert.
Options de la commande
Les options de cette commande sont :
[root@centos7 ~]# nc --help Ncat 6.40 ( http://nmap.org/ncat ) Usage: ncat [options] [hostname] [port] Options taking a time assume seconds. Append 'ms' for milliseconds, 's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms). -4 Use IPv4 only -6 Use IPv6 only -U, --unixsock Use Unix domain sockets only -C, --crlf Use CRLF for EOL sequence -c, --sh-exec <command> Executes the given command via /bin/sh -e, --exec <command> Executes the given command --lua-exec <filename> Executes the given Lua script -g hop1[,hop2,...] Loose source routing hop points (8 max) -G <n> Loose source routing hop pointer (4, 8, 12, ...) -m, --max-conns <n> Maximum <n> simultaneous connections -h, --help Display this help screen -d, --delay <time> Wait between read/writes -o, --output <filename> Dump session data to a file -x, --hex-dump <filename> Dump session data as hex to a file -i, --idle-timeout <time> Idle read/write timeout -p, --source-port port Specify source port to use -s, --source addr Specify source address to use (doesn't affect -l) -l, --listen Bind and listen for incoming connections -k, --keep-open Accept multiple connections in listen mode -n, --nodns Do not resolve hostnames via DNS -t, --telnet Answer Telnet negotiations -u, --udp Use UDP instead of default TCP --sctp Use SCTP instead of default TCP -v, --verbose Set verbosity level (can be used several times) -w, --wait <time> Connect timeout --append-output Append rather than clobber specified output files --send-only Only send data, ignoring received; quit on EOF --recv-only Only receive data, never send anything --allow Allow only given hosts to connect to Ncat --allowfile A file of hosts allowed to connect to Ncat --deny Deny given hosts from connecting to Ncat --denyfile A file of hosts denied from connecting to Ncat --broker Enable Ncat's connection brokering mode --chat Start a simple Ncat chat server --proxy <addr[:port]> Specify address of host to proxy through --proxy-type <type> Specify proxy type ("http" or "socks4") --proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server --ssl Connect or listen with SSL --ssl-cert Specify SSL certificate file (PEM) for listening --ssl-key Specify SSL private key (PEM) for listening --ssl-verify Verify trust and domain name of certificates --ssl-trustfile PEM file containing trusted SSL certificates --version Display Ncat's version information and exit See the ncat(1) manpage for full options, descriptions and usage examples
Utilisation
Dans l'exemple qui suite, un scan est lancé sur le port 80 puis sur le port 25 :
[root@centos7 ~]# nc 127.0.0.1 80 -w 1 -vv Ncat: Version 6.40 ( http://nmap.org/ncat ) libnsock nsi_new2(): nsi_new (IOD #1) libnsock nsock_connect_tcp(): TCP connection requested to 127.0.0.1:80 (IOD #1) EID 8 libnsock nsock_trace_handler_callback(): Callback: CONNECT ERROR [Connection refused (111)] for EID 8 [127.0.0.1:80] Ncat: Connection refused. [root@centos7 ~]# nc 127.0.0.1 25 -w 1 -vv Ncat: Version 6.40 ( http://nmap.org/ncat ) libnsock nsi_new2(): nsi_new (IOD #1) libnsock nsock_connect_tcp(): TCP connection requested to 127.0.0.1:25 (IOD #1) EID 8 libnsock nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.0.1:25] Ncat: Connected to 127.0.0.1:25. libnsock nsi_new2(): nsi_new (IOD #2) libnsock nsock_read(): Read request from IOD #1 [127.0.0.1:25] (timeout: -1ms) EID 18 libnsock nsock_readbytes(): Read request for 0 bytes from IOD #2 [peer unspecified] EID 26 libnsock nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [127.0.0.1:25] (41 bytes): 220 centos7.fenestros.loc ESMTP Postfix.. 220 centos7.fenestros.loc ESMTP Postfix libnsock nsock_readbytes(): Read request for 0 bytes from IOD #1 [127.0.0.1:25] EID 34 ^C
Important - Notez que netcat se connecte au port 25 qui est ouvert.
Les Contre-Mesures
Les contre-mesures incluent l'utilisation d'un Système de Détection d'Intrusion (SDI - Network Intrusion Detection System ou NIDS en anglais), par exemple Snort ou un Système de Détection et de Prévention d'Intrusion, par exemple portsentry.
LAB #2 - Mise en place du Système de Détection d'Intrusion Snort
Snort est un Système de Détection d'Intrusion (SDI) qui surveille les requêtes entrantes, vous avertit en cas d'anomalie et enregistre les traces de toute tentative d'intrusion.
Installation
Sous RHEL/CentOS 7, snort n'est pas installé par défaut. Qui plus est snort ne se trouve pas dans les dépôts standards :
[root@centos7 ~]# yum provides snort Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.rezopole.net * extras: ftp.rezopole.net * updates: ftp.rezopole.net adobe-linux-x86_64/filelists_db | 1.7 kB 00:00:00 extras/7/x86_64/filelists_db | 1.1 MB 00:00:00 updates/7/x86_64/filelists_db | 4.4 MB 00:00:01 No matches found
Commencez donc par installer les dépendances de snort à partir des dépôts standards :
[root@centos7 ~]# yum install gcc flex bison zlib libpcap pcre libdnet tcpdump
Snort a aussi besoin du paquet libnghttp2 :
[root@centos7 ~]# yum install https://www.dropbox.com/s/r3qtnvsteb6m96i/libnghttp2-1.31.1-2.el7.x86_64.rpm
ainsi que le paquet daq :
[root@centos7 ~]# yum install https://www.dropbox.com/s/69wl0p010aqur0m/daq-2.0.6-1.el7.x86_64.rpm
Il est maintenant possible d'installer le paquet snort :
[root@centos7 ~]# yum install https://www.dropbox.com/s/appy4ddnpws17ux/snort-2.9.15.1-1.centos7.x86_64.rpm
Créez un lien symbolique pour la bibliothèque partagée /usr/lib64/libdnet.1 :
[root@centos7 ~]# ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1
Dernièrement, modifiez les permissions sur le répertoire /var/log/snort :
[root@centos7 ~]# chmod ug+x /var/log/snort
Options de la commande
Les options de cette commande sont :
[root@centos7 ~]# snort --help ,,_ -*> Snort! <*- o" )~ Version 2.9.11.1 GRE (Build 268) '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team Copyright (C) 2014-2017 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using libpcap version 1.5.3 Using PCRE version: 8.32 2012-11-30 Using ZLIB version: 1.2.7 USAGE: snort [-options] <filter options> Options: -A Set alert mode: fast, full, console, test or none (alert file alerts only) "unsock" enables UNIX socket logging (experimental). -b Log packets in tcpdump format (much faster!) -B <mask> Obfuscated IP addresses in alerts and packet dumps using CIDR mask -c <rules> Use Rules File <rules> -C Print out payloads with character data only (no hex) -d Dump the Application Layer -D Run Snort in background (daemon) mode -e Display the second layer header info -f Turn off fflush() calls after binary log writes -F <bpf> Read BPF filters from file <bpf> -g <gname> Run snort gid as <gname> group (or gid) after initialization -G <0xid> Log Identifier (to uniquely id events for multiple snorts) -h <hn> Set home network = <hn> (for use with -l or -B, does NOT change $HOME_NET in IDS mode) -H Make hash tables deterministic. -i <if> Listen on interface <if> -I Add Interface name to alert output -k <mode> Checksum mode (all,noip,notcp,noudp,noicmp,none) -K <mode> Logging mode (pcap[default],ascii,none) -l <ld> Log to directory <ld> -L <file> Log to this tcpdump file -M Log messages to syslog (not alerts) -m <umask> Set umask = <umask> -n <cnt> Exit after receiving <cnt> packets -N Turn off logging (alerts still work) -O Obfuscate the logged IP addresses -p Disable promiscuous mode sniffing -P <snap> Set explicit snaplen of packet (default: 1514) -q Quiet. Don't show banner and status report -Q Enable inline mode operation. -r <tf> Read and process tcpdump file <tf> -R <id> Include 'id' in snort_intf<id>.pid file name -s Log alert messages to syslog -S <n=v> Set rules file variable n equal to value v -t <dir> Chroots process to <dir> after initialization -T Test and report on the current Snort configuration -u <uname> Run snort uid as <uname> user (or uid) after initialization -U Use UTC for timestamps -v Be verbose -V Show version number -X Dump the raw packet data starting at the link layer -x Exit if Snort configuration problems occur -y Include year in timestamp in the alert and log files -Z <file> Set the performonitor preprocessor file path and name -? Show this information <Filter Options> are standard BPF options, as seen in TCPDump Longname options and their corresponding single char version --logid <0xid> Same as -G --perfmon-file <file> Same as -Z --pid-path <dir> Specify the directory for the Snort PID file --snaplen <snap> Same as -P --help Same as -? --version Same as -V --alert-before-pass Process alert, drop, sdrop, or reject before pass, default is pass before alert, drop,... --treat-drop-as-alert Converts drop, sdrop, and reject rules into alert rules during startup --treat-drop-as-ignore Use drop, sdrop, and reject rules to ignore session traffic when not inline. --process-all-events Process all queued events (drop, alert,...), default stops after 1st action group --enable-inline-test Enable Inline-Test Mode Operation --dynamic-engine-lib <file> Load a dynamic detection engine --dynamic-engine-lib-dir <path> Load all dynamic engines from directory --dynamic-detection-lib <file> Load a dynamic rules library --dynamic-detection-lib-dir <path> Load all dynamic rules libraries from directory --dump-dynamic-rules <path> Creates stub rule files of all loaded rules libraries --dynamic-preprocessor-lib <file> Load a dynamic preprocessor library --dynamic-preprocessor-lib-dir <path> Load all dynamic preprocessor libraries from directory --dynamic-output-lib <file> Load a dynamic output library --dynamic-output-lib-dir <path> Load all dynamic output libraries from directory --create-pidfile Create PID file, even when not in Daemon mode --nolock-pidfile Do not try to lock Snort PID file --no-interface-pidfile Do not include the interface name in Snort PID file --disable-attribute-reload-thread Do not create a thread to reload the attribute table --pcap-single <tf> Same as -r. --pcap-file <file> file that contains a list of pcaps to read - read mode is implied. --pcap-list "<list>" a space separated list of pcaps to read - read mode is implied. --pcap-dir <dir> a directory to recurse to look for pcaps - read mode is implied. --pcap-filter <filter> filter to apply when getting pcaps from file or directory. --pcap-no-filter reset to use no filter when getting pcaps from file or directory. --pcap-loop <count> this option will read the pcaps specified on command line continuously. for <count> times. A value of 0 will read until Snort is terminated. --pcap-reset if reading multiple pcaps, reset snort to post-configuration state before reading next pcap. --pcap-reload if reading multiple pcaps, reload snort config between pcaps. --pcap-show print a line saying what pcap is currently being read. --exit-check <count> Signal termination after <count> callbacks from DAQ_Acquire(), showing the time it takes from signaling until DAQ_Stop() is called. --conf-error-out Same as -x --enable-mpls-multicast Allow multicast MPLS --enable-mpls-overlapping-ip Handle overlapping IPs within MPLS clouds --max-mpls-labelchain-len Specify the max MPLS label chain --mpls-payload-type Specify the protocol (ipv4, ipv6, ethernet) that is encapsulated by MPLS --require-rule-sid Require that all snort rules have SID specified. --daq <type> Select packet acquisition module (default is pcap). --daq-mode <mode> Select the DAQ operating mode. --daq-var <name=value> Specify extra DAQ configuration variable. --daq-dir <dir> Tell snort where to find desired DAQ. --daq-list[=<dir>] List packet acquisition modules available in dir. Default is static modules only. --dirty-pig Don't flush packets and release memory on shutdown. --cs-dir <dir> Directory to use for control socket. --ha-peer Activate live high-availability state sharing with peer. --ha-out <file> Write high-availability events to this file. --ha-in <file> Read high-availability events from this file on startup (warm-start). --suppress-config-log Suppress configuration information output.
Configuration de Snort
Snort a besoin de règles pour fonctionner correctement. Ces règles sont disponibles sous trois formes différentes :
- Community - règles de base disponibles à tout le monde,
- Registered - règles disponibles à toute personne possédant un compte gratuit sur le site http://www.snort.org,
- Subscription - règles les plus efficaces disponibles uniquement aux utilisateurs enregistrés et abonnés à un plan payant.
Le répertoire rules est donc vide lors de l'installation de Snort :
[root@centos7 ~]# ls /etc/snort/rules/ [root@centos7 ~]#
Téléchargez les règles Registered grâce au lien suivant contenant un oinkcode :
[root@centos7 ~]# wget https://www.dropbox.com/s/zaoorev33j5wqgk/registered.tar.gz
Ensuite, saisissez les commandes suivantes :
[root@centos7 ~]# tar -xvf ~/registered.tar.gz -C /etc/snort [root@centos7 ~]# ls /etc/snort/rules app-detect.rules file-image.rules netbios.rules protocol-other.rules server-samba.rules attack-responses.rules file-java.rules nntp.rules protocol-pop.rules server-webapp.rules backdoor.rules file-multimedia.rules oracle.rules protocol-rpc.rules shellcode.rules bad-traffic.rules file-office.rules os-linux.rules protocol-scada.rules smtp.rules blacklist.rules file-other.rules os-mobile.rules protocol-services.rules snmp.rules botnet-cnc.rules file-pdf.rules os-other.rules protocol-snmp.rules specific-threats.rules browser-chrome.rules finger.rules os-solaris.rules protocol-telnet.rules spyware-put.rules browser-firefox.rules ftp.rules os-windows.rules protocol-tftp.rules sql.rules browser-ie.rules icmp-info.rules other-ids.rules protocol-voip.rules telnet.rules browser-other.rules icmp.rules p2p.rules pua-adware.rules tftp.rules browser-plugins.rules imap.rules phishing-spam.rules pua-other.rules virus.rules browser-webkit.rules indicator-compromise.rules policy-multimedia.rules pua-p2p.rules voip.rules chat.rules indicator-obfuscation.rules policy-other.rules pua-toolbars.rules VRT-License.txt content-replace.rules indicator-scan.rules policy.rules rpc.rules web-activex.rules ddos.rules indicator-shellcode.rules policy-social.rules rservices.rules web-attacks.rules deleted.rules info.rules policy-spam.rules scada.rules web-cgi.rules dns.rules local.rules pop2.rules scan.rules web-client.rules dos.rules malware-backdoor.rules pop3.rules server-apache.rules web-coldfusion.rules experimental.rules malware-cnc.rules protocol-dns.rules server-iis.rules web-frontpage.rules exploit-kit.rules malware-other.rules protocol-finger.rules server-mail.rules web-iis.rules exploit.rules malware-tools.rules protocol-ftp.rules server-mssql.rules web-misc.rules file-executable.rules misc.rules protocol-icmp.rules server-mysql.rules web-php.rules file-flash.rules multimedia.rules protocol-imap.rules server-oracle.rules x11.rules file-identify.rules mysql.rules protocol-nntp.rules server-other.rules
Important - Si vous utilisez snort régulièrement, vous devez prendre un abonnement sur le site http://www.snort.org afin de pouvoir télécharger les mises à jour des règles.
Editer le fichier /etc/snort/snort.conf
Lancez vi pour éditer le fichier /etc/snort/snort.conf :
Modifiez la ligne qui commence par ipvar HOME_NET pour que celle-ci comporte l'adresse de votre réseau :
... ipvar HOME_NET 10.0.2.0/24 ...
Dans le cas où vous êtes connecté à deux ou à plusieurs réseaux directement, la ligne devrait prendre la forme suivante :
ipvar HOME_NET [adresse_réseau_1 ( p.e. 10.0.2.0/24 ), adresse_réseau_2 ( p.e. 10.0.0.0/8 )]
Vérifiez la présence de les lignes qui commencent par var RULE_PATH, Var SO_RULE_PATH et var PREPROC_RULE_PATH. Celles-ci comportent les chemin relatifs des répertoires rules :
... var RULE_PATH /etc/snort/rules var SO_RULE_PATH ../so_rules var PREPROC_RULE_PATH ../preproc_rules ...
Modifiez les deux lignes suivantes afin d'utiliser des chemins absolus :
... var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules ...
Créez ensuite les deux fichiers ci-dessous :
[root@centos7 ~]# touch /etc/snort/rules/white_list.rules [root@centos7 ~]# touch /etc/snort/rules/black_list.rules
Décommentez la ligne qui commence par ooutput unified2 concernant la journalisation et supprimez le mot nostamp :
... # unified2 # Recommended for most installs output unified2: filename merged.log, limit 128, mpls_event_types, vlan_event_types ...
Commentez ensuite la ligne commençant par dynamicdetection directory :
# path to dynamic rules libraries # dynamicdetection directory /usr/local/lib/snort_dynamicrules
Modifiez maintenant le fichier /etc/sysconfig/snort :
... #### General Configuration # What interface should snort listen on? [Pick only 1 of the next 3!] # This is -i {interface} on the command line # This is the snort.conf config interface: {interface} directive # INTERFACE=eth0 INTERFACE=enp0s3 # # The following two options are not directly supported on the command line # or in the conf file and assume the same Snort configuration for all # instances ...
Vérifiez le fichier de configuration :
[root@centos7 ~]# snort -T -c /etc/snort/snort.conf ... --== Initialization Complete ==-- ,,_ -*> Snort! <*- o" )~ Version 2.9.9.0 GRE (Build 56) '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using libpcap version 1.5.3 Using PCRE version: 8.32 2012-11-30 Using ZLIB version: 1.2.7 Rules Engine: SF_SNORT_DETECTION_ENGINE Version 3.0 <Build 1> Preprocessor Object: SF_SSLPP Version 1.1 <Build 4> Preprocessor Object: SF_SSH Version 1.1 <Build 3> Preprocessor Object: SF_SMTP Version 1.1 <Build 9> Preprocessor Object: SF_SIP Version 1.1 <Build 1> Preprocessor Object: SF_SDF Version 1.1 <Build 1> Preprocessor Object: SF_REPUTATION Version 1.1 <Build 1> Preprocessor Object: SF_POP Version 1.0 <Build 1> Preprocessor Object: SF_MODBUS Version 1.1 <Build 1> Preprocessor Object: SF_IMAP Version 1.0 <Build 1> Preprocessor Object: SF_GTP Version 1.1 <Build 1> Preprocessor Object: SF_FTPTELNET Version 1.2 <Build 13> Preprocessor Object: SF_DNS Version 1.1 <Build 4> Preprocessor Object: SF_DNP3 Version 1.1 <Build 1> Preprocessor Object: SF_DCERPC2 Version 1.0 <Build 3> Snort successfully validated the configuration! Snort exiting
Utilisation de snort en mode "packet sniffer"
Pour visualiser les paquets à l'aide de snort, saisissez la commande suivante :
[root@centos7 ~]# snort -vde -c /etc/snort/snort.conf -l /var/log/snort ... [root@centos7 ~]# ^C
Important - Notez l'utilisation de la combinaison de touches ^C pour arrêter la visualisation des paquets.
Pour surveiller une interface réseau en particulier, saisissez la commande suivante :
[root@centos7 ~]# snort -vd -i enp0s3 -c /etc/snort/snort.conf ... [root@centos7 ~]# ^C
Utilisation de snort en mode "packet logger"
Pour rediriger la sortie à l'écran vers le fichier log /var/log/snort, saisissez la commande suivante :
[root@centos7 ~]# snort -de -l /var/log/snort -c /etc/snort/snort.conf ... [root@centos7 ~]# ^C
Journalisation
Constatez le contenu de /var/log/snort :
[root@centos7 ~]# ls /var/log/snort/ merged.log snort.log.1501937132 snort.log.1501937470 snort.log.1501943548
Constatez le contenu du fichier de journalisation :
[root@centos7 ~]# tail /var/log/snort/snort.log.1501943548 ����;���3P����օY&��RT5'�E���@@�� �Ҡ��3��;P����I�N��yE��K��=��!�ޚ�UKuD}�[�c���K��۸3��uNý�@�Mo(9�ٮ���c��n��]��`G�����LJ� ��օYJZ'��RT5EL=j@%2 ����;���3P��..����jV��� ������]l�S�����W�h���օYO<'��RT5E(=k@%U ����_��������օY���RT5'�E���@@�k �Ҡ����_P�����G}&2�!̴������I�����AR��!�F|�?��A��"X��-V_�Љ4����"��Ab�Ъ����bb�}�K�Dd[root@centos7 ~]# ى���]Xh-et����qB������
Ce fichier étant au format PCAP binaire, vous pouvez le lire avec la commande suivante :
[root@centos7 ~]# snort -r /var/log/snort/snort.log.1501943548 | more
Notez que ce fichier peut aussi être lu par la commande tcpdump :
[root@centos7 ~]# tcpdump -r /var/log/snort/snort.log.1501943548 | more reading from file /var/log/snort/snort.log.1501943548, link-type EN10MB (Ethernet) 16:32:28.316281 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 2695230935:2695231611, ack 28164311, win 534 40, length 676 16:32:28.316485 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 676, win 65535, length 0 16:32:28.318511 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 676:768, ack 1, win 53440, length 92 16:32:28.318706 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 768, win 65535, length 0 16:32:28.318799 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 768:860, ack 1, win 53440, length 92 16:32:28.318963 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 860, win 65535, length 0 16:32:28.319081 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 860:952, ack 1, win 53440, length 92 16:32:28.319220 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 952, win 65535, length 0 16:32:28.319278 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 952:1044, ack 1, win 53440, length 92 16:32:28.319373 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1044, win 65535, length 0 16:32:28.319457 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1044:1136, ack 1, win 53440, length 92 16:32:28.319544 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1136, win 65535, length 0 16:32:28.319624 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1136:1228, ack 1, win 53440, length 92 16:32:28.319734 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1228, win 65535, length 0 16:32:28.319787 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1228:1320, ack 1, win 53440, length 92 16:32:28.319972 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1320, win 65535, length 0 16:32:28.320041 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1320:1412, ack 1, win 53440, length 92 16:32:28.320186 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1412, win 65535, length 0 16:32:28.320240 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1412:1504, ack 1, win 53440, length 92 16:32:28.320397 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1504, win 65535, length 0 16:32:28.320451 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1504:1596, ack 1, win 53440, length 92 16:32:28.320606 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1596, win 65535, length 0 16:32:28.320659 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1596:1688, ack 1, win 53440, length 92 16:32:28.320816 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1688, win 65535, length 0 16:32:28.320869 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1688:1780, ack 1, win 53440, length 92 16:32:28.320991 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1780, win 65535, length 0 16:32:28.321047 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1780:1872, ack 1, win 53440, length 92 16:32:28.321161 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1872, win 65535, length 0 16:32:28.321232 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1872:1964, ack 1, win 53440, length 92 16:32:28.321355 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 1964, win 65535, length 0 16:32:28.321426 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 1964:2056, ack 1, win 53440, length 92 16:32:28.321533 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 2056, win 65535, length 0 16:32:28.321589 IP 15.2.0.10.rev.sfr.net.ssh > 2.2.0.10.rev.sfr.net.48338: Flags [P.], seq 2056:2148, ack 1, win 53440, length 92 16:32:28.321695 IP 2.2.0.10.rev.sfr.net.48338 > 15.2.0.10.rev.sfr.net.ssh: Flags [.], ack 2148, win 65535, length 0 --More--
Important - Vous pouvez utiliser le logiciel Wireshark pour visulaiser le contenu du fichier en mode graphique.
Dernièrement, notez qu'il est aussi possible de ne journaliser le trafic que sur un seul réseau :
# snort -de -l /var/log/snort -h 10.0.2.0/24
Important - Notez l'utilisation des options suivantes : -l indique le fichier de journalisation, -h indique le home-net.
Pour lancer snort en arrière plan afin de surveiller l'interface enp0s3, utilisez la commande suivante :
[root@centos7 ~]# /usr/sbin/snort -A fast -b -d -D -i enp0s3 -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort & [1] 19281 [root@centos7 ~]# Spawning daemon child... My daemon child 19401 lives... Daemon parent exiting (0) ^C [1]+ Done /usr/sbin/snort -A fast -b -d -D -i enp0s3 -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort [root@centos7 ~]# ps aux | grep snort snort 19401 0.0 24.6 850984 504544 ? Ssl 11:03 0:00 /usr/sbin/snort -A fast -b -d -D -i enp0s3 -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort root 19688 0.0 0.0 114692 964 pts/0 R+ 11:04 0:00 grep --color=auto snort
Pour arrêter ce processus, utilisez al commande kill:
[root@centos7 ~]# ps aux | grep snort snort 19401 0.0 24.6 850984 504692 ? Ssl 11:03 0:00 /usr/sbin/snort -A fast -b -d -D -i enp0s3 -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort root 20521 0.0 0.0 114692 964 pts/0 R+ 11:07 0:00 grep --color=auto snort [root@centos7 ~]# kill 19401 [root@centos7 ~]# ps aux | grep snort root 20568 0.0 0.0 114692 968 pts/0 R+ 11:07 0:00 grep --color=auto snort
LAB #3 - Mise en place du Système de Détection et de Prévention d'Intrusion Portsentry
Portsentry est un Système de Détection et de Prévention d'Intrusion (SDPI) qui surveille les requêtes entrantes et en cas d'anomalie bloque l'adresse IP de l'attaquant en inscrivant une règle dans le pare-feu NetFilter (Iptables).
Installation
Sous RHEL/CentOS 7, portsentry n'est pas installé par défaut. Qui plus est portsentry ne se trouve pas dans les dépôts standards. Installez donc le paquet portsentry-1.2-1.el5.x86_64.rpm à partir de l'URL ci-dessous :
[root@centos7 ~]# yum install http://flexbox.sourceforge.net/centos/5/x86_64//portsentry-1.2-1.el5.x86_64.rpm Loaded plugins: fastestmirror, langpacks portsentry-1.2-1.el5.x86_64.rpm | 53 kB 00:00:00 Examining /var/tmp/yum-root-qpYJaP/portsentry-1.2-1.el5.x86_64.rpm: portsentry-1.2-1.el5.x86_64 Marking /var/tmp/yum-root-qpYJaP/portsentry-1.2-1.el5.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package portsentry.x86_64 0:1.2-1.el5 will be installed --> Finished Dependency Resolution adobe-linux-x86_64 | 2.9 kB 00:00:00 base/7/x86_64 | 3.6 kB 00:00:00 extras/7/x86_64 | 3.4 kB 00:00:00 updates/7/x86_64 | 3.4 kB 00:00:00 Dependencies Resolved ======================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================= Installing: portsentry x86_64 1.2-1.el5 /portsentry-1.2-1.el5.x86_64 114 k Transaction Summary ======================================================================================================================================= Install 1 Package Total size: 114 k Installed size: 114 k Is this ok [y/d/N]: y
Configuration
Modifiez le fichier /etc/portsentry/portsentry.conf en ajoutant la ligne 237 :
[root@centos7 ~]# nl /etc/portsentry/portsentry.conf 1 # PortSentry Configuration 2 # 3 # $Id: portsentry.conf,v 1.25 2003/05/23 16:15:39 crowland Exp crowland $ 4 # 5 # IMPORTANT NOTE: You CAN NOT put spaces between your port arguments. 6 # 7 # The default ports will catch a large number of common probes 8 # 9 # All entries must be in quotes. 10 ####################### 11 # Port Configurations # 12 ####################### 13 # 14 # 15 # Some example port configs for classic and basic Stealth modes 16 # 17 # I like to always keep some ports at the "low" end of the spectrum. 18 # This will detect a sequential port sweep really quickly and usually 19 # these ports are not in use (i.e. tcpmux port 1) 20 # 21 # ** X-Windows Users **: If you are running X on your box, you need to be sure 22 # you are not binding PortSentry to port 6000 (or port 2000 for OpenWindows users). 23 # Doing so will prevent the X-client from starting properly. 24 # 25 # These port bindings are *ignored* for Advanced Stealth Scan Detection Mode. 26 # 27 # Un-comment these if you are really anal: 28 #TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034,27665,30303,32771,32772,32773,32774,31337,40421,40425,49724,54320" 29 #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,27444,34555,32770,32771,32772,32773,32774,31337,54321" 30 # 31 # Use these if you just want to be aware: 32 TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,32771,32772,32773,32774,40421,49724,54320" 33 UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,31337,54321" 34 # 35 # Use these for just bare-bones 36 #TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,49724,54320" 37 #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321" 38 ########################################### 39 # Advanced Stealth Scan Detection Options # 40 ########################################### 41 # 42 # This is the number of ports you want PortSentry to monitor in Advanced mode. 43 # Any port *below* this number will be monitored. Right now it watches 44 # everything below 1024. 45 # 46 # On many Linux systems you cannot bind above port 61000. This is because 47 # these ports are used as part of IP masquerading. I don't recommend you 48 # bind over this number of ports. Realistically: I DON'T RECOMMEND YOU MONITOR 49 # OVER 1024 PORTS AS YOUR FALSE ALARM RATE WILL ALMOST CERTAINLY RISE. You've been 50 # warned! Don't write me if you have have a problem because I'll only tell 51 # you to RTFM and don't run above the first 1024 ports. 52 # 53 # 54 ADVANCED_PORTS_TCP="1024" 55 ADVANCED_PORTS_UDP="1024" 56 # 57 # This field tells PortSentry what ports (besides listening daemons) to 58 # ignore. This is helpful for services like ident that services such 59 # as FTP, SMTP, and wrappers look for but you may not run (and probably 60 # *shouldn't* IMHO). 61 # 62 # By specifying ports here PortSentry will simply not respond to 63 # incoming requests, in effect PortSentry treats them as if they are 64 # actual bound daemons. The default ports are ones reported as 65 # problematic false alarms and should probably be left alone for 66 # all but the most isolated systems/networks. 67 # 68 # Default TCP ident and NetBIOS service 69 ADVANCED_EXCLUDE_TCP="21,22,25,53,80,110,113,135,137,138,139,443" 70 # Default UDP route (RIP), NetBIOS, bootp broadcasts. 71 ADVANCED_EXCLUDE_UDP="520,517,518,513,138,137,123,68,67,53" 72 ###################### 73 # Configuration Files# 74 ###################### 75 # 76 # Hosts to ignore 77 IGNORE_FILE="/etc/portsentry/portsentry.ignore" 78 # Hosts that have been denied (running history) 79 HISTORY_FILE="/etc/portsentry/portsentry.history" 80 # Hosts that have been denied this session only (temporary until next restart) 81 BLOCKED_FILE="/etc/portsentry/portsentry.blocked" 82 ############################## 83 # Misc. Configuration Options# 84 ############################## 85 # 86 # DNS Name resolution - Setting this to "1" will turn on DNS lookups 87 # for attacking hosts. Setting it to "0" (or any other value) will shut 88 # it off. 89 RESOLVE_HOST = "1" 90 ################### 91 # Response Options# 92 ################### 93 # Options to dispose of attacker. Each is an action that will 94 # be run if an attack is detected. If you don't want a particular 95 # option then comment it out and it will be skipped. 96 # 97 # The variable $TARGET$ will be substituted with the target attacking 98 # host when an attack is detected. The variable $PORT$ will be substituted 99 # with the port that was scanned. 100 # 101 ################## 102 # Ignore Options # 103 ################## 104 # These options allow you to enable automatic response 105 # options for UDP/TCP. This is useful if you just want 106 # warnings for connections, but don't want to react for 107 # a particular protocol (i.e. you want to block TCP, but 108 # not UDP). To prevent a possible Denial of service attack 109 # against UDP and stealth scan detection for TCP, you may 110 # want to disable blocking, but leave the warning enabled. 111 # I personally would wait for this to become a problem before 112 # doing though as most attackers really aren't doing this. 113 # The third option allows you to run just the external command 114 # in case of a scan to have a pager script or such execute 115 # but not drop the route. This may be useful for some admins 116 # who want to block TCP, but only want pager/e-mail warnings 117 # on UDP, etc. 118 # 119 # 120 # 0 = Do not block UDP/TCP scans. 121 # 1 = Block UDP/TCP scans. 122 # 2 = Run external command only (KILL_RUN_CMD) 123 BLOCK_UDP="1" 124 BLOCK_TCP="1" 125 ################### 126 # Dropping Routes:# 127 ################### 128 # This command is used to drop the route or add the host into 129 # a local filter table. 130 # 131 # The gateway (333.444.555.666) should ideally be a dead host on 132 # the *local* subnet. On some hosts you can also point this at 133 # localhost (127.0.0.1) and get the same effect. NOTE THAT 134 # 333.444.555.66 WILL *NOT* WORK. YOU NEED TO CHANGE IT!! 135 # 136 # ALL KILL ROUTE OPTIONS ARE COMMENTED OUT INITIALLY. Make sure you 137 # uncomment the correct line for your OS. If you OS is not listed 138 # here and you have a route drop command that works then please 139 # mail it to me so I can include it. ONLY ONE KILL_ROUTE OPTION 140 # CAN BE USED AT A TIME SO DON'T UNCOMMENT MULTIPLE LINES. 141 # 142 # NOTE: The route commands are the least optimal way of blocking 143 # and do not provide complete protection against UDP attacks and 144 # will still generate alarms for both UDP and stealth scans. I 145 # always recommend you use a packet filter because they are made 146 # for this purpose. 147 # 148 # Generic 149 #KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666" 150 # Generic Linux 151 #KILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.666" 152 # Newer versions of Linux support the reject flag now. This 153 # is cleaner than the above option. 154 #KILL_ROUTE="/sbin/route add -host $TARGET$ reject" 155 # Generic BSD (BSDI, OpenBSD, NetBSD, FreeBSD) 156 #KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666" 157 # Generic Sun 158 #KILL_ROUTE="/usr/sbin/route add $TARGET$ 333.444.555.666 1" 159 # NEXTSTEP 160 #KILL_ROUTE="/usr/etc/route add $TARGET$ 127.0.0.1 1" 161 # FreeBSD 162 #KILL_ROUTE="route add -net $TARGET$ -netmask 255.255.255.255 127.0.0.1 -blackhole" 163 # Digital UNIX 4.0D (OSF/1 / Compaq Tru64 UNIX) 164 #KILL_ROUTE="/sbin/route add -host -blackhole $TARGET$ 127.0.0.1" 165 # Generic HP-UX 166 #KILL_ROUTE="/usr/sbin/route add net $TARGET$ netmask 255.255.255.0 127.0.0.1" 167 ## 168 # Using a packet filter is the PREFERRED. The below lines 169 # work well on many OS's. Remember, you can only uncomment *one* 170 # KILL_ROUTE option. 171 ## 172 # ipfwadm support for Linux 173 #KILL_ROUTE="/sbin/ipfwadm -I -i deny -S $TARGET$ -o" 174 # 175 # ipfwadm support for Linux (no logging of denied packets) 176 #KILL_ROUTE="/sbin/ipfwadm -I -i deny -S $TARGET$" 177 # 178 # ipchain support for Linux 179 #KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l" 180 # 181 # ipchain support for Linux (no logging of denied packets) 182 #KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY" 183 # 184 # iptables support for Linux 185 KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP" 186 # For those of you running FreeBSD (and compatible) you can 187 # use their built in firewalling as well. 188 # 189 #KILL_ROUTE="/sbin/ipfw add 1 deny all from $TARGET$:255.255.255.255 to any" 190 # 191 # 192 # For those running ipfilt (OpenBSD, etc.) 193 # NOTE THAT YOU NEED TO CHANGE external_interface TO A VALID INTERFACE!! 194 # 195 #KILL_ROUTE="/bin/echo 'block in log on external_interface from $TARGET$/32 to any' | /sbin/ipf -f -" 196 ############### 197 # TCP Wrappers# 198 ############### 199 # This text will be dropped into the hosts.deny file for wrappers 200 # to use. There are two formats for TCP wrappers: 201 # 202 # Format One: Old Style - The default when extended host processing 203 # options are not enabled. 204 # 205 #KILL_HOSTS_DENY="ALL: $TARGET$" 206 # Format Two: New Style - The format used when extended option 207 # processing is enabled. You can drop in extended processing 208 # options, but be sure you escape all '%' symbols with a backslash 209 # to prevent problems writing out (i.e. \%c \%h ) 210 # 211 #KILL_HOSTS_DENY="ALL: $TARGET$ : DENY" 212 ################### 213 # External Command# 214 ################### 215 # This is a command that is run when a host connects, it can be whatever 216 # you want it to be (pager, etc.). This command is executed before the 217 # route is dropped or after depending on the KILL_RUN_CMD_FIRST option below 218 # 219 # 220 # I NEVER RECOMMEND YOU PUT IN RETALIATORY ACTIONS AGAINST THE HOST SCANNING 221 # YOU! 222 # 223 # TCP/IP is an *unauthenticated protocol* and people can make scans appear out 224 # of thin air. The only time it is reasonably safe (and I *never* think it is 225 # reasonable) to run reverse probe scripts is when using the "classic" -tcp mode. 226 # This mode requires a full connect and is very hard to spoof. 227 # 228 # The KILL_RUN_CMD_FIRST value should be set to "1" to force the command 229 # to run *before* the blocking occurs and should be set to "0" to make the 230 # command run *after* the blocking has occurred. 231 # 232 #KILL_RUN_CMD_FIRST = "0" 233 # 234 # 235 #KILL_RUN_CMD="/some/path/here/script $TARGET$ $PORT$" 236 #KILL_RUN_CMD="/bin/mail -s 'Portscan from $TARGET$ on port $PORT$' user@host < /dev/null" 237 KILL_RUN_CMD="/bin/mail -s 'Portscan from $TARGET$ on port $PORT$' root@localhost < /dev/null" <--------------------------------AJOUTEZ cette ligne 238 ##################### 239 # Scan trigger value# 240 ##################### 241 # Enter in the number of port connects you will allow before an 242 # alarm is given. The default is 0 which will react immediately. 243 # A value of 1 or 2 will reduce false alarms. Anything higher is 244 # probably not necessary. This value must always be specified, but 245 # generally can be left at 0. 246 # 247 # NOTE: If you are using the advanced detection option you need to 248 # be careful that you don't make a hair trigger situation. Because 249 # Advanced mode will react for *any* host connecting to a non-used 250 # below your specified range, you have the opportunity to really 251 # break things. (i.e someone innocently tries to connect to you via 252 # SSL [TCP port 443] and you immediately block them). Some of you 253 # may even want this though. Just be careful. 254 # 255 SCAN_TRIGGER="2" 256 ###################### 257 # Port Banner Section# 258 ###################### 259 # 260 # Enter text in here you want displayed to a person tripping the PortSentry. 261 # I *don't* recommend taunting the person as this will aggravate them. 262 # Leave this commented out to disable the feature 263 # 264 # Stealth scan detection modes don't use this feature 265 # 266 #PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY." 267 # EOF
Dernièrement pour rendre le service SysVInit compatible avec Systemd, éditez le fichier /etc/init.d/portsentry en supprimant la ligne 11 :
[root@centos7 ~]# nl /etc/init.d/portsentry 1 #!/bin/bash 2 # 3 # Startup script for the Portsentry portscan detector 4 # 5 # chkconfig: 345 98 02 6 # description: PortSentry Port Scan Detector is part of the Abacus Project \ 7 # suite of tools. The Abacus Project is an initiative to release \ 8 # low-maintenance, generic, and reliable host based intrusion \ 9 # detection software to the Internet community. 10 # processname: portsentry 11 # pidfile: /var/run/portsentry.pid <--------------------------------SUPPRIMEZ cette ligne 12 # config: /etc/portsentry/portsentry.conf 13 # Source function library. ...
Puis ajoutez la ligne 80 :
... 77 stop() { 78 echo -n $"Stopping $prog: " 79 killproc portsentry 80 killall portsentry <--------------------------------AJOUTEZ cette ligne 81 RETVAL=$? 82 echo 83 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/portsentry 84 } 85 # See how we were called. ...
Utilisation
Démarrez le service portsentry :
[root@centos7 ~]# systemctl start portsentry [root@centos7 ~]# systemctl status portsentry ● portsentry.service - SYSV: PortSentry Port Scan Detector is part of the Abacus Project suite of tools. The Abacus Project is an initiative to release low-maintenance, generic, and reliable host based intrusion detection software to the Internet community. Loaded: loaded (/etc/rc.d/init.d/portsentry; bad; vendor preset: disabled) Active: active (running) since Sun 2017-08-06 14:48:18 CEST; 6s ago Docs: man:systemd-sysv-generator(8) Process: 6487 ExecStart=/etc/rc.d/init.d/portsentry start (code=exited, status=0/SUCCESS) CGroup: /system.slice/portsentry.service ├─6511 /usr/sbin/portsentry -atcp └─6513 /usr/sbin/portsentry -audp Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 517 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 518 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 513 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 138 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 137 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...: 123 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...t: 68 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...t: 67 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP...t: 53 Aug 06 14:48:18 centos7.fenestros.loc portsentry[6513]: adminalert: PortSentry is now active and listening. Hint: Some lines were ellipsized, use -l to show in full. [root@centos7 ~]# ps aux | grep portsentry root 6511 0.0 0.0 6364 460 ? Ss 14:48 0:00 /usr/sbin/portsentry -atcp root 6513 0.0 0.0 6364 460 ? Ss 14:48 0:00 /usr/sbin/portsentry -audp root 6687 0.0 0.0 114692 972 pts/0 R+ 14:48 0:00 grep --color=auto portsentry
Editez le fichier /etc/portsentry/portsentry.ignore en commentant la ligne contenant votre adresse IP :
[root@centos7 ~]# nl /etc/portsentry/portsentry.ignore 1 # Put hosts in here you never want blocked. This includes the IP addresses 2 # of all local interfaces on the protected host (i.e virtual host, mult-home) 3 # Keep 127.0.0.1 and 0.0.0.0 to keep people from playing games. 4 # 5 # PortSentry can support full netmasks for networks as well. Format is: 6 # 7 # <IP Address>/<Netmask> 8 # 9 # Example: 10 # 11 # 192.168.2.0/24 12 # 192.168.0.0/16 13 # 192.168.2.1/32 14 # Etc. 15 # 16 # If you don't supply a netmask it is assumed to be 32 bits. 17 # 18 # 19 127.0.0.1/32 20 0.0.0.0 21 ######################################### 22 # Do NOT edit below this line, if you # 23 # do, your changes will be lost when # 24 # portsentry is restarted via the # 25 # initscript. Make all changes above # 26 # this box. # 27 ######################################### 28 # Exclude all local interfaces 29 #10.0.2.15 <--------------------------------EDITEZ cette ligne 30 fe80::94b9:ef1e:8c65:97c6 31 127.0.0.1 32 ::1 33 # Exclude the default gateway(s) 34 10.0.2.2 35 # Exclude the nameservers 36 10.0.2.3 37 # And last but not least... 38 0.0.0.0
Sans re-démarrez le service portsentry, lancez un scan des ports avec nmap :
[root@centos7 ~]# nmap -sC 10.0.2.15 Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-06 14:52 CEST ^C You have new mail in /var/spool/mail/root
Important - Notez l'utilisation de la combinaison de touches CtrlC pour arrêter nmap.
Consultez les règles d'iptables :
[root@centos7 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 15.2.0.10.rev.sfr.net anywhere <--------------------------------REGARDEZ cette ligne ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ...
Dernièrement, consultez les messages destinés à root :
[root@centos7 ~]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 6 messages 6 new >N 1 trainee@centos7.fene Sat Apr 30 12:38 16/688 "*** SECURITY information for centos7.fenestros.loc ***" N 2 user@localhost.fenes Tue May 9 15:21 1238/86160 "[abrt] firefox: plugin-container killed by SIGSEGV" N 3 (Cron Daemon) Sun Aug 6 11:28 25/1061 "Cron <root@centos7> /sbin/service portsentry restart >/dev/null && /sbin/ser" N 4 (Cron Daemon) Sun Aug 6 14:27 26/1328 "Cron <root@centos7> /sbin/service portsentry restart >/dev/null && /sbin/ser" N 5 (Cron Daemon) Sun Aug 6 14:43 25/1168 "Cron <root@centos7> /sbin/service portsentry restart >/dev/null && /sbin/ser" N 6 root Sun Aug 6 14:52 18/658 "Portscan from 10.0.2.15 on port 143" & 6 Message 6: From root@centos7.fenestros.loc Sun Aug 6 14:52:43 2017 Return-Path: <root@centos7.fenestros.loc> X-Original-To: root@localhost Delivered-To: root@localhost.fenestros.loc Date: Sun, 06 Aug 2017 14:52:43 +0200 To: root@localhost.fenestros.loc Subject: Portscan from 10.0.2.15 on port 143 User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=us-ascii From: root@centos7.fenestros.loc (root) Status: R & q Held 6 messages in /var/spool/mail/root You have mail in /var/spool/mail/root [root@centos7 ~]#
Pour nettoyer la règle, re-démarrez le service firewalld :
[root@centos7 ~]# systemctl restart firewalld [root@centos7 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ...
ChangeLog
2020.01
Backup 2019.beta restauré en 2020.01.
2020.02
2020.03
- Fixed - Erreur dans un lien dans le LAB #2 : https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libnghttp2-1.31.1-2.el7.x86_64.rpm > https://www.dropbox.com/s/r3qtnvsteb6m96i/libnghttp2-1.31.1-2.el7.x86_64.rpm
- Fixed - Erreur dans un lien dans le LAB #2 : http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/d/daq-2.0.6-1.el7.x86_64.rpm > https://www.dropbox.com/s/69wl0p010aqur0m/daq-2.0.6-1.el7.x86_64.rpm
- Fixed - Erreur dans un lien dans le LAB #2 : https://www.snort.org/downloads/snort/snort-2.9.15.1-1.centos7.x86_64.rpm > https://www.dropbox.com/s/appy4ddnpws17ux/snort-2.9.15.1-1.centos7.x86_64.rpm
- Fixed - Erreur dans un lien dans le LAB #2 : https://www.snort.org/rules/snortrules-snapshot-2983.tar.gz?oinkcode=5069d3725c7a71ff8b32198307e830eac7470687 > https://www.dropbox.com/s/zaoorev33j5wqgk/registered.tar.gz
<html>
Copyright © 2020 Hugh Norris.<br><br>
</html>