You need to either enclose it in a subquery:
SELECT * FROM ( SELECT userID as uID, (select siteID from users where userID = actions.userID) as sID, FROM actions ) q WHERE sID IN (select siteID from sites where foo = "bar") ORDER BY timestamp DESC LIMIT 100
or better, rewrite it as JOIN
SELECT a.userId, u.siteID FROM actions a JOIN users u ON u.userID = a.userID WHERE siteID IN ( SELECT siteID FROM sites WHERE foo = 'bar' ) ORDER BY timestamp DESC LIMIT 100
Create the following indexes:
actions (timestamp) users (userId) sites (foo, siteID)
source share