LINUX.ORG.RU

iptables, web server, debian


0

1

Привет всем, продолжаю постигать азы линукса, а точнее установил веб сервер, а об iptables неподумал (не пинать) теперь как настроить его!

$ nmap -p 1-65535 localhost

Starting Nmap 4.62 ( http://nmap.org ) at 2011-01-08 22:24 ALMT
Interesting ports on localhost (127.0.0.1):
Not shown: 65527 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
53/tcp open domain
80/tcp open http
953/tcp open rndc читал что лучше закрыть
2235/tcp open unknown <= тут ssh
3306/tcp open mysql см. ниже ведь нужно закрыть?
11211/tcp open unknown <= memcached (он же локальный? порт ведь нужно прикрыть из вне?)

вопрос, в нете в статьях везде сначала закрывают все порты, а потом что нужно открывают, мне это не подходит, так как сервак в дц! Как запретить все, кроме 80,21, 53,25,2235


В настройках сервисов укажите, чтобы слушали только на 127.0.0.1

anonymous
()

> Как запретить все, кроме 80,21, 53,25,2235
Написать скрипт, который первой командой всё запрещает, а второй - открывает нужное.

Выполнить (от рута):
at now + 20 minutes
iptables -F
Ctrl+D # нажать, а не написать.

Потом выполнить свой скрипт. Если что-то пойдёт не так, через 20 минут настройки firewall'а сбросятся.

Если всё заработает, выполнить atq, посмотреть на номер job'а (первое число) и выполнить atrm номер_jobа (например, atrm 5), а скрипт поставить в автозапуск.

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

спасибо, нужно сначало на виртуалбоксе попробовать! а у ва случайно нет примеров скриптов?

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg

Во-первых, я ошибся: первыми нужны «разрешающие» правила.
Во-вторых, всё просто:

iptables -A INPUT -p tcp -m multiport --dports 80,21,53,25,2235 -j ACCEPT
iptables -A INPUT -j DROP

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

Сделал примерно так:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 80,22 -j ACCEPT

но при проверке nmap с другой машины выдает 3 доступных порта 80,21,22 хотя ftp даже не устанавливался ЧЯДНТ

Sky4eg
() автор топика
Ответ на: комментарий от anton_jugatsu

Прописываю
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 80,22 -j ACCEPT


debian:~# iptables-save
# Generated by iptables-save v1.4.2 on Mon Jan 10 10:32:58 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [30:3256]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,22 -j ACCEPT
COMMIT
# Completed on Mon Jan 10 10:32:58 2011

debian:~# nmap -p 1-65535 localhost

Starting Nmap 4.62 ( http://nmap.org ) at 2011-01-10 10:34 ALMT
Interesting ports on localhost (127.0.0.1):
Not shown: 65532 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 1.302 seconds

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg

а вот nmap с другой вирт машины!

sky@ubuntu:~$ nmap -p 1-1024 192.168.137.5

Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-10 10:47 QYZT
Interesting ports on 192.168.137.5:
Not shown: 1021 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 5.91 seconds

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg

iptables -A INPUT -i lo -j ACCEPT

debian:~# nmap -p 1-65535 localhost

-i lo -j ACCEPT

localhost


Доходит? Вы себя же мапите через lo. Это раз.
Два, поставьте vpn, и откройте доступ к ssh только для вашего IP в сети vpn.

-A INPUT -i tun0 -s 10.10.0.21/32 -d 10.10.0.1/32 -j ACCEPT

Как запретить все, кроме 80,21, 53,25,2235

Опять же, ставите vpn, открываете ssh для сети vpn, закрываете все прочие, и уже после открываете что нужно.

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

во втором посте nmap не с lo, нежна реализация именно через iptable, сервер стоит в датацентре и доступ по одному ip не решение!

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg

доступ по одному ip не решение!

Вы видимо не поняли. Я имел ввиду вообще хорошую настройку. На сервер ставится openvpn первым делом. После чего открывается ssh на IP админа в сети vpn. Все остальное закрывается. Далее уже идет открытие нужных сервисов в свет или еще куда. Так же на vpn свешиваются прочие «уязвимые» сервисы, например webmin (port 10000).

Привет всем, продолжаю постигать азы линукса

установил веб сервер

сервак в дц


Вам бы для начала годик-другой попрактиковаться на хомяке перед такими проделками.

Пример правильной реализации: Сервер в ДЦ, у него статический IP, на нем крутится openvpn (на порту к примеру 23043), все остальное закрыто. Вы попадаете в сеть впн (к примеру 10.10.0.0/24 ваш ip в ней 10.10.0.21) и далее запрещай@разрешай, водка-пей@земля-валяйся, пример для iptables-restore


*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i tun0 -s 10.10.0.21/32 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state INVALID -j DROP
COMMIT

При такой организации у вас не было бы ни одной вышеперечисленной проблемы, а возможно не появилось бы новых.

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

> Вам бы для начала годик-другой попрактиковаться на хомяке перед такими проделками.

Просто финансовое состояние позвалят обучаться на «боевом железе», меньше желание запороть все и топать в дц, а он в 200км от меня =(

За ваш совет большое спасибо! О таком я даже не думал, буду читать мануалы!

Sky4eg
() автор топика
Ответ на: комментарий от anton_jugatsu

Спасибо, за это я и люблю ЛОР, что здесь не унижают если не знаешь...

Вот...

debian:~# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1826/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2092/exim4
tcp6 0 0 :::80 :::* LISTEN 2135/apache2
tcp6 0 0 :::22 :::* LISTEN 1826/sshd

debian:~# ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 128 :::www :::*
0 128 *:ssh *:*
0 128 :::ssh :::*
0 20 127.0.0.1:smtp *:*

debian:~# lsof -n -i4tcp | grep LIST
sshd 1826 root 4u IPv4 5063 TCP *:ssh (LISTEN)
exim4 2092 Debian-exim 3u IPv4 5259 TCP 127.0.0.1:smtp (LISTEN)
debian:~#

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg

Вот видишь, на твоём хосте слушают следуюшие демоны: sshd, exim4, apache

То есть ssh, smtp, www, соответсвенно 22, 25 и 80 порт.

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

Теперь, если .то _всё же_ вывод iptables-save с того хоста

debian:~# iptables-save
# Generated by iptables-save v1.4.2 on Mon Jan 10 10:32:58 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [30:3256]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,22 -j ACCEPT
COMMIT
# Completed on Mon Jan 10 10:32:58 2011

То при скане с _другого_ хоста, открытые порты должны быть только 80 и 22

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

Сделал так, работает! Ваше мнение? Есть чтото лишнее или чегото не хватает?

#!/bin/bash

IPTABLES=/sbin/iptables

$IPTABLES -F
$IPTABLES -t nat -F

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p udp -j ACCEPT
$IPTABLES -A INPUT -p icmp -j ACCEPT

$IPTABLES -A INPUT -p tcp -m multiport --destination-port 22,80 -j ACCEPT

Sky4eg
() автор топика
Ответ на: комментарий от Sky4eg
$IPTABLES -A INPUT -p udp -j ACCEPT

Если будет openvpn, то указать жёстко

-p udp --dport 1194 -j ACCEPT

И вместо -p icmp я бы сделал

-A INPUT -p icmp -m icmp --icmp-type 8 -m comment --comment "Allow only pings" -j ACCEPT

Пропускал только пинги.

Хотя считаю openvpn в данном случае оверхедом — достаточно ssh, Пароль посложнее (pwgen тут поможет) и fail2-ban.

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

нет openvpn нет и не будет, на серваке настроен веб сервер и пока чтото перестраивать не охота! возможно в будущем

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