开源零信任SDP 环境的安装和搭建二:SDP gateway

数据安全 数据安全 2371 人阅读 | 0 人回复

发表于 2023-3-26 14:37:39 | 显示全部楼层 |阅读模式

SDP gateway
  • 网关要配置iptables,默认drop策略

我这有份脚本可以用

  1. IPTABLES=/sbin/iptables
  2. IP6TABLES=/sbin/ip6tables
  3. MODPROBE=/sbin/modprobe
  4. INT_NET=192.168.10.0/24                                   //按实际改
  5. INT_INTF=eth1                                                        //按实际改
  6. EXT_INTF=eth0                                                        //按实际改

  7. ### flush existing rules and set chain policy setting to DROP
  8. echo "[+] Flushing existing iptables rules..."
  9. $IPTABLES -F
  10. $IPTABLES -F -t nat
  11. $IPTABLES -X
  12. $IPTABLES -P INPUT DROP
  13. $IPTABLES -P OUTPUT DROP
  14. $IPTABLES -P FORWARD DROP

  15. ### this policy does not handle IPv6 traffic except to drop it.
  16. #
  17. echo "[+] Disabling IPv6 traffic..."
  18. $IP6TABLES -P INPUT DROP
  19. $IP6TABLES -P OUTPUT DROP
  20. $IP6TABLES -P FORWARD DROP

  21. ### load connection-tracking modules
  22. #
  23. $MODPROBE ip_conntrack
  24. $MODPROBE iptable_nat
  25. $MODPROBE ip_conntrack_ftp
  26. $MODPROBE ip_nat_ftp

  27. ###### INPUT chain ######
  28. #
  29. echo "[+] Setting up INPUT chain..."

  30. ### state tracking rules
  31. $IPTABLES -A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
  32. $IPTABLES -A INPUT -m conntrack --ctstate INVALID -j DROP
  33. $IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  34. ### anti-spoofing rules
  35. $IPTABLES -A INPUT -i $INT_INTF ! -s $INT_NET -j LOG --log-prefix "SPOOFED PKT "
  36. $IPTABLES -A INPUT -i $INT_INTF ! -s $INT_NET -j DROP

  37. ### ACCEPT rules
  38. $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

  39. ### default INPUT LOG rule
  40. $IPTABLES -A INPUT ! -i lo -j LOG --log-prefix "DROP " --log-ip-options --log-tcp-options

  41. ### make sure that loopback traffic is accepted
  42. $IPTABLES -A INPUT -i lo -j ACCEPT

  43. ###### OUTPUT chain ######
  44. #
  45. echo "[+] Setting up OUTPUT chain..."

  46. ### state tracking rules
  47. $IPTABLES -A OUTPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
  48. $IPTABLES -A OUTPUT -m conntrack --ctstate INVALID -j DROP
  49. $IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  50. ### ACCEPT rules for allowing connections out
  51. $IPTABLES -A OUTPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
  52. $IPTABLES -A OUTPUT -p tcp --dport 25 -m conntrack --ctstate NEW -j ACCEPT
  53. $IPTABLES -A OUTPUT -p tcp --dport 43 -m conntrack --ctstate NEW -j ACCEPT
  54. $IPTABLES -A OUTPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
  55. $IPTABLES -A OUTPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
  56. $IPTABLES -A OUTPUT -p tcp --dport 4321 -m conntrack --ctstate NEW -j ACCEPT
  57. $IPTABLES -A OUTPUT -p tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  58. $IPTABLES -A OUTPUT -p udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  59. $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

  60. ### default OUTPUT LOG rule
  61. $IPTABLES -A OUTPUT ! -o lo -j LOG --log-prefix "DROP " --log-ip-options --log-tcp-options

  62. ### make sure that loopback traffic is accepted
  63. $IPTABLES -A OUTPUT -o lo -j ACCEPT

  64. ###### FORWARD chain ######
  65. #
  66. echo "[+] Setting up FORWARD chain..."

  67. ### state tracking rules
  68. $IPTABLES -A FORWARD -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options
  69. $IPTABLES -A FORWARD -m conntrack --ctstate INVALID -j DROP
  70. $IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  71. ### anti-spoofing rules
  72. $IPTABLES -A FORWARD -i $INT_INTF ! -s $INT_NET -j LOG --log-prefix "SPOOFED PKT "
  73. $IPTABLES -A FORWARD -i $INT_INTF ! -s $INT_NET -j DROP

  74. ### ACCEPT rules
  75. $IPTABLES -A FORWARD -p tcp -i $INT_INTF -s $INT_NET --dport 21 -m conntrack --ctstate NEW -j ACCEPT
  76. $IPTABLES -A FORWARD -p tcp -i $INT_INTF -s $INT_NET --dport 25 -m conntrack --ctstate NEW -j ACCEPT
  77. $IPTABLES -A FORWARD -p tcp -i $INT_INTF -s $INT_NET --dport 43 -m conntrack --ctstate NEW -j ACCEPT
  78. $IPTABLES -A FORWARD -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
  79. $IPTABLES -A FORWARD -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
  80. $IPTABLES -A FORWARD -p tcp -i $INT_INTF -s $INT_NET --dport 4321 -m conntrack --ctstate NEW -j ACCEPT
  81. $IPTABLES -A FORWARD -p tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  82. $IPTABLES -A FORWARD -p udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  83. $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT

  84. ### default LOG rule
  85. $IPTABLES -A FORWARD ! -i lo -j LOG --log-prefix "DROP " --log-ip-options --log-tcp-options

  86. ###### NAT rules ######
  87. #
  88. echo "[+] Setting up NAT rules..."
  89. $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -i $EXT_INTF -j DNAT --to 192.168.10.3:80
  90. $IPTABLES -t nat -A PREROUTING -p tcp --dport 443 -i $EXT_INTF -j DNAT --to 192.168.10.3:443
  91. $IPTABLES -t nat -A PREROUTING -p udp --dport 53 -i $EXT_INTF -j DNAT --to 192.168.10.4:53
  92. $IPTABLES -t nat -A POSTROUTING -s $INT_NET -o $EXT_INTF -j MASQUERADE

  93. ###### forwarding ######
  94. #
  95. echo "[+] Enabling IP forwarding..."
  96. echo 1 > /proc/sys/net/ipv4/ip_forward

  97. exit
  98. ### EOF ###

  99. 这个脚本吧ICMP留下来了,还能使用ping命令
