|
| 1 | +# iptables |
| 2 | + |
| 3 | +List the rules in a chain: |
| 4 | +```bash |
| 5 | +sudo iptables -L -n -v --line-number |
| 6 | +``` |
| 7 | +> add `-n` flag for **numeric output of addresses and ports** |
| 8 | +
|
| 9 | + |
| 10 | +save rules: |
| 11 | +```bash |
| 12 | +sudo iptables-save > new-rules |
| 13 | +``` |
| 14 | + |
| 15 | +restore rules: |
| 16 | +```bash |
| 17 | +sudo iptables-restore < rules |
| 18 | +``` |
| 19 | + |
| 20 | +flush rules and remove chains: |
| 21 | +```bash |
| 22 | +sudo iptables -F |
| 23 | +sudo iptables -F INPUT |
| 24 | + |
| 25 | +# Delete user-defined chains |
| 26 | +sudo iptables -X |
| 27 | +``` |
| 28 | + |
| 29 | +flush and delete used defined chain for filted and nat tables: |
| 30 | +```bash |
| 31 | +sudo iptables -t filter -F |
| 32 | +sudo iptables -t filter -X |
| 33 | +sudo iptables -t nat -F |
| 34 | +sudo iptables -t nat -X |
| 35 | +``` |
| 36 | + |
| 37 | +change input policy to DROP: |
| 38 | +```bash |
| 39 | +sudo iptables --policy INPUT DROP |
| 40 | +sudo iptables --policy FORWARD DROP |
| 41 | +sudo iptables --policy OUTPUT ACCEPT |
| 42 | +``` |
| 43 | + |
| 44 | +drop connection from specfic IP: |
| 45 | +```bash |
| 46 | +sudo iptables -I INPUT 1 -s 192.168.0.54 -j DROP |
| 47 | + |
| 48 | +# Append rules |
| 49 | +sudo iptables -A INPUT -s 192.168.0.54 -j DROP |
| 50 | +``` |
| 51 | + |
| 52 | +accept everything on localhost: |
| 53 | +```bash |
| 54 | +sudo iptables -A INPUT -i lo -j ACCEPT |
| 55 | +sudo iptables -A OUTPUT -o lo -j ACCEPT |
| 56 | +``` |
| 57 | + |
| 58 | +allow icmp trafic: |
| 59 | +```bash |
| 60 | +sudo iptables -I OUTPUT 1 --proto icmp -j ACCEPT |
| 61 | +``` |
| 62 | + |
| 63 | +delete rule number 3 from chain INPUT: |
| 64 | +```bash |
| 65 | +sudo iptables -D INPUT 3 |
| 66 | +``` |
| 67 | + |
| 68 | +allow destination port 22: |
| 69 | +```bash |
| 70 | +sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT |
| 71 | +``` |
| 72 | + |
| 73 | +all new connections on port 80: |
| 74 | +```bash |
| 75 | +sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT |
| 76 | +``` |
| 77 | + |
| 78 | +allow input and output from range 192.168.1.0/24 on port 3306: |
| 79 | +```bash |
| 80 | +sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT |
| 81 | +sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
| 82 | +``` |
| 83 | + |
| 84 | +enable http ports: |
| 85 | +```bash |
| 86 | +sudo iptables -A OUTPUT -p tcp -m multiport --dport 80,443,8080 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT |
| 87 | +``` |
| 88 | + |
| 89 | +reject connection from port 22: |
| 90 | +```bash |
| 91 | +sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECT |
| 92 | +sudo iptables -A OUTPUT -p tcp --dport 25 -j DROP |
| 93 | +``` |
| 94 | + |
| 95 | +drop invalid state: |
| 96 | +```bash |
| 97 | +sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP |
| 98 | +``` |
| 99 | + |
| 100 | +log connection: |
| 101 | +```bash |
| 102 | +sudo iptables -A INPUT -i enp1s0 -s 10.0.0.0/8 -j LOG --log-prefix "IP SPOOF A:" |
| 103 | +``` |
| 104 | + |
| 105 | +add logs 5 logs per minute: |
| 106 | +```bash |
| 107 | +sudo iptables -A INPUT -i enp1s0 -s 10.10.10.0/24 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF_A" |
| 108 | +``` |
| 109 | + |
| 110 | +drop icmp connection: |
| 111 | +```bash |
| 112 | +sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j DROP |
| 113 | +``` |
| 114 | + |
| 115 | +add new chain: |
| 116 | +```bash |
| 117 | +sudo iptables -N port-scanning |
| 118 | +``` |
| 119 | + |
| 120 | +limit connection: |
| 121 | +```bash |
| 122 | +sudo iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN |
| 123 | +``` |
| 124 | + |
| 125 | +drop if more than 10 new connections are there in last 60 seconds: |
| 126 | +```bash |
| 127 | +sudo iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP |
| 128 | +``` |
0 commit comments