Skip to content
This repository has been archived by the owner on Jun 4, 2021. It is now read-only.

Should Streisand allow users to choose what services to set up? #23

Closed
ddworken opened this issue Jul 25, 2014 · 9 comments
Closed

Should Streisand allow users to choose what services to set up? #23

ddworken opened this issue Jul 25, 2014 · 9 comments

Comments

@ddworken
Copy link

Should Streisand allow users to choose what services to set up? Personally, I think this would be a beneficial addition to Streisand. It would give users more control allowing them to run Streisand on servers with less processing power. It also would allow people to avoid running certain services that are easily detectable (L2TP/IPsec) for greater privacy.

@jlund
Copy link
Member

jlund commented Jul 26, 2014

The good news is that every service is already broken out into separate Ansible roles. Switching services on and off before creating new instances is something that I do a lot during testing. Right now this involves manually editing the playbooks/streisand.yml file and commenting out the roles that I want to skip, but it should be possible to script this too. From a UI perspective, I'm not sure what the best way to present this would be. I want users to have several connection options available out of the box in case one of the methods gets blocked.

More good news: All of the services Streisand sets up are lightweight enough that they can easily run on underpowered machines and still handle lots of simultaneous connections. Streisand works perfectly on EC2 Micro instances, for example, and this is actually the default instance size for new Amazon servers that it creates.

You're right that L2TP/IPsec is easier to detect and block than the other services. I included it because it is also very simple to set up and is a fantastic option for users in countries like Turkey that are censoring the Internet but that are not performing Deep Packet Inspection or blocking L2TP/IPsec traffic. Perhaps a good starting point would be to add a flag that allowed users to easily disable L2TP/IPsec installation?

@ddworken
Copy link
Author

Yeah, I think at the very least it would be a good idea to add a flag to allow configuring this. I glanced through the code and I didn't spot a standard location for configuration of this sort of thing. I added this feature to my fork under the bash script that starts the installation; however, if you have a better suggestion of where to place this configuration tell me.

@psifertex
Copy link

I'd like the selectability mainly because I don't want the tor bridge installed because the dynamic ports won't work on azure and it would be nice if I could just disable that and have everything else just work.

Of course, I've done it on the command-line, but that just let me run into #36. ;-)

@ddworken
Copy link
Author

Do you guys think a series of check boxes during installation would be too confusing? It would be fairly easy to implement that and have them all automatically enabled by default. That way anyone else who has any reason to not want a certain service can easily disable it.

@jlund
Copy link
Member

jlund commented Jul 29, 2014

@ddworken I haven't had a chance to look at your pull request quite yet, but I am leaning towards implementing this using a command-line flag that gets passed to the ./streisand script (e.g. ./streisand --disable-l2tp-ipsec). This would make it accessible to those who care about disabling the L2TP/IPsec service without adding an additional prompt that might be confusing to most other users. I also want the default setup to ask as few questions as possible and to give people several connection options.

I'm still on the fence about adding more disable options to the mix, but I'm strongly leaning towards no. I want to allow advanced users to disable L2TP/IPsec primarily because it doesn't work well on many cloud server providers. It's not included in Streisand's default Amazon playbook, for instance.

As I said in an earlier comment, the other services are lightweight enough that I believe it's worth keeping them around. I think maintaining connection flexibility and a diverse set of working services will do a lot to make sure that any given Streisand server can remain effective for a long time, even if one of the services gets blocked. I want to avoid tempting users into easily disabling services that they (or the people they share the instructions with) might later wish that they had access to.

@jlund
Copy link
Member

jlund commented Jul 29, 2014

@psifertex I was able to make the Tor dynamic ports work with Amazon EC2, even though it dramatically increased the complexity of its playbook. At first, Streisand creates a barebones EC2 Security Group for the new server that only allows SSH access. Later on, after the random obfs3 and ScrambleSuit ports have been assigned, the Security Group gets updated and opens up everything else. You can see the bulk of this logic in the playbooks/amazon.yml and playbooks/roles/ec2-security-group/main.yml files. This works really well because the obfsproxy ports don't ever change after they are first assigned.

I would be really surprised if we can't make the same thing happen for Azure. Adding native Azure support is one of the next things on my list, and I'm going to fix #36 before I go to bed tonight. Hang in there :)

alimakki added a commit to alimakki/streisand that referenced this issue Apr 29, 2017
# This is the 1st commit message:
initial fr commit

# This is the commit message StreisandEffect#2:

readme completed

# This is the commit message StreisandEffect#3:

corrections

# This is the commit message StreisandEffect#4:

readme done

# This is the commit message StreisandEffect#5:

readme even more done

# This is the commit message StreisandEffect#6:

more corrections

# This is the commit message StreisandEffect#7:

initial commit for translated instructions

# This is the commit message StreisandEffect#8:

fixed typos

# This is the commit message StreisandEffect#9:

fixed markdown

# This is the commit message StreisandEffect#10:

fixed anchor

# This is the commit message StreisandEffect#11:

grammar and typos

