LINUX.ORG.RU

Железный занавес!

 , ,


0

4

Всем привет. Разбирался тут на днях с iptables для веб сервера. В итоге получился следующий набор правил:

### ============== RESET ALL RULES ============= ###
iptables -F
iptables -X
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP

### =============== SSH CHECK RULE ============== ###
iptables -N ssh_brute_check
iptables -A ssh_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 300 --hitcount 3 -j DROP
iptables -A ssh_brute_check -m recent --set -j ACCEPT

### ================ OUTPUT RULES =============== ###
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT

### ================== INPUT RULES ============== ###
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

### http(s)
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -A OUTPUT -p tcp --match multiport --sports 80,443 -j ACCEPT

### DNSMASQ
iptables -A INPUT -p udp --dport 53 -m connlimit --connlimit-above 8 -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -i eth0 -s $LOCAL_SUBNET/24 -p udp --dport 67:68 -j ACCEPT 
iptables -A OUTPUT -o eth0 -s $LOCAL_SUBNET/24 -p udp --sport 67:68 -j ACCEPT
  
### SSH
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22622 -j ssh_brute_check
iptables -A OUTPUT -p tcp --sport 22622 -j ACCEPT
iptables -A INPUT -p tcp --dport 22622 -j ssh_brute_check
  
### FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
    
### TLS FTP
iptables -A INPUT -p tcp --dport 41361:65534 -j ACCEPT

iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset

iptables -A INPUT -i eth1 -p tcp ! --syn -m state --state NEW -j DROP

#iptables -A INPUT -s $LOCAL_SUBNET/24 -j ACCEPT
#iptables -A OUTPUT -s $LOCAL_SUBNET/24 -j ACCEPT

### ================  FORWARD RULES ============== ###
iptables -A FORWARD -s $LOCAL_SUBNET/24 -i eth0 -o eth1 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -s $LOCAL_SUBNET/24 -j MASQUERADE

iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refuse forwarding from the internet
iptables -A FORWARD -i eth1 -s $LOCAL_SUBNET/24 -j DROP

# Don't allow forwarding from incorrect IPs.
iptables -A FORWARD -i eth0 ! -s $LOCAL_SUBNET/24 -j DROP

Стоить добавить, что веб сервер по совместительству еще и раздает интернет в дом.

Во-первых, хочется узнать мнение экспертов. Может какие правила можно опустить, они противоречат друг другу или вообще неправильные. И во-вторых, может кто-нибудь подскажет почему с такими правилами dnsmasq перестает раздавать dhcp??? Однако, если выставить статичный айпи, то маскардинг работает. А если сбросить эти правила, то dhcp снова начинает раздаваться.

Извини, но это ерунда. Почему, объяснять долго.

Ну, а конкретно по тексту правил:

iptables -A INPUT -i eth0 -s $LOCAL_SUBNET/24 -p udp --dport 67:68 -j ACCEPT
iptables -A OUTPUT -o eth0 -s $LOCAL_SUBNET/24 -p udp --sport 67:68 -j ACCEPT

вообще не нужно

$LOCAL_SUBNET/24

этаПять вообще, особенно смысл переменной.

uspen ★★★★★ ()

Еще один диванный администратор, который накопировал из гугла. Выкинь это.

murmur ()

автор, некоторые правила немного бредоватые, но ничего. на злых комментаторов не обращай внимание.

Bers666 ★★★★★ ()

Не вчитывался, но, похоже, со стейтами ты перемудрил. Ну и ssh выставлять на какой-то неудобный порт - неудобство только для тебя, любой сканер его всё равно выцепит.

turtle_bazon ★★★★★ ()

iptables -A INPUT -i eth0 -s $LOCAL_SUBNET/24 -p udp --dport 67:68 -j ACCEPT iptables -A OUTPUT -o eth0 -s $LOCAL_SUBNET/24 -p udp --sport 67:68 -j ACCEPT

Эти правила не отрабатывают для DHCP так как запросы на DHCP по бродкаст адрессам и отправляет их машина с неопределенным IP. Уберите проверку источника:

iptables -A INPUT -i eth0 -p udp --dport 67:68 -j ACCEPT 
iptables -A OUTPUT -o eth0 -p udp --sport 67:68 -j ACCEPT

zaz ★★★★ ()
Ответ на: комментарий от turtle_bazon

Ну и ssh выставлять на какой-то неудобный порт - неудобство только для тебя, любой сканер его всё равно выцепит.

Тем не менее это значительно уменьшает количество хлама в логах.

RH_ ()

Ну все, теперь ты в безопасности.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.