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

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

Эти строки можно скопировать целиком в какой-либо скрипт и просто его выполнить. Для обычных случаев этого вполне хватит. Если какое-либо приложение не может выйти в сеть, специально добавлено логирование. Просто открывайте 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
143
144
145
146
147
148
149
150
#!/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 ICMP 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 порт, как это настроить указано. (Allow input mail on 587 port)
/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 Google talk
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 5222 -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 teamviewer
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 5938 -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 Replies (Ping)
/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 правило

iptables -L INPUT –line-numbers

iptables -D INPUT номер

iptables -t nat -L POSTROUTING –line-numbers`

iptables -t nat -D POSTROUTING номер`


См. так же