Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [iptables][Решено] Можно ли как-то улучшить,убрать что-то?  (Прочитано 743 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Ребят,гляньте на этот конфиг,можно ли тут что-то улучшить,может я зря открыл порт 53 в одной из цепочек? Я в этом понимаю мало,делал методом тыка + гугл.
Мне главное,чтобы был полноценный firewall,защита по максимуму,можно ли что-то добавить/убрать,да и вообще,правильно ли там сделано?
#! /bin/sh


IPT=/sbin/iptables
 
IIFACE=wlan0
OIFACE=wlan0
  


  # Flushing all rules,deleting all chains
  $IPT -F
  $IPT -t nat -F
  $IPT -X

  #einfo "Setting default rule to drop"
  $IPT -P INPUT DROP
  $IPT -P FORWARD DROP
  $IPT -P OUTPUT DROP
  
  
  $IPT -N dns-out
  $IPT -F dns-out
  $IPT -A dns-out -p udp -o $OIFACE -m udp --dport 53 -j ACCEPT
  $IPT -A dns-out -p tcp -o $OIFACE -m tcp --dport 53 -j ACCEPT
  
  $IPT -N dns-in
  $IPT -F dns-in
  $IPT -A dns-in  -p udp -i $IIFACE -m udp --dport 53 -j ACCEPT
  $IPT -A dns-in  -p tcp -i $IIFACE -m tcp --dport 53 -j ACCEPT  

  
  # Creating drop rules for system ports (оно надо вроде,да?)
  $IPT -N drop-system-ports-in
  $IPT -F drop-system-ports-in
  $IPT -A drop-system-ports-in -p tcp -i $IIFACE -d 0/0 -m tcp --dport 0:1023 -j DROP
  $IPT -A drop-system-ports-in -p udp -i $IIFACE -d 0/0 -m udp --dport 0:1023 -j DROP

  $IPT -N drop-system-ports-out
  $IPT -F drop-system-ports-out
  $IPT -A drop-system-ports-out -p tcp -o $OIFACE -d 0/0 -m tcp --dport 0:1023 -j DROP
  $IPT -A drop-system-ports-out -p udp -o $OIFACE -d 0/0 -m udp --dport 0:1023 -j DROP

 
  #default rule
  #einfo "Creating states chain"
  $IPT -N allowed-connection-in
  $IPT -F allowed-connection-in
  $IPT -A allowed-connection-in -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPT -A allowed-connection-in -i $IIFACE -m state --state INVALID -j DROP
  $IPT -A allowed-connection-in -j DROP
  
  $IPT -N allowed-connection-out
  $IPT -F allowed-connection-out
  $IPT -A allowed-connection-out -m state --state ESTABLISHED,RELATED -j ACCEPT

  # Это для irc,иначе к фриноду не коннектится,как тут получше сделать?
  $IPT -A allowed-connection-out -p tcp -o $OIFACE -m state --state NEW --dport 6667 -j ACCEPT

  $IPT -A allowed-connection-out -o $OIFACE -m state --state INVALID -j DROP
  $IPT -A allowed-connection-out -j DROP

  #ICMP traffic
  #einfo "Creating icmp chain"
  $IPT -N icmp_deny
  $IPT -F icmp_deny
  $IPT -A icmp_deny -p icmp -j DROP

  #Incoming ssh traffic
  #einfo "Creating incoming ssh traffic chain"
  $IPT -N deny-ssh-traffic-in
  $IPT -F deny-ssh-traffic-in
  $IPT -A deny-ssh-traffic-in -i $IIFACE -p tcp -m tcp --dport ssh -j DROP
  
  #einfo "Creating outgoing http/https traffic chain"
  $IPT -N allow-www-traffic-out
  $IPT -F allow-www-traffic-out
  $IPT -A allow-www-traffic-out -p tcp -m tcp --dport www   -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  $IPT -A allow-www-traffic-out -p tcp -m tcp --dport https -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

  #Catch portscanners
  #einfo "Creating portscan detection chain"
  $IPT -N check-flags
  $IPT -F check-flags
  $IPT -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
  $IPT -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
  $IPT -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
  $IPT -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
  $IPT -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
  $IPT -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
  $IPT -A check-flags -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
  $IPT -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
  $IPT -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
  $IPT -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  $IPT -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
  $IPT -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

  # Apply and add invalid states to the chains
  #einfo "Applying chains to INPUT"
  $IPT -A INPUT -j check-flags
  $IPT -A INPUT -j dns-in
  $IPT -A INPUT -j allowed-connection-in
  $IPT -A INPUT -j drop-system-ports-in
  $IPT -A INPUT -m state --state INVALID -j DROP
  $IPT -A INPUT -p icmp -j icmp_deny
  $IPT -A INPUT -j deny-ssh-traffic-in

  # А это где должно быть,в начале или в конце?
  $IPT -A INPUT -i lo -j ACCEPT

  #einfo "Applying chains to OUTPUT"
  $IPT -A OUTPUT -j check-flags
  $IPT -A OUTPUT -j dns-out
  $IPT -A OUTPUT -j allow-www-traffic-out
  $IPT -A OUTPUT -j allowed-connection-out
  $IPT -A OUTPUT -j drop-system-ports-out
  $IPT -A OUTPUT -m state --state INVALID -j DROP
  $IPT -A OUTPUT -p icmp -j icmp_deny

  # А это где должно быть,в начале или в конце?
  $IPT -A OUTPUT -o lo -j ACCEPT

 /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
 /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects
 /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
 /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
 /bin/echo "0" > /proc/sys/net/ipv4/ip_forward

 for i in /proc/sys/net/ipv4/conf/*; do
        /bin/echo "1" > $i/rp_filter
 done

exit 0
« Последнее редактирование: 21 Июля 2011, 03:48:21 от ubuntar »

Оффлайн Sollomon

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Я например по OUTPUT вообще не заморачиваюсь и откриваю все и правил сразу в разы меньше стает.
А, вообще каждый строит фаер под себя, кто-то боится чтобы возле него и мушка пролетела, кто-то вообще без фаервола годами живет и никто его сервер не трогает.

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Да,Вы правы, каждому своё,просто хочется повозиться,сделать "как надо".
Ну а так,вообще,навскидку - сделано верно или есть грубые ошибки?
« Последнее редактирование: 20 Июля 2011, 00:45:26 от ubuntar »

alexxnight

  • Гость
была тут уже подобная тема https://forum.ubuntu.ru/index.php?topic=160563.0
есть еще тема (из бородатых) https://forum.ubuntu.ru/index.php?topic=20334.0

там есть большинство ответов на Ваши вопросы.

p.s. а вообще, да, не хватает в Wiki Faqa по iptables :)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Мозгов не хватает.
Документации по iptables навалом - читать не хотят.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Хорошо,буду дальше изучать,спасибо. AnrDaemon я Вам вопрос задал специфический в этой теме https://forum.ubuntu.ru/index.php?topic=160563.msg1186819#msg1186819, проясните,пожалуйста

Пользователь решил продолжить мысль 21 Июля 2011, 05:52:23:
В итоге,немного почитав про iptables, остановился на данной конфигурации. Надеюсь это всё же лучше,чем было.
#! /bin/sh

 /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
 /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
 /bin/echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects
 /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
 /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
 /bin/echo "0" > /proc/sys/net/ipv4/ip_forward

 for i in /proc/sys/net/ipv4/conf/*; do
        /bin/echo "1" > $i/rp_filter
 done


IPT=/sbin/iptables
 
IIFACE=wlan0
OIFACE=wlan0
  


  # Flushing all rules,deleting all chains
  $IPT -F
  $IPT -X

  # Setting default rule to drop
  $IPT -P INPUT DROP
  $IPT -P FORWARD DROP
  $IPT -P OUTPUT ACCEPT


  $IPT -N invalid
  $IPT -N attacks
  $IPT -N allowed


  $IPT -F invalid
  $IPT -F attacks
  $IPT -F allowed

  $IPT -A invalid -i $IIFACE -m state --state INVALID -j DROP
  $IPT -A invalid -i $IIFACE -m state --state NEW     -j DROP

  # Log and then drop strange packet
  $IPT -A attacks -p tcp     ! --syn                                      -m state --state NEW limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "SYN-!NEW:"
#  $IPT -A attacks -p tcp     ! --syn -m state --state NEW                  -j DROP
  $IPT -A attacks -p tcp --tcp-flags SYN,ACK          SYN,ACK             -m state --state NEW limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "ADDR-SPOOF:"
#  $IPT -A attacks -p tcp --tcp-flags SYN,ACK          SYN,ACK             -m state --state NEW -j REJECT --reject-with tcp-reset
  $IPT -A attacks -p tcp --tcp-flags ALL              FIN,URG,PSH         -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "NMAP-XMAS:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              FIN,URG,PSH         -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              ALL                 -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "XMAS:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              ALL                 -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,RST,ACK,FIN,URG -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "XMAS-PSH:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,RST,ACK,FIN,URG -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              NONE                -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "NULL-SCAN:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              NONE                -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,RST             -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "SYN-RST:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,RST             -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,FIN             -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "SYN-FIN:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,FIN             -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              FIN,RST             -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "FIN-RST:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              FIN,RST             -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              FIN                 -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "FIN-SCAN:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              FIN                 -j DROP
  $IPT -A attacks -p tcp --tcp-flags SYN,ACK          SYN                 -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "SYN-!ACK:"
#  $IPT -A attacks -p tcp --tcp-flags SYN,ACK          SYN                 -j DROP
  $IPT -A attacks -p tcp --tcp-flags FIN,ACK          FIN                 -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "FIN-!ACK:"
#  $IPT -A attacks -p tcp --tcp-flags FIN,ACK          FIN                 -j DROP
  $IPT -A attacks -p tcp --tcp-flags ALL              PSH                 -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "PSH-SCAN:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              PSH                 -j DROP
#  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,XXX,YYY         -m                   limit --limit 5/minute -j LOG --log-level 5 --log-uid --log-prefix "SYN-XXX-YYY:"
#  $IPT -A attacks -p tcp --tcp-flags ALL              SYN,XXX,YYY         -j DROP



  $IPT -A allowed -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPT -A allowed -j RETURN



  $IPT -A INPUT -i lo -j ACCEPT
  $IPT -A INPUT -j invalid
  $IPT -A INPUT -j attacks
  $IPT -A INPUT -j allowed
  

exit 0
Нестандартные пакеты для начала хочу попробовать просто заносить в журнал. Вот по теме нестандартных пакетов нарыть удалось немного,если кто-то может что-нибудь добавить,буду рад,для этого открыл тему заново.
« Последнее редактирование: 21 Июля 2011, 03:54:02 от ubuntar »

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.