# This is the commit message StreisandEffect#12:

fixed markdown

# This is the commit message StreisandEffect#13:

finished french instructions for windows l2tp/ipsec

# This is the commit message StreisandEffect#14:

androïde

# This is the commit message StreisandEffect#15:

finished osx instructions for l2tp/ipsec

# This is the commit message StreisandEffect#16:

finished linux l2tp/ipsec

# This is the commit message StreisandEffect#17:

finished ios l2tp/ipsec

# This is the commit message StreisandEffect#18:

common entries in l2tp translated

# This is the commit message StreisandEffect#19:

minor corrections

# This is the commit message StreisandEffect#20:

android l2tp/ipsec translations done

# This is the commit message StreisandEffect#21:

l2tp/ipsec french done

# This is the commit message StreisandEffect#22:

typos

# This is the commit message StreisandEffect#23:

initial commit for openconnect

# This is the commit message StreisandEffect#24:

partial windows instructions completed

# This is the commit message StreisandEffect#25:

removed idea files

# This is the commit message StreisandEffect#26:

renamed readme_fr to readme-fr

# This is the commit message StreisandEffect#27:

windows oc instructions done

# This is the commit message StreisandEffect#28:

finished osx instructions, updated brew url to https

# This is the commit message StreisandEffect#29:

oc linux instructions done, minor corrections

# This is the commit message StreisandEffect#30:

stuff

# This is the commit message StreisandEffect#31:

oc instructions french done

# This is the commit message StreisandEffect#32:

minor correction

# This is the commit message StreisandEffect#33:

initial commit for openvpn instructions fr

# This is the commit message StreisandEffect#34:

finished windows ovpn instructions

# This is the commit message StreisandEffect#35:

copypasta the common stuff

# This is the commit message StreisandEffect#36:

typos

# This is the commit message StreisandEffect#37:

removed azure from upcoming features fr

# This is the commit message StreisandEffect#38:

updated azure Readme-fr.md

# This is the commit message StreisandEffect#39:

Silence la censure. Automatiser l'effet

# This is the commit message StreisandEffect#40:

minor corrections

# This is the commit message StreisandEffect#41:

minor corrections

# This is the commit message StreisandEffect#42:

more translations

# This is the commit message StreisandEffect#43:

finished macos ovpn instructions

# This is the commit message StreisandEffect#44:

eeeeeeeeee

# This is the commit message StreisandEffect#45:

openvpn linux cli done

# This is the commit message StreisandEffect#46:

finish linux ovpn network manager

# This is the commit message StreisandEffect#47:

ovpn android done

# This is the commit message StreisandEffect#48:

finished ovpn ios instructions

# This is the commit message StreisandEffect#49:

minor correction

# This is the commit message StreisandEffect#50:

initial commit for shadowsocks-fr

# This is the commit message StreisandEffect#51:

windows shadowsocks done

# This is the commit message StreisandEffect#52:

shadowsocks macos done

# This is the commit message StreisandEffect#53:

really macos is done

# This is the commit message StreisandEffect#54:

commit before merge

# This is the commit message StreisandEffect#55:

finished ff shadowsocks instructions

# This is the commit message StreisandEffect#56:

shadowsocks done

# This is the commit message StreisandEffect#57:

initial commit for wg fr

# This is the commit message StreisandEffect#58:

initial commit for ssh fr

# This is the commit message StreisandEffect#59:

windows ssh instructions done

# This is the commit message StreisandEffect#60:

linux-osx ssh done

# This is the commit message StreisandEffect#61:

linux osx alternative ssh done

# This is the commit message StreisandEffect#62:

android almost done

# This is the commit message StreisandEffect#63:

finished instructions for shadowsocks

# This is the commit message StreisandEffect#64:

mirror index fr done

# This is the commit message StreisandEffect#65:

tunnel ssh

# This is the commit message StreisandEffect#66:

progress for streisang-gateway fr

# This is the commit message StreisandEffect#67:

finished windows gateway instructions

# This is the commit message StreisandEffect#68:

manual ssl verification done

# This is the commit message StreisandEffect#69:

one more line

# This is the commit message StreisandEffect#70:

finished osx android gateway fr

# This is the commit message StreisandEffect#71:

ios gateway done

# This is the commit message StreisandEffect#72:

finished all of gateway instructions fr

# This is the commit message StreisandEffect#73:

initial commit for tor-fr

# This is the commit message StreisandEffect#74:

tor done

# This is the commit message StreisandEffect#75:

initial commit for azure-fr.md

# This is the commit message StreisandEffect#76:

azure-fr done

# This is the commit message StreisandEffect#77:

preparing to link it all up

# This is the commit message StreisandEffect#78:

working on i18n generation

# This is the commit message StreisandEffect#79:

Streisand CI Testing

# This is the commit message StreisandEffect#80:

attempt i18n..

# This is the commit message StreisandEffect#81:

removed commented stuff

# This is the commit message StreisandEffect#82:

fixed lang loop in md templates

# This is the commit message StreisandEffect#83:

