IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   Debian + Security (https://www.imho.ws/showthread.php?t=64441)

shuron 18.07.2004 03:49

Debian + Security
 
В линуксах я ещё не силён...
но хотелось бы настроить побезопаснее мой debian я всётаки через него в интернет хожу...
Со второй машины в локалке запускаю прогу nmap
в режиме SYN-Stealt выдает такую картину
Код:

Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on debian (192.168.1.1):
(The 1587 ports scanned but not shown below are in state: closed)
Port      State      Service
9/tcp      open        discard               
13/tcp    open        daytime               
21/tcp    open        ftp                   
22/tcp    open        ssh                   
23/tcp    open        telnet                 
25/tcp    open        smtp                   
37/tcp    open        time                   
53/tcp    open        domain                 
79/tcp    open        finger                 
111/tcp    open        sunrpc                 
113/tcp    open        auth                   
139/tcp    open        netbios-ssn           
515/tcp    open        printer               
1024/tcp  open        kdm                   
Remote operating system guess: Linux Kernel 2.4.0 - 2.5.20
Uptime 0.071 days (since Sat Jul 17 23:45:32 2004)
Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds

значит это все мои открытые порты и т.д.
Вопросы у меня по этому поводу такие:
1) это скан из локалки. но я так понимаю из интернета будет тот-же резултат, это так?`
2) как мне это сервисы прикрыть?
какие файлы смотреть?
нужен только ssh
и наверное netbis потому что я samba юзаю
по подробнее плиз!

3) а также интересно как настраивается разборка с пакетами..
например где запретить высылать icmp echo ?
как это всё делается?`

большое спасибо!

до меня начинает доходить..
это наверное тоже с iptables настраивается....
если да то как? приведите примеры.

хотя с другоа стороны сервис finger всеравно идти будет!!
пожалучта помогите разобраться и настроить!

noname 18.07.2004 09:24

сначалa
идешь и смотришь файл /etc/inetd.conf

и все не закоментированные сервисы которые не нужны комментируешь #

после этого перезапускаешь inetd
/etc/init.d/inetd restart (ну или можно kill -1 pid (inetd) )

после этого всякие daytyme , finger и прочее должно исчезнуть .

чтоб посмотреть какие сервисы запушены

#netstat -antpu ( что делает каждфй флаг- man netstat)

чтоб глянуть какой порт соответствует какому сервису глянь /etc/services

оттуда видно например что 25-ый порт -это smtp сервис , и т.д.

вот здесь лежит подробный tutorial по iptables
http://gazette.lrn.ru/rus/articles/i...-tutorial.html

Gennadi 18.07.2004 12:36

