Небольшой первоначальный скрипт (правила, iptables faq) для десктопа или простого сервера. В данном случае примеры по работе с портами того или иного ПО, запущенного на вашем компьютере. На любом компьютере необходимо соблюдать меры безопасности. Миф о том, что Linux более защищен - не верен, все зависит от корявости рук администратора. Есть и хорошо защищенные Windows-системы, как и открытые практически любому Linux-системы. Поэтому стоит все-таки немного подумать и о сетевой защите компьютера. Ниже добавлены некоторые правила для iptables, которые могут вначале пригодиться.

Специально заменил $IPT на /sbin/iptables, если кому-то понадобится только одно правило, чтобы не менять что-либо - просто скопировал и выполнил. Естественно, здесь пока мало правил, нет различных VPN и т.д., если есть желание - добавьте.

Эти строки можно скопировать целиком в какой-либо скрипт и просто его выполнить. Для обычных случаев этого вполне хватит. Если какое-либо приложение не может выйти в сеть, специально добавлено логирование. Просто открывайте tail -f /var/log/syslog (или ваше, если отличное от Ubuntu) и смотрите! Если есть вопросы - добавьте их в обсуждение, будем вместе решать.

PS Кроме этих правил, подумайте о том, что стоит взять из статьи Оптимизация TCP.

Скрипт и правила IPTABLES

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 #!/bin/sh
 
 echo "0" > /proc/sys/net/ipv4/ip_forward
  echo "1" > /proc/sys/net/ipv4/tcp_syncookies
  echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  #необходим для корректной работы FTP-сервера
 /sbin/modprobe ip_conntrack_ftp
  #Сбрасываем старые данные и правила
 /sbin/iptables -F
 /sbin/iptables -F -t nat
 /sbin/iptables -F -t mangle
 /sbin/iptables -X
 /sbin/iptables -X -t nat
 /sbin/iptables -X -t mangle
 
 echo Old Rules Flushed
 
 #Устанавливаем правила на DROP по-умолчанию. (Set Default-Drop Policy)
 /sbin/iptables -P INPUT DROP
 /sbin/iptables -P OUTPUT DROP
 
 #Create New Chain Called BAD_PACKETS
 /sbin/iptables -N BAD_PACKETS
 
 #Разрешаем работу локального интерфейса, того самого 127.0.0.1 (Allow The Loopback)
 /sbin/iptables -A INPUT -i lo -j ACCEPT
 
 #Jump To BAD_PACKETS
 /sbin/iptables -A INPUT -j BAD_PACKETS
 
 #Разрешаем поддерживать открытыми уже установленные соединения (Allow Established Connections)
 /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 # Разрешаем получать запросы от клиентов DHCP. (Allow DHCP)
 /sbin/iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT
 
 #Разрешаем присоединяться к SSH, при условии, что используется стандартный 22 порт (Allow SSH)
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT
 
 #Разрешаем сетевую печать на этом компьютере. (Allow net print)
 /sbin/iptables -A INPUT -p UDP -i eth0 --dport 631 -j ACCEPT
 
 #Разрешаем webmin на стандартном 10000 порту (Allow  webmin)
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 10000 -j ACCEPT
 
 #Allow avahi-daemon
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 5353 -j ACCEPT
 
 #Allow input torrents-client
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 51413 -j ACCEPT
 /sbin/iptables -A INPUT -p UDP -i eth0 --dport 51413 -j ACCEPT
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 6881 -j ACCEPT
 /sbin/iptables -A INPUT -p UDP -i eth0 --dport 6881 -j ACCEPT
 
 #Allow Samba From Specified Hosts
 /sbin/iptables -A INPUT -p TCP -i eth0 --dport 137:139 -j ACCEPT
 /sbin/iptables -A INPUT -p UDP -i eth0 --dport 137:139 -j ACCEPT
 /sbin/iptables -A INPUT -p TCP -i eth0 --sport 137:139 -j ACCEPT
 /sbin/iptables -A INPUT -p UDP -i eth0 --sport 137:139 -j ACCEPT
 
 #Allow CMP Replies From Specified Hosts (Ping)
 /sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT
 /sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT
 
 #Разрешаем подключаться к SMTP на 587 порт
 /sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT
 #Log
 /sbin/iptables -A INPUT -j LOG --log-prefix "INPUT DROP: "
 
 #Accept Loopback On OUTPUT
 /sbin/iptables -A OUTPUT -o lo -j ACCEPT
 
 #Разрешаем поддерживать открытыми уже установленные соединения. (Allow Established Connections)
 /sbin/iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 #Разрешить получать IP по DHCP (Allow DHCP)
 /sbin/iptables -A OUTPUT -p UDP --dport 67 --sport 68 -j ACCEPT
 
 #Allow HTTP, FTP, DNS, SSH, SMTP & Port 443 Outbound
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 443 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 80 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 53 -j ACCEPT
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 53 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 25 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 22 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 21 -j ACCEPT
 
 #Allow POP, IMAP
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 110 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 143 -j ACCEPT
 
 #Allow IMAPS
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 993 -j ACCEPT
 
 #Allow output  ICQ
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 5190 -j ACCEPT
 
 #Разрешить выход на IRC. Allow output IRC
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6667 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6668 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6669 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 8001 -j ACCEPT
 
  #Allow output CUPS (for printers in net)
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 631 -j ACCEPT
  
 #Allow output avahi-daemon
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 5353 -j ACCEPT
 
#Allow output NTP (for ntpdate)
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 123 -j ACCEPT
 
 #Allow output Urban Terror (ну это просто необходимость)
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 27960 -j ACCEPT
 
 #Allow specify ports
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2046 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2050 -j ACCEPT
 
 #Allow Samba From Specified Hosts
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 137:139 -j ACCEPT
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 137:139 -j ACCEPT
 /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 445 -j ACCEPT
 /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 445 -j ACCEPT
 
 #Allow ICMP
 /sbin/iptables -A OUTPUT -p ICMP -o eth0 --icmp-type 8 -j ACCEPT
 
 #Drop
 /sbin/iptables -A OUTPUT -j LOG --log-prefix "OUTPUT DROP: "
 /sbin/iptables -A BAD_PACKETS -p TCP ! --syn -m state --state NEW -j DROP
 /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL ALL -j DROP
 /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL NONE -j DROP
 /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL SYN \-m state --state ESTABLISHED -j DROP
 /sbin/iptables -A BAD_PACKETS -p ICMP --fragment -j DROP
 /sbin/iptables -A BAD_PACKETS -m state --state INVALID -j DROP
 /sbin/iptables -A BAD_PACKETS -d 255.255.255.255 -j DROP
 /sbin/iptables -A BAD_PACKETS -j RETURN
 
 echo "Rules written."

Как удалить в Iptables правило

1
2
 iptables -L INPUT --line-numbers
 iptables -D INPUT номер
1
2
 iptables -t nat -L POSTROUTING --line-numbers
 iptables -t nat -D POSTROUTING номер