复制代码

查看iptables的命令是 sudo iptables -nL --line-number
2、clone 代码编译安装


  1. git clone https://github.com/waverleylabs/fwknop

  2. sudo apt-get install net-tools openssl libssl-dev libjson-c-dev libpcap-dev texinfo libtool autoconf make telnet libuv1 libuv1-dev

  3. libtoolize --force
  4. aclocal
  5. autoheader
  6. automake --force-missing --add-missing
  7. autoconf
  8. ./configure --prefix=/usr --sysconfdir=/etc --with-iptables=/sbin/iptables   //注意iptables的位置

  9. make
  10. sudo make install

复制代码

从源代码的目录中拷贝fwknopd.conf 和 gate_sdp_ctrl_client.conf 到/etc/fwknop中,fwknopd.conf 中修改:DP_CTRL_CLIENT_CONF 就是gate_sdp_ctrl_client配置文件的地址 ,PCAP_INTF 网卡的别名 用ifconfig查,还有最下面的Direcories 我把能开的全开了,也不知道有没有用。

gate_sdp_ctrl_client中修改:CTRL_ADDR 也就是控制器的IP ,然后就是控制器生成的 KEY_FILE 、CERT_FILE 、 CA_CERT_FILE , SPA_KEY和SPA_HMAC_KEY可以随便填,按道理应该和控制器spdid表中的数据一致,但是这个我随便填他也能生效,这应该是个bug。我的client中这个文件的字段是随着数据库一起变动的,没连接一次控制器这个东西就会更新。就这个地方弄了好久没整明白。

sudo fwknopd,启动网关。

这个网关的难点就是iptables的使用和配置文件的修改吧!

建议:客户端的debug日志通过 cat /etc/log/syslog |grep sdp 和 fwk 来看,这个东西debug日志写入了系统的syslog



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则