1. Куча / Говнокод #822

    +148

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    #Модули iptables
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    #При выклюсеном selinux будет ругаться.
    #iptables -F RH-Firewall-1-INPUT
    iptables -t nat -F
    iptables -t mangle -F
    #
    #Политики по умолчанию
    #iptables -P INPUT DROP
    #iptables -P OUTPUT DROP
    #Установка маршрутов по умолчанию, основной провайдер eth0, вспомагательный
    #провайдер eth2.
    #Для ручного переключения ручного.
    #Установка основного маршрута на Истра-Нэт.
    #route del default
    #route add default gw ваш_шлюз_первого прова dev eth0
    #
    #Установка основного маршрута на Телеком-Нэт
    #
    #route del default
    #route add default gw ваш_шлюз_второго прова dev eth2
    #
    #Настройка NAT для выхода клиентов в инернет.
    #Отправка всех клиентов под сети 192.168.1.0/24 в интеренет.
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source ваш_ip_карты
    #iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source ваш_ip_карты2
    #
    #Для совместного использования со сквидом.
    iptables -t mangle -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -d ! 192.168.1.200 -j QUEUE
    iptables -I OUTPUT 1 -p tcp -m tcp -s 192.168.1.200 --sport 3128 -d 192.168.1.0/24 -j QUEUE
    iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 -d 192.168.1.200 --dport 80 -j ACCEPT
    iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128
    #
    #Настройка NAT во внутрь сети.
    #Настройка портов во внутрь сети.
    iptables -t nat -A PREROUTING -p tcp -s any/0 -d ваш_ip_карты --dport 15081 -j DNAT --to-destination 192.168.1.110:15081
    iptables -A FORWARD -i eth1 -d 192.168.1.110 -p tcp --dport 15081 -j QUEUE
    #
    #Блокировка неверных пакетов.
    iptables -A INPUT -m state --state INVALID -j DROP
    #
    #Open connect to server, from global network.
    #Открываю себе доступ к консоли. Этот трафик не считаю.
    #Ограничения на подключение к ssh.
    iptables -A INPUT -i eth3 -p tcp --dport 1981 -m state --state NEW -m recent --name SSH --set
    iptables -A INPUT -i eth3 -p tcp --dport 1981 -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 2 -j DROP
    iptables -A INPUT -i eth3 -p tcp --dport 1981 -m state --state NEW -j ACCEPT
    #
    #Открываю доступ к ssh из дома.
    iptables -A INPUT -p tcp -i eth3 -s any/0 -d ваш_ip_карты --dport 22 -j ACCEPT
    iptables -A OUTPUT -p tcp -o eth3 -s ваш_ip_карты --sport 22 -d any/0 -j ACCEPT
    #
    #Открываю доступ к серверу www.
    #Allowing Remote Access to a Local Web Server
    iptables -A INPUT -i eth3 -p tcp -s any/0 --sport 1024:65535 -d ваш_ip_карты --dport 80 -j QUEUE
    iptables -A OUTPUT -o eth3 -p tcp ! --syn -s ваш_ip_карты --sport 80 -d any/0 --dport 1024:65535 -j QUEUE
    #Открываю доступ к серверу www.
    #По порту 443.
    iptables -A INPUT -i eth3 -p tcp -s any/0 --sport 1024:65535 -d ваш_ip_карты --dport 443 -j QUEUE
    iptables -A OUTPUT -o eth3 -p tcp ! --syn -s ваш_ip_карты --sport 443 -d any/0 --dport 1024:65535 -j QUEUE
    #
    #Настройка ФТП доступа.
    #Open connect to FTP, from network.
    iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --sport 40000:65535 -d 192.168.1.200 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp -o eth1 -s 192.168.1.200 --sport 21 -d 192.168.1.0/24 --dport 40000:65535 -m state --state ESTABLISHED -j ACCEPT
    iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --sport 1024:65535 -d 192.168.1.200 --dport 40000:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -p tcp -o eth1 -s 192.168.1.200 --sport 40000:65535 -d 192.168.1.0/24 --dport 40000:65535 -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp -o eth1 -s 192.168.1.200 --sport 20 -d 192.168.1.0/24 --dport 40000:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --sport 40000:65535 -d 192.168.1.200 --dport 20 -m state --state ESTABLISHED -j ACCEPT
    #
    # DNS client modes (53)
    iptables -A OUTPUT -o eth0 -p udp -s ваш_ip_карты --sport 40000:65535 -d 217.150.34.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p udp -s 217.150.34.129 --sport 53 -d ваш_ip_карты --dport 40000:65535 -j QUEUE
    iptables -A OUTPUT -o eth0 -p udp -s ваш_ip_карты --sport 40000:65535 -d 217.150.35.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p udp -s 217.150.35.129 --sport 53 -d ваш_ip_карты --dport 40000:65535 -j QUEUE
    # TCP client to server requests are allowed by the protocol
    # if UDP requests fail. This is rarely seen. Usually, clients
    # use TCP as a secondary nameserver for zone transfers from
    # their primary nameservers, and as hackers.
    iptables -A OUTPUT -o eth0 -p tcp -s ваш_ip_карты --sport 40000:65535 -d 217.150.34.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p tcp ! --syn -s 217.150.34.129 --sport 53 -d ваш_ip_карты --dport 40000:65535 -j QUEUE
    iptables -A OUTPUT -o eth0 -p tcp -s ваш_ip_карты --sport 40000:65535 -d 217.150.35.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p tcp ! --syn -s 217.150.35.129 --sport 53 -d ваш_ip_карты --dport 40000:65535 -j QUEUE
    # server to server query or response
    # Caching only name server uses UDP, not TCP
    iptables -A OUTPUT -o eth0 -p udp -s ваш_ip_карты --sport 53 -d 217.150.34.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p udp -s 217.150.34.129 --sport 53 -d ваш_ip_карты --dport 53 -j QUEUE
    iptables -A OUTPUT -o eth0 -p udp -s ваш_ip_карты --sport 53 -d 217.150.35.129 --dport 53 -j QUEUE
    iptables -A INPUT -i eth0 -p udp -s 217.150.35.129 --sport 53 -d ваш_ip_карты --dport 53 -j QUEUE
    #
    #Ограничения на forward
    #Блокировка неверных пакетов.
    iptables -A FORWARD -m state --state INVALID -j DROP
    # защита от скрытого сканирования портов
    iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 15/minute -s 192.168.1.0/24 -d any/0 -j QUEUE
    #
    #Блокируем черезмерно большое кол-во icmp запрсов.
    iptables -A FORWARD -p icmp -m limit --limit 250/sec --limit-burst 500 -j QUEUE
    iptables -A FORWARD -p icmp -j DROP

    правила iptables

    Запостил: guest, 07 Апреля 2009

    Комментарии (29) RSS

    • Ойпитаблес не нужен. Есть Фиревалльд.
      Ответить
      • Фойервальд –— это огнелес?
        Ответить
      • firewalld и ufw это для маминых админов.
        Все это не нужно когда есть nftables.

        Но на самом деле всё сосет у pf, как в плане удобства так и в плане документации. И как это часть бывает к IT, чем сильнее вещь сосет -- тем более она популярна.
        Ответить
        • Чем ыиревалльд хуже ойпитаблес? Что проще использовать, то для маминых одминов? Или есть другие причины? Как работать с пипитаблес я уже через день забыл.
          Ответить
          • Тебе нравится хранить конфиги в XMLе? Правда?

            Алсо, как там с ipset? Кажется что нету его, а без него трудно сделать быстрое правило на 31234 адреса

            зы: а еще он вроде dbusнутный

            полный поттеринг, короче
            Ответить
            • > как там с ipset? Кажется что нету его
              Есть, но до какой-то там версии его не было.

              > он вроде dbusнутный
              не знаю что это значит ладно теперь знаю. Не знаю да или нет. А если да, что плохого?

              ЗЫ. я пока что действительно мамин админ
              Ответить
              • Ну вот ты прочитал про dbus, да?
                Знаешь теперь что есть два дибаса: общемашинный и для пользовтаеля
                Что в нем регистриюутся сервисы, а клиенты их находят через интерфейс

                такой маленький ни то COM, ни то энтерпрайз паттерн внутри одной машины
                зачем оно для файра
                Ответить
                • Что плохого в d-bus? В кои то веки попытка сделать нормальное api вместо помойки из шелл-скриптов.

                  Сишное апи для фаера ведь так и не завезли? До сих пор предлагают парсить выхлоп соснольной хуеты?
                  Ответить
                  • ыиревалльд и есть обертка на питоне поверх iptables:)

                    как что плохого? Тебе нраца что у тебя файр не покрутить когда dbus потушен?

                    >>выхлоп
                    Кстати, вот как сделано у белых людей: https://man.openbsd.org/pf
                    Ответить
                    • > файр не покрутить
                      В идеале, конечно, надо сишное апи задокументировать и разрешить юзать. А так - лучше уж через д-бас, чем парсить это говнище.
                      Ответить
                      • > надо сишное апи задокументировать и разрешить юзать
                        ты посмотрел мою ссылочку-то?

                        >лучше уж через д-бас, чем парсить это говнище.
                        поздравляю! Вы изобрели COM!
                        зы: я не спорю что
                        https://firewalld.org/documentation/man-pages/firewalld.dbus.html
                        лучше чем парсить аутпул иптаблесз
                        Ответить
      • Только что заметил, что ты пофиксил «RSS».

        Этот говнокод не открывали с 2009 года? Серьёзно? Он десять лет тут лежал без единого комментария?
        Ответить
        • >2009
          а, это многое объясняет:)

          Людям не интересен iptables, это же сайт программистов а не прыщеадминов
          Ответить
          • Точно. И алгоритмы сортировки тут никого не интересуют, это же не сайт математиков.
            Ответить
            • Так и есть. Стандартный работает, что еще надо?
              Ответить
              • >Стандартный
                пузырьковый?
                Ответить
                • Который в стандартной либе, видимо.
                  Ответить
                  • в некоторых стандартных либах более одного алгоритма

                    у жаббы например есть квиксорт а есть мерджсорт. Кто с ходу догадается почему так -- тому щоколадка. Спойлерить не буду
                    Ответить
                    • И много людей используют что-то кроме стандартной сортировки?
                      Ответить
                      • j123123, bormand, HoBorogHuu_nemyx. У них тут отдельный тред где они устраивали свои алгоритмистские оргии.
                        Ответить
                        • В оплачиваемое рабочее время, а не в суходрочке опосля.
                          Ответить
                          • >В оплачиваемое рабочее время,
                            у них есть оплачиваемое время, а у тебя нет
                            Ответить
                    • Эх, походу без суколадки останусь :(
                      Ответить
                      • даю на водку: Один сортирует примитивы, второй -- объекты.
                        А почему?
                        Ответить
                        • Не знаю. Мне кажецца, томучо мердж устойчивый (не меняет порядок равных элементов) им можно сортировать объедки. У меня ищо были мысли по поводу памяти, но там же не будет разницы примитив или объект, если объект там же только ссылки в массиве ьудут. Больше ничего в голову не приходит.
                          Ответить
                          • >устойчивый
                            да!

                            ты совршно прав. примитивам устройчивость не нужна: int и есть int.
                            равность их есть их эквивалентность (или как это по умному сказать?)


                            у объектов же нет.

                            Если foo.equals(bar) это вовсе не значит чот их можно местами менять.

                            ты же не зна как там equals опрделен
                            Ответить
                            • Устойчивость имхо нужна для сортировки по нескольким критериям, хотя лучше конечно функция сравнения.
                              Ответить
    • было бы не плохо вынести в переменные адреса сетей и имена интерфейсов (особенно учитывая что они родные, а не udevовские и завтра могут поменяться).

      Доречи, QUEUE устарел и вообще не понятно зачем его так много. Заворот такой кучи пакетов в юзерленд может тормозить.

      Прозрачное проксирование на сквид в наше время тоже редкость, вероятно это попытка логировать урлы или резать рекламу. В мире с HTTPS это странно.

      Создается впечатление что скрипт писали лет 15 назад. Хорошо что хоть tables а не chains)
      Ответить

    Добавить комментарий