1) это скан из локалки. но я так понимаю из интернета будет тот-же резултат, это так?`

Нет. В firewall'e пишутся правила для каждого сетегого интерфейса, какие установлены на компютере ( ppp0, ippp0, eth0, eth1 и т.тд....). Этим регулируется возможность установления соединений с компютером ( на пр. для двух интерфейсов как у тебя):

- из интернета к firewall'у ( ppp0 )
- из firewall'а к интернету ( ppp0 )
- из firewall'а к локальной сети ( eth1 ) ## eth1 локальный интерфейс ( или какой там у тебя не знаю.. ).

- из локальной сети к firewall'у ( eth1 )

Сейчас ты просканировал локальный интерфейс eth1 ( из локальной сети к firewall'у )
Скорее всего на твоём firewall'e нету правил для eth1 и по умолчанию установлено - всё ACCEPT. Разрешены все соединения из локальной сети к firewall'у и из firewall'а к локальной сети .

Если просканировать из интернета ( ppp0 ) - картина будет другая...

Viel Spaß!

shuron 18.07.2004 17:58

noname
как ты сделал сервисы все закоментировал...
картин осталась той же...
Gennadi
понятно
а сеть у меня такая..

winda 192.168.1.2
|
|
192.1681.1 (eth0) debian (eth1 ,pppo) ----->Internet

значит всётаки закрывается всё это Iptablami
а не мог бы ты мне пример тут написать как лучше всё это закрыть ?
у меня пока стоят только те правила котрые ты мне написал для форвардинга.
(тут http://www.imho.ws/showthread.php?t=60054)

Я так порузомеваю.. что по этому и в и нтренет всё открыто
не мог бы ты мне написать пару примеров?
или может по ICQ поговорим?

Gennadi 18.07.2004 22:14

Firewall
 
Из интернета на Firewall'е открыт 22 порт ssh и NAT на винду для IRC и EDONKEY...

Из локальной сети на Firewall'е открыты все порты.


Цитата:

#!/bin/bash
#

case "$1" in
start)
echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle очистить
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies установить
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT заполнить
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -j DROP

# все пакеты протоколировать
iptables -A INPUT -j LOG --log-prefix "INPUT LOG "
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT LOG"
iptables -A FORWARD -j LOG --log-prefix "FORWARD LOG "

# Битые пакеты выбросить
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Stealth Scans etc. запретить
# Flags не установлен
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN и FIN установить
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation разрешить
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) для Forwarding на PMTU разрешить
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking активировать
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# IP-Adresse локальнго интерфейса определить
LAN_IP=$(ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)

################ твои правила #######################

# SSH
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# NAT для IRC
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 6667 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 6667 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.1.2 --dport 6667 -j ACCEPT

# NAT для EDONKEY
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4661 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 4661 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.1.2 --dport 4661 -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4662 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 4662 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.1.2 --dport 4662 -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4663 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 4663 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.1.2 --dport 4663 -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 4665 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 4665 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p udp -d 192.168.1.2 --dport 4665 -j ACCEPT
# Можешь сюда добавлять свои новые правила


###################################################

# Допуск из LAN к eth0 разрешить
iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT

# Routing разрешить
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading разрешить
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# SYN-Cookies разрешить
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying отключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP выключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Негодные ICMP-ответы игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) посылать
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Оптимизация памяти и времени для IP-дe/-фрагментации
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout защиту от DoS-Attacken установить
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 ответа на один TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x повторить
echo 15 > /proc/sys/net/ipv4/tcp_retries2

;;

stop)
echo "Stoppe IP-Paketfilter"
# Tabelle очистить
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# Default-Policies установить
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

*)
echo "Ошибка в вызове"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac
сp firewall /etc/init.d
chmod 755 /etc/init.d/firewall
ln -s /etc/init.d/firewall /sbin/myfirewall
chkconfig -a firewall
myfirewall start
myfirewall status
myfirewall stop

iptables -L

shuron 18.07.2004 23:28

Класс! щас попробую

shuron 19.07.2004 04:01

помойму у тебя ошибка в этой строчке
LAN_IP=$(ifconfig eth1 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)
покрайней мере так ругался баш
ну и правильно потому что на LAN идёт eth0
его и надо подставить?
или вообще ppp0?

Gennadi 19.07.2004 09:21

Да, ты прав.

нужно так:

LAN_IP=$(ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)

Запарился... Извини.

Gennadi 19.07.2004 10:35

Если хочешь посмотреть как выглядет твой Firewall из интернета, то здесь ты можешь проверить свой Firewall:

http://www.pcflank.com/

noname 20.07.2004 08:37

shuron
скорей всего что-то сделал не так.
я не говорю про ftp ssh , samba .. они не используют inetd , а вот типа daytime и finger еще как.
а netstat что показывает ? , что эти сервисы есть ??

причем я не использую iptables

#netstat -antpu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
debian:/home/sasha#

как видно ни одного сервиса.

KalaSh 20.07.2004 08:48

Gennadi
Можно комментарии с немецкого перевести на английский или на русский, т.к. не всё понятно в созданных тобой правилах .

Gennadi 20.07.2004 11:16

KalaSh

Я всё перевёл. См. вверху.

shuron 20.07.2004 17:14

noname
вот что у меня выдаёт...
Код:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name 
tcp        0      0 0.0.0.0:1024            0.0.0.0:*              LISTEN      205/rpc.statd     
tcp        0      0 0.0.0.0:515            0.0.0.0:*              LISTEN      219/lpd           
tcp        0      0 0.0.0.0:139            0.0.0.0:*              LISTEN      227/smbd           
tcp        0      0 0.0.0.0:111            0.0.0.0:*              LISTEN      108/portmap       
tcp        0      0 80.171.12.12:53        0.0.0.0:*              LISTEN      190/named         
tcp        0      0 192.168.1.1:53          0.0.0.0:*              LISTEN      190/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*              LISTEN      190/named         
tcp        0      0 0.0.0.0:22              0.0.0.0:*              LISTEN      233/sshd           
tcp        0      0 127.0.0.1:953          0.0.0.0:*              LISTEN      190/named         
tcp        0      0 192.168.1.1:139        192.168.1.2:1026        ESTABLISHED 259/smbd           
tcp        0      0 192.168.1.1:22          192.168.1.2:1032        ESTABLISHED 260/sshd           
udp        0      0 0.0.0.0:1024            0.0.0.0:*                          205/rpc.statd     
udp        0      0 0.0.0.0:1025            0.0.0.0:*                          197/lwresd         
udp        0      0 0.0.0.0:1026            0.0.0.0:*                          190/named         
udp        0      0 127.0.0.1:1027          0.0.0.0:*                          259/smbd           
udp        0      0 192.168.1.1:137        0.0.0.0:*                          225/nmbd           
udp        0      0 0.0.0.0:137            0.0.0.0:*                          225/nmbd           
udp        0      0 192.168.1.1:138        0.0.0.0:*                          225/nmbd           
udp        0      0 0.0.0.0:138            0.0.0.0:*                          225/nmbd           
udp        0      0 127.0.0.1:921          0.0.0.0:*                          197/lwresd         
udp        0      0 0.0.0.0:805            0.0.0.0:*                          205/rpc.statd     
udp        0      0 80.171.12.12:53        0.0.0.0:*                          190/named         
udp        0      0 192.168.1.1:53          0.0.0.0:*                          190/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                          190/named         
udp        0      0 0.0.0.0:111            0.0.0.0:*                          108/portmap

Gennadi
класный ресурс!!!! :yees:
но он меня пугает, "quick test" говорит:


Warning!
The test found visible port(s) on your system: 21, 23, 80, 135, 137, 138, 139, 1080, 3128

Warning!
The test found visible ports on your system: 27374, 12345, 1243, 31337, 12348.
The following Trojans use these ports: SubSeven, NetBus, SubSeven, Back Orifice, BioNet
Although these ports are visible, they are not open, so your system is not infected. However, having visible ports on your system means your computer can be "seen" over the Internet. This makes it very easy for skillful intruders to explore your system.

странно а advanced port scan
говорит что с 1-4000 открыт только 22 как и задумывалось

Gennadi 20.07.2004 17:36

Повтори "quick test" и смотри логи. Порт DPT=27374 должен быть DROP.
Ну и друге тоже.....

Цитата:

linux:# tail -fn 100 /var/log/messages
Jul 20 15:29:58 router kernel: iptables:DROP:IN=ppp0 OUT= MAC= SRC=194.231.190.227 DST=80.143.136.173 LEN=60 TOS=0x10 PREC=0x00 TTL=58 ID=12151 DF PROTO=TCP SPT=1924 DPT=27374 WINDOW=5840 RES=0x00 SYN URGP=0
Значит всё OK!

noname 20.07.2004 19:46

shuron

все правильно. как видно ни daytyme ни finger нет .

то что у тебя сейчас есть это демоны не используюшие inetd

c ними надо разбираться по отдельности .


например (я почти уверен) portmap тебе не нужен , rpc.statd тоже
эта машина является name сервером ? если нет то и named тебе не нужен.
соответственно apt-get remove portmap ,named ....

помоему логично иметь только тот софт который тебе необходим , к тому же так легче
держать систему под контролем.

ну а фаерволом уже контролировать безопасность и возможность доступа с разных сетей , хостов ...

насчет теста .
IP Address test

The test could not determine your IP address.

The test has found that the IP address used by your computer cannot be scanned. This commonly occurs because of a firewall program on your computer and/or you are connected to the Internet through a proxy-server or your ISP uses Network Address Translation (NAT) to share IP addresses.

This means the test cannot check your system as the results of the testing would be incorrect.

shuron 22.07.2004 04:17

noname
named я так понимаю это DNS Server...
да я бы его с удовольствием испролзовал..
но что-то не совсем знаю как..
Всмысле настроить вплане конфиг файлов.
да и в плане оптимальности

а как rpc.statd удалить не знаю

portmap удалил хотя он вроде нужен для NFS который я может в скором юзать буду..

остальное вроде всё нужно

gennadi

после запуска вышеприведённог скрипта из локалки не могу по SSH
приконектица.. с помощю putty. если скрипт вырубить то всё ок

Gennadi 22.07.2004 11:30

посмотри эту строчку...

# Допуск из LAN к eth0 разрешить
iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

shuron 22.07.2004 16:47

а х да ты её изменил...
точно. ;)

мне ещё вот это интересно:
Цитата:

# все пакеты протоколировать
iptables -A INPUT -j LOG --log-prefix "INPUT LOG "
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT LOG"
iptables -A FORWARD -j LOG --log-prefix "FORWARD LOG "
тоесть пакеты протоколируются...
а где это посмотреть?

второе эти логи наверное быстро наполняются, может их подтирать надо?

Gennadi 22.07.2004 22:59

Цитата:

тоесть пакеты протоколируются...
а где это посмотрет
смотришь в реальном времени:

tail -fn 100 /var/log/messages

или так:

less /var/log/messages | grep kernel >> firewall.txt

потом на досуге можешь файл firewall.txt спокойно почитать.....

shuron 23.07.2004 03:19

Цитата:

Сообщение от Gennadi
смотришь в реальном времени:

tail -fn 100 /var/log/messages

или так:

less /var/log/messages | grep kernel >> firewall.txt

потом на досуге можешь файл firewall.txt спокойно почитать.....

тоесть если ни одним из этих способов не пользоватся..
то протоколизации и нет на сам деле..?
или она толко в том виде что на экран лезет.. на линуксе сейчас.

Gennadi 23.07.2004 16:30

Всё протоколируется в файле /var/log/messages и ты можешь всегда получить информацию как текущую, так и за прошедшие часы, дни, месяцы.......

shuron 23.07.2004 18:49

А ну правильно мог и сам догадаться...
спасибо


Часовой пояс GMT +4, время: 18:50.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.