spelling

# This is the commit message StreisandEffect#84:

regex_replace

# This is the commit message StreisandEffect#85:

regex_replace

# This is the commit message StreisandEffect#86:

langauge_name

# This is the commit message StreisandEffect#87:

item in loop

# This is the commit message StreisandEffect#88:

trying iteritems

# This is the commit message StreisandEffect#89:

ocserv i18n

# This is the commit message StreisandEffect#90:

openvpn i18n

# This is the commit message StreisandEffect#91:

fixed stunnel status

# This is the commit message StreisandEffect#92:

updated shadowsocks instructions

# This is the commit message StreisandEffect#93:

shadowsocks i18n

# This is the commit message StreisandEffect#94:

finished ssh i18n

# This is the commit message StreisandEffect#95:

finished gateway i18n

# This is the commit message StreisandEffect#96:

adding index and firewall fr

# This is the commit message StreisandEffect#97:

finished tor i18n, adding .html to templates

# This is the commit message StreisandEffect#98:

finished wg i18n

# This is the commit message StreisandEffect#99:

wg with_dict not with_items

# This is the commit message StreisandEffect#100:

fixed streisand mirror index task

# This is the commit message StreisandEffect#101:

fixed shadowsocks mirror index fr

# This is the commit message #102:

streisand_markdown_mirror_page removed

# This is the commit message StreisandEffect#103:

streisand_ci = no

# This is the commit message StreisandEffect#104:

fixed tor gateway instructions

# This is the commit message StreisandEffect#105:

hopefully fixes all page generation issues

# This is the commit message StreisandEffect#106:

updated index-fr.html

# This is the commit message StreisandEffect#107:

l2tp oconnect should generate correctly now

# This is the commit message StreisandEffect#108:

fixed mirror links for i18n

# This is the commit message StreisandEffect#109:

finished remaining translation, mirror link fixes

# This is the commit message StreisandEffect#110:

fixed stunnel instructions

# This is the commit message StreisandEffect#111:

hopefully the last of the corrections

# This is the commit message StreisandEffect#112:

typos and grammatics

# This is the commit message StreisandEffect#113:

more corrections

# This is the commit message StreisandEffect#114:

mirroring french localized tor

# This is the commit message StreisandEffect#115:

minor corrections

# This is the commit message StreisandEffect#116:

clarifications

# This is the commit message StreisandEffect#117:

Somme de contrôle

# This is the commit message StreisandEffect#118:

s/potatso/cross

# This is the commit message StreisandEffect#119:

changed google links for fr to hl=fr

# This is the commit message StreisandEffect#120:

copypasta quirk

# This is the commit message StreisandEffect#121:

cleanup, removed shadowsocks OTA

# This is the commit message StreisandEffect#122:

removed shadowsocks from unattended upgrades

# This is the commit message StreisandEffect#123:

removed unecessary stuff from unattended upgrades

# This is the commit message StreisandEffect#124:

Streisand CI Testing

# This is the commit message StreisandEffect#125:

CI updates based on feedback

# This is the commit message StreisandEffect#126:

permissions

# This is the commit message StreisandEffect#127:

updated readme-fr

# This is the commit message StreisandEffect#128:

Update readme-fr

No need for brew update anymore

# This is the commit message StreisandEffect#129:

removed ci
@ghost ghost mentioned this issue Jun 10, 2017
@dlmetcalf
Copy link

This is why I stopped using Streisand. Some of the first principles of security:

  1. Reduce code. Ensure a minimal and trusted compute base. Minimise what you depend on to the bare essentials. Carefully manage external sources (build tools included). Keep it auditable.

  2. Reduce attack surface. Don't expose unnecessary services and entry points. Don't provide extra code paths for attackers to exercise/exploit. Don't provide unnecessary information gathering opportunities.

  3. Separate and reduce privileges. Including to isolate and sandbox software/components, e.g. limit syscalls and file access. Compartmentalise (inevitable) failures.

You can't have privacy or anonymity without security.

Streisand is an outstanding project. Great concept and we're very fortunate that it's been shared with the community. I hope someone in the community has time to work on this issue to make it more widely applicable. Streisand has many great features, but until some of the more fundamental security issues are addressed, its uptake will be limited. Developing a documented threat model, via risk management process such as http://dx.doi.org/10.6028/NIST.SP.800-30r1, would be a great step too.

@cpu
Copy link
Collaborator

cpu commented Jun 16, 2017

I've picked this up and will be creating a centralized issue with a plan of attack in the next week or so.

Developing a documented threat model, via risk management process such as http://dx.doi.org/10.6028/NIST.SP.800-30r1, would be a great step too.

Contributions welcome :-)

@cpu
Copy link
Collaborator

cpu commented Jun 20, 2017

There are several open issues of varying age/concentration on modularization to date. I've started on a concerted effort to implement first-party support and recommend interested parties follow #746. I'm going to close this issue as a duplicate of 746 in the short term. Thanks!

@cpu cpu closed this as completed Jun 20, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants