Skip to content

Commit efdd5d1

Browse files
authored
Create README.md
1 parent dd1a031 commit efdd5d1

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

iptables/README.md

+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
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

Comments
 (0)