Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.13 KB | None | 0 0
  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: firewall
  4. # Required-Start: $remote_fs $syslog
  5. # Required-Stop: $remote_fs $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Demarrage du script lors de la sequence de boot
  9. # Description: Ajout des regles de parefeu
  10. ### END INIT INFO
  11.  
  12.  
  13.  
  14. #IP_ADMIN="192.168.1.1"
  15. IFACE="eth0"
  16. WEB_EXTERN_PORT="80"
  17. PORT_SSH="22"
  18.  
  19.  
  20.  
  21.  
  22. # Variable de couleur shell
  23. yellowBold='\033[1;33m'
  24. green='\033[0;32m'
  25. yellow='\033[0;33m'
  26. red='\033[0;31m'
  27. greenBgWhiteBold='\033[1;42m'
  28. redBgWhiteBold='\033[1;41m'
  29. NC='\033[0m'
  30. OK="${yellowBold}[${NC}${green}OK${NC}${yellowBold}]${NC}"
  31.  
  32. PATH=/bin:/sbin:/usr/bin:/usr/sbin
  33.  
  34. if ! [ -x /sbin/iptables ]; then
  35. exit 0
  36. fi
  37.  
  38.  
  39. ##########################
  40. # Application des règles
  41. ##########################
  42.  
  43. fw_start()
  44. {
  45. echo ""
  46. echo " - ${green} Initialisation du firewall : ${NC} OK"
  47.  
  48. # Vidage des tables et des regles personnelles
  49. /sbin/iptables -t filter -F
  50. /sbin/iptables -t filter -X
  51. echo " - ${green} Vidage des regles et des tables : ${NC} OK"
  52.  
  53. # Interdire toutes connexions entrantes et sortantes
  54. /sbin/iptables -t filter -P INPUT DROP
  55. /sbin/iptables -t filter -P FORWARD DROP
  56. /sbin/iptables -t filter -P OUTPUT DROP
  57. echo " - ${green} Interdire toutes les connexions entrantes et sortantes : ${NC} OK"
  58.  
  59. # Ne pas casser les connexions etablies
  60. /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  61. /sbin/iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT
  62. echo " - ${green} Ne pas casser les connexions établies : ${NC} OK"
  63.  
  64. ########## Regles ##########
  65.  
  66. # Autoriser loopback
  67. /sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
  68. /sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT
  69. echo " - ${green} Autoriser le loopback : ${NC} OK"
  70.  
  71. # Autoriser la résolution de nom
  72. /sbin/iptables -t filter -A INPUT -i $IFACE -p udp --sport 53 -j ACCEPT
  73. echo " - ${green} Autoriser la résolution de nom : ${NC} OK"
  74.  
  75.  
  76. # # Autoriser SSH
  77. # /sbin/iptables -t filter -A INPUT -i $IFACE -p tcp s $IP_ADMIN --dport $PORT_SSH -j ACCEPT
  78. # /sbin/iptables -t filter -A OUTPUT -o $IFACE -p tcp d $IP_ADMIN --sport $PORT_SSH -j ACCEPT
  79. # echo " - ${green} Autoriser SSH : ${NC} OK"
  80.  
  81. # Autoriser SSH
  82. /sbin/iptables -t filter -A INPUT -i $IFACE -p tcp --dport $PORT_SSH -j ACCEPT
  83. /sbin/iptables -t filter -A OUTPUT -o $IFACE -p tcp --sport $PORT_SSH -j ACCEPT
  84. echo " - ${green} Autoriser SSH : ${NC} OK"
  85.  
  86. # Autoriser HTTP
  87. /sbin/iptables -t filter -A OUTPUT -p tcp --dport $WEB_EXTERN_PORT -j ACCEPT
  88. /sbin/iptables -t filter -A INPUT -p tcp --dport $WEB_EXTERN_PORT -j ACCEPT
  89.  
  90. # Autoriser HTTPS
  91. /sbin/iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
  92. /sbin/iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
  93. #/sbin/iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
  94. echo " - ${green} Autoriser HTTPS : ${NC} OK"
  95.  
  96.  
  97. #Fivem
  98. /sbin/iptables -t filter -A INPUT -p tcp --dport 30120 -j ACCEPT
  99. /sbin/iptables -t filter -A INPUT -p udp --dport 30120 -j ACCEPT
  100. echo " -${green} FIVEM 30120 OP : ${NC} OK"
  101.  
  102.  
  103. ########## Regles pour sécuriser ##########
  104.  
  105. ## Anti-spoofing rules
  106. /sbin/iptables -A INPUT -s 0.0.0.0/8 -j DROP
  107. /sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
  108. /sbin/iptables -A INPUT -s 127.0.0.0/8 -j DROP
  109. /sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
  110. /sbin/iptables -A INPUT -s 169.254.0.0/16 -j DROP
  111. /sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP
  112. /sbin/iptables -A INPUT -s 224.0.0.0/3 -j DROP
  113. /sbin/iptables -A INPUT -s 240.0.0.0/5 -j DROP
  114.  
  115. /sbin/iptables -A INPUT -d 0.0.0.0/8 -j DROP
  116. /sbin/iptables -A INPUT -d 240.0.0.0/5 -j DROP
  117. /sbin/iptables -A INPUT -d 224.0.0.0/3 -j DROP
  118. /sbin/iptables -A INPUT -d 239.255.255.0/24 -j DROP
  119. /sbin/iptables -A INPUT -d 255.255.255.255 -j DROP
  120. /sbin/iptables -A INPUT -d 240.0.0.0/5 -j DROP
  121. echo " - ${green} Règles anti-usurpation : ${NC} OK"
  122.  
  123. /sbin/iptables -A INPUT -p tcp --syn -m limit --limit 1/second -j ACCEPT
  124. /sbin/iptables -A INPUT -p udp -m limit --limit 1/second -j ACCEPT
  125. /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
  126. echo " - ${green} Règles anti-usurpation tcp/udp/icmp : ${NC} OK"
  127.  
  128. #for SMURF attack protection
  129. iptables -t filter -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
  130. iptables -t filter -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
  131. iptables -t filter -A INPUT -p icmp -m limit --limit 1/second -j ACCEPT
  132. echo " - ${green} Règles anti-SMURF attack protection: ${NC} OK"
  133.  
  134. # Interdire le Scan de ports
  135. ## NULL-SCAN
  136. iptables -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "IPTABLES NULL-SCAN:"
  137. iptables -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  138.  
  139. ## XMAS-SCAN
  140. iptables -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "IPTABLES XMAS-SCAN:"
  141. iptables -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
  142.  
  143. ## SYNFIN-SCAN
  144. iptables -t filter -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j LOG --log-prefix "IPTABLES SYNFIN-SCAN:"
  145. iptables -t filter -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP
  146.  
  147. ## NMAP-XMAS-SCAN
  148. iptables -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j LOG --log-prefix "IPTABLES NMAP-XMAS-SCAN:"
  149. iptables -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j DROP
  150.  
  151. ## FIN-SCAN
  152. iptables -t filter -A INPUT -p tcp --tcp-flags ALL FIN -j LOG --log-prefix "IPTABLES FIN-SCAN:"
  153. iptables -t filter -A INPUT -p tcp --tcp-flags ALL FIN -j DROP
  154.  
  155. ## NMAP-ID
  156. iptables -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,SYN,FIN -j LOG --log-prefix "IPTABLES NMAP-ID:"
  157. iptables -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,SYN,FIN -j DROP
  158.  
  159. ## SYN-RST
  160. iptables -t filter -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "IPTABLES SYN-RST:"
  161. iptables -t filter -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  162.  
  163. ## SYN-FLOODING
  164. iptables -t filter -N syn-flood
  165. iptables -t filter -A INPUT -p tcp --syn -j syn-flood
  166. iptables -t filter -A syn-flood -m limit --limit 1/sec --limit-burst 4 -j RETURN
  167. iptables -t filter -A syn-flood -j LOG --log-prefix "IPTABLES SYN-FLOOD:"
  168. iptables -t filter -A syn-flood -j DROP
  169.  
  170. ## Make sure NEW tcp connections are SYN packets
  171. iptables -t filter -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "IPTABLES SYN-FLOOD:"
  172. iptables -t filter -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
  173.  
  174. ## port scaner
  175. iptables -t filter -N port-scan
  176. iptables -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan
  177. iptables -t filter -A port-scan -m limit --limit 1/s --limit-burst 4 -j RETURN
  178. iptables -t filter -A port-scan -j LOG --log-prefix "IPTABLES PORT-SCAN:"
  179. iptables -t filter -A port-scan -j DROP
  180. echo " - ${green} Règles anti-scan de port : ${NC} OK"
  181.  
  182. # Previent des attack de type Denial of Service (DoS)
  183. iptables -t filter -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
  184. echo " - ${green} Règles anti-scan de port : ${NC} OK"
  185.  
  186. # Autres protections réseau
  187. # (certaines ne fonctionneront que pour certaines versions de noyau)
  188. echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  189. echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
  190. echo 0 > /proc/sys/net/ipv4/ip_forward
  191. echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
  192. echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  193. echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
  194. echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
  195. echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
  196. echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
  197. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  198. echo " - ${green} Règles de proction réseaux : ${NC} OK"
  199. echo ""
  200.  
  201.  
  202. # So are security package updates:
  203. # Note: You can hardcode the IP address here to prevent DNS spoofing
  204. # and to setup the rules even if DNS does not work but then you
  205. # will not "see" IP changes for this service:
  206. /sbin/iptables -A OUTPUT -p tcp -d security.debian.org --dport 80 -j ACCEPT
  207.  
  208.  
  209. }
  210.  
  211. sw_help()
  212. {
  213. echo " - ${green}Pour résumer, voici un récapitulatif de certaines attributs définis dans nos règles : ${NC}"
  214. echo " - ${green}Dans la ligne de votre nouvelle règle, il faut préciser les paquets sont traités en entrée, en sortie ou bien sils sont routés: ${NC}"
  215. echo " - ${yellow}FORWARD ${NC}${blue}: Traite les paquets routés. ${NC}"
  216. echo " - ${yellow}INPUT ${NC}${blue}: Traite les paquets entrants. ${NC}"
  217. echo " - ${yellow}OUTPUT ${NC}${blue}: Traite les paquets sortants. ${NC}"
  218. echo ""
  219. echo " - ${green}Ceci définit laction à faire sur les paquets dune règle inscrite dans la table des règles : ${NC}"
  220. echo " - ${yellow}DROP ${NC}${blue}: Le paquet est rejeté, aucune notification nest envoyée à la source. ${NC}"
  221. echo " - ${yellow}REJECT ${NC}${blue}: Le paquet est rejeté, une notification est envoyée à la source ${NC}"
  222. echo " - ${yellow}ACCEPT ${NC}${blue}: Le paquet est accepté. ${NC}"
  223. echo ""
  224. echo " - ${green}La définition des attributs pour les règles: ${NC}"
  225. echo " - ${yellow}-A ${NC}${blue}: ajoute une règle ${NC}"
  226. echo " - ${yellow}-D ${NC}${blue}: supprime un règle ${NC}"
  227. echo " - ${yellow}-F ${NC}${blue}: vide les tables ${NC}"
  228. echo " - ${yellow}-X ${NC}${blue}: vide les règles ${NC}"
  229. echo " - ${yellow}-L ${NC}${blue}: liste les règles ${NC}"
  230. echo " - ${yellow}-i ${NC}${blue}: interface entrante ${NC}"
  231. echo " - ${yellow}-o ${NC}${blue}: interface sortante ${NC}"
  232. echo " - ${yellow}-p ${NC}${blue}: protocole ${NC}"
  233. echo " - ${yellow}-s ${NC}${blue}: nom dhôte ou adresse ip ${NC}"
  234. echo " - ${yellow}-j ${NC}${blue}: jump, action de la règle (ACCEPT, DROP, REJECT ) ${NC}"
  235. echo " - ${yellow}-m ${NC}${blue}: options de concordance ${NC}"
  236. echo " - ${yellow}dport ${NC}${blue}: numéro port de destination ${NC}"
  237. echo " - ${yellow}sport ${NC}${blue}: numéro du port source ${NC}"
  238. echo ""
  239. }
  240.  
  241. ##########################
  242. # Bloque tout les packets routé et entrant
  243. ##########################
  244.  
  245. fw_blockAll ()
  246. {
  247. /sbin/iptables -F
  248. /sbin/iptables -t nat -F
  249. /sbin/iptables -t mangle -F
  250. /sbin/iptables -P INPUT DROP
  251. /sbin/iptables -P FORWARD DROP
  252. /sbin/iptables -P OUTPUT ACCEPT
  253. }
  254.  
  255. ##########################
  256. # Vidange des règles du firewal
  257. ##########################
  258.  
  259. fw_clear ()
  260. {
  261. /sbin/iptables -F
  262. /sbin/iptables -X
  263. /sbin/iptables -t nat -F
  264. /sbin/iptables -t nat -X
  265. /sbin/iptables -t mangle -F
  266. /sbin/iptables -t mangle -X
  267. /sbin/iptables -t raw -F
  268. /sbin/iptables -t raw -X
  269. /sbin/iptables -P INPUT ACCEPT
  270. /sbin/iptables -P OUTPUT ACCEPT
  271. /sbin/iptables -P FORWARD ACCEPT
  272. }
  273.  
  274. ##########################
  275. # Test the Firewall rules
  276. ##########################
  277.  
  278. fw_save ()
  279. {
  280. /sbin/iptables-save > /etc/iptables.backup
  281. }
  282.  
  283. fw_restore ()
  284. {
  285. if [ -e /etc/iptables.backup ]; then
  286. /sbin/iptables-restore < /etc/iptables.backup
  287. fi
  288. }
  289.  
  290. fw_test ()
  291. {
  292. fw_save
  293. fw_blockAll
  294. fw_start
  295. sleep 120
  296. echo " - ${green}Restauration des anciennes règles du parefeu...${NC} OK"
  297. fw_restore
  298.  
  299. }
  300.  
  301. case "$1" in
  302. start|restart)
  303. echo ""
  304. echo " - ${green}Démarrage du parfeu...${NC} OK"
  305. fw_blockAll
  306. fw_start
  307. echo " - ${green}Redémarrage de Fail2ban pour la restauration des règles${NC} OK"
  308. # relance fail2ban si installe
  309. if [ -x /usr/bin/fail2ban-server ]; then
  310. service fail2ban restart
  311. fi
  312. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  313. echo ""
  314. ;;
  315.  
  316. blockAll)
  317. echo ""
  318. echo " - ${green}Verrouillage du traffic...${NC} OK"
  319. fw_blockAll
  320. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  321. echo ""
  322. ;;
  323.  
  324. clear)
  325. echo ""
  326. echo " - ${green}Vide les règles du parefeu...${NC} OK"
  327. fw_clear
  328. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  329. echo ""
  330. ;;
  331.  
  332. test)
  333. echo ""
  334. echo " - ${green}Test des nouvelles règles du parefeu...${NC} OK"
  335. echo " - ${green}L'ancienne configuration sera restauré dans 120 secondes...${NC} OK"
  336. fw_test
  337. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  338. echo ""
  339. ;;
  340.  
  341. save)
  342. echo ""
  343. echo " - ${green}Sauvegarde les règles actuelles: ${NC}"
  344. fw_save
  345. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  346. echo ""
  347. ;;
  348.  
  349. restore)
  350. echo ""
  351. echo " - ${green}Restaure les règles sauvegardées: ${NC}"
  352. fw_restore
  353. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  354. echo ""
  355. ;;
  356.  
  357. list)
  358. echo ""
  359. echo " - ${green}Liste des règles : ${NC}"
  360. /sbin/iptables -v -L --line-numbers
  361. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  362. echo ""
  363. ;;
  364.  
  365. status)
  366. echo ""
  367. echo " - ${green}Liste des règles : ${NC}"
  368. /sbin/iptables -L
  369. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  370. echo ""
  371. ;;
  372.  
  373. help)
  374. echo ""
  375. echo " - ${green}Rappel : ${NC}"
  376. sw_help
  377. echo "\n${greenBgWhiteBold}Fait!${NC} OK"
  378. echo ""
  379. ;;
  380.  
  381. *)
  382. echo " - ${yellow}Usage: $0 {start|blockAll|restart|clear|test|list|status|save|restore|help}${NC}"
  383. echo " - ${red}Attention blockAll bloque tous trafic entrant/sortant!!!${NC}"
  384. echo " - ${red}Attention clear autorise tous trafic entrant/sortant!!!${NC}"
  385. exit 1
  386. ;;
  387. esac
  388. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement