| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Vars, Ports for Standard services | 
					
						
							| 
									
										
										
										
											2024-11-28 11:03:57 +00:00
										 |  |  | myHOSTPORTS="7634 64294 64295 64296 64297 64298 64299 64303 64305" | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | myDOCKERCOMPOSEYML="$1" | 
					
						
							|  |  |  | myRULESFUNCTION="$2" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fuCHECKFORARGS { | 
					
						
							|  |  |  | ### Check if args are present, if not throw error | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ "$myDOCKERCOMPOSEYML" != "" ] && ([ "$myRULESFUNCTION" == "set" ] || [ "$myRULESFUNCTION" == "unset" ]); | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     echo "All arguments met. Continuing." | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo "Usage: rules.sh <docker-compose.yml> <[set, unset]>" | 
					
						
							|  |  |  |     exit | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fuNFQCHECK { | 
					
						
							| 
									
										
										
										
											2018-03-15 11:37:11 +00:00
										 |  |  | ### Check if honeytrap or glutton is actively enabled in docker-compose.yml | 
					
						
							| 
									
										
										
										
											2018-06-23 23:55:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | myNFQCHECK=$(grep -e '^\s*honeytrap:\|^\s*glutton:' $myDOCKERCOMPOSEYML | tr -d ': ' | uniq) | 
					
						
							|  |  |  | if [ "$myNFQCHECK" == "" ]; | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  |     echo "No NFQ related honeypot detected, no iptables-legacy rules needed. Exiting." | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  |     exit | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  |     echo "Detected $myNFQCHECK as NFQ based honeypot, iptables-legacy rules needed. Continuing." | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fuGETPORTS { | 
					
						
							|  |  |  | ### Get ports from docker-compose.yml | 
					
						
							| 
									
										
										
										
											2018-06-23 23:55:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 00:17:09 +00:00
										 |  |  | myDOCKERCOMPOSEPORTS=$(cat $myDOCKERCOMPOSEYML | yq -r '.services[].ports' | grep ':' | sed -e s/127.0.0.1// | tr -d '", ,#,-' | sed -e s/^:// | cut -f1 -d ':' ) | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | myDOCKERCOMPOSEPORTS+=" $myHOSTPORTS" | 
					
						
							|  |  |  | myRULESPORTS=$(for i in $myDOCKERCOMPOSEPORTS; do echo $i; done | sort -gu) | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | echo "Setting up / removing these ports:" | 
					
						
							|  |  |  | echo "$myRULESPORTS" | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fuSETRULES { | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  | ### Setting up iptables-legacy rules for honeytrap | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | if [ "$myNFQCHECK" == "honeytrap" ]; | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |     iptables -w -A INPUT -s 127.0.0.1 -j ACCEPT | 
					
						
							|  |  |  |     iptables -w -A INPUT -d 127.0.0.1 -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     for myPORT in $myRULESPORTS; do | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |       iptables -w -A INPUT -p tcp --dport $myPORT -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     done | 
					
						
							| 
									
										
										
										
											2018-06-23 23:55:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |     iptables -w -A INPUT -p tcp --syn -m state --state NEW -j NFQUEUE | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  | ### Setting up iptables-legacy rules for glutton | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | if [ "$myNFQCHECK" == "glutton" ]; | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-03-15 21:41:12 +00:00
										 |  |  |     iptables -w -t mangle -A PREROUTING -s 127.0.0.1 -j ACCEPT | 
					
						
							|  |  |  |     iptables -w -t mangle -A PREROUTING -d 127.0.0.1 -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     for myPORT in $myRULESPORTS; do | 
					
						
							| 
									
										
										
										
											2024-03-15 21:41:12 +00:00
										 |  |  |       iptables -w -t mangle -A PREROUTING -p tcp --dport $myPORT -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     done | 
					
						
							|  |  |  |     # No need for NFQ forwarding, such rules are set up by glutton | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fuUNSETRULES { | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  | ### Removing  iptables-legacy rules for honeytrap | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | if [ "$myNFQCHECK" == "honeytrap" ]; | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |     iptables -w -D INPUT -s 127.0.0.1 -j ACCEPT | 
					
						
							|  |  |  |     iptables -w -D INPUT -d 127.0.0.1 -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     for myPORT in $myRULESPORTS; do | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |       iptables -w -D INPUT -p tcp --dport $myPORT -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     done | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-18 15:19:49 +00:00
										 |  |  |     iptables -w -D INPUT -p tcp --syn -m state --state NEW -j NFQUEUE | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-20 11:00:36 +00:00
										 |  |  | ### Removing iptables-legacy rules for glutton | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  | if [ "$myNFQCHECK" == "glutton" ]; | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-03-15 21:41:12 +00:00
										 |  |  |     iptables -w -t mangle -D PREROUTING -s 127.0.0.1 -j ACCEPT | 
					
						
							|  |  |  |     iptables -w -t mangle -D PREROUTING -d 127.0.0.1 -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     for myPORT in $myRULESPORTS; do | 
					
						
							| 
									
										
										
										
											2024-03-15 21:41:12 +00:00
										 |  |  |       iptables -w -t mangle -D PREROUTING -p tcp --dport $myPORT -j ACCEPT | 
					
						
							| 
									
										
										
										
											2018-04-16 12:39:46 +00:00
										 |  |  |     done | 
					
						
							|  |  |  |     # No need for removing NFQ forwarding, such rules are removed by glutton | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-03-15 10:59:27 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Main | 
					
						
							|  |  |  | fuCHECKFORARGS | 
					
						
							|  |  |  | fuNFQCHECK | 
					
						
							|  |  |  | fuGETPORTS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ "$myRULESFUNCTION" == "set" ]; | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     fuSETRULES | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     fuUNSETRULES | 
					
						
							|  |  |  | fi |