Check within your organization. You can save time and effort during the troubleshooting process by checking if other FortiWeb administrators experienced a similar problem before. Show Connectivity issuesOne of your first tests when configuring a new policy should be to determine whether allowed traffic is flowing to your web servers.
To verify, configure FortiWeb to detect the attack, then craft a proof-of-concept that will trigger the attack sensor. For example, to see whether directory traversal attacks are being logged and/or blocked, you could use your web browser to go to: http://www.example.com/login?user=../../../../ Under normal circumstances, you should see a new attack log entry in the attack log console widget of the system dashboard. For details, see Attack Log widget. See alsoChecking hardware connectionsIf there is no traffic flowing from the FortiWeb appliance, it may be a hardware problem. To check hardware connections
If any of these checks solve the problem, it was a hardware connection issue. You should still perform some basic software tests to ensure complete connectivity. If the hardware connections are correct and the appliance is powered on but you cannot connect using the CLI or web UI, you may be experiencing bootup problems. See Bootup issues. Examining the ARP tableWhen you have poor connectivity, another good place to look for information is the address resolution protocol (ARP) table. A functioning ARP is especially important in high-availability configurations. To check the ARP table in the CLI, enter: diagnose network arp list Checking routing
Since you typically use these tools to troubleshoot, you can allow ICMP, the protocol used by these tools, in firewall policies and on interfaces only when you need them. Otherwise, disable ICMP for improved security and performance. By default, the FortiWeb appliance will forward only HTTP/HTTPS traffic to your protected web servers. (That is, routing/IP-based forwarding is disabled.) For information on enabling forwarding of FTP or other protocols, see the https://docs.fortinet.com/document/fortiweb/ By default, FortiWeb appliances will respond to
To access this part of the web UI, you must have Read and Write permission in your administrator's account access profile to items in the Router Configuration category. For details, see Permissions. A dialog appears. Disabling PING only prevents FortiWeb from receiving ICMP type 8 ( It does not disable FortiWeb CLI commands such as The appliance should now respond when another device such as your management computer sends a
If the connectivity test fails, continue to the next step. If the routing test succeeds, continue with For application-layer problems, on the FortiWeb, examine the:. If the routing test fails, continue to the next step. If the route is broken when it reaches the FortiWeb appliance, first examine its network interfaces and routes. To display network interface addresses and subnets, enter the CLI command: show system interface To display all recently-used routes with their priorities, enter the CLI command: diagnose network route list You may need to verify that the physical cabling is reliable and not loose or broken, that there are no IP address or MAC address conflicts or blacklisting, misconfigured DNS records, and otherwise rule out problems at the physical, network, and transport layer. If these tests succeed, a route exists, but you cannot connect using HTTP or HTTPS, an application-layer problem is preventing connectivity.
On routers and firewalls between the host and the FortiWeb appliance, verify that they permit HTTP and/or HTTPS connectivity between them. Testing for connectivity with pingThe ICMP is part of Layer 3 on the OSI Networking Model. Some networks block ICMP packets because they can be used in a ping flood or denial of service (DoS) attack if the network does not have anti-DoS capabilities, or because Beyond basic existence of a possible route between the source and destination, If
If
If
https://docs.fortinet.com/document/fortiweb/ execute ping where If the appliance can reach the host via ICMP, output similar to the following appears: PING 192.0.2.96 (192.0.2.96): 56 data bytes 64 bytes from 192.0.2.96: icmp_seq=0 ttl=253 time=6.5 ms 64 bytes from 192.0.2.96: icmp_seq=1 ttl=253 time=7.4 ms 64 bytes from 192.0.2.96: icmp_seq=2 ttl=253 time=6.0 ms 64 bytes from 192.0.2.96: icmp_seq=3 ttl=253 time=5.5 ms 64 bytes from 192.0.2.96: icmp_seq=4 ttl=253 time=7.3 ms --- 192.0.2.96 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 5.5/6.5/7.4 ms If the appliance cannot reach the host via ICMP, output similar to the following appears: PING 192.0.2.108 (192.0.2.108): 56 data bytes Timeout ... Timeout ... Timeout ... Timeout ... Timeout ... --- 192.0.2.108 ping statistics --- 5 packets transmitted, 0 packets received, 100% packet loss “100% packet loss” and “Timeout” indicates that the host is not reachable. For details, see the FortiWeb CLI Reference: https://docs.fortinet.com/document/fortiweb/
If the host is running Windows XP, instead, go to Start > Run...
ping where:
If the command is not found, you can either enter the full path to the executable or add its path to your shell environment variables. The path to the If you do not supply a packet count, output will continue until you terminate the command with Control-C. For more information on options, enter For example, you might enter: ping -c 5 -W 2 192.0.2.1 If the computer can reach the destination via ICMP, output similar to the following appears: PING 192.0.2.1 (192.0.2.1) 56(84) bytes of data. 64 bytes from 192.0.2.1: icmp_seq=1 ttl=253 time=6.85 ms 64 bytes from 192.0.2.1: icmp_seq=2 ttl=253 time=7.64 ms 64 bytes from 192.0.2.1: icmp_seq=3 ttl=253 time=8.73 ms 64 bytes from 192.0.2.1: icmp_seq=4 ttl=253 time=11.0 ms 64 bytes from 192.0.2.1: icmp_seq=5 ttl=253 time=9.72 ms --- 192.0.2.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4016ms rtt min/avg/max/mdev = 6.854/8.804/11.072/1.495 ms If the computer cannot reach the destination via ICMP, if you specified a wait and packet count rather than having the command wait for your Control-C, output similar to the following appears: PING 192.0.2.15 (192.0.2.15) 56(84) bytes of data. --- 192.0.2.15 ping statistics --- 5 packets transmitted, 0 received, 100% packet loss, time 5999ms “100% packet loss” indicates that the host is not reachable. Otherwise, if you terminate by pressing Control-C ( PING 192.0.2.15 (192.0.2.15) 56(84) bytes of data. From 192.0.2.2 icmp_seq=31 Destination Host Unreachable From 192.0.2.2 icmp_seq=30 Destination Host Unreachable From 192.0.2.2 icmp_seq=29 Destination Host Unreachable ^C --- 192.0.2.15 ping statistics --- 41 packets transmitted, 0 received, +9 errors, 100% packet loss, time 40108ms pipe 3 “100% packet loss” and “Destination Host Unreachable” indicates that the host is not reachable. Testing routes & latency with traceroute
Most Where By default,
execute traceroute { |} where { |} is a choice of either the device’s IP address or its fully qualified domain name (FQDN). For example, you might enter: execute traceroute www.example.com If the appliance has a complete route to the destination, output similar to the following appears: traceroute to www.fortinet.com (192.0.2.150), 32 hops max, 84 byte packets 1 192.0.2.87 0 ms 0 ms 0 ms 2 192.0.2.2212 ms 2 ms 2 ms 3 192.0.2.1292 ms 1 ms 2 ms 4 192.0.2.161 2 ms 2 ms 3 ms 5 192.0.2.173 ms 3 ms 2 ms 6 192.0.2.23420 ms 20 ms 20 ms 7 192.0.2.5824 ms 21 ms 24 ms 8 192.0.2.1548 ms 9 ms 8 ms 9 192.0.2.14523 ms 23 ms 23 ms 10 192.0.2.9 23 ms 22 ms 22 ms 11 192.0.2.238100 ms 192.0.2.130101 ms 102 ms 12 192.0.2.21101 ms 100 ms 99 ms 13 192.0.2.121100 ms 98 ms 100 ms 14 192.0.2.11898 ms 98 ms 100 ms 15 192.0.2.10596 ms 96 ms 96 ms 16 192.0.2.42 94 ms 94 ms 94 ms 17 192.0.2.10 88 ms 87 ms 87 ms 18 192.0.2.130 90 ms 89 ms 90 ms 19 192.0.2.15091 ms 89 ms 91 ms 20 192.0.2.15091 ms 91 ms 89 ms Each line lists the routing hop number, the IP address and FQDN (if any) of that hop, and the 3 response times from that hop. Typically a value of If the appliance does not have a complete route to the destination, output similar to the following appears: traceroute to 192.0.2.1 (192.0.2.1), 32 hops max, 84 byte packets 1 192.0.2.2 0 ms 0 ms 0 ms 2 192.0.2.10 0 ms 0 ms 0 ms 3 * * * 4 * * * The asterisks ( * ) indicate no response from that hop in the network routing. For details, see the FortiWeb CLI Reference: https://docs.fortinet.com/document/fortiweb/
If the host is running Windows XP, instead, go to Start > Run... The Windows command line appears.
If the appliance has a complete route to the destination, output similar to the following appears: Tracing route to www.fortinet.com [192.0.2.34] over a maximum of 30 hops: 1 <1 ms <1 ms <1 ms 192.0.2.2 2 2 ms 2 ms 2 ms static-192-0-2-221.storm.ca [192.0.2.221] 3 2 ms 2 ms 22 ms core-2-g0-1-1104.storm.ca [192.0.2.129] 4 3 ms 3 ms 2 ms 67.69.228.161 5 3 ms 2 ms 3 ms core2-ottawa23_POS13-1-0.net.bell.ca [192.0.2.17] (Output abbreviated.) 15 97 ms 97 ms 97 ms gar2.sj2ca.ip.att.net [192.0.2.105] 16 94 ms 94 ms 94 ms 192.0.2.42 17 87 ms 87 ms 87 ms 192.0.2.10 18 89 ms 89 ms 90 ms 192.0.2.130 19 89 ms 89 ms 90 ms fortinet.com [192.0.2.34] 20 90 ms 90 ms 91 ms fortinet.com [192.0.2.34] Trace complete. Each line lists the routing hop number, the 3 response times from that hop, and the IP address and FQDN (if any) of that hop. Typically a value of If the appliance does not have a complete route to the destination, output similar to the following appears: Tracing route to 192.0.2.1 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms 192.0.2.2 2 <1 ms <1 ms <1 ms 192.0.2.10 3 * * * Request timed out. 4 * * * Request timed out. 5 ^C The asterisks ( * ) and “Request timed out.” indicate no response from that hop in the network routing.
Note: the path to the executable may vary by distribution. If the appliance has a complete route to the destination, output similar to the following appears: traceroute to www.fortinet.com (192.0.2.34), 30 hops max, 60 byte packets 1 192.0.2.2 (192.0.2.2) 0.189 ms 0.277 ms 0.226 ms 2 static-192-0-2-221.storm.ca (192.0.2.221) 2.554 ms 2.549 ms 2.503 ms 3 core-2-g0-1-1104.storm.ca (192.0.2.129) 2.461 ms 2.516 ms 2.417 ms 4 192.0.2.161 (192.0.2.161) 3.041 ms 3.007 ms 2.966 ms 5 core2-ottawa23_POS13-1-0.net.bell.ca (192.0.2.17) 3.004 ms 2.998 ms 2.963 ms (Output abbreviated.) 16 192.0.2.42 (192.0.2.42) 94.379 ms 94.114 ms 94.162 ms 17 192.0.2.10 (192.0.2.10) 122.879 ms 120.690 ms 119.049 ms 18 192.0.2.130 (203.78.181.130) 89.705 ms 89.411 ms 89.591 ms 19 fortinet.com (192.0.2.34) 89.717 ms 89.584 ms 89.568 ms Each line lists the routing hop number, the IP address and FQDN (if any) of that hop, and the 3 response times from that hop. Typically a value of If the appliance does not have a complete route to the destination, output similar to the following appears: traceroute to 192.0.2.1 (192.0.2.1), 30 hops max, 60 byte packets 1 * * * 2 192.0.2.10 (192.0.2.10) 4.160 ms 4.169 ms 4.144 ms 3 * * * 4 * * *^C The asterisks ( * ) indicate no response from that hop in the network routing. Relatedly, if the computer’s DNS query cannot resolve the host name, output similar to the following appears: example.lab: Name or service not known Cannot handle "host" cmdline arg `example.lab' on position 1 (argc 1) Examining the routing tableWhen a route does not exist, or when hops have high latency, examine the routing table. The routing table is where the FortiWeb appliance caches recently used routes. If a route is cached in the routing table, it saves time and resources that would otherwise be required for a route lookup. If the routing table is full and a new route must be added, the oldest, least-used route is deleted to make room. To check the routing table in the CLI, enter: diagnose network route list Checking port assignmentsIf you are attempting to connect to FortiWeb on a given network port, and the connection is expected to occur on a different port number, the attempt will fail. For a list of ports used by FortiWeb, see Appendix A: Port numbers. For ports used by your own HTTP network services, see Defining your network services. Performing a packet traceWhen troubleshooting malformed packet or protocol errors, it helps to look inside the protocol headers of packets to determine if they are traveling along the route you expect, and with the flags and other options you expect. For details, see Packet capture. If you configure virtual servers on your FortiWeb appliance, packets’ destination IP addresses will be those IP addresses, not the physical IP addresses (i.e., the IP address of port1, etc.). An ARP update is sent out when a virtual IP address is configured. If the packet trace shows that packets are arriving at your FortiWeb appliance’s interfaces but no HTTP/HTTPS packets egress, check that: If the packet is accepted by the policy but appears to be dropped during processing, see Debugging the packet processing flow. Debugging the packet processing flowIf you have determined that network traffic is not entering and leaving the FortiWeb appliance as expected, or not flowing through policies and scans as expected, you can debug the packet flow using the CLI. For example, the following commands enable debug logs and the logs timestamp, and set other parameters for debug logging: diagnose debug enable diagnose debug console timestamp enable diagnose debug application proxy 7 diagnose debug flow show module-process-detail diagnose debug flow trace start diagnose debug flow filter server-ip 192.0.2.20 For detailed information on the https://docs.fortinet.com/document/fortiweb/ Checking the SSL/TLS handshake & encryptionIf the client is attempting to make an HTTPS connection, but the attempt fails after the connection has been initiated, during negotiation, the problem may be with SSL/TLS. Symptoms may include error messages such as:
Expected SSL/TLS behavior varies by SSL inspection vs. SSL offloading. For details, see Offloading vs. inspection. SSL offloading—Reverse Proxy mode only. For details, see Supported features in each operation mode. SSL inspection—True Transparent Proxy, Offline Protection, and Transparent Inspection modes only. Google Chrome will prefer an anonymous Diffie-Hellman key exchange. This has the property of perfect forward secrecy, which makes SSL inspection theoretically impossible. To guarantee that this is not used to hide attacks from FortiWeb, you must disable it on your web server. On Apache, you would add
If you are not sure which cipher suites are currently supported, you can use SSL tools such as OpenSSL (http://openssl.org) to discover support. For example, you could use this client-side command to know whether the web server or FortiWeb supports strong ( openssl s_client -connect example.com:443 -cipher HIGH or supports deprecated or old versions such as SSL 2.0: openssl s_client -ssl2 -connect example.com:443 Resource issuesThis section includes troubleshooting questions related to sluggish or stalled performance. Killing system-intensive processesUse the CLI to view the per-CPU/core process load level and a list of the most system-intensive processes. This may show processes that are consuming resources unusually. For example: diagnose system top 10 The above command generates a report of processes every 10 seconds. The report provides the process names, their process ID (pid), status, CPU usage, and memory usage. The report continues to refresh and display in the CLI until you press Once you locate an offending PID, you can terminate it: diagnose system kill 9 To determine if high load is frequently a problem, you can display the average load level by using these CLI commands: get system performance diagnose system load For details, see the FortiWeb CLI Reference: https://docs.fortinet.com/document/fortiweb/ If the issue recurs, and corresponds with a signature or configuration change, you may need to optimize regular expressions to prevent the issue from recurring. For details, see Debugging the packet processing flow and Regular expression performance tips. Monitoring traffic loadHeavy traffic loads can cause sustained high CPU or RAM usage. If this is unusual, no action may be required, unless you are being subject to a DoS attack. Sustained heavy traffic load may indicate that you need a more powerful model of FortiWeb. In the FortiWeb appliance's web UI, you can view traffic load two ways:
Preparing for attacksA prolonged denial of service (DoS) or brute-force login attack (to name just a few) can bring your web servers to a standstill, if your FortiWeb appliance is not configured for it. To fight DoS attacks, see DoS prevention. In the FortiWeb appliance's web UI, you can watch for attacks in two ways:
Before attacks occur, use the FortiWeb appliance's rich feature set to configure attack defenses. Login issuesIf the person cannot access the login page at all, it is usually actually a connectivity issue (see Ping & traceroute and Configuring the network settings) unless all accounts are configured to accept logins only from specific IP addresses (see Trusted Host #1). If an administrator can connect, but cannot log in, even though providing the correct account name and password, and is receiving this error message: Too many bad login attemptsor reached max number of logins. Please try again in a few minutes. Login aborted. single administrator mode may have been enabled. For details, see How to use the web UI. If the person has lost or forgotten his or her password, the Checking user authentication policiesIn FortiWeb, users and organized into groups. Groups are part of authentication policies. If several users have authentication problems, it is possible someone changed authentication policy or user group memberships. If a user is legitimately having an authentication policy, you need to find out where the problem lies. To troubleshoot user access
Authentication involves user groups, authentication rules and policy, inline protection policy, and finally, server policy. If a user is not in a user group used in the policy for a specific server, the user will have no access. When an administrator account cannot log in from a specific IPIf an administrator is entering his or her correct account name and password, but cannot log in from some or all computers, examine that account’s trusted host definitions (see Trusted Host #1). It should include all locations where that person is allowed to log in, such as your office, but should not be too broad. Remote authentication query failuresIf your network administrators’ or other accounts reside on an external server (e.g. Active Directory or RADIUS), first switch the account to be locally defined on the FortiWeb appliance. If the local account fails, correct connectivity between the client and appliance (see Connectivity issues). If the local account succeeds, troubleshoot connectivity between the appliance and your authentication server. If routing exists but authentication still fails, you can verify correct vendor-specific attributes and other protocol-specific fields by running a packet trace (see Packet capture). Resetting passwordsIf you forget the password, or want to change an account’s password, the If you forget the password of the
ECHO_REQUEST 9 account’s passwordOption 1:
Option 